Hello World

This commit is contained in:
Squideo Kojima
2015-11-17 21:34:26 -08:00
commit e69bcd5df4
38 changed files with 5486 additions and 0 deletions

6
.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
*.o
*.nes
*~
game.s
.DS_Store
*.swp

31
Makefile Normal file
View File

@@ -0,0 +1,31 @@
ROM_CONFIG = nrom.cfg
CRT_OBJ = crt0.o
GAME_OBJ = game.o
RUNTIME_LIB = runtime.lib
EXECUTABLE = splatood.nes
ASM = ca65
CC = cc65
LD = ld65
all: $(EXECUTABLE) ${CRT_OBJ}
crt0.o: *.s
%.s: %.c *.h
$(CC) -Oi $< --add-source
%.o: %.s
$(ASM) $<
$(EXECUTABLE): $(GAME_OBJ) $(ROM_CONFIG) $(CRT_OBJ) $(RUNTIME_LIB)
$(LD) -C $(ROM_CONFIG) -o $(EXECUTABLE) $(CRT_OBJ) $(GAME_OBJ) $(RUNTIME_LIB)
clean:
rm -f game.s *.o *.nes
.SECONDARY: # suppress removal of intermediate build files
%.o: %.c # suppress built in rule to build .o from .c

25
README.md Normal file
View File

