Overhaul of art pipeline to support sprite flipping
Before Width: | Height: | Size: 249 B After Width: | Height: | Size: 249 B |
Before Width: | Height: | Size: 242 B After Width: | Height: | Size: 242 B |
Before Width: | Height: | Size: 197 B After Width: | Height: | Size: 197 B |
Before Width: | Height: | Size: 145 B After Width: | Height: | Size: 145 B |
Before Width: | Height: | Size: 197 B After Width: | Height: | Size: 197 B |
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 190 B |
Before Width: | Height: | Size: 197 B After Width: | Height: | Size: 197 B |
Before Width: | Height: | Size: 124 B After Width: | Height: | Size: 124 B |
Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 127 B |
Before Width: | Height: | Size: 186 B After Width: | Height: | Size: 186 B |
@ -13,6 +13,7 @@
|
|||||||
700F21DE1F43E31300D7007D /* input.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = input.s; sourceTree = "<group>"; };
|
700F21DE1F43E31300D7007D /* input.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = input.s; sourceTree = "<group>"; };
|
||||||
700F21DF1F4A364600D7007D /* projectile.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = projectile.s; sourceTree = "<group>"; };
|
700F21DF1F4A364600D7007D /* projectile.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = projectile.s; sourceTree = "<group>"; };
|
||||||
700F21E01F4A3A5500D7007D /* GenerateTrigTables.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = GenerateTrigTables.py; sourceTree = "<group>"; };
|
700F21E01F4A3A5500D7007D /* GenerateTrigTables.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = GenerateTrigTables.py; sourceTree = "<group>"; };
|
||||||
|
700F72872112428D00225B17 /* RenumberSpriteFiles.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = RenumberSpriteFiles.sh; sourceTree = "<group>"; };
|
||||||
700FFAFB1F40F3BF00A442DE /* font.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = font.s; sourceTree = "<group>"; };
|
700FFAFB1F40F3BF00A442DE /* font.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = font.s; sourceTree = "<group>"; };
|
||||||
7059502B1F37A0BE00BBE90F /* GenerateVRAMTable.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = GenerateVRAMTable.py; sourceTree = "<group>"; };
|
7059502B1F37A0BE00BBE90F /* GenerateVRAMTable.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = GenerateVRAMTable.py; sourceTree = "<group>"; };
|
||||||
705AAFA920040B0D001BB0ED /* terrain_e1.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = terrain_e1.s; sourceTree = "<group>"; };
|
705AAFA920040B0D001BB0ED /* terrain_e1.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = terrain_e1.s; sourceTree = "<group>"; };
|
||||||
@ -65,6 +66,7 @@
|
|||||||
70E9D8631F2BD95400555C19 /* Makefile */,
|
70E9D8631F2BD95400555C19 /* Makefile */,
|
||||||
70BDCBC92006AD5F00CB51F1 /* linkerConfig */,
|
70BDCBC92006AD5F00CB51F1 /* linkerConfig */,
|
||||||
70FE79D21F8814A600E0095C /* MerlinToCA65.sh */,
|
70FE79D21F8814A600E0095C /* MerlinToCA65.sh */,
|
||||||
|
700F72872112428D00225B17 /* RenumberSpriteFiles.sh */,
|
||||||
7088096D1F2ECE8D00D4C950 /* GenerateRenderSpans.py */,
|
7088096D1F2ECE8D00D4C950 /* GenerateRenderSpans.py */,
|
||||||
7059502B1F37A0BE00BBE90F /* GenerateVRAMTable.py */,
|
7059502B1F37A0BE00BBE90F /* GenerateVRAMTable.py */,
|
||||||
7099E3851F4107B100182A82 /* GenerateVRAMYOffset.py */,
|
7099E3851F4107B100182A82 /* GenerateVRAMYOffset.py */,
|
||||||
|
19
Makefile
@ -15,9 +15,11 @@ ADDR=800
|
|||||||
|
|
||||||
PGM=gscats
|
PGM=gscats
|
||||||
MRSPRITE=../MrSprite/mrsprite
|
MRSPRITE=../MrSprite/mrsprite
|
||||||
|
GENART=Art/Generated
|
||||||
CHROMA=a4dffb
|
CHROMA=a4dffb
|
||||||
PALETTE=a4dffb a4dffb 008800 886611 cc9933 eebb44 dd6666 ff99aa 777777 ff0000 b7b7b7 dddddd 0077bb ffff00 000000 ffffff
|
PALETTE=a4dffb a4dffb 008800 886611 cc9933 eebb44 dd6666 ff99aa 777777 ff0000 b7b7b7 dddddd 0077bb ffff00 000000 ffffff
|
||||||
SPRITES=SpriteBank
|
SPRITES=SpriteBank
|
||||||
|
FLIPLIST=$(wildcard Art/*Fan.gif) $(wildcard Art/*Spit*.gif)
|
||||||
REMOTESYMBOLS=-Wl $(shell ./ParseMapFile.py *.map)
|
REMOTESYMBOLS=-Wl $(shell ./ParseMapFile.py *.map)
|
||||||
|
|
||||||
all: terrain_e1 $(PGM) loader
|
all: terrain_e1 $(PGM) loader
|
||||||
@ -57,13 +59,20 @@ clean:
|
|||||||
rm -f terrain_e1.o
|
rm -f terrain_e1.o
|
||||||
rm -f terrain_e1.map
|
rm -f terrain_e1.map
|
||||||
rm -f terrain_e1
|
rm -f terrain_e1
|
||||||
|
rm -f Art/*m.gif
|
||||||
|
rm -f $(GENART)/*
|
||||||
|
|
||||||
.PHONY: art
|
.PHONY: art
|
||||||
art:
|
art:
|
||||||
$(MRSPRITE) CODE "Art/*.gif" $(CHROMA) $(PALETTE)
|
rm -f $(GENART)/*
|
||||||
$(MRSPRITE) BANK "Art/*.txt" $(SPRITES)
|
for gif in $(FLIPLIST); do $(MRSPRITE) MIRROR "$$gif" $(CHROMA); done
|
||||||
mv Art/$(SPRITES)00.bin .
|
./RenumberSpriteFiles.sh
|
||||||
./MerlinToCA65.sh Art/$(SPRITES)Src.txt > spritebank.s
|
$(MRSPRITE) CODE $(GENART)"/*.gif" $(CHROMA) $(PALETTE)
|
||||||
rm Art/*.txt
|
$(MRSPRITE) BANK $(GENART)"/*.txt" $(SPRITES)
|
||||||
|
# $(MRSPRITE) WALLPAPER "Art/*.gif" $(CHROMA) ff0000
|
||||||
|
mv $(GENART)/$(SPRITES)00.bin .
|
||||||
|
./MerlinToCA65.sh $(GENART)/$(SPRITES)Src.txt > spritebank.s
|
||||||
|
rm $(GENART)/*.txt
|
||||||
|
rm -f Art/*m.gif
|
||||||
java -jar $(AC) -d $(PGM).2mg $(SPRITES)00
|
java -jar $(AC) -d $(PGM).2mg $(SPRITES)00
|
||||||
java -jar $(AC) -p $(PGM).2mg $(SPRITES)00 BIN 0x0000 < $(SPRITES)00.bin
|
java -jar $(AC) -p $(PGM).2mg $(SPRITES)00 BIN 0x0000 < $(SPRITES)00.bin
|
||||||
|
16
RenumberSpriteFiles.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Takes the list of gifs in the art folder and numbers them in
|
||||||
|
# increasing order. This is needed for Mr. Sprite to process them properly
|
||||||
|
# but requires that alphabetic order of sprite filenames remains consistent
|
||||||
|
counter=0
|
||||||
|
for filename in Art/*.gif
|
||||||
|
do
|
||||||
|
extension="${filename##*.}"
|
||||||
|
base="${filename%.*}"
|
||||||
|
printf -v index "%03d" $counter
|
||||||
|
newpath=$(echo $filename | sed 's/_*[0-9]*\.gif$/\_'$index'.gif/')
|
||||||
|
newfile=$(basename $newpath)
|
||||||
|
cp $filename "Art/Generated/"$newfile
|
||||||
|
((counter++))
|
||||||
|
done
|
||||||
|
|
BIN
SpriteBank00.bin
BIN
gscats.2mg
@ -90,7 +90,7 @@ renderInventoryItem:
|
|||||||
|
|
||||||
ply
|
ply
|
||||||
phy
|
phy
|
||||||
lda #8
|
lda #11
|
||||||
clc
|
clc
|
||||||
jsr DrawSpriteBank
|
jsr DrawSpriteBank
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ renderInventoryItem_unselected:
|
|||||||
adc #ITEM_HEIGHT*160
|
adc #ITEM_HEIGHT*160
|
||||||
pha
|
pha
|
||||||
tay
|
tay
|
||||||
lda #7
|
lda #10
|
||||||
jsr DrawSpriteBank
|
jsr DrawSpriteBank
|
||||||
|
|
||||||
; Render counter
|
; Render counter
|
||||||
|
10
projectile.s
@ -41,8 +41,8 @@ projectileTypes:
|
|||||||
.word 3 ; Damage
|
.word 3 ; Damage
|
||||||
.word 3 ; Crater radius
|
.word 3 ; Crater radius
|
||||||
.word 4 ; Frame 0
|
.word 4 ; Frame 0
|
||||||
.word 5 ; Frame 1
|
.word 6 ; Frame 1
|
||||||
.word 6 ; Frame 2
|
.word 8 ; Frame 2
|
||||||
|
|
||||||
.word 0,0,0 ; Padding to 16-byte boundary
|
.word 0,0,0 ; Padding to 16-byte boundary
|
||||||
|
|
||||||
@ -58,9 +58,9 @@ projectileTypes:
|
|||||||
; Fan
|
; Fan
|
||||||
.word 3 ; Damage
|
.word 3 ; Damage
|
||||||
.word 3 ; Crater radius
|
.word 3 ; Crater radius
|
||||||
.word 9 ; Frame 0
|
.word 12 ; Frame 0
|
||||||
.word 9 ; Frame 1
|
.word 12 ; Frame 1
|
||||||
.word 9 ; Frame 2
|
.word 12 ; Frame 2
|
||||||
|
|
||||||
.word 0,0,0 ; Padding to 16-byte boundary
|
.word 0,0,0 ; Padding to 16-byte boundary
|
||||||
|
|
||||||
|
@ -2,18 +2,18 @@
|
|||||||
|
|
||||||
|
|
||||||
DrawSpriteBank :
|
DrawSpriteBank :
|
||||||
ASL ; A=Sprite Number ($0000-$0009)
|
ASL ; A=Sprite Number ($0000-$000D)
|
||||||
TAX ; Y=Target Screen Address ($2000-$9D00)
|
TAX ; Y=Target Screen Address ($2000-$9D00)
|
||||||
LDA SpriteBankNum,X ; Relative Sprite Number Table
|
LDA SpriteBankNum,X ; Relative Sprite Number Table
|
||||||
JMP (SpriteBankBank,X) ; Bank Number Table
|
JMP (SpriteBankBank,X) ; Bank Number Table
|
||||||
|
|
||||||
SpriteBankNum :
|
SpriteBankNum :
|
||||||
.dbyt $0100,$0000,$0600,$0300,$0400,$0800,$0500,$0700
|
.dbyt $0100,$0000,$0900,$0400,$0500,$0800,$0C00,$0B00
|
||||||
.dbyt $0900,$0200
|
.dbyt $0700,$0600,$0A00,$0D00,$0200,$0300
|
||||||
|
|
||||||
SpriteBankBank :
|
SpriteBankBank :
|
||||||
.addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00
|
.addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00
|
||||||
.addr SpriteBankBank00,SpriteBankBank00
|
.addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00
|
||||||
|
|
||||||
SpriteBankBank00 :
|
SpriteBankBank00 :
|
||||||
JSL $AA0000
|
JSL $AA0000
|
||||||
|