Cleanup, early support for page 2

This commit is contained in:
Quinn Dunki 2017-02-25 16:30:30 -08:00
parent 386b338c23
commit 9284814222
7 changed files with 335 additions and 98 deletions

View File

@ -10,10 +10,17 @@ class Colors:
def main(argv):
if len(argv)<1:
usage()
exit(0)
if sys.argv[1] == "--tables":
printHorizontalLookup()
exit(0)
pngfile = sys.argv[1]
xdraw = 0
if len(argv)>1 and sys.argv[2] == "--xdraw":
xdraw = 1
reader = png.Reader(pngfile)
try:
@ -45,11 +52,10 @@ def main(argv):
print "\n"
for shift in range(0,7):
print "%s_SHIFT%d:" % (niceName,shift)
print "\tldy PARAM0\n"
print "\tldx PARAM1"
print rowStartCalculatorCode();
spriteChunks = layoutSpriteChunk(pixelData,width,height,shift)
spriteChunks = layoutSpriteChunk(pixelData,width,height,shift,xdraw)
for row in range(height):
for chunkIndex in range(len(spriteChunks)):
@ -58,11 +64,11 @@ def main(argv):
print "\n"
def layoutSpriteChunk(pixelData,width,height,shift):
def layoutSpriteChunk(pixelData,width,height,shift,xdraw):
colorStreams = byteStreamsFromPixels(pixelData,width,height,shift,bitsForColor,highBitForColor)
maskStreams = byteStreamsFromPixels(pixelData,width,height,shift,bitsForMask,highBitForMask)
code = generateBlitter(colorStreams,maskStreams,height)
code = generateBlitter(colorStreams,maskStreams,height,xdraw)
return code
@ -115,7 +121,7 @@ def byteStreamsFromPixels(pixelData,width,height,shift,bitDelegate,highBitDelega
return byteStreams
def generateBlitter(colorStreams,maskStreams,height):
def generateBlitter(colorStreams,maskStreams,height,xdraw):
byteWidth = len(colorStreams[0])
spriteChunks = [["" for y in range(height)] for x in range(byteWidth)]
@ -128,10 +134,16 @@ def generateBlitter(colorStreams,maskStreams,height):
for chunkIndex in range(len(byteSplits)):
# Store byte into video memory
spriteChunks[chunkIndex][row] = \
"\tlda #%%%s\n" % byteSplits[chunkIndex] + \
"\tsta (SCRATCH0),y\n";
if xdraw:
spriteChunks[chunkIndex][row] = \
"\tlda (SCRATCH0),y\n" + \
"\teor #%%%s\n" % byteSplits[chunkIndex] + \
"\tsta (SCRATCH0),y\n";
else:
spriteChunks[chunkIndex][row] = \
"\tlda #%%%s\n" % byteSplits[chunkIndex] + \
"\tsta (SCRATCH0),y\n";
# Increment indices
if chunkIndex == len(byteSplits)-1:
spriteChunks[chunkIndex][row] += "\n"
@ -150,7 +162,7 @@ def generateBlitter(colorStreams,maskStreams,height):
def rowStartCalculatorCode():
return \
"\tlda HGRROWS_H,x\n" + \
"\tlda HGRROWS_H1,x\n" + \
"\tsta SCRATCH1\n" + \
"\tlda HGRROWS_L,x\n" + \
"\tsta SCRATCH0\n" + \
@ -259,8 +271,14 @@ def printHorizontalLookup():
def usage():
print '''
Usage: HiSprite <png file>
Usages:
HiSprite <png file> [--xdraw]
Generates 6502 assembly to render all shifts of the given sprite,
optionally with exclusive-or drawing (if background will be non-black)
HiSprite --tables
Generates lookup tables for horizontal sprite shifts (division and modulus 7)
PNG file must not have an alpha channel!
'''
sys.exit(2)

Binary file not shown.

View File

@ -38,7 +38,7 @@ saveBackground_loop:
adc PARAM1 ; Calculate Y line
tax
lda HGRROWS_H,x ; Compute hires row
lda HGRROWS_H1,x ; Compute hires row
sta saveBackground_smc0+2
sta saveBackground_smc1+2
sta saveBackground_smc2+2
@ -121,7 +121,7 @@ restoreBackground_loop:
adc PARAM1 ; Calculate Y line
tax
lda HGRROWS_H,x ; Compute hires row
lda HGRROWS_H1,x ; Compute hires row
sta restoreBackground_smc0+2
sta restoreBackground_smc1+2
sta restoreBackground_smc2+2
@ -197,7 +197,7 @@ LinearFill:
linearFill_outer:
pha
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta linearFill_inner+2
lda HGRROWS_L,x
sta linearFill_inner+1

View File

@ -5,7 +5,7 @@
; Copyright (c) 2015 One Girl, One Laptop Productions. All rights reserved.
;
HGRROWS_H:
HGRROWS_H1:
.byte $20
.byte $24
.byte $28
@ -442,3 +442,220 @@ HGRROWS_L:
.byte $D0
HGRROWS_H2:
.byte $40
.byte $44
.byte $48
.byte $4C
.byte $50
.byte $54
.byte $58
.byte $5C
.byte $40
.byte $44
.byte $48
.byte $4C
.byte $50
.byte $54
.byte $58
.byte $5C
.byte $41
.byte $45
.byte $49
.byte $4D
.byte $51
.byte $55
.byte $59
.byte $5D
.byte $41
.byte $45
.byte $49
.byte $4D
.byte $51
.byte $55
.byte $59
.byte $5D
.byte $42
.byte $46
.byte $4A
.byte $4E
.byte $52
.byte $56
.byte $5A
.byte $5E
.byte $42
.byte $46
.byte $4A
.byte $4E
.byte $52
.byte $56
.byte $5A
.byte $5E
.byte $43
.byte $47
.byte $4B
.byte $4F
.byte $53
.byte $57
.byte $5B
.byte $5F
.byte $43
.byte $47
.byte $4B
.byte $4F
.byte $53
.byte $57
.byte $5B
.byte $5F
;
.byte $40
.byte $44
.byte $48
.byte $4C
.byte $50
.byte $54
.byte $58
.byte $5C
.byte $40
.byte $44
.byte $48
.byte $4C
.byte $50
.byte $54
.byte $58
.byte $5C
.byte $41
.byte $45
.byte $49
.byte $4D
.byte $51
.byte $55
.byte $59
.byte $5D
.byte $41
.byte $45
.byte $49
.byte $4D
.byte $51
.byte $55
.byte $59
.byte $5D
.byte $42
.byte $46
.byte $4A
.byte $4E
.byte $52
.byte $56
.byte $5A
.byte $5E
.byte $42
.byte $46
.byte $4A
.byte $4E
.byte $52
.byte $56
.byte $5A
.byte $5E
.byte $43
.byte $47
.byte $4B
.byte $4F
.byte $53
.byte $57
.byte $5B
.byte $5F
.byte $43
.byte $47
.byte $4B
.byte $4F
.byte $53
.byte $57
.byte $5B
.byte $5F
;;
.byte $40
.byte $44
.byte $48
.byte $4C
.byte $50
.byte $54
.byte $58
.byte $5C
.byte $40
.byte $44
.byte $48
.byte $4C
.byte $50
.byte $54
.byte $58
.byte $5C
.byte $41
.byte $45
.byte $49
.byte $4D
.byte $51
.byte $55
.byte $59
.byte $5D
.byte $41
.byte $45
.byte $49
.byte $4D
.byte $51
.byte $55
.byte $59
.byte $5D
.byte $42
.byte $46
.byte $4A
.byte $4E
.byte $52
.byte $56
.byte $5A
.byte $5E
.byte $42
.byte $46
.byte $4A
.byte $4E
.byte $52
.byte $56
.byte $5A
.byte $5E
.byte $43
.byte $47
.byte $4B
.byte $4F
.byte $53
.byte $57
.byte $5B
.byte $5F
.byte $43
.byte $47
.byte $4B
.byte $4F
.byte $53
.byte $57
.byte $5B
.byte $5F

Binary file not shown.

View File

@ -27,6 +27,8 @@ PARAM2 = $08
PARAM3 = $09
SCRATCH0 = $19
SCRATCH1 = $1a
HIRES_PAGE_L = $1b
HIRES_PAGE_H = $1c
; Macros
.macro BLITBYTE xPos,yPos,addr
@ -64,15 +66,19 @@ SCRATCH1 = $1a
main:
jsr EnableHires
; lda #$00
; jsr VenetianFill
lda #$00
jsr VenetianFill
lda #<bgFilename
sta PARAM0
lda #>bgFilename
sta PARAM1
jsr BloadHires
; lda #<bgFilename
; sta PARAM0
; lda #>bgFilename
; sta PARAM1
; jsr BloadHires
lda #<HGRROWS_H1
sta HIRES_PAGE_L
lda #>HGRROWS_H1
sta HIRES_PAGE_H
ldx #0
;;;;
@ -104,14 +110,24 @@ loop:
jsr SaveBackground
jsr BOXW_MAG
lda #$80
lda #$60
jsr ROMWAIT
; Sync to VBL
@1: lda $C019
beq @1
bpl @1
@0: lda $C019
bmi @0
jsr RestoreBackground
inx
cpx #133
bne loop
; ldx #0
; jmp loop
rts
bgBuffer:
@ -171,10 +187,10 @@ bgFilename:
.include "hgrtableX.s"
.include "hgrtableY.s"
.include "spritegen0.s"
.include "spritegen1.s"
.include "spritegen2.s"
.include "spritegen3.s"
.include "spritegen4.s"
;.include "spritegen1.s"
;.include "spritegen2.s"
;.include "spritegen3.s"
;.include "spritegen4.s"
; Suppress some linker warnings - Must be the last thing in the file
.SEGMENT "ZPSAVE"

View File

@ -19,10 +19,8 @@ BOXW_MAG_JMP:
BOXW_MAG_SHIFT0:
ldy PARAM0
ldx PARAM1
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -49,7 +47,7 @@ BOXW_MAG_SHIFT0:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -76,7 +74,7 @@ BOXW_MAG_SHIFT0:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -103,7 +101,7 @@ BOXW_MAG_SHIFT0:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -130,7 +128,7 @@ BOXW_MAG_SHIFT0:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -157,7 +155,7 @@ BOXW_MAG_SHIFT0:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -184,7 +182,7 @@ BOXW_MAG_SHIFT0:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -211,7 +209,7 @@ BOXW_MAG_SHIFT0:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -243,10 +241,8 @@ BOXW_MAG_SHIFT0:
BOXW_MAG_SHIFT1:
ldy PARAM0
ldx PARAM1
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -273,7 +269,7 @@ BOXW_MAG_SHIFT1:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -300,7 +296,7 @@ BOXW_MAG_SHIFT1:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -327,7 +323,7 @@ BOXW_MAG_SHIFT1:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -354,7 +350,7 @@ BOXW_MAG_SHIFT1:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -381,7 +377,7 @@ BOXW_MAG_SHIFT1:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -408,7 +404,7 @@ BOXW_MAG_SHIFT1:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -435,7 +431,7 @@ BOXW_MAG_SHIFT1:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -467,10 +463,8 @@ BOXW_MAG_SHIFT1:
BOXW_MAG_SHIFT2:
ldy PARAM0
ldx PARAM1
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -497,7 +491,7 @@ BOXW_MAG_SHIFT2:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -524,7 +518,7 @@ BOXW_MAG_SHIFT2:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -551,7 +545,7 @@ BOXW_MAG_SHIFT2:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -578,7 +572,7 @@ BOXW_MAG_SHIFT2:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -605,7 +599,7 @@ BOXW_MAG_SHIFT2:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -632,7 +626,7 @@ BOXW_MAG_SHIFT2:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -659,7 +653,7 @@ BOXW_MAG_SHIFT2:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -691,10 +685,8 @@ BOXW_MAG_SHIFT2:
BOXW_MAG_SHIFT3:
ldy PARAM0
ldx PARAM1
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -721,7 +713,7 @@ BOXW_MAG_SHIFT3:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -748,7 +740,7 @@ BOXW_MAG_SHIFT3:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -775,7 +767,7 @@ BOXW_MAG_SHIFT3:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -802,7 +794,7 @@ BOXW_MAG_SHIFT3:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -829,7 +821,7 @@ BOXW_MAG_SHIFT3:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -856,7 +848,7 @@ BOXW_MAG_SHIFT3:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -883,7 +875,7 @@ BOXW_MAG_SHIFT3:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -915,10 +907,8 @@ BOXW_MAG_SHIFT3:
BOXW_MAG_SHIFT4:
ldy PARAM0
ldx PARAM1
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -945,7 +935,7 @@ BOXW_MAG_SHIFT4:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -972,7 +962,7 @@ BOXW_MAG_SHIFT4:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -999,7 +989,7 @@ BOXW_MAG_SHIFT4:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1026,7 +1016,7 @@ BOXW_MAG_SHIFT4:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1053,7 +1043,7 @@ BOXW_MAG_SHIFT4:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1080,7 +1070,7 @@ BOXW_MAG_SHIFT4:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1107,7 +1097,7 @@ BOXW_MAG_SHIFT4:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1139,10 +1129,8 @@ BOXW_MAG_SHIFT4:
BOXW_MAG_SHIFT5:
ldy PARAM0
ldx PARAM1
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1169,7 +1157,7 @@ BOXW_MAG_SHIFT5:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1196,7 +1184,7 @@ BOXW_MAG_SHIFT5:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1223,7 +1211,7 @@ BOXW_MAG_SHIFT5:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1250,7 +1238,7 @@ BOXW_MAG_SHIFT5:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1277,7 +1265,7 @@ BOXW_MAG_SHIFT5:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1304,7 +1292,7 @@ BOXW_MAG_SHIFT5:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1331,7 +1319,7 @@ BOXW_MAG_SHIFT5:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1363,10 +1351,8 @@ BOXW_MAG_SHIFT5:
BOXW_MAG_SHIFT6:
ldy PARAM0
ldx PARAM1
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1393,7 +1379,7 @@ BOXW_MAG_SHIFT6:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1420,7 +1406,7 @@ BOXW_MAG_SHIFT6:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1447,7 +1433,7 @@ BOXW_MAG_SHIFT6:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1474,7 +1460,7 @@ BOXW_MAG_SHIFT6:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1501,7 +1487,7 @@ BOXW_MAG_SHIFT6:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1528,7 +1514,7 @@ BOXW_MAG_SHIFT6:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0
@ -1555,7 +1541,7 @@ BOXW_MAG_SHIFT6:
sta (SCRATCH0),y
inx
lda HGRROWS_H,x
lda HGRROWS_H1,x
sta SCRATCH1
lda HGRROWS_L,x
sta SCRATCH0