@@ -0,0 +1,25 @@
# SplatooD: A Splatoon demake for NES
![screenshot](http://i.imgur.com/jGOvsaF.png)
## Controls
D-pad to move, A to flick roller, START to pause. Menus accept D-pad to move cursor and START to select an item.
## Building
Install [cc65](ftp://ftp.musoftware.de/pub/uz/cc65/cc65-sources-2.13.3.tar.bz2) v2.13.3 or thereabouts and then run `make`.
Assets were created in NESST and Famitracker.
### Updating Strings
All strings in SplatooD are formatted as EBCDIC with an offset. Use the Python script in `util/ebcdic.py` to convert ASCII to appropriate arrays.
### Updating Nametable Headers
There is a tool to convert binary nametables into C headers in `util/bin-to-h.py`.
## Cartridge Details
We target an NROM256 cartridge with two 16kB PRG ROMs and one 8kB CHR ROM.

BIN
art/bluefin.nam Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

BIN
art/combined_chr.chr Normal file

Binary file not shown.

BIN
art/combined_tiles.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
art/endgame.nam Normal file

Binary file not shown.

BIN
art/inkling_tiles.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
art/kelp_dome_nametable.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
art/kelp_dome_nametable.nam Normal file

Binary file not shown.

BIN
art/map_tiles.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

1
art/palette.pal Normal file
View File

@@ -0,0 +1 @@
00!1$):

BIN
art/saltspray_rig.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
art/saltspray_rig.nam Normal file

Binary file not shown.

BIN
art/test_map.nam Normal file

Binary file not shown.

259
crt0.s Normal file
View File

@@ -0,0 +1,259 @@
; Startup code for cc65 and Shiru's NES library
; based on code by Groepaz/Hitmen <groepaz@gmx.net>, Ullrich von Bassewitz <uz@cc65.org>
FT_DPCM_OFF = $c000 ;$c000..$ffc0, 64-byte steps
FT_SFX_STREAMS = 4 ;number of sound effects played at once, 1..4
.define FT_DPCM_ENABLE 1 ;undefine to exclude all DMC code
.define FT_SFX_ENABLE 1 ;undefine to exclude all sound effects code
.export _exit,__STARTUP__:absolute=1
.import initlib,push0,popa,popax,_main,zerobss,copydata
; Linker generated symbols
.import __RAM_START__ ,__RAM_SIZE__
.import __ROM0_START__ ,__ROM0_SIZE__
.import __STARTUP_LOAD__,__STARTUP_RUN__,__STARTUP_SIZE__
.import __CODE_LOAD__ ,__CODE_RUN__ ,__CODE_SIZE__
.import __RODATA_LOAD__ ,__RODATA_RUN__ ,__RODATA_SIZE__
.import NES_MAPPER,NES_PRG_BANKS,NES_CHR_BANKS,NES_MIRRORING
.include "zeropage.inc"
FT_BASE_ADR =$0100 ;page in RAM, should be $xx00
.define FT_THREAD 1 ;undefine if you call sound effects in the same thread as sound update
.define FT_PAL_SUPPORT 1 ;undefine to exclude PAL support
.define FT_NTSC_SUPPORT 1 ;undefine to exclude NTSC support
PPU_CTRL =$2000
PPU_MASK =$2001
PPU_STATUS =$2002
PPU_OAM_ADDR=$2003
PPU_OAM_DATA=$2004
PPU_SCROLL =$2005
PPU_ADDR =$2006
PPU_DATA =$2007
PPU_OAM_DMA =$4014
PPU_FRAMECNT=$4017
DMC_FREQ =$4010
CTRL_PORT1 =$4016
CTRL_PORT2 =$4017
OAM_BUF =$0200
PAL_BUF =$01c0
.segment "ZEROPAGE"
NTSC_MODE: .res 1
FRAME_CNT1: .res 1
FRAME_CNT2: .res 1
VRAM_UPDATE: .res 1
NAME_UPD_ADR: .res 2
NAME_UPD_ENABLE: .res 1
PAL_UPDATE: .res 1
PAL_BG_PTR: .res 2
PAL_SPR_PTR: .res 2
SCROLL_X: .res 1
SCROLL_Y: .res 1
SCROLL_X1: .res 1
SCROLL_Y1: .res 1
PAD_STATE: .res 2 ;one byte per controller
PAD_STATEP: .res 2
PAD_STATET: .res 2
PPU_CTRL_VAR: .res 1
PPU_CTRL_VAR1: .res 1
PPU_MASK_VAR: .res 1
RAND_SEED: .res 2
FT_TEMP: .res 3
TEMP: .res 11
PAD_BUF =TEMP+1
PTR =TEMP ;word
LEN =TEMP+2 ;word
NEXTSPR =TEMP+4
SCRX =TEMP+5
SCRY =TEMP+6
SRC =TEMP+7 ;word
DST =TEMP+9 ;word
RLE_LOW =TEMP
RLE_HIGH =TEMP+1
RLE_TAG =TEMP+2
RLE_BYTE =TEMP+3
.segment "HEADER"
.byte $4e,$45,$53,$1a
.byte <NES_PRG_BANKS
.byte <NES_CHR_BANKS
.byte <NES_MIRRORING|(<NES_MAPPER<<4)
.byte <NES_MAPPER&$f0
.res 8,0
.segment "STARTUP"
start:
_exit:
sei
ldx #$ff
txs
inx
stx PPU_MASK
stx DMC_FREQ
stx PPU_CTRL ;no NMI
initPPU:
bit PPU_STATUS
@1:
bit PPU_STATUS
bpl @1
@2:
bit PPU_STATUS
bpl @2
clearPalette:
lda #$3f
sta PPU_ADDR
stx PPU_ADDR
lda #$0f
ldx #$20
@1:
sta PPU_DATA
dex
bne @1
clearVRAM:
txa
ldy #$20
sty PPU_ADDR
sta PPU_ADDR
ldy #$10
@1:
sta PPU_DATA
inx
bne @1
dey
bne @1
clearRAM:
txa
@1:
sta $000,x
sta $100,x
sta $200,x
sta $300,x
sta $400,x
sta $500,x
sta $600,x
sta $700,x
inx
bne @1
lda #4
jsr _pal_bright
jsr _pal_clear
jsr _oam_clear
jsr zerobss
jsr copydata
lda #<(__RAM_START__+__RAM_SIZE__)
sta sp
lda #>(__RAM_START__+__RAM_SIZE__)
sta sp+1 ; Set argument stack ptr
jsr initlib
lda #%10000000
sta <PPU_CTRL_VAR
sta PPU_CTRL ;enable NMI
lda #%00000110
sta <PPU_MASK_VAR
waitSync3:
lda <FRAME_CNT1
@1:
cmp <FRAME_CNT1
beq @1
detectNTSC:
ldx #52 ;blargg's code
ldy #24
@1:
dex
bne @1
dey
bne @1
lda PPU_STATUS
and #$80
sta <NTSC_MODE
jsr _ppu_off
lda #0
ldx #0
jsr _set_vram_update
ldx #<music_data
ldy #>music_data
lda <NTSC_MODE
jsr FamiToneInit
.if(FT_SFX_ENABLE)
ldx #<sounds_data
ldy #>sounds_data
jsr FamiToneSfxInit
.endif
lda #$fd
sta <RAND_SEED
sta <RAND_SEED+1
lda #0
sta PPU_SCROLL
sta PPU_SCROLL
jmp _main ;no parameters
.include "neslib.s"
.segment "RODATA"
music_data:
.include "music.s"
.if(FT_SFX_ENABLE)
sounds_data:
.include "sounds.s"
.endif
.segment "SAMPLES"
;.incbin "music_dpcm.bin"
.segment "VECTORS"
.word nmi ;$fffa vblank nmi
.word start ;$fffc reset
.word irq ;$fffe irq / brk
.segment "CHARS"
.incbin "tileset.chr"

1236
famitone2.s Normal file

File diff suppressed because it is too large Load Diff

1357
game.c Normal file

File diff suppressed because it is too large Load Diff

40
levels/bluefin.h Normal file
View File

@@ -0,0 +1,40 @@
const unsigned char bluefin_depot[ 1024 ] = {
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x22,0x23,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x26,0x27,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x22,0x29,0x24,0x25,0x28,0x29,0x28,0x23,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x32,0x39,0x38,0x39,0x34,0x35,0x38,0x33,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x32,0x33,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x30,0x31,0x3c,0x3d,
0x11,0x2b,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x10,0x2b,
0x3a,0x3b,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x3a,0x3b,
0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x22,0x23,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x26,0x27,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x22,0x29,0x24,0x25,0x28,0x29,0x28,0x23,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x32,0x39,0x38,0x39,0x34,0x35,0x38,0x33,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x32,0x33,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0xff,0xff,0x0f,0x0f,0x0f,0x0f,0xff,0xff,
0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,
0x3f,0x03,0x30,0x00,0x00,0xc0,0x0c,0xcf,
0x13,0x33,0xc3,0xfc,0xf3,0x3c,0xcc,0x8c,
0x33,0x03,0x33,0x0c,0x03,0xcc,0x0c,0xcc,
0xff,0xf3,0x00,0x00,0x00,0x00,0xfc,0xff,
0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,
0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f };

1
levels/endgame.h Normal file

File diff suppressed because one or more lines are too long

40
levels/kelpdome.h Normal file
View File

@@ -0,0 +1,40 @@
const unsigned char kelpdome[ 1024 ] = {
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,
0x2c,0x2d,0x22,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x23,0x20,0x21,0x20,0x21,0x10,0x2b,0x20,0x21,
0x3c,0x3d,0x26,0x35,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x34,0x27,0x30,0x31,0x30,0x31,0x3a,0x3b,0x30,0x31,
0x2c,0x2d,0x36,0x37,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x3c,0x3d,0x26,0x37,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x32,0x33,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,
0x2c,0x2d,0x36,0x37,0x20,0x21,0x22,0x23,0x20,0x21,0x22,0x23,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x3c,0x3d,0x26,0x37,0x30,0x31,0x32,0x33,0x30,0x31,0x26,0x27,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,
0x2c,0x2d,0x36,0x37,0x20,0x21,0x20,0x21,0x20,0x21,0x36,0x25,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x23,0x20,0x21,0x20,0x21,0x22,0x28,0x29,0x23,0x2c,0x2d,
0x3c,0x3d,0x26,0x37,0x30,0x31,0x30,0x31,0x30,0x31,0x32,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x34,0x27,0x30,0x31,0x30,0x31,0x32,0x38,0x34,0x27,0x3c,0x3d,
0x2c,0x2d,0x36,0x37,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x2c,0x2d,
0x3c,0x3d,0x26,0x37,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x36,0x27,0x30,0x31,0x30,0x31,0x30,0x31,0x36,0x27,0x3c,0x3d,
0x2c,0x2d,0x36,0x37,0x20,0x21,0x22,0x28,0x29,0x28,0x29,0x23,0x20,0x21,0x22,0x28,0x29,0x23,0x20,0x21,0x26,0x25,0x28,0x29,0x28,0x23,0x20,0x21,0x26,0x27,0x2c,0x2d,
0x3c,0x3d,0x26,0x37,0x30,0x31,0x32,0x38,0x39,0x38,0x34,0x27,0x30,0x31,0x32,0x38,0x39,0x33,0x30,0x31,0x32,0x38,0x39,0x38,0x39,0x33,0x30,0x31,0x36,0x27,0x3c,0x3d,
0x2c,0x2d,0x36,0x37,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x2c,0x2d,
0x3c,0x3d,0x26,0x37,0x30,0x31,0x30,0x31,0x30,0x31,0x36,0x27,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x36,0x27,0x3c,0x3d,
0x2c,0x2d,0x36,0x25,0x28,0x23,0x20,0x21,0x20,0x21,0x26,0x25,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x23,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x2c,0x2d,
0x3c,0x3d,0x32,0x38,0x39,0x33,0x30,0x31,0x30,0x31,0x32,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x34,0x27,0x30,0x31,0x30,0x31,0x30,0x31,0x36,0x27,0x3c,0x3d,
0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x22,0x23,0x20,0x21,0x26,0x27,0x2c,0x2d,
0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x32,0x33,0x30,0x31,0x32,0x33,0x30,0x31,0x36,0x27,0x3c,0x3d,
0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x22,0x23,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x2c,0x2d,
0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x26,0x27,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x36,0x27,0x3c,0x3d,
0x20,0x21,0x11,0x2b,0x20,0x21,0x20,0x21,0x36,0x25,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x28,0x29,0x24,0x27,0x2c,0x2d,
0x30,0x31,0x3a,0x3b,0x30,0x31,0x30,0x31,0x32,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x38,0x39,0x33,0x3c,0x3d,
0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x0f,
0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x33,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
0x33,0x00,0x00,0x00,0x00,0x00,0x00,0xcc,
0x33,0x00,0x00,0x00,0x00,0x00,0x00,0xcc,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcc,
0x08,0x00,0xf0,0xf0,0xf0,0xf0,0xf0,0xfc,
0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f };

40
levels/saltspray.h Normal file
View File

@@ -0,0 +1,40 @@
const unsigned char saltspray[ 1024 ] = {
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x10,0x2b,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3a,0x3b,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x22,0x28,0x29,0x23,0x20,0x21,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x26,0x35,0x34,0x27,0x30,0x31,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x36,0x25,0x24,0x37,0x20,0x21,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x32,0x38,0x39,0x33,0x30,0x31,
0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,
0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x20,0x21,0x22,0x23,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x30,0x31,0x26,0x27,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x20,
0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x36,0x25,0x28,0x23,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x26,0x35,0x38,0x33,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x20,
0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x20,0x21,0x36,0x37,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x30,0x31,0x32,0x33,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x20,
0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x22,0x28,0x29,0x23,0x20,0x21,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x26,0x35,0x34,0x27,0x30,0x31,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x20,0x21,0x36,0x25,0x24,0x37,0x20,0x21,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x30,0x31,0x32,0x38,0x39,0x33,0x30,0x31,
0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,
0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,
0x11,0x2b,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3a,0x3b,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x1f,0xff,0x0f,0x0f,0xcf,0xff,0xff,0xff,
0xf0,0xf0,0xcc,0x3f,0x0c,0xcf,0x00,0x00,
0x0f,0xff,0x0c,0x33,0x00,0xcc,0x00,0x00,
0x00,0x0f,0x03,0x33,0x00,0x00,0x00,0x00,
0x00,0xff,0x03,0x33,0x00,0xc0,0x00,0x00,
0xff,0xff,0xcc,0x33,0x00,0xcc,0x00,0x00,
0x20,0xf0,0x0c,0x0f,0xcc,0xff,0xf0,0xf0,
0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f };

37
levels/splat_title.h Normal file
View File

@@ -0,0 +1,37 @@
const unsigned char splat_title[1024]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x05,0x00,0x06,0x00,0x07,0x08,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x0a,0x0b,0x00,0x0c,0x0d,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x02,0x00,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x19,0x1a,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1e,0x1f,0x20,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x03,0x21,0x22,0x23,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x26,0x27,0x28,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,0x05,0x00,0x29,0x2a,0x2b,0x2b,0x2c,0x2d,0x00,0x2e,0x2f,0x30,0x31,0x32,0x33,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x34,0x35,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x09,0x36,0x2b,0x2b,0x2b,0x2b,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x1c,0x1c,0x41,0x42,0x43,0x1c,0x1c,0x44,0x45,0x00,0x00,
0x00,0x00,0x0e,0x02,0x00,0x46,0x47,0x2b,0x2b,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x1c,0x5a,0x5b,0x5c,0x5d,
0x00,0x00,0x18,0x19,0x1a,0x5e,0x5f,0x2b,0x2b,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x02,0x73,0x74,0x75,
0x00,0x00,0x00,0x25,0x1c,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x1c,0x8b,0x8c,0x8d,0x8e,0x00,
0x30,0x31,0x8f,0x90,0x1c,0x1c,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x00,0x9e,0x9f,0xa0,0x1c,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0x00,
0xa8,0x00,0x00,0xa9,0x1c,0x1c,0x1c,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0x00,0x00,0x00,0x00,0x00,0x00,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0x00,0x00,0x00,
0xba,0xbb,0xbc,0xbd,0x1c,0x1c,0x1c,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0x5b,0x5c,0x5d,0x00,0x00,0x00,0xc4,0xc5,0xc6,0xc7,0x00,0xc8,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,
0xca,0xcb,0xcc,0xcd,0xce,0x1c,0x1c,0xcf,0xd0,0xd1,0xd2,0xd3,0x02,0x73,0x74,0x75,0x00,0x00,0x00,0xd4,0xd5,0x00,0x00,0x00,0xd6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xd7,0xd8,0x00,0xd9,0xda,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x8b,0x8c,0x8d,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x9e,0x9f,0xa0,0x1c,0x1c,0xdc,0xa3,0xa4,0xa5,0xa6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xc4,0xc5,0xc6,0xc7,0x00,0xc8,0xc9,0x00,0x00,0x00,0xe0,0xe1,0xe2,0xe3,0xe3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xd4,0xd5,0x00,0x00,0x00,0xd6,0x00,0x00,0x00,0x00,0x00,0xe3,0xe4,0xe5,0xe1,0xe4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x05,0x00,0x06,0x00,0x07,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x0a,0x0b,0x00,0x0c,0x0d,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x02,0x00,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x19,0x1a,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1e,0x1f,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x26,0x27,0x28,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x30,0x31,0x8f,0x90,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x34,0x35,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xde,0xa8,0x00,0x00,0xa9,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x44,0x45,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdf,0xba,0xbb,0xbc,0xbd,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x5a,0x5b,0x5c,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xca,0xcb,0xcc,0xcd,0xce,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x72,0x02,0x73,0x74,
0x0,0x30,0x0,0x0,0x55,0x55,0x55,0x5d,0xc,0x0,0x0,0x4c,0x57,0x55,0x55,0xd5,0x0,0x0,0x0,0x4c,0x55,0x55,0x55,0x55,0x0,0x0,0x0,0x0,0x77,0x55,0x55,0xd5,0x0,0x0,0xc0,
0xfc,0xff,0xff,0xbf,0xaa,0xc0,0xfc,0x3f,0xcf,0xaf,0xaa,0xaa,0xaa,0xcc,0x0,0x80,0xaf,0xaa,0xaa,0xaa,0xaa,0x0,0x0,0x8,0xa,0xa,0xa,0xa,0xa
};

