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): def main(argv):
if len(argv)<1: if len(argv)<1:
usage()
exit(0)
if sys.argv[1] == "--tables":
printHorizontalLookup() printHorizontalLookup()
exit(0) exit(0)
pngfile = sys.argv[1] pngfile = sys.argv[1]
xdraw = 0
if len(argv)>1 and sys.argv[2] == "--xdraw":
xdraw = 1
reader = png.Reader(pngfile) reader = png.Reader(pngfile)
try: try:
@ -45,11 +52,10 @@ def main(argv):
print "\n" print "\n"
for shift in range(0,7): for shift in range(0,7):
print "%s_SHIFT%d:" % (niceName,shift) print "%s_SHIFT%d:" % (niceName,shift)
print "\tldy PARAM0\n"
print "\tldx PARAM1" print "\tldx PARAM1"
print rowStartCalculatorCode(); print rowStartCalculatorCode();
spriteChunks = layoutSpriteChunk(pixelData,width,height,shift) spriteChunks = layoutSpriteChunk(pixelData,width,height,shift,xdraw)
for row in range(height): for row in range(height):
for chunkIndex in range(len(spriteChunks)): for chunkIndex in range(len(spriteChunks)):
@ -58,11 +64,11 @@ def main(argv):
print "\n" print "\n"
def layoutSpriteChunk(pixelData,width,height,shift): def layoutSpriteChunk(pixelData,width,height,shift,xdraw):
colorStreams = byteStreamsFromPixels(pixelData,width,height,shift,bitsForColor,highBitForColor) colorStreams = byteStreamsFromPixels(pixelData,width,height,shift,bitsForColor,highBitForColor)
maskStreams = byteStreamsFromPixels(pixelData,width,height,shift,bitsForMask,highBitForMask) maskStreams = byteStreamsFromPixels(pixelData,width,height,shift,bitsForMask,highBitForMask)
code = generateBlitter(colorStreams,maskStreams,height) code = generateBlitter(colorStreams,maskStreams,height,xdraw)
return code return code
@ -115,7 +121,7 @@ def byteStreamsFromPixels(pixelData,width,height,shift,bitDelegate,highBitDelega
return byteStreams return byteStreams
def generateBlitter(colorStreams,maskStreams,height): def generateBlitter(colorStreams,maskStreams,height,xdraw):
byteWidth = len(colorStreams[0]) byteWidth = len(colorStreams[0])
spriteChunks = [["" for y in range(height)] for x in range(byteWidth)] spriteChunks = [["" for y in range(height)] for x in range(byteWidth)]
@ -128,9 +134,15 @@ def generateBlitter(colorStreams,maskStreams,height):
for chunkIndex in range(len(byteSplits)): for chunkIndex in range(len(byteSplits)):
# Store byte into video memory # Store byte into video memory
spriteChunks[chunkIndex][row] = \ if xdraw:
"\tlda #%%%s\n" % byteSplits[chunkIndex] + \ spriteChunks[chunkIndex][row] = \
"\tsta (SCRATCH0),y\n"; "\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 # Increment indices
if chunkIndex == len(byteSplits)-1: if chunkIndex == len(byteSplits)-1:
@ -150,7 +162,7 @@ def generateBlitter(colorStreams,maskStreams,height):
def rowStartCalculatorCode(): def rowStartCalculatorCode():
return \ return \
"\tlda HGRROWS_H,x\n" + \ "\tlda HGRROWS_H1,x\n" + \
"\tsta SCRATCH1\n" + \ "\tsta SCRATCH1\n" + \
"\tlda HGRROWS_L,x\n" + \ "\tlda HGRROWS_L,x\n" + \
"\tsta SCRATCH0\n" + \ "\tsta SCRATCH0\n" + \
@ -259,7 +271,13 @@ def printHorizontalLookup():
def usage(): def usage():
print ''' 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! PNG file must not have an alpha channel!
''' '''

Binary file not shown.

View File

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

View File

@ -5,7 +5,7 @@
; Copyright (c) 2015 One Girl, One Laptop Productions. All rights reserved. ; Copyright (c) 2015 One Girl, One Laptop Productions. All rights reserved.
; ;
HGRROWS_H: HGRROWS_H1:
.byte $20 .byte $20
.byte $24 .byte $24
.byte $28 .byte $28
@ -442,3 +442,220 @@ HGRROWS_L:
.byte $D0 .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 PARAM3 = $09
SCRATCH0 = $19 SCRATCH0 = $19
SCRATCH1 = $1a SCRATCH1 = $1a
HIRES_PAGE_L = $1b
HIRES_PAGE_H = $1c
; Macros ; Macros
.macro BLITBYTE xPos,yPos,addr .macro BLITBYTE xPos,yPos,addr
@ -64,15 +66,19 @@ SCRATCH1 = $1a
main: main:
jsr EnableHires jsr EnableHires
; lda #$00 lda #$00
; jsr VenetianFill jsr VenetianFill
lda #<bgFilename ; lda #<bgFilename
sta PARAM0 ; sta PARAM0
lda #>bgFilename ; lda #>bgFilename
sta PARAM1 ; sta PARAM1
jsr BloadHires ; jsr BloadHires
lda #<HGRROWS_H1
sta HIRES_PAGE_L
lda #>HGRROWS_H1
sta HIRES_PAGE_H
ldx #0 ldx #0
;;;; ;;;;
@ -104,14 +110,24 @@ loop:
jsr SaveBackground jsr SaveBackground
jsr BOXW_MAG jsr BOXW_MAG
lda #$80 lda #$60
jsr ROMWAIT jsr ROMWAIT
; Sync to VBL
@1: lda $C019
beq @1
bpl @1
@0: lda $C019
bmi @0
jsr RestoreBackground jsr RestoreBackground
inx inx
cpx #133 cpx #133
bne loop bne loop
; ldx #0
; jmp loop
rts rts
bgBuffer: bgBuffer:
@ -171,10 +187,10 @@ bgFilename:
.include "hgrtableX.s" .include "hgrtableX.s"
.include "hgrtableY.s" .include "hgrtableY.s"
.include "spritegen0.s" .include "spritegen0.s"
.include "spritegen1.s" ;.include "spritegen1.s"
.include "spritegen2.s" ;.include "spritegen2.s"
.include "spritegen3.s" ;.include "spritegen3.s"
.include "spritegen4.s" ;.include "spritegen4.s"
; Suppress some linker warnings - Must be the last thing in the file ; Suppress some linker warnings - Must be the last thing in the file
.SEGMENT "ZPSAVE" .SEGMENT "ZPSAVE"

View File

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