40
levels/twofish.h Normal file
View File

@@ -0,0 +1,40 @@
const unsigned char twofish[ 1024 ] = {
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x22,0x23,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x22,0x23,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x36,0x37,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x36,0x37,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x26,0x27,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x26,0x27,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x36,0x37,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x36,0x37,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x26,0x27,0x20,0x21,0x22,0x29,0x28,0x29,0x28,0x23,0x20,0x21,0x20,0x21,0x22,0x29,0x28,0x29,0x28,0x23,0x20,0x21,0x26,0x27,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x32,0x33,0x30,0x31,0x32,0x38,0x39,0x38,0x34,0x37,0x30,0x31,0x30,0x31,0x36,0x35,0x39,0x38,0x39,0x33,0x30,0x31,0x32,0x33,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x36,0x37,0x30,0x31,0x30,0x31,0x36,0x37,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x11,0x2b,0x26,0x27,0x20,0x21,0x20,0x21,0x26,0x27,0x10,0x2b,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3a,0x3b,0x36,0x37,0x30,0x31,0x30,0x31,0x36,0x37,0x3a,0x3b,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x36,0x37,0x30,0x31,0x30,0x31,0x36,0x37,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x22,0x23,0x20,0x21,0x22,0x29,0x28,0x29,0x24,0x27,0x20,0x21,0x20,0x21,0x26,0x25,0x28,0x29,0x28,0x23,0x20,0x21,0x22,0x23,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x36,0x37,0x30,0x31,0x32,0x38,0x39,0x38,0x39,0x33,0x30,0x31,0x30,0x31,0x32,0x38,0x39,0x38,0x39,0x33,0x30,0x31,0x36,0x37,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x26,0x27,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x20,0x21,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x20,0x21,0x26,0x27,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x36,0x37,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x30,0x31,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x30,0x31,0x36,0x37,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x26,0x27,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x26,0x27,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x32,0x33,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x32,0x33,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x20,0x21,0x2c,0x2d,
0x3c,0x3d,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,0x2c,0x2d,
0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,0x3c,0x3d,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x33,0x00,0x00,0x00,0x00,0x00,0x00,0xcc,
0x33,0x00,0x0f,0x03,0x0c,0x0f,0x00,0xcc,
0x33,0x00,0x40,0x00,0x00,0x20,0x00,0xcc,
0x33,0x00,0x00,0x00,0x00,0x00,0x00,0xcc,
0x33,0x00,0x0f,0x03,0x0c,0x0f,0x00,0xcc,
0xf3,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xfc,
0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f };

653
music.s Normal file
View File

@@ -0,0 +1,653 @@
;this file for FamiTone2 library generated by text2data tool
fork_music_data:
.byte 7
.word @instruments
.word @samples-3
.word @song0ch0,@song0ch1,@song0ch2,@song0ch3,@song0ch4,307,256
.word @song1ch0,@song1ch1,@song1ch2,@song1ch3,@song1ch4,245,204
.word @song2ch0,@song2ch1,@song2ch2,@song2ch3,@song2ch4,307,256
.word @song3ch0,@song3ch1,@song3ch2,@song3ch3,@song3ch4,307,256
.word @song4ch0,@song4ch1,@song4ch2,@song4ch3,@song4ch4,204,170
.word @song5ch0,@song5ch1,@song5ch2,@song5ch3,@song5ch4,307,256
.word @song6ch0,@song6ch1,@song6ch2,@song6ch3,@song6ch4,280,233
@instruments:
.byte $30 ;instrument $00
.word @env1,@env0,@env0
.byte $00
.byte $30 ;instrument $01
.word @env2,@env13,@env0
.byte $00
.byte $30 ;instrument $02
.word @env3,@env14,@env0
.byte $00
.byte $30 ;instrument $03
.word @env4,@env15,@env0
.byte $00
.byte $30 ;instrument $04
.word @env5,@env16,@env0
.byte $00
.byte $70 ;instrument $05
.word @env6,@env17,@env0
.byte $00
.byte $30 ;instrument $06
.word @env7,@env18,@env24
.byte $00
.byte $30 ;instrument $07
.word @env8,@env0,@env0
.byte $00
.byte $30 ;instrument $08
.word @env9,@env0,@env0
.byte $00
.byte $30 ;instrument $09
.word @env9,@env0,@env0
.byte $00
.byte $70 ;instrument $0a
.word @env9,@env0,@env0
.byte $00
.byte $b0 ;instrument $0b
.word @env9,@env0,@env0
.byte $00
.byte $b0 ;instrument $0c
.word @env9,@env0,@env0
.byte $00
.byte $30 ;instrument $0d
.word @env10,@env0,@env0
.byte $00
.byte $70 ;instrument $0e
.word @env10,@env0,@env0
.byte $00
.byte $70 ;instrument $0f
.word @env11,@env0,@env0
.byte $00
.byte $30 ;instrument $10
.word @env1,@env19,@env25
.byte $00
.byte $30 ;instrument $11
.word @env1,@env20,@env0
.byte $00
.byte $b0 ;instrument $12
.word @env9,@env21,@env0
.byte $00
.byte $30 ;instrument $14
.word @env12,@env22,@env0
.byte $00
.byte $70 ;instrument $15
.word @env5,@env23,@env0
.byte $00
.byte $b0 ;instrument $16
.word @env5,@env23,@env0
.byte $00
.byte $70 ;instrument $17
.word @env5,@env23,@env0
.byte $00
@samples:
@env0:
.byte $c0,$00,$00
@env1:
.byte $cf,$00,$00
@env2:
.byte $c7,$c1,$c2,$c3,$c4,$c5,$c6,$c6,$c5,$02,$c4,$02,$c3,$02,$c2,$02
.byte $c1,$02,$c0,$00,$12
@env3:
.byte $c7,$c4,$c2,$c1,$c1,$c0,$00,$05
@env4:
.byte $c9,$c6,$c5,$c4,$c3,$c3,$c2,$02,$c1,$03,$c0,$00,$0a
@env5:
.byte $c6,$c5,$c5,$c4,$c4,$c3,$c4,$c6,$c5,$c4,$c3,$c3,$c2,$00,$0c
@env6:
.byte $cb,$cb,$c8,$c7,$c5,$c5,$c1,$04,$c0,$00,$08
@env7:
.byte $cf,$06,$c0,$00,$02
@env8:
.byte $cf,$c0,$00,$01
@env9:
.byte $c4,$c7,$02,$c6,$c5,$00,$04
@env10:
.byte $c8,$c6,$02,$c5,$00,$03
@env11:
.byte $c4,$00,$00
@env12:
.byte $c7,$c7,$ca,$02,$c9,$c7,$c6,$c4,$c2,$00,$08
@env13:
.byte $c0,$c4,$00,$01
@env14:
.byte $c0,$c2,$c4,$00,$02
@env15:
.byte $c0,$c7,$c9,$cb,$00,$03
@env16:
.byte $c0,$c2,$05,$c0,$c2,$c4,$00,$05
@env17:
.byte $c0,$c4,$bc,$00,$02
@env18:
.byte $ea,$e3,$dd,$da,$d6,$d4,$d1,$00,$06
@env19:
.byte $c0,$bf,$be,$00,$02
@env20:
.byte $c0,$c1,$c1,$c2,$c2,$c3,$c3,$c4,$c4,$c5,$c5,$c6,$c6,$c7,$c7,$c8
.byte $c8,$c9,$c9,$ca,$ca,$cb,$cb,$cc,$cc,$00,$18
@env21:
.byte $c0,$c0,$c7,$c7,$c0,$c0,$c7,$c7,$c0,$c0,$00,$09
@env22:
.byte $c0,$c3,$c8,$00,$00
@env23:
.byte $c0,$c0,$cc,$cc,$00,$00
@env24:
.byte $ac,$00,$00
@env25:
.byte $c0,$c0,$c1,$c2,$c4,$c7,$cc,$d1,$00,$07
@song0ch0:
.byte $fb,$04
@song0ch0loop:
@ref0:
.byte $a0,$4a,$83,$00,$4a,$83,$00,$ef
.byte $fd
.word @song0ch0loop
@song0ch1:
@song0ch1loop:
@ref1:
.byte $f9,$85
.byte $fd
.word @song0ch1loop
@song0ch2:
@song0ch2loop:
@ref2:
.byte $f9,$85
.byte $fd
.word @song0ch2loop
@song0ch3:
@song0ch3loop:
@ref3:
.byte $f9,$85
.byte $fd
.word @song0ch3loop
@song0ch4:
@song0ch4loop:
@ref4:
.byte $f9,$85
.byte $fd
.word @song0ch4loop
@song1ch0:
.byte $fb,$04
@song1ch0loop:
@ref5:
.byte $9c,$2d,$33,$37,$2c,$8b,$00,$9a,$28,$85,$28,$85,$34,$8f,$00,$9c
.byte $2d,$33,$37,$2c,$8b,$00,$9a,$28,$85,$28,$85,$22,$91
.byte $ff,$19
.word @ref5
.byte $ff,$19
.word @ref5
.byte $ff,$19
.word @ref5
@ref9:
.byte $90,$49,$96,$4f,$53,$98,$48,$8b,$00,$90,$44,$85,$98,$44,$85,$92
.byte $50,$8f,$00,$90,$49,$4f,$94,$53,$90,$48,$8b,$00,$44,$85,$98,$44
.byte $85,$92,$3e,$87,$00,$87
.byte $ff,$1b
.word @ref9
.byte $fd
.word @song1ch0loop
@song1ch1:
@song1ch1loop:
@ref11:
.byte $81,$9a,$2d,$33,$37,$2c,$89,$00,$9c,$1e,$85,$1e,$85,$12,$8f,$01
.byte $9a,$2d,$33,$37,$2c,$89,$00,$9c,$1e,$85,$1e,$85,$18,$91
.byte $ff,$1a
.word @ref11
@ref13:
.byte $9e,$61,$5d,$59,$52,$a7,$00,$4f,$53,$61,$5d,$59,$52,$87,$00,$4d
.byte $52,$93,$00,$a2,$60,$89
@ref14:
.byte $9e,$79,$75,$71,$6a,$a5,$01,$67,$6b,$79,$75,$71,$6a,$89,$65,$6a
.byte $9f,$00
@ref15:
.byte $90,$31,$96,$37,$3b,$98,$30,$8b,$00,$90,$2c,$85,$98,$2c,$85,$92
.byte $38,$8f,$00,$90,$31,$37,$94,$3b,$90,$30,$8b,$00,$2c,$85,$98,$2c
.byte $85,$92,$26,$87,$00,$87
.byte $ff,$1b
.word @ref15
.byte $fd
.word @song1ch1loop
@song1ch2:
@song1ch2loop:
@ref17:
.byte $00,$99,$80,$11,$01,$11,$01,$1c,$8f,$00,$9b,$11,$01,$11,$01,$0a
.byte $8b,$00,$83
@ref18:
.byte $00,$99,$11,$01,$11,$01,$1c,$8f,$00,$9b,$11,$01,$11,$01,$0a,$8b
.byte $00,$83
@ref19:
.byte $61,$5d,$59,$52,$a7,$00,$4f,$53,$61,$5d,$59,$52,$87,$00,$4d,$52
.byte $93,$00,$a2,$52,$89
@ref20:
.byte $80,$79,$75,$71,$6a,$a5,$01,$67,$6b,$9e,$79,$80,$75,$71,$6a,$89
.byte $65,$6a,$9f,$00
@ref21:
.byte $9e,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18
.byte $00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14
.byte $00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18
.byte $00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14
.byte $81
@ref22:
.byte $18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00
.byte $14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00
.byte $18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00,$18,$00
.byte $14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$00,$14,$81
.byte $fd
.word @song1ch2loop
@song1ch3:
@song1ch3loop:
@ref23:
.byte $82,$17,$84,$17,$8a,$0d,$84,$17,$82,$17,$84,$17,$8a,$0d,$84,$17
.byte $82,$17,$84,$17,$8a,$0d,$84,$17,$82,$17,$84,$17,$8a,$0d,$84,$17
.byte $82,$17,$84,$17,$8a,$0d,$84,$17,$82,$17,$84,$17,$8a,$0d,$84,$17
.byte $82,$17,$84,$17,$8a,$0d,$84,$17,$82,$17,$84,$17,$8a,$0d,$8c,$16
.byte $81
.byte $ff,$21
.word @ref23
.byte $ff,$21
.word @ref23
.byte $ff,$21
.word @ref23
.byte $ff,$21
.word @ref23
.byte $ff,$21
.word @ref23
.byte $fd
.word @song1ch3loop
@song1ch4:
@song1ch4loop:
@ref29:
.byte $f9,$85
@ref30:
.byte $f9,$85
@ref31:
.byte $f9,$85
@ref32:
.byte $f9,$85
@ref33:
.byte $f9,$85
@ref34:
.byte $f9,$85
.byte $fd
.word @song1ch4loop
@song2ch0:
.byte $fb,$06
@song2ch0loop:
@ref35:
.byte $00,$f9,$83
.byte $fd
.word @song2ch0loop
@song2ch1:
@song2ch1loop:
@ref36:
.byte $00,$f9,$83
.byte $fd
.word @song2ch1loop
@song2ch2:
@song2ch2loop:
@ref37:
.byte $00,$f9,$83
.byte $fd
.word @song2ch2loop
@song2ch3:
@song2ch3loop:
@ref38:
.byte $00,$f9,$83
.byte $fd
.word @song2ch3loop
@song2ch4:
@song2ch4loop:
@ref39:
.byte $00,$f9,$83
.byte $fd
.word @song2ch4loop
@song3ch0:
.byte $fb,$06
@song3ch0loop:
@ref40:
.byte $00,$f9,$83
.byte $fd
.word @song3ch0loop
@song3ch1:
@song3ch1loop:
@ref41:
.byte $00,$f9,$83
.byte $fd
.word @song3ch1loop
@song3ch2:
@song3ch2loop:
@ref42:
.byte $00,$f9,$83
.byte $fd
.word @song3ch2loop
@song3ch3:
@song3ch3loop:
@ref43:
.byte $00,$f9,$83
.byte $fd
.word @song3ch3loop
@song3ch4:
@song3ch4loop:
@ref44:
.byte $00,$f9,$83
.byte $fd
.word @song3ch4loop
@song4ch0:
.byte $fb,$04
@song4ch0loop:
@ref45:
.byte $94,$4a,$85,$01,$8e,$45,$94,$45,$92,$47,$01,$90,$41,$00,$9d
@ref46:
.byte $98,$4a,$85,$01,$8e,$45,$94,$45,$47,$01,$92,$41,$00,$89,$94,$3d
.byte $92,$3d,$94,$41,$41,$00,$81
@ref47:
.byte $4e,$85,$01,$8e,$49,$94,$49,$92,$4b,$01,$90,$45,$00,$9d
@ref48:
.byte $98,$4e,$85,$01,$8e,$49,$94,$49,$4b,$01,$92,$45,$00,$91,$94,$51
.byte $4f,$4c,$81
.byte $fd
.word @song4ch0loop
@song4ch1:
@song4ch1loop:
@ref49:
.byte $96,$1a,$85,$01,$8e,$15,$96,$15,$17,$01,$11,$00,$9d
@ref50:
.byte $1a,$85,$01,$8e,$15,$96,$15,$17,$01,$11,$00,$89,$0d,$98,$0d,$96
.byte $11,$11,$00,$81
@ref51:
.byte $1e,$85,$01,$8e,$19,$96,$19,$1b,$01,$15,$00,$9d
@ref52:
.byte $1e,$85,$01,$8e,$19,$96,$19,$1b,$01,$15,$00,$91,$94,$39,$37,$34
.byte $81
.byte $fd
.word @song4ch1loop
@song4ch2:
@song4ch2loop:
@ref53:
.byte $8c,$02,$85,$01,$8e,$2d,$8c,$03,$80,$2f,$01,$29,$8c,$02,$8d,$02
.byte $8d
@ref54:
.byte $02,$85,$01,$8e,$2d,$8c,$03,$80,$2f,$01,$29,$8c,$02,$89,$80,$25
.byte $8c,$03,$80,$29,$29,$00,$81
@ref55:
.byte $8c,$02,$85,$01,$8e,$31,$8c,$03,$80,$33,$01,$2d,$8c,$02,$8d,$02
.byte $8d
@ref56:
.byte $02,$85,$01,$8e,$31,$8c,$03,$80,$33,$01,$2d,$8c,$02,$8d,$03,$94
.byte $39,$37,$34,$81
.byte $fd
.word @song4ch2loop
@song4ch3:
@song4ch3loop:
@ref57:
.byte $8e,$0c,$85,$8a,$15,$84,$17,$8e,$0d,$84,$17,$8a,$15,$84,$17,$8e
.byte $0c,$85,$8a,$15,$84,$17,$8e,$0d,$86,$19,$8a,$15,$84,$16,$81
.byte $ff,$11
.word @ref57
.byte $ff,$11
.word @ref57
.byte $ff,$11
.word @ref57
.byte $fd
.word @song4ch3loop
@song4ch4:
@song4ch4loop:
@ref61:
.byte $bf
@ref62:
.byte $bf
@ref63:
.byte $bf
@ref64:
.byte $bf
.byte $fd
.word @song4ch4loop
@song5ch0:
.byte $fb,$06
@ref65:
.byte $96,$38,$85,$01,$92,$35,$90,$38,$85,$01,$94,$34,$81
@ref66:
.byte $90,$38,$85,$01,$92,$35,$90,$39,$a4,$39,$94,$2f,$96,$34,$81
@ref67:
.byte $90,$38,$85,$01,$92,$35,$96,$38,$85,$01,$92,$34,$81
@ref68:
.byte $94,$39,$96,$3f,$43,$47,$38,$85,$01,$34,$81
@ref69:
.byte $38,$85,$01,$35,$38,$85,$01,$34,$81
@ref70:
.byte $38,$85,$01,$35,$39,$a4,$39,$96,$2f,$34,$81
@ref71:
.byte $39,$01,$39,$35,$2f,$01,$2f,$34,$81
@ref72:
.byte $39,$3f,$43,$47,$4d,$47,$43,$3e,$81
@song5ch0loop:
@ref73:
.byte $92,$50,$4c,$46,$42,$46,$42,$3e,$38,$3e,$38,$34,$2e,$34,$2e,$2a
.byte $26
@ref74:
.byte $50,$4c,$46,$42,$46,$42,$3e,$38,$3e,$38,$34,$2e,$34,$2e,$2a,$26
.byte $ff,$10
.word @ref74
.byte $ff,$10
.word @ref74
.byte $fd
.word @song5ch0loop
@song5ch1:
@ref77:
.byte $9e,$26,$8d,$2a,$8d
@ref78:
.byte $20,$9d
@ref79:
.byte $26,$8d,$2a,$8d
@ref80:
.byte $20,$8d,$1a,$8d
@ref81:
.byte $26,$8d,$2a,$8d
@ref82:
.byte $20,$9d
@ref83:
.byte $1a,$9d
@ref84:
.byte $18,$8d,$1c,$8d
@song5ch1loop:
@ref85:
.byte $9a,$20,$83,$26,$83,$2b,$2e,$83,$34,$83,$38,$81
@ref86:
.byte $20,$83,$26,$83,$2b,$2e,$83,$34,$83,$38,$81
.byte $ff,$0b
.word @ref86
@ref88:
.byte $21,$21,$27,$2b,$2f,$2e,$34,$83,$38,$81
.byte $fd
.word @song5ch1loop
@song5ch2:
@ref89:
.byte $8c,$02,$9d
@ref90:
.byte $9b,$02,$81
@ref91:
.byte $02,$9d
@ref92:
.byte $97,$02,$02,$02,$02
@ref93:
.byte $02,$9d
@ref94:
.byte $9b,$02,$81
@ref95:
.byte $02,$9d
.byte $ff,$05
.word @ref92
@song5ch2loop:
@ref97:
.byte $8c,$02,$85,$02,$85,$02,$85,$02,$85
@ref98:
.byte $02,$85,$02,$85,$02,$85,$02,$85
.byte $ff,$08
.word @ref98
.byte $ff,$08
.word @ref98
.byte $fd
.word @song5ch2loop
@song5ch3:
@ref101:
.byte $9f
@ref102:
.byte $9f
@ref103:
.byte $9f
@ref104:
.byte $9f
@ref105:
.byte $9f
@ref106:
.byte $9f
@ref107:
.byte $9f
@ref108:
.byte $9f
@song5ch3loop:
@ref109:
.byte $83,$86,$1e,$85,$1e,$85,$1e,$85,$1e,$81
@ref110:
.byte $83,$1e,$85,$1e,$85,$1e,$85,$1e,$81
.byte $ff,$09
.word @ref110
.byte $ff,$09
.word @ref110
.byte $fd
.word @song5ch3loop
@song5ch4:
@ref113:
.byte $9f
@ref114:
.byte $9f
@ref115:
.byte $9f
@ref116:
.byte $9f
@ref117:
.byte $9f
@ref118:
.byte $9f
@ref119:
.byte $9f
@ref120:
.byte $9f
@song5ch4loop:
@ref121:
.byte $9f
@ref122:
.byte $9f
@ref123:
.byte $9f
@ref124:
.byte $9f
.byte $fd
.word @song5ch4loop
@song6ch0:
@song6ch0loop:
.byte $fb,$03
@ref125:
.byte $af
@ref126:
.byte $8f,$a6,$32,$8b,$a8,$42,$83,$aa,$42,$8d,$a8,$3e,$87,$aa,$3e,$83
.byte $a8,$3e,$89,$a6,$32,$bd,$2e,$91,$a8,$34,$87,$34,$83,$34,$87,$aa
.byte $34,$83,$a8,$3e,$89,$a6,$2e,$ad
@ref127:
.byte $8f,$32,$8b,$a8,$42,$83,$aa,$42,$8d,$a8,$3e,$87,$aa,$3e,$83,$a8
.byte $3e,$89,$a6,$32,$bd,$2e,$91,$aa,$3e,$87,$3e,$83,$ac,$3e,$87,$a8
.byte $42,$83,$46,$89,$a6,$2e,$ab
.byte $fd
.word @song6ch0loop
@song6ch1:
@song6ch1loop:
@ref128:
.byte $af
@ref129:
.byte $8f,$a6,$32,$87,$a8,$42,$83,$aa,$42,$8d,$a8,$3e,$87,$aa,$3e,$83
.byte $a8,$3e,$8d,$aa,$38,$ad,$00,$8d,$a6,$2e,$8d,$a8,$34,$87,$34,$83
.byte $34,$87,$aa,$34,$83,$a8,$3e,$8d,$38,$ad
@ref130:
.byte $00,$8d,$a6,$32,$87,$a8,$42,$83,$42,$8d,$aa,$3e,$87,$a8,$3e,$83
.byte $3e,$8d,$ac,$46,$ad,$00,$8d,$a6,$2e,$8d,$aa,$3e,$87,$3e,$83,$ac
.byte $3e,$87,$a8,$42,$83,$46,$8d,$aa,$42,$9d,$00,$8b
.byte $fd
.word @song6ch1loop
@song6ch2:
@song6ch2loop:
@ref131:
.byte $97,$8c,$02,$85,$02,$85,$02,$85
@ref132:
.byte $9f,$8c,$02,$bd,$02,$bd,$02,$bd,$02,$9d
@ref133:
.byte $9f,$02,$bd,$02,$bd,$02,$bd,$02,$9b
.byte $fd
.word @song6ch2loop
@song6ch3:
@song6ch3loop:
@ref134:
.byte $8a,$18,$84,$14,$88,$18,$84,$14,$8a,$18,$84,$14,$88,$18,$84,$14
.byte $8a,$18,$9d
@ref135:
.byte $82,$14,$8d,$84,$14,$9d,$14,$9d,$14,$9d,$14,$9d,$14,$9d,$14,$9d
.byte $14,$9d,$14,$87,$8a,$16,$16,$81
@ref136:
.byte $16,$8d,$84,$14,$9d,$14,$9d,$14,$9d,$14,$9d,$14,$9d,$14,$10,$86
.byte $15,$88,$11,$82,$14,$91,$84,$14,$9d,$14,$85,$8a,$16,$16,$81
.byte $fd
.word @song6ch3loop
@song6ch4:
@song6ch4loop:
@ref137:
.byte $af
@ref138:
.byte $f9,$f9,$8b
@ref139:
.byte $f9,$f9,$89
.byte $fd
.word @song6ch4loop

296
neslib.h Normal file
View File

@@ -0,0 +1,296 @@
//NES hardware-dependent functions by Shiru (shiru@mail.ru)
//Feel free to do anything you want with this code, consider it Public Domain
//Versions history:
// 030914 - minor fixes in the vram update system
// 310814 - added vram_flush_update
// 120414 - removed adr argument from vram_write and vram_read,
// unrle_vram renamed to vram_unrle, with adr argument removed
// 060414 - many fixes and improvements, including sequental VRAM updates
// previous versions were created since mid-2011, there were many updates
//set bg and spr palettes, data is 32 bytes array
void __fastcall__ pal_all(const char *data);
//set bg palette only, data is 16 bytes array
void __fastcall__ pal_bg(const char *data);
//set spr palette only, data is 16 bytes array
void __fastcall__ pal_spr(const char *data);
//set a palette entry, index is 0..31
void __fastcall__ pal_col(unsigned char index,unsigned char color);
//reset palette to $0f
void __fastcall__ pal_clear(void);
//set virtual bright both for sprites and background, 0 is black, 4 is normal, 8 is white
void __fastcall__ pal_bright(unsigned char bright);
//set virtual bright for sprites only
void __fastcall__ pal_spr_bright(unsigned char bright);
//set virtual bright for sprites background only
void __fastcall__ pal_bg_bright(unsigned char bright);
//wait actual TV frame, 50hz for PAL, 60hz for NTSC
void __fastcall__ ppu_wait_nmi(void);
//wait virtual frame, it is always 50hz, frame-to-frame in PAL, frameskip in NTSC
void __fastcall__ ppu_wait_frame(void);
//turn off rendering, nmi still enabled when rendering is disabled
void __fastcall__ ppu_off(void);
//turn on bg, spr
void __fastcall__ ppu_on_all(void);
//turn on bg only
void __fastcall__ ppu_on_bg(void);
//turn on spr only
void __fastcall__ ppu_on_spr(void);
//set PPU_MASK directly
void __fastcall__ ppu_mask(unsigned char mask);
//get current video system, 0 for PAL, not 0 for NTSC
unsigned char __fastcall__ ppu_system(void);
//clear OAM buffer, all the sprites are hidden
void __fastcall__ oam_clear(void);
//set sprite display mode, 0 for 8x8 sprites, 1 for 8x16 sprites
void __fastcall__ oam_size(unsigned char size);
//set sprite in OAM buffer, chrnum is tile, attr is attribute, sprid is offset in OAM in bytes
//returns sprid+4, which is offset for a next sprite
unsigned char __fastcall__ oam_spr(unsigned char x,unsigned char y,unsigned char chrnum,unsigned char attr,unsigned char sprid);
//set metasprite in OAM buffer
//meta sprite is a const unsigned char array, it contains four bytes per sprite
//in order x offset, y offset, tile, attribute
//x=128 is end of a meta sprite
//returns sprid+4, which is offset for a next sprite
unsigned char __fastcall__ oam_meta_spr(unsigned char x,unsigned char y,unsigned char sprid,const unsigned char *data);
//hide all remaining sprites from given offset
void __fastcall__ oam_hide_rest(unsigned char sprid);
//play a music in FamiTone format
void __fastcall__ music_play(unsigned char song);
//stop music
void __fastcall__ music_stop(void);
//pause and unpause music
void __fastcall__ music_pause(unsigned char pause);
//play FamiTone sound effect on channel 0..3
void __fastcall__ sfx_play(unsigned char sound,unsigned char channel);
//play a DPCM sample, 1..63
void __fastcall__ sample_play(unsigned char sample);
//poll controller and return flags like PAD_LEFT etc, input is pad number (0 or 1)
unsigned char __fastcall__ pad_poll(unsigned char pad);
//poll controller in trigger mode, a flag is set only on button down, not hold
//if you need to poll the pad in both normal and trigger mode, poll it in the
//trigger mode for first, then use pad_state
unsigned char __fastcall__ pad_trigger(unsigned char pad);
//get previous pad state without polling ports
unsigned char __fastcall__ pad_state(unsigned char pad);
//set scroll, including rhe top bits
//it is always applied at beginning of a TV frame, not at the function call
void __fastcall__ scroll(unsigned int x,unsigned int y);
//set scroll after screen split invoked by the sprite 0 hit
//warning: all CPU time between the function call and the actual split point will be wasted!
//warning: the program loop has to fit into the frame time, ppu_wait_frame should not be used
// otherwise empty frames without split will be inserted, resulting in jumpy screen
//warning: only X scroll could be changed in this version
void __fastcall__ split(unsigned int x,unsigned int y);
//select current chr bank for sprites, 0..1
void __fastcall__ bank_spr(unsigned char n);
//select current chr bank for background, 0..1
void __fastcall__ bank_bg(unsigned char n);
//get random number 0..255 or 0..65535
unsigned char __fastcall__ rand8(void);
unsigned int __fastcall__ rand16(void);
//set random seed
void __fastcall__ set_rand(unsigned int seed);
//when display is enabled, vram access could only be done with this vram update system
//the function sets a pointer to the update buffer that contains data and addresses
//in a special format. It allows to write non-sequental bytes, as well as horizontal or
//vertical nametable sequences.
//buffer pointer could be changed during rendering, but it only takes effect on a new frame
//number of transferred bytes is limited by vblank time
//to disable updates, call this function with NULL pointer
//the update data format:
// MSB, LSB, byte for a non-sequental write
// MSB|NT_UPD_HORZ, LSB, LEN, [bytes] for a horizontal sequence
// MSB|NT_UPD_VERT, LSB, LEN, [bytes] for a vertical sequence
// NT_UPD_EOF to mark end of the buffer
//length of this data should be under 256 bytes
void __fastcall__ set_vram_update(unsigned char *buf);
//all following vram functions only work when display is disabled
//do a series of VRAM writes, the same format as for set_vram_update, but writes done right away
void __fastcall__ flush_vram_update(unsigned char *buf);
//set vram pointer to write operations if you need to write some data to vram
void __fastcall__ vram_adr(unsigned int adr);
//put a byte at current vram address, works only when rendering is turned off
void __fastcall__ vram_put(unsigned char n);
//fill a block with a byte at current vram address, works only when rendering is turned off
void __fastcall__ vram_fill(unsigned char n,unsigned int len);
//set vram autoincrement, 0 for +1 and not 0 for +32
void __fastcall__ vram_inc(unsigned char n);
//read a block from current address of vram, works only when rendering is turned off
void __fastcall__ vram_read(unsigned char *dst,unsigned int size);
//write a block to current address of vram, works only when rendering is turned off
void __fastcall__ vram_write(const unsigned char *src,unsigned int size);
//unpack RLE data to current address of vram, mostly used for nametables
void __fastcall__ vram_unrle(const unsigned char *data);
//like a normal memcpy, but does not return anything
void __fastcall__ memcpy(void *dst,void *src,unsigned int len);
//like memset, but does not return anything
void __fastcall__ memfill(void *dst,unsigned char value,unsigned int len);
//delay for N frames
void __fastcall__ delay(unsigned char frames);
#define PAD_A 0x01
#define PAD_B 0x02
#define PAD_SELECT 0x04
#define PAD_START 0x08
#define PAD_UP 0x10
#define PAD_DOWN 0x20
#define PAD_LEFT 0x40
#define PAD_RIGHT 0x80
#define OAM_FLIP_V 0x80
#define OAM_FLIP_H 0x40
#define OAM_BEHIND 0x20
#define MAX(x1,x2) ((x1)<(x2)?(x2):(x1))
#define MIN(x1,x2) ((x1)<(x2)?(x1):(x2))
#define MASK_SPR 0x10
#define MASK_BG 0x08
#define MASK_EDGE_SPR 0x04
#define MASK_EDGE_BG 0x02
#define NAMETABLE_A 0x2000
#define NAMETABLE_B 0x2400
#define NAMETABLE_C 0x2800
#define NAMETABLE_D 0x2c00
#define NULL 0
#define TRUE 1
#define FALSE 0
#define NT_UPD_HORZ 0x40
#define NT_UPD_VERT 0x80
#define NT_UPD_EOF 0xff
//macro to calculate nametable address from X,Y in compile time
#define NTADR_A(x,y) (NAMETABLE_A|(((y)<<5)|(x)))
#define NTADR_B(x,y) (NAMETABLE_B|(((y)<<5)|(x)))
#define NTADR_C(x,y) (NAMETABLE_C|(((y)<<5)|(x)))
#define NTADR_D(x,y) (NAMETABLE_D|(((y)<<5)|(x)))
//macro to get MSB and LSB
#define MSB(x) (((x)>>8))
#define LSB(x) (((x)&0xff))

1245
neslib.s Normal file

File diff suppressed because it is too large Load Diff

59
nrom.cfg Normal file
View File

@@ -0,0 +1,59 @@
MEMORY {
ZP: start = $0000, size = $0100, type = rw, define = yes;
HEADER: start = $0000, size = $0010, file = %O ,fill = yes;
PRG: start = $8000, size = $7fc0, file = %O ,fill = yes, define = yes;
DMC: start = $ffc0, size = $003a, file = %O, fill = yes;
VECTORS: start = $fffa, size = $0006, file = %O, fill = yes;
CHR: start = $0000, size = $2000, file = %O, fill = yes;
RAM: start = $0300, size = $0500, define = yes;
# Use this definition instead if you going to use extra 8K RAM
# RAM: start = $6000, size = $2000, define = yes;
}
SEGMENTS {
HEADER: load = HEADER, type = ro;
STARTUP: load = PRG, type = ro, define = yes;
LOWCODE: load = PRG, type = ro, optional = yes;
INIT: load = PRG, type = ro, define = yes, optional = yes;
CODE: load = PRG, type = ro, define = yes;
RODATA: load = PRG, type = ro, define = yes;
DATA: load = PRG, run = RAM, type = rw, define = yes;
VECTORS: load = VECTORS, type = rw;
SAMPLES: load = DMC, type = rw;
CHARS: load = CHR, type = rw;
BSS: load = RAM, type = bss, define = yes;
HEAP: load = RAM, type = bss, optional = yes;
ZEROPAGE: load = ZP, type = zp;
}
FEATURES {
CONDES: segment = INIT,
type = constructor,
label = __CONSTRUCTOR_TABLE__,
count = __CONSTRUCTOR_COUNT__;
CONDES: segment = RODATA,
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
CONDES: type = interruptor,
segment = RODATA,
label = __INTERRUPTOR_TABLE__,
count = __INTERRUPTOR_COUNT__;
}
SYMBOLS {
__STACKSIZE__ = $0500; # 5 pages stack
NES_MAPPER = 0; # mapper number
NES_PRG_BANKS = 2; # number of 16K PRG banks, change to 2 for NROM256
NES_CHR_BANKS = 1; # number of 8K CHR banks
NES_MIRRORING = 0; # 0 horizontal, 1 vertical, 8 four screen
}

BIN
runtime.lib Normal file

Binary file not shown.

BIN
sound/music.ftm Normal file

Binary file not shown.

BIN
sound/sounds.ftm Normal file

Binary file not shown.

52
sounds.s Normal file
View File

@@ -0,0 +1,52 @@
;this file for FamiTone2 libary generated by nsf2data tool
sounds:
.word @sfx_ntsc_0,@sfx_pal_0
.word @sfx_ntsc_1,@sfx_pal_1
.word @sfx_ntsc_2,@sfx_pal_2
.word @sfx_ntsc_3,@sfx_pal_3
@sfx_ntsc_0:
.byte $80,$7f,$81,$ab,$82,$01,$04,$81,$3f,$04,$81,$1c,$04,$81,$d5,$82
.byte $00,$04,$81,$9f,$04,$81,$8e,$04,$80,$74,$81,$ab,$82,$01,$04,$81
.byte $3f,$04,$81,$1c,$04,$81,$d5,$82,$00,$04,$81,$9f,$04,$81,$8e,$04
.byte $80,$71,$81,$ab,$82,$01,$04,$81,$3f,$04,$81,$1c,$04,$81,$d5,$82
.byte $00,$04,$81,$9f,$04,$81,$8e,$04,$80,$30,$00
@sfx_ntsc_1:
.byte $80,$3f,$81,$ab,$82,$01,$01,$81,$3f,$01,$81,$2d,$01,$81,$1c,$01
.byte $80,$32,$81,$ab,$01,$81,$3f,$01,$81,$2d,$01,$81,$1c,$01,$80,$30
.byte $00
@sfx_ntsc_2:
.byte $80,$38,$81,$34,$82,$00,$01,$80,$3a,$81,$27,$01,$80,$3c,$81,$23
.byte $01,$80,$3e,$81,$34,$01,$80,$3f,$81,$27,$01,$81,$23,$01,$81,$34
.byte $01,$81,$27,$01,$80,$32,$81,$23,$01,$81,$34,$01,$81,$27,$01,$81
.byte $23,$01,$81,$34,$01,$81,$27,$01,$81,$23,$01,$81,$34,$01,$81,$27
.byte $01,$81,$23,$01,$81,$34,$01,$81,$27,$01,$81,$23,$01,$80,$30,$00
@sfx_ntsc_3:
.byte $83,$38,$84,$46,$85,$00,$01,$83,$3a,$84,$42,$01,$83,$3c,$84,$5e
.byte $01,$83,$3e,$84,$46,$01,$83,$3f,$84,$42,$01,$84,$5e,$01,$84,$46
.byte $01,$84,$42,$01,$83,$32,$84,$5e,$01,$84,$46,$01,$84,$42,$01,$84
.byte $5e,$01,$84,$46,$01,$84,$42,$01,$84,$5e,$01,$84,$46,$01,$84,$42
.byte $01,$84,$5e,$01,$84,$46,$01,$84,$42,$01,$84,$5e,$01,$83,$30,$00
@sfx_pal_0:
.byte $80,$7f,$81,$8c,$82,$01,$04,$81,$29,$03,$81,$08,$03,$81,$c6,$82
.byte $00,$04,$81,$94,$03,$81,$84,$03,$80,$74,$81,$8c,$82,$01,$04,$81
.byte $29,$03,$81,$08,$03,$81,$c6,$82,$00,$04,$81,$94,$03,$81,$84,$03
.byte $80,$71,$81,$8c,$82,$01,$04,$81,$29,$03,$81,$08,$03,$81,$c6,$82
.byte $00,$04,$81,$94,$03,$81,$84,$03,$80,$30,$00
@sfx_pal_1:
.byte $80,$3f,$81,$8c,$82,$01,$01,$81,$29,$01,$81,$18,$01,$81,$08,$01
.byte $80,$32,$81,$8c,$01,$81,$29,$01,$81,$18,$01,$81,$08,$01,$80,$30
.byte $00
@sfx_pal_2:
.byte $80,$38,$81,$31,$82,$00,$01,$80,$3a,$81,$24,$01,$80,$3c,$81,$20
.byte $01,$80,$3e,$81,$31,$01,$80,$3f,$81,$24,$01,$81,$20,$01,$81,$31
.byte $01,$81,$24,$01,$80,$32,$81,$20,$01,$81,$31,$01,$81,$24,$01,$81
.byte $20,$01,$81,$31,$01,$81,$24,$01,$81,$20,$01,$81,$31,$01,$81,$24
.byte $01,$81,$20,$01,$81,$31,$01,$81,$24,$01,$81,$20,$01,$80,$30,$00
@sfx_pal_3:
.byte $83,$38,$84,$41,$85,$00,$01,$83,$3a,$84,$3e,$01,$83,$3c,$84,$57
.byte $01,$83,$3e,$84,$41,$01,$83,$3f,$84,$3e,$01,$84,$57,$01,$84,$41
.byte $01,$84,$3e,$01,$83,$32,$84,$57,$01,$84,$41,$01,$84,$3e,$01,$84
.byte $57,$01,$84,$41,$01,$84,$3e,$01,$84,$57,$01,$84,$41,$01,$84,$3e
.byte $01,$84,$57,$01,$84,$41,$01,$84,$3e,$01,$84,$57,$01,$83,$30,$00

BIN
tileset.chr Normal file

Binary file not shown.

33
util/bin-to-h.py Normal file
View File

@@ -0,0 +1,33 @@
import sys
use_rle = False
if "--rle" in sys.argv:
use_rle = True
out = []
previous = "NO"
count = 0
with open(sys.argv[1]) as f:
x = f.read()
for i in x:
c = hex(ord(i))
if len(c) == len('0x0'):
c = c[:2] + '0' + c[2]
if use_rle:
if c == previous:
count += 1
else:
if count:
out.append( hex(count) )
out.append( previous )
count = 1
previous = c
else:
out.append( c )
if use_rle and count:
out.append( hex(count) )
out.append( previous )
print "const unsigned char __rename_me__[",len(out),"] = {",",".join(out),"};"

26
util/credits.sh Normal file
View File

@@ -0,0 +1,26 @@
function credit_line() {
echo -n "const unsigned char credits_$1[] = ";
echo "$2" | python ebcdic.py
}
# " "
credit_line 0 " SplatooD"
credit_line 1 " a Splatoon demake"
credit_line 2 " Project Lead"
credit_line 3 " John Carmackeral"
credit_line 4 " Music"
credit_line 5 " Nobuo Squidimatsu"
credit_line 6 " Title & Postgame"
credit_line 7 " Koji Ikarashi"
credit_line 8 " Game Design"
credit_line 9 " Squideo Kojima"
credit_line 10 " Graphics"
credit_line 11 " Squid Meier"
credit_line 12 " Game Mechanics"
credit_line 13 " American McGill"
credit_line 14 " Splatoon (C) 2015"
credit_line 15 " Nintendo"
credit_line 16 " Thanks for playing!"
echo "const unsigned char * credits[] = {" credits_{0..16}, zero, zero, zero "};"

9
util/ebcdic.py Normal file
View File

@@ -0,0 +1,9 @@
import codecs
out = []
for i in codecs.encode(raw_input()):
out.append(hex(ord(i)+0x80))
out.append("0x00");
print "{",",".join(out),"};"