From a37f15846f5d5755c61dcbf86ee7d0c4c5fb0e5f Mon Sep 17 00:00:00 2001 From: Quinn Dunki Date: Sat, 10 Sep 2016 11:04:57 -0700 Subject: [PATCH] Cleanup --- .gitignore | 1 + HiSprite.py | 255 ++-- .../project.pbxproj | 86 +- .../contents.xcworkspacedata | 2 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 13353 bytes .../xcschemes/HiSprite.xcscheme | 80 + .../xcschemes/xcschememanagement.plist | 22 + HiSprite2.py | 171 --- Makefile | 2 +- V2Make.scpt | Bin 3350 -> 3362 bytes hgrtable2.s => hgrtableX.s | 249 +-- hgrtable.s => hgrtableY.s | 0 hgrtest.s | 495 ------ hgrtest.dsk => hisprite.dsk | Bin 143360 -> 143360 bytes hisprite.s | 166 ++ scratch.s | 19 - spritedata0.s | 162 -- spritedata1.s | 152 -- spritegen0.s | 1333 ++++++++++++++--- spritegen1.s | 1333 ++++++++++++++--- spritegen2.s | 1333 ++++++++++++++--- spritegen3.s | 1333 ++++++++++++++--- 22 files changed, 5011 insertions(+), 2183 deletions(-) rename {HGR.xcodeproj => HiSprite.xcodeproj}/project.pbxproj (61%) rename {HGR.xcodeproj => HiSprite.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (71%) create mode 100644 HiSprite.xcodeproj/project.xcworkspace/xcuserdata/qd.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 HiSprite.xcodeproj/xcuserdata/qd.xcuserdatad/xcschemes/HiSprite.xcscheme create mode 100644 HiSprite.xcodeproj/xcuserdata/qd.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100755 HiSprite2.py rename hgrtable2.s => hgrtableX.s (53%) rename hgrtable.s => hgrtableY.s (100%) delete mode 100644 hgrtest.s rename hgrtest.dsk => hisprite.dsk (86%) create mode 100644 hisprite.s delete mode 100644 scratch.s delete mode 100644 spritedata0.s delete mode 100644 spritedata1.s diff --git a/.gitignore b/.gitignore index 383c4ee..4c40ae8 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ HGR.xcodeproj/xcuserdata hgrtest.lst HGR.xcodeproj/project.xcworkspace/xcuserdata/qd.xcuserdatad/UserInterfaceState.xcuserstate /.DS_Store +/hisprite.lst diff --git a/HiSprite.py b/HiSprite.py index c489167..6a7adf6 100755 --- a/HiSprite.py +++ b/HiSprite.py @@ -3,13 +3,15 @@ import sys,os,png class Colors: - black,magenta,green = range(3) - - + black,magenta,green,orange,blue = range(5) + + + def main(argv): if len(argv)<1: - usage() + printHorzontalLookup() + exit(0) pngfile = sys.argv[1] @@ -19,25 +21,145 @@ def main(argv): except: usage() - width = pngdata[0]; - height = pngdata[1]; - pixeldata = pngdata[2]; + width = pngdata[0] + height = pngdata[1] + pixeldata = pngdata[2] + byteWidth = width/2+1+1 # TODO: Calculate a power of two for this + niceName = os.path.splitext(pngfile)[0].upper() - bitmap = [[0 for x in range(width)] for y in range(height)] + disclaimer() - for shift in range(7): - for phase in range(2): - - for row in range(height): - for col in range(width): - (color,half) = pixelRemap(pixeldata,row,col,width,shift,phase) - bitmap[row][col] = color + print "%s: ;%d bytes per row" % (niceName,byteWidth) + print "\tSAVE_AXY" + print "\tldy PARAM0" + print "\tldx MOD7_2,y" + print "\tjmp (%s_JMP,x)\n" % (niceName) + + print "%s_JMP:" % (niceName) + for shift in range(0,7): + print "\t.addr %s_SHIFT%d" % (niceName,shift) + + 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) + + for row in range(height): + for chunkIndex in range(len(spriteChunks)): + print spriteChunks[chunkIndex][row] - spriteNum = shift*2+phase - printBitmap(bitmap,os.path.splitext(pngfile)[0].upper(),spriteNum,half,0,phase) - + print "\n" + + +def layoutSpriteChunk(pixeldata,width,height,shift): + + bitmap = [[0 for x in range(width)] for y in range(height)] + + byteWidth = width/2+1+1 # TODO: Calculate a power of two for this + spriteChunks = [["" for y in range(height)] for x in range(byteWidth)] + + for row in range(height): + pixelRow = bitmap[row] + bitStream = "" + + for pixelIndex in range(width): + pixel = pixelColor(pixeldata,row,pixelIndex) + if pixel == Colors.black: + bitStream += "00" + else: + if pixel == Colors.green or pixel == Colors.orange: + bitStream += "01" + else: + bitStream += "10" + + bitStream = shiftStringRight(bitStream,shift) + bitStream = bitStream[:byteWidth*8] + + bitPos = 0 + byteSplits = [0 for x in range(byteWidth)] + + for byteIndex in range(byteWidth): + remainingBits = len(bitStream) - bitPos + + bitChunk = "" + + if remainingBits < 0: + bitChunk = "0000000" + else: + if remainingBits < 7: + bitChunk = bitStream[bitPos:] + bitChunk += fillOutByte(7-remainingBits) + else: + bitChunk = bitStream[bitPos:bitPos+7] + + bitChunk = bitChunk[::-1] + + highBit = "0" + if pixel == Colors.orange or pixel == Colors.blue: + highBit = "1" + + byteSplits[byteIndex] = highBit + bitChunk + bitPos += 7 + + for chunkIndex in range(len(byteSplits)): + if (not byteSplits[chunkIndex].endswith("0000000")): + spriteChunks[chunkIndex][row] = \ + "\tlda #%%%s\n" % byteSplits[chunkIndex] + \ + "\tora (SCRATCH0),y\n" + \ + "\tsta (SCRATCH0),y\n"; + + if chunkIndex == len(byteSplits)-1: + spriteChunks[chunkIndex][row] += "\n" + else: + spriteChunks[chunkIndex][row] += "\tiny" + + if row0 and b==0: + color = Colors.orange return color -def pixelRemap(pixeldata,row,col,width,shift,phase): - halfPixel = 0 - overHalf = 0 +def printHorzontalLookup(): + disclaimer() + + print "DIV7_2:" + for pixel in range(140): + print "\t.byte $%02x" % ((pixel / 7)*2) - origColor = pixelColor(pixeldata,row,col) - - if shift>=width: - overHalf = 1 - shift = shift-width+1 - if phase==0: - halfPixel = 1 + print "\n\nMOD7_2:" + for pixel in range(140): + print "\t.byte $%02x" % ((pixel % 7)*2) - if phase==0: - col = col+shift - else: - col = col-(width-shift) - if origColor==Colors.green: - col = col+1 - if not overHalf: - halfPixel = -1 - - if col >= width or col<0: - return (Colors.black,halfPixel) - - remapColor = pixelColor(pixeldata,row,col) - return (remapColor,halfPixel) - - -def colorString(color,currByteString): - if color==Colors.magenta: - return 'ba' - else: - if color==Colors.green: - return 'ab' - - return '00' - - -def containsGreen(row): - for col in range(len(row)): - if row[col] == Colors.green: - return 1 - - return 0 - - -def printBitmap(bitmap,label,spriteNum,halfShift,highbit,phase): - print "%s%d:" % (label,spriteNum) - for row in range(len(bitmap)): - byteString = "" - - for col in range(len(bitmap[0])): - append = colorString(bitmap[row][col],byteString) - byteString += append - if halfShift>0: - byteString = "0" + byteString[:-1] - else: - if halfShift<0: - byteString = byteString[1:] + "0" - - if len(byteString)>6: - byteString = byteString[:-1] - -# if phase==0: -# byteString = byteString[::-1] - - sys.stdout.write("\t.byte\t%%%d%s\n" % (highbit,byteString)); - - sys.stdout.write('\n\n') - sys.stdout.flush() - - - def usage(): print ''' Usage: HiSprite @@ -134,9 +200,16 @@ Usage: HiSprite PNG file must not have an alpha channel! ''' sys.exit(2) + - +def disclaimer(): + print ''' +; This file was generated by SpriteGenerator.py, a sprite generation tool by Quinn Dunki. +; If you feel the need to modify this file, you are probably doing it wrong. +''' + return if __name__ == "__main__": - main(sys.argv[1:]) \ No newline at end of file + main(sys.argv[1:]) + \ No newline at end of file diff --git a/HGR.xcodeproj/project.pbxproj b/HiSprite.xcodeproj/project.pbxproj similarity index 61% rename from HGR.xcodeproj/project.pbxproj rename to HiSprite.xcodeproj/project.pbxproj index 9d943a5..f1c6afa 100644 --- a/HGR.xcodeproj/project.pbxproj +++ b/HiSprite.xcodeproj/project.pbxproj @@ -7,87 +7,83 @@ objects = { /* Begin PBXFileReference section */ - 70166CF81D6E2BE1002F1334 /* macros.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = macros.s; sourceTree = ""; }; - 70166CF91D78BD1B002F1334 /* spritegen2.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = spritegen2.s; sourceTree = ""; }; - 70166CFA1D78BD1B002F1334 /* spritegen3.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = spritegen3.s; sourceTree = ""; }; - 707005BE1D3EC75F00623A10 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 707005BF1D3EC7FD00623A10 /* hgrtest.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = hgrtest.s; sourceTree = ""; }; - 707005C01D3FD65900623A10 /* hgrtable.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = hgrtable.s; sourceTree = ""; }; - 7090ABA91D4012A600F02EAA /* spritedata0.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = spritedata0.s; sourceTree = ""; }; - 7090ABAB1D41663400F02EAA /* scratch.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = scratch.s; sourceTree = ""; }; - 7090ABAC1D418B8900F02EAA /* spritegen0.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = spritegen0.s; sourceTree = ""; }; - 7090ABAD1D418B8900F02EAA /* spritegen1.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = spritegen1.s; sourceTree = ""; }; - 7090ABAE1D419C3E00F02EAA /* spritedata1.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = spritedata1.s; sourceTree = ""; }; - 7090ABAF1D453FDC00F02EAA /* hgrtable2.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = hgrtable2.s; sourceTree = ""; }; + 701B5E0E1D84810000E6D330 /* macros.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = macros.s; sourceTree = ""; }; + 701B5E0F1D84810000E6D330 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + 701B5E101D84813500E6D330 /* hisprite.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = hisprite.s; sourceTree = ""; }; + 701B5E111D84817500E6D330 /* HiSprite.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = HiSprite.py; sourceTree = ""; }; + 701B5E121D8481C800E6D330 /* hgrtableX.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = hgrtableX.s; sourceTree = ""; }; + 701B5E131D84820100E6D330 /* spritegen0.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = spritegen0.s; sourceTree = ""; }; + 701B5E141D84823300E6D330 /* spritegen1.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = spritegen1.s; sourceTree = ""; }; + 701B5E151D84823300E6D330 /* spritegen2.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = spritegen2.s; sourceTree = ""; }; + 701B5E161D84823300E6D330 /* spritegen3.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = spritegen3.s; sourceTree = ""; }; + 701B5E171D84824400E6D330 /* hgrtableY.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = hgrtableY.s; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXGroup section */ - 707005B31D3EC71C00623A10 = { + 701B5E031D8480D200E6D330 = { isa = PBXGroup; children = ( - 707005BE1D3EC75F00623A10 /* Makefile */, - 707005BF1D3EC7FD00623A10 /* hgrtest.s */, - 70166CF81D6E2BE1002F1334 /* macros.s */, - 7090ABAB1D41663400F02EAA /* scratch.s */, - 7090ABA91D4012A600F02EAA /* spritedata0.s */, - 7090ABAE1D419C3E00F02EAA /* spritedata1.s */, - 7090ABAC1D418B8900F02EAA /* spritegen0.s */, - 7090ABAD1D418B8900F02EAA /* spritegen1.s */, - 70166CF91D78BD1B002F1334 /* spritegen2.s */, - 70166CFA1D78BD1B002F1334 /* spritegen3.s */, - 707005C01D3FD65900623A10 /* hgrtable.s */, - 7090ABAF1D453FDC00F02EAA /* hgrtable2.s */, + 701B5E0F1D84810000E6D330 /* Makefile */, + 701B5E111D84817500E6D330 /* HiSprite.py */, + 701B5E0E1D84810000E6D330 /* macros.s */, + 701B5E101D84813500E6D330 /* hisprite.s */, + 701B5E121D8481C800E6D330 /* hgrtableX.s */, + 701B5E171D84824400E6D330 /* hgrtableY.s */, + 701B5E131D84820100E6D330 /* spritegen0.s */, + 701B5E141D84823300E6D330 /* spritegen1.s */, + 701B5E151D84823300E6D330 /* spritegen2.s */, + 701B5E161D84823300E6D330 /* spritegen3.s */, ); sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXLegacyTarget section */ - 707005B81D3EC71C00623A10 /* HGR */ = { + 701B5E081D8480D200E6D330 /* HiSprite */ = { isa = PBXLegacyTarget; buildArgumentsString = "$(ACTION)"; - buildConfigurationList = 707005BB1D3EC71C00623A10 /* Build configuration list for PBXLegacyTarget "HGR" */; + buildConfigurationList = 701B5E0B1D8480D200E6D330 /* Build configuration list for PBXLegacyTarget "HiSprite" */; buildPhases = ( ); buildToolPath = /usr/bin/make; dependencies = ( ); - name = HGR; + name = HiSprite; passBuildSettingsInEnvironment = 1; - productName = HGR; + productName = HiSprite; }; /* End PBXLegacyTarget section */ /* Begin PBXProject section */ - 707005B41D3EC71C00623A10 /* Project object */ = { + 701B5E041D8480D200E6D330 /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0730; ORGANIZATIONNAME = "Quinn Dunki"; TargetAttributes = { - 707005B81D3EC71C00623A10 = { + 701B5E081D8480D200E6D330 = { CreatedOnToolsVersion = 7.3.1; }; }; }; - buildConfigurationList = 707005B71D3EC71C00623A10 /* Build configuration list for PBXProject "HGR" */; + buildConfigurationList = 701B5E071D8480D200E6D330 /* Build configuration list for PBXProject "HiSprite" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 707005B31D3EC71C00623A10; + mainGroup = 701B5E031D8480D200E6D330; projectDirPath = ""; projectRoot = ""; targets = ( - 707005B81D3EC71C00623A10 /* HGR */, + 701B5E081D8480D200E6D330 /* HiSprite */, ); }; /* End PBXProject section */ /* Begin XCBuildConfiguration section */ - 707005B91D3EC71C00623A10 /* Debug */ = { + 701B5E091D8480D200E6D330 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -128,7 +124,7 @@ }; name = Debug; }; - 707005BA1D3EC71C00623A10 /* Release */ = { + 701B5E0A1D8480D200E6D330 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -162,7 +158,7 @@ }; name = Release; }; - 707005BC1D3EC71C00623A10 /* Debug */ = { + 701B5E0C1D8480D200E6D330 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = YES; @@ -175,7 +171,7 @@ }; name = Debug; }; - 707005BD1D3EC71C00623A10 /* Release */ = { + 701B5E0D1D8480D200E6D330 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -188,25 +184,25 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 707005B71D3EC71C00623A10 /* Build configuration list for PBXProject "HGR" */ = { + 701B5E071D8480D200E6D330 /* Build configuration list for PBXProject "HiSprite" */ = { isa = XCConfigurationList; buildConfigurations = ( - 707005B91D3EC71C00623A10 /* Debug */, - 707005BA1D3EC71C00623A10 /* Release */, + 701B5E091D8480D200E6D330 /* Debug */, + 701B5E0A1D8480D200E6D330 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 707005BB1D3EC71C00623A10 /* Build configuration list for PBXLegacyTarget "HGR" */ = { + 701B5E0B1D8480D200E6D330 /* Build configuration list for PBXLegacyTarget "HiSprite" */ = { isa = XCConfigurationList; buildConfigurations = ( - 707005BC1D3EC71C00623A10 /* Debug */, - 707005BD1D3EC71C00623A10 /* Release */, + 701B5E0C1D8480D200E6D330 /* Debug */, + 701B5E0D1D8480D200E6D330 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = 707005B41D3EC71C00623A10 /* Project object */; + rootObject = 701B5E041D8480D200E6D330 /* Project object */; } diff --git a/HGR.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/HiSprite.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 71% rename from HGR.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to HiSprite.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 30b70aa..95e1e6f 100644 --- a/HGR.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/HiSprite.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:HiSprite.xcodeproj"> diff --git a/HiSprite.xcodeproj/project.xcworkspace/xcuserdata/qd.xcuserdatad/UserInterfaceState.xcuserstate b/HiSprite.xcodeproj/project.xcworkspace/xcuserdata/qd.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..beaa665814b217c4b9f044e4ca3be7a3c4b8196b GIT binary patch literal 13353 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HiSprite.xcodeproj/xcuserdata/qd.xcuserdatad/xcschemes/xcschememanagement.plist b/HiSprite.xcodeproj/xcuserdata/qd.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..afb39c5 --- /dev/null +++ b/HiSprite.xcodeproj/xcuserdata/qd.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + HiSprite.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 701B5E081D8480D200E6D330 + + primary + + + + + diff --git a/HiSprite2.py b/HiSprite2.py deleted file mode 100755 index f9ed55c..0000000 --- a/HiSprite2.py +++ /dev/null @@ -1,171 +0,0 @@ -#!/usr/bin/python - -import sys,os,png - -class Colors: - black,magenta,green,orange,blue = range(5) - - - -def main(argv): - - if len(argv)<1: - printHorzontalLookup() - exit(0) - - pngfile = sys.argv[1] - - reader = png.Reader(pngfile) - try: - pngdata = reader.asRGB8() - except: - usage() - - width = pngdata[0] - height = pngdata[1] - pixeldata = pngdata[2] - byteWidth = width/2+1+1 # TODO: Calculate a power of two for this - - for shift in range(0,7): - print "%s_SHIFT%d: ;%d bytes per row" % (os.path.splitext(pngfile)[0].upper(),shift,byteWidth) - - spriteChunks = layoutSpriteChunk(pixeldata,width,height,shift) - - for row in range(height): - for chunkIndex in range(len(spriteChunks)): - print spriteChunks[chunkIndex][row] - - print "\n" - - - - -def layoutSpriteChunk(pixeldata,width,height,shift): - - bitmap = [[0 for x in range(width)] for y in range(height)] - - byteWidth = width/2+1+1 # TODO: Calculate a power of two for this - spriteChunks = [["" for y in range(height)] for x in range(byteWidth)] - - for row in range(height): - pixelRow = bitmap[row] - bitStream = "" - - for pixelIndex in range(width): - pixel = pixelColor(pixeldata,row,pixelIndex) - if pixel == Colors.black: - bitStream += "00" - else: - if pixel == Colors.green or pixel == Colors.orange: - bitStream += "01" - else: - bitStream += "10" - - bitStream = shiftStringRight(bitStream,shift) - bitStream = bitStream[:byteWidth*8] - - bitPos = 0 - byteSplits = [0 for x in range(byteWidth)] - - for byteIndex in range(byteWidth): - remainingBits = len(bitStream) - bitPos - - bitChunk = "" - - if remainingBits < 0: - bitChunk = "0000000" - else: - if remainingBits < 7: - bitChunk = bitStream[bitPos:] - bitChunk += fillOutByte(7-remainingBits) - else: - bitChunk = bitStream[bitPos:bitPos+7] - - bitChunk = bitChunk[::-1] - - highBit = "0" - if pixel == Colors.orange or pixel == Colors.blue: - highBit = "1" - - byteSplits[byteIndex] = highBit + bitChunk - bitPos += 7 - - for chunkIndex in range(len(byteSplits)): - spriteChunks[chunkIndex][row] = ".byte %%%s" % byteSplits[chunkIndex] - - return spriteChunks - - - -def fillOutByte(numBits): - filler = "" - for bit in range(numBits): - filler += "0" - - return filler - - -def shiftStringRight(string,shift): - if shift==0: - return string - - shift *=2 - result = "" - - for i in range(shift): - result += "0" - - result += string - return result - - -def pixelColor(pixeldata,row,col): - r = pixeldata[row][col*3] - g = pixeldata[row][col*3+1] - b = pixeldata[row][col*3+2] - color = Colors.black - - if r==255 and g==0 and b==255: - color = Colors.magenta - else: - if r==0 and g==255 and b==0: - color = Colors.green - else: - if r==0 and g==0 and b==255: - color = Colors.blue - else: - if r==255 and g>0 and b==0: - color = Colors.orange - - return color - - -def printHorzontalLookup(): - print "HGRROWS_GRN:" - for byte in range(40): - pixels = 4 - offset = 0 - if (byte%2): - pixels = 3 - offset = -1 - - for entry in range(pixels): - print "\t.byte $%02x" % (byte + offset) - - print "\nHGRROWS_BITSHIFT_GRN:" - for pixel in range(140): - print "\t.byte $%02x" % ((pixel % 7)*32) # 32 = 4 shifts of 8 bytes - - -def usage(): - print ''' -Usage: HiSprite - -PNG file must not have an alpha channel! -''' - sys.exit(2) - - -if __name__ == "__main__": - main(sys.argv[1:]) - \ No newline at end of file diff --git a/Makefile b/Makefile index c5d81e6..a34e861 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ CL65=cl65 AC=AppleCommander.jar ADDR=6000 -PGM=hgrtest +PGM=hisprite all: $(PGM) diff --git a/V2Make.scpt b/V2Make.scpt index 8c107ae3e6b7f103a6bb14ad53dbb9ffe9abd34f..403811f78b690bd9aaab5af0178675c5c9124eef 100644 GIT binary patch delta 73 zcmbOxwMc5iS{_EX$?JG5tuq;d844JR7%~}37*hEd5*ZjbGNcMJq%sIFWB>(=5t5Am U&oVG17AF@mFf#D`x_56a0KAJ&oVG1 Q7AF@mFf#D`x_56a0Pmdaddr - sta PARAM3 - jsr BlitSpriteOnByte -.endmacro - -.macro BLIT xPos,yPos,addr - lda #xPos - sta PARAM0 - lda #yPos - sta PARAM1 - lda #addr - sta PARAM3 - jsr BlitSprite -.endmacro - - -.macro WAIT - lda #$80 - jsr $fca8 -.endmacro - - - -main: - jsr EnableHires - - lda #$00 - jsr LinearFill - -.if 1 - - ldx #0 -loop: - txa - asl - asl - sta PARAM0 - lda #80 - sta PARAM1 - lda #BOX_MAG_SHIFT0 - sta PARAM3 - jsr BlitSprite - - lda #88 - sta PARAM1 - lda #BOX_GRN_SHIFT0 - sta PARAM3 - jsr BlitSprite - - lda #96 - sta PARAM1 - lda #BOX_BLU_SHIFT0 - sta PARAM3 - jsr BlitSprite - - lda #104 - sta PARAM1 - lda #BOX_ORG_SHIFT0 - sta PARAM3 - jsr BlitSprite - -; lda #$ff -; jsr ROMWAIT - - inx - cpx #35 - bne loop - -.endif -.if 0 - BLITBYTE 0,80,BOX_MAG_SHIFT0_CHUNK0 - BLITBYTE 1,80,BOX_MAG_SHIFT0_CHUNK1 - BLITBYTE 2,80,BOX_MAG_SHIFT0_CHUNK2 - - BLITBYTE 0,90,BOX_MAG_SHIFT1_CHUNK0 - BLITBYTE 1,90,BOX_MAG_SHIFT1_CHUNK1 - BLITBYTE 2,90,BOX_MAG_SHIFT1_CHUNK2 - - BLITBYTE 0,100,BOX_MAG_SHIFT2_CHUNK0 - BLITBYTE 1,100,BOX_MAG_SHIFT2_CHUNK1 - BLITBYTE 2,100,BOX_MAG_SHIFT2_CHUNK2 - - BLITBYTE 0,110,BOX_MAG_SHIFT3_CHUNK0 - BLITBYTE 1,110,BOX_MAG_SHIFT3_CHUNK1 - BLITBYTE 2,110,BOX_MAG_SHIFT3_CHUNK2 - - BLITBYTE 0,120,BOX_MAG_SHIFT4_CHUNK0 - BLITBYTE 1,120,BOX_MAG_SHIFT4_CHUNK1 - BLITBYTE 2,120,BOX_MAG_SHIFT4_CHUNK2 - - BLITBYTE 0,130,BOX_MAG_SHIFT5_CHUNK0 - BLITBYTE 1,130,BOX_MAG_SHIFT5_CHUNK1 - BLITBYTE 2,130,BOX_MAG_SHIFT5_CHUNK2 - - BLITBYTE 0,140,BOX_MAG_SHIFT6_CHUNK0 - BLITBYTE 1,140,BOX_MAG_SHIFT6_CHUNK1 - BLITBYTE 2,140,BOX_MAG_SHIFT6_CHUNK2 - - - - - BLITBYTE 4,80,BOX_GRN_SHIFT0_CHUNK0 - BLITBYTE 5,80,BOX_GRN_SHIFT0_CHUNK1 - BLITBYTE 6,80,BOX_GRN_SHIFT0_CHUNK2 - - BLITBYTE 4,90,BOX_GRN_SHIFT1_CHUNK0 - BLITBYTE 5,90,BOX_GRN_SHIFT1_CHUNK1 - BLITBYTE 6,90,BOX_GRN_SHIFT1_CHUNK2 - - BLITBYTE 4,100,BOX_GRN_SHIFT2_CHUNK0 - BLITBYTE 5,100,BOX_GRN_SHIFT2_CHUNK1 - BLITBYTE 6,100,BOX_GRN_SHIFT2_CHUNK2 - - BLITBYTE 4,110,BOX_GRN_SHIFT3_CHUNK0 - BLITBYTE 5,110,BOX_GRN_SHIFT3_CHUNK1 - BLITBYTE 6,110,BOX_GRN_SHIFT3_CHUNK2 - - BLITBYTE 4,120,BOX_GRN_SHIFT4_CHUNK0 - BLITBYTE 5,120,BOX_GRN_SHIFT4_CHUNK1 - BLITBYTE 6,120,BOX_GRN_SHIFT4_CHUNK2 - - BLITBYTE 4,130,BOX_GRN_SHIFT5_CHUNK0 - BLITBYTE 5,130,BOX_GRN_SHIFT5_CHUNK1 - BLITBYTE 6,130,BOX_GRN_SHIFT5_CHUNK2 - - BLITBYTE 4,140,BOX_GRN_SHIFT6_CHUNK0 - BLITBYTE 5,140,BOX_GRN_SHIFT6_CHUNK1 - BLITBYTE 6,140,BOX_GRN_SHIFT6_CHUNK2 - -.endif - - -.if 0 - BLITBYTE 20,80,MAG0 - BLITBYTE 21,80,MAG1 - - BLITBYTE 20,90,MAG2 - BLITBYTE 21,90,MAG3 - - BLITBYTE 20,100,MAG4 - BLITBYTE 21,100,MAG5 - - BLITBYTE 20,110,MAG6 - BLITBYTE 21,110,MAG7 - - BLITBYTE 21,120,MAG8 - BLITBYTE 22,120,MAG9 - - BLITBYTE 21,130,MAG10 - BLITBYTE 22,130,MAG11 - - BLITBYTE 21,140,MAG12 - BLITBYTE 22,140,MAG13 -.endif - -.if 0 - - BLITBYTE 22,80,GRN0 - BLITBYTE 23,80,GRN1 - - BLITBYTE 22,90,GRN2 - BLITBYTE 23,90,GRN3 - - BLITBYTE 22,100,GRN4 - BLITBYTE 23,100,GRN5 - - BLITBYTE 22,110,GRN6 - BLITBYTE 23,110,GRN7 - - BLITBYTE 23,120,GRN8 - BLITBYTE 24,120,GRN9 - - BLITBYTE 23,130,GRN10 - BLITBYTE 24,130,GRN11 - - BLITBYTE 23,140,GRN12 - BLITBYTE 24,140,GRN13 -.endif - - -.if 0 - BLITBYTE 20,80,BOX_MAG0 - BLITBYTE 21,80,BOX_MAG1 - - BLITBYTE 20,90,BOX_MAG2 - BLITBYTE 21,90,BOX_MAG3 - - BLITBYTE 20,100,BOX_MAG4 - BLITBYTE 21,100,BOX_MAG5 - - BLITBYTE 20,110,BOX_MAG6 - BLITBYTE 21,110,BOX_MAG7 - - BLITBYTE 21,120,BOX_MAG8 - BLITBYTE 22,120,BOX_MAG9 - - BLITBYTE 21,130,BOX_MAG10 - BLITBYTE 22,130,BOX_MAG11 - - BLITBYTE 21,140,BOX_MAG12 - BLITBYTE 22,140,BOX_MAG13 -.endif - -.if 0 - BLITBYTE 20,80,BOX_GRN0 - - BLITBYTE 20,90,BOX_GRN1 - BLITBYTE 21,90,BOX_GRN2 - - BLITBYTE 20,100,BOX_GRN3 - BLITBYTE 21,100,BOX_GRN4 - - BLITBYTE 20,110,BOX_GRN5 - BLITBYTE 21,110,BOX_GRN6 - - BLITBYTE 21,120,BOX_GRN7 - BLITBYTE 22,120,BOX_GRN8 - - BLITBYTE 21,130,BOX_GRN9 - BLITBYTE 22,130,BOX_GRN10 - - BLITBYTE 21,140,BOX_GRN11 - BLITBYTE 22,140,BOX_GRN12 -.endif - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -.if 0 - BLITBYTE 20,80,BOX0 - WAIT - BLITBYTE 20,80,BLACK - - BLITBYTE 20,80,BOX1 - BLITBYTE 21,80,BOX2 - WAIT - BLITBYTE 20,80,BLACK - BLITBYTE 21,80,BLACK - - BLITBYTE 20,80,BOX3 - BLITBYTE 21,80,BOX4 - WAIT - BLITBYTE 20,80,BLACK - BLITBYTE 21,80,BLACK - - BLITBYTE 20,80,BOX5 - BLITBYTE 21,80,BOX6 - WAIT - BLITBYTE 20,80,BLACK - BLITBYTE 21,80,BLACK - - BLITBYTE 21,80,BOX7 - BLITBYTE 22,80,BOX8 - WAIT - BLITBYTE 21,80,BLACK - BLITBYTE 22,80,BLACK - - BLITBYTE 21,80,BOX9 - BLITBYTE 22,80,BOX10 - WAIT - BLITBYTE 21,80,BLACK - BLITBYTE 22,80,BLACK - - BLITBYTE 21,80,BOX11 - BLITBYTE 22,80,BOX12 - WAIT - BLITBYTE 21,80,BLACK - BLITBYTE 22,80,BLACK - - BLITBYTE 22,80,BOX0 - WAIT - BLITBYTE 22,80,BLACK - - jmp loop -.endif - - - rts - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; BlitSprite -; Trashes everything, including parameters -; PARAM0: X Pos -; PARAM1: Y Pos -; PARAM2: Sprite Ptr LSB -; PARAM3: Sprite Ptr MSB -; -BlitSprite: - SAVE_AXY - - clc ; Compute sprite data base - ldx PARAM0 - lda HGRROWS_BITSHIFT_GRN,x - adc PARAM2 - sta PARAM2 - lda #0 - adc PARAM3 - sta PARAM3 - - lda #7 - sta SCRATCH0 ; Tracks row index - - asl ; Multiply by byte width - asl - sta SCRATCH1 ; Tracks total bytes - ldy #0 - -blitSprite_Yloop: - clc ; Calculate Y line on screen - lda SCRATCH0 - adc PARAM1 - tax - - lda HGRROWS_H,x ; Compute hires row - sta blitSprite_smc+2 ; Self-modifying code - sta blitSprite_smc+5 - lda HGRROWS_L,x - sta blitSprite_smc+1 - sta blitSprite_smc+4 - - ldx PARAM0 ; Compute hires horizontal byte - lda HGRROWS_GRN,x - tax - -blitSprite_Xloop: - lda (PARAM2),y - -blitSprite_smc: - ora $2000,x - sta $2000,x - inx - iny - tya ; End of row? - and #$03 ; If last two bits are zero, we've wrapped a row - bne blitSprite_Xloop - - dec SCRATCH0 - bpl blitSprite_Yloop - - RESTORE_AXY - rts - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; BlitSpriteOnByte -; Trashes everything -; PARAM0: X Byte -; PARAM1: Y Pos -; PARAM2: Sprite Ptr MSB -; PARAM3: Sprite Ptr LSB -; -BlitSpriteOnByte: - ldy #7 - -blitSpriteOnByte_loop: - clc - tya - adc PARAM1 ; Calculate Y line - tax - - lda HGRROWS_H,x ; Compute hires row - sta blitSpriteOnByte_smc+2 - lda HGRROWS_L,x - sta blitSpriteOnByte_smc+1 - - ldx PARAM0 ; Compute hires column - lda (PARAM2),y - -blitSpriteOnByte_smc: - sta $2000,x - dey - bpl blitSpriteOnByte_loop - rts - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; EnableHires -; Trashes A -; -EnableHires: - lda TEXT - lda HIRES1 - lda HIRES2 - rts - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; LinearFill -; A: Byte value to fill -; Trashes all registers -; -LinearFill: - ldx #0 - -linearFill_outer: - pha - lda HGRROWS_H,x - sta linearFill_inner+2 - lda HGRROWS_L,x - sta linearFill_inner+1 - pla - - ldy #39 -linearFill_inner: - sta $2000,y - dey - bpl linearFill_inner - - inx - cpx #192 - bne linearFill_outer - rts - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; VenetianFill -; A: Byte value to fill -; Trashes all registers -; -VenetianFill: - ldx #$3f -venetianFill_outer: - stx venetianFill_inner+2 - ldy #$00 -venetianFill_inner: - sta $2000,y ; Upper byte of address is self-modified - iny - bne venetianFill_inner - dex - cpx #$1f - bne venetianFill_outer - rts - - -.include "hgrtable.s" -.include "hgrtable2.s" -.include "spritedata0.s" -.include "spritedata1.s" -.include "spritegen0.s" -.include "spritegen1.s" -.include "spritegen2.s" -.include "spritegen3.s" - - -; Suppress some linker warnings - Must be the last thing in the file -.SEGMENT "ZPSAVE" -.SEGMENT "EXEHDR" -.SEGMENT "STARTUP" -.SEGMENT "INIT" -.SEGMENT "LOWCODE" diff --git a/hgrtest.dsk b/hisprite.dsk similarity index 86% rename from hgrtest.dsk rename to hisprite.dsk index 1d629726a063cb4d7554080c3c059e437e8e60b9..99326ec8ccd3eec1df0c9d0e5b1bc8673a72e2c9 100644 GIT binary patch delta 15585 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 diff --git a/hisprite.s b/hisprite.s new file mode 100644 index 0000000..c402ea0 --- /dev/null +++ b/hisprite.s @@ -0,0 +1,166 @@ +; +; hgrtest.s +; +; Created by Quinn Dunki on 7/19/16 +; Copyright (c) 2015 One Girl, One Laptop Productions. All rights reserved. +; + + +.org $6000 + +.include "macros.s" + +; Softswitches +TEXT = $c050 +HIRES1 = $c057 +HIRES2 = $c058 + + +; ROM entry points +COUT = $fded +ROMWAIT = $fca8 + +; Zero page locations we use (unused by Monitor, Applesoft, or ProDOS) +PARAM0 = $06 +PARAM1 = $07 +PARAM2 = $08 +PARAM3 = $09 +SCRATCH0 = $19 +SCRATCH1 = $1a + +; Macros +.macro BLITBYTE xPos,yPos,addr + lda #xPos + sta PARAM0 + lda #yPos + sta PARAM1 + lda #addr + sta PARAM3 + jsr BlitSpriteOnByte +.endmacro + +.macro BLIT xPos,yPos,addr + lda #xPos + sta PARAM0 + lda #yPos + sta PARAM1 + lda #addr + sta PARAM3 + jsr BlitSprite +.endmacro + + +.macro WAIT + lda #$80 + jsr $fca8 +.endmacro + + + +main: + jsr EnableHires + + lda #$00 + jsr LinearFill + + ldx #0 +loop: + txa + asl + asl + sta PARAM0 + lda #0 + sta PARAM1 + jsr BOX_MAG + + lda #88 + sta PARAM1 + jsr BOX_GRN + + lda #96 + sta PARAM1 + jsr BOX_ORG + + lda #184 + sta PARAM1 + jsr BOX_BLU + + inx + cpx #35 + bne loop + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; EnableHires +; Trashes A +; +EnableHires: + lda TEXT + lda HIRES1 + lda HIRES2 + rts + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; LinearFill +; A: Byte value to fill +; Trashes all registers +; +LinearFill: + ldx #0 + +linearFill_outer: + pha + lda HGRROWS_H,x + sta linearFill_inner+2 + lda HGRROWS_L,x + sta linearFill_inner+1 + pla + + ldy #39 +linearFill_inner: + sta $2000,y + dey + bpl linearFill_inner + + inx + cpx #192 + bne linearFill_outer + rts + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; VenetianFill +; A: Byte value to fill +; Trashes all registers +; +VenetianFill: + ldx #$3f +venetianFill_outer: + stx venetianFill_inner+2 + ldy #$00 +venetianFill_inner: + sta $2000,y ; Upper byte of address is self-modified + iny + bne venetianFill_inner + dex + cpx #$1f + bne venetianFill_outer + rts + + +.include "hgrtableX.s" +.include "hgrtableY.s" +.include "spritegen0.s" +.include "spritegen1.s" +.include "spritegen2.s" +.include "spritegen3.s" + +; Suppress some linker warnings - Must be the last thing in the file +.SEGMENT "ZPSAVE" +.SEGMENT "EXEHDR" +.SEGMENT "STARTUP" +.SEGMENT "INIT" +.SEGMENT "LOWCODE" diff --git a/scratch.s b/scratch.s deleted file mode 100644 index 4623d61..0000000 --- a/scratch.s +++ /dev/null @@ -1,19 +0,0 @@ -BOX0: - .byte %00101010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00101010 - -BOX1: - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 diff --git a/spritedata0.s b/spritedata0.s deleted file mode 100644 index e62f8dc..0000000 --- a/spritedata0.s +++ /dev/null @@ -1,162 +0,0 @@ -; -; spritedata.s -; -; Created by Quinn Dunki on 7/19/16 -; Copyright (c) 2015 One Girl, One Laptop Productions. All rights reserved. -; - -MAG0: - .byte %01010101 ; Byte aligned - .byte %01000001 ; (reversed) - .byte %01000001 - .byte %01000001 ;;;;;;;;;;;;;;;;;;;; - .byte %01000001 - .byte %01000001 - .byte %01000001 - .byte %01010101 - -MAG1: - .byte %00000000 ; Byte aligned - .byte %00000000 ; (2nd byte, reversed) - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - -MAG2: - .byte %01010100 ; One pixel shift - .byte %00000100 ; (reversed) - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %01010100 - -MAG3: - .byte %00000010 ; One pixel shift - .byte %00000010 ; (2nd byte, reversed) - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - - -MAG4: - .byte %01010000 ; Two pixel shift - .byte %00010000 ; (reversed) - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %01010000 - -MAG5: - .byte %00001010 ; Two pixel shift - .byte %00001000 ; (2nd byte, reversed) - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001010 - - -MAG6: - .byte %01000000 ; Three pixel shift - .byte %01000000 ; (reversed) - .byte %01000000 - .byte %01000000 - .byte %01000000 - .byte %01000000 - .byte %01000000 - .byte %01000000 - -MAG7: - .byte %00101010 ; Three pixel shift - .byte %00100000 ; (2nd byte, reversed) - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00101010 - - -MAG8: - .byte %00101010 ; Four pixel shift - .byte %00000010 ; (reversed) - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00101010 - -MAG9: - .byte %00000001 ; Four pixel shift - .byte %00000001 ; (2nd byte, reversed) - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - - -MAG10: - .byte %00101000 ; Five pixel shift - .byte %00001000 ; (reversed) - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00101000 - -MAG11: - .byte %00000101 ; Five pixel shift - .byte %00000100 ; (2nd byte, reversed) - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000101 - - -MAG12: - .byte %00100000 ; Six pixel shift - .byte %00100000 ; (2nd byte, reversed) - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - -MAG13: - .byte %00010101 ; Six pixel shift - .byte %00010000 ; (reversed) - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010101 - - -BLACK: - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 diff --git a/spritedata1.s b/spritedata1.s deleted file mode 100644 index a7953b2..0000000 --- a/spritedata1.s +++ /dev/null @@ -1,152 +0,0 @@ -; -; spritedata.s -; -; Created by Quinn Dunki on 7/19/16 -; Copyright (c) 2015 One Girl, One Laptop Productions. All rights reserved. -; - -GRN0: - .byte %00101010 ; Byte aligned - .byte %00000010 ; (reversed) - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00101010 - -GRN1: - .byte %00000001 ; Byte aligned - .byte %00000001 ; (2nd byte, reversed) - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - .byte %00000001 - -GRN2: - .byte %00101000 ; One pixel shift - .byte %00001000 ; (reversed) - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00101000 - -GRN3: - .byte %00000101 ; One pixel shift - .byte %00000100 ; (2nd byte, reversed) - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000101 - - -GRN4: - .byte %00100000 ; Two pixel shift - .byte %00100000 ; (reversed) - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - -GRN5: - .byte %00010101 ; Two pixel shift - .byte %00010000 ; (2nd byte, reversed) - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010101 - - -GRN6: - .byte %00000000 ; Three pixel shift - .byte %00000000 ; (reversed) - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - .byte %00000000 - -GRN7: - .byte %01010101 ; Three pixel shift - .byte %01000001 ; (2nd byte, reversed) - .byte %01000001 - .byte %01000001 ;;;;;;;;;;;;;;;;;;;; - .byte %01000001 - .byte %01000001 - .byte %01000001 - .byte %01010101 - - -GRN8: - .byte %01010100 ; Four pixel shift - .byte %00000100 ; (reversed) - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %00000100 - .byte %01010100 - -GRN9: - .byte %00000010 ; Four pixel shift - .byte %00000010 ; (2nd byte, reversed) - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - .byte %00000010 - - -GRN10: - .byte %01010000 ; Five pixel shift - .byte %00010000 ; (reversed) - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %00010000 - .byte %01010000 - -GRN11: - .byte %00001010 ; Five pixel shift - .byte %00001000 ; (2nd byte, reversed) - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001000 - .byte %00001010 - - -GRN12: - .byte %01000000 ; Six pixel shift - .byte %01000000 ; (2nd byte, reversed) - .byte %01000000 - .byte %01000000 - .byte %01000000 - .byte %01000000 - .byte %01000000 - .byte %01000000 - -GRN13: - .byte %00101010 ; Six pixel shift - .byte %00100000 ; (reversed) - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00100000 - .byte %00101010 - diff --git a/spritegen0.s b/spritegen0.s index a84acad..7724ad0 100644 --- a/spritegen0.s +++ b/spritegen0.s @@ -1,245 +1,1116 @@ -BOX_MAG_SHIFT0: ;4 bytes per row -.byte %01010101 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01010101 -.byte %00000000 -.byte %00000000 -.byte %00000000 + +; This file was generated by SpriteGenerator.py, a sprite generation tool by Quinn Dunki. +; If you feel the need to modify this file, you are probably doing it wrong. + +BOX_MAG: ;4 bytes per row + SAVE_AXY + ldy PARAM0 + ldx MOD7_2,y + jmp (BOX_MAG_JMP,x) + +BOX_MAG_JMP: + .addr BOX_MAG_SHIFT0 + .addr BOX_MAG_SHIFT1 + .addr BOX_MAG_SHIFT2 + .addr BOX_MAG_SHIFT3 + .addr BOX_MAG_SHIFT4 + .addr BOX_MAG_SHIFT5 + .addr BOX_MAG_SHIFT6 -BOX_MAG_SHIFT1: ;4 bytes per row -.byte %01010100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %01010100 -.byte %00000010 -.byte %00000000 -.byte %00000000 +BOX_MAG_SHIFT0: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + RESTORE_AXY + rts -BOX_MAG_SHIFT2: ;4 bytes per row -.byte %01010000 -.byte %00001010 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %01010000 -.byte %00001010 -.byte %00000000 -.byte %00000000 + +BOX_MAG_SHIFT1: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01010100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01010100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_MAG_SHIFT3: ;4 bytes per row -.byte %01000000 -.byte %00101010 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00101010 -.byte %00000000 -.byte %00000000 + +BOX_MAG_SHIFT2: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_MAG_SHIFT4: ;4 bytes per row -.byte %00000000 -.byte %00101010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00101010 -.byte %00000001 -.byte %00000000 + +BOX_MAG_SHIFT3: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_MAG_SHIFT5: ;4 bytes per row -.byte %00000000 -.byte %00101000 -.byte %00000101 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00101000 -.byte %00000101 -.byte %00000000 + +BOX_MAG_SHIFT4: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts -BOX_MAG_SHIFT6: ;4 bytes per row -.byte %00000000 -.byte %00100000 -.byte %00010101 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010101 -.byte %00000000 + +BOX_MAG_SHIFT5: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00101000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00101000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts + + + +BOX_MAG_SHIFT6: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts + diff --git a/spritegen1.s b/spritegen1.s index 7bfa392..acfee28 100644 --- a/spritegen1.s +++ b/spritegen1.s @@ -1,245 +1,1116 @@ -BOX_GRN_SHIFT0: ;4 bytes per row -.byte %00101010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00000010 -.byte %00000001 -.byte %00000000 -.byte %00000000 -.byte %00101010 -.byte %00000001 -.byte %00000000 -.byte %00000000 + +; This file was generated by SpriteGenerator.py, a sprite generation tool by Quinn Dunki. +; If you feel the need to modify this file, you are probably doing it wrong. + +BOX_GRN: ;4 bytes per row + SAVE_AXY + ldy PARAM0 + ldx MOD7_2,y + jmp (BOX_GRN_JMP,x) + +BOX_GRN_JMP: + .addr BOX_GRN_SHIFT0 + .addr BOX_GRN_SHIFT1 + .addr BOX_GRN_SHIFT2 + .addr BOX_GRN_SHIFT3 + .addr BOX_GRN_SHIFT4 + .addr BOX_GRN_SHIFT5 + .addr BOX_GRN_SHIFT6 -BOX_GRN_SHIFT1: ;4 bytes per row -.byte %00101000 -.byte %00000101 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00001000 -.byte %00000100 -.byte %00000000 -.byte %00000000 -.byte %00101000 -.byte %00000101 -.byte %00000000 -.byte %00000000 +BOX_GRN_SHIFT0: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_GRN_SHIFT2: ;4 bytes per row -.byte %00100000 -.byte %00010101 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010000 -.byte %00000000 -.byte %00000000 -.byte %00100000 -.byte %00010101 -.byte %00000000 -.byte %00000000 + +BOX_GRN_SHIFT1: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00101000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00101000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_GRN_SHIFT3: ;4 bytes per row -.byte %00000000 -.byte %01010101 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01000001 -.byte %00000000 -.byte %00000000 -.byte %00000000 -.byte %01010101 -.byte %00000000 -.byte %00000000 + +BOX_GRN_SHIFT2: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_GRN_SHIFT4: ;4 bytes per row -.byte %00000000 -.byte %01010100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %00000100 -.byte %00000010 -.byte %00000000 -.byte %00000000 -.byte %01010100 -.byte %00000010 -.byte %00000000 + +BOX_GRN_SHIFT3: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_GRN_SHIFT5: ;4 bytes per row -.byte %00000000 -.byte %01010000 -.byte %00001010 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %00010000 -.byte %00001000 -.byte %00000000 -.byte %00000000 -.byte %01010000 -.byte %00001010 -.byte %00000000 + +BOX_GRN_SHIFT4: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01010100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01010100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts -BOX_GRN_SHIFT6: ;4 bytes per row -.byte %00000000 -.byte %01000000 -.byte %00101010 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00100000 -.byte %00000000 -.byte %00000000 -.byte %01000000 -.byte %00101010 -.byte %00000000 + +BOX_GRN_SHIFT5: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%00010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00001010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts + + + +BOX_GRN_SHIFT6: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%01000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%00101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts + diff --git a/spritegen2.s b/spritegen2.s index 7aab545..25a3ac7 100644 --- a/spritegen2.s +++ b/spritegen2.s @@ -1,245 +1,1116 @@ -BOX_BLU_SHIFT0: ;4 bytes per row -.byte %11010101 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11010101 -.byte %10000000 -.byte %10000000 -.byte %10000000 + +; This file was generated by SpriteGenerator.py, a sprite generation tool by Quinn Dunki. +; If you feel the need to modify this file, you are probably doing it wrong. + +BOX_BLU: ;4 bytes per row + SAVE_AXY + ldy PARAM0 + ldx MOD7_2,y + jmp (BOX_BLU_JMP,x) + +BOX_BLU_JMP: + .addr BOX_BLU_SHIFT0 + .addr BOX_BLU_SHIFT1 + .addr BOX_BLU_SHIFT2 + .addr BOX_BLU_SHIFT3 + .addr BOX_BLU_SHIFT4 + .addr BOX_BLU_SHIFT5 + .addr BOX_BLU_SHIFT6 -BOX_BLU_SHIFT1: ;4 bytes per row -.byte %11010100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %11010100 -.byte %10000010 -.byte %10000000 -.byte %10000000 +BOX_BLU_SHIFT0: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + iny + + RESTORE_AXY + rts -BOX_BLU_SHIFT2: ;4 bytes per row -.byte %11010000 -.byte %10001010 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %11010000 -.byte %10001010 -.byte %10000000 -.byte %10000000 + +BOX_BLU_SHIFT1: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11010100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11010100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_BLU_SHIFT3: ;4 bytes per row -.byte %11000000 -.byte %10101010 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10101010 -.byte %10000000 -.byte %10000000 + +BOX_BLU_SHIFT2: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_BLU_SHIFT4: ;4 bytes per row -.byte %10000000 -.byte %10101010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10101010 -.byte %10000001 -.byte %10000000 + +BOX_BLU_SHIFT3: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_BLU_SHIFT5: ;4 bytes per row -.byte %10000000 -.byte %10101000 -.byte %10000101 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10101000 -.byte %10000101 -.byte %10000000 + +BOX_BLU_SHIFT4: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts -BOX_BLU_SHIFT6: ;4 bytes per row -.byte %10000000 -.byte %10100000 -.byte %10010101 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010101 -.byte %10000000 + +BOX_BLU_SHIFT5: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10101000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10101000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts + + + +BOX_BLU_SHIFT6: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts + diff --git a/spritegen3.s b/spritegen3.s index 3eb6284..24b814c 100644 --- a/spritegen3.s +++ b/spritegen3.s @@ -1,245 +1,1116 @@ -BOX_ORG_SHIFT0: ;4 bytes per row -.byte %10101010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10000010 -.byte %10000001 -.byte %10000000 -.byte %10000000 -.byte %10101010 -.byte %10000001 -.byte %10000000 -.byte %10000000 + +; This file was generated by SpriteGenerator.py, a sprite generation tool by Quinn Dunki. +; If you feel the need to modify this file, you are probably doing it wrong. + +BOX_ORG: ;4 bytes per row + SAVE_AXY + ldy PARAM0 + ldx MOD7_2,y + jmp (BOX_ORG_JMP,x) + +BOX_ORG_JMP: + .addr BOX_ORG_SHIFT0 + .addr BOX_ORG_SHIFT1 + .addr BOX_ORG_SHIFT2 + .addr BOX_ORG_SHIFT3 + .addr BOX_ORG_SHIFT4 + .addr BOX_ORG_SHIFT5 + .addr BOX_ORG_SHIFT6 -BOX_ORG_SHIFT1: ;4 bytes per row -.byte %10101000 -.byte %10000101 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10001000 -.byte %10000100 -.byte %10000000 -.byte %10000000 -.byte %10101000 -.byte %10000101 -.byte %10000000 -.byte %10000000 +BOX_ORG_SHIFT0: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_ORG_SHIFT2: ;4 bytes per row -.byte %10100000 -.byte %10010101 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010000 -.byte %10000000 -.byte %10000000 -.byte %10100000 -.byte %10010101 -.byte %10000000 -.byte %10000000 + +BOX_ORG_SHIFT1: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10101000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10101000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_ORG_SHIFT3: ;4 bytes per row -.byte %10000000 -.byte %11010101 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11000001 -.byte %10000000 -.byte %10000000 -.byte %10000000 -.byte %11010101 -.byte %10000000 -.byte %10000000 + +BOX_ORG_SHIFT2: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_ORG_SHIFT4: ;4 bytes per row -.byte %10000000 -.byte %11010100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %10000100 -.byte %10000010 -.byte %10000000 -.byte %10000000 -.byte %11010100 -.byte %10000010 -.byte %10000000 + +BOX_ORG_SHIFT3: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000001 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11010101 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + iny + + RESTORE_AXY + rts -BOX_ORG_SHIFT5: ;4 bytes per row -.byte %10000000 -.byte %11010000 -.byte %10001010 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %10010000 -.byte %10001000 -.byte %10000000 -.byte %10000000 -.byte %11010000 -.byte %10001010 -.byte %10000000 + +BOX_ORG_SHIFT4: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11010100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10000100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11010100 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10000010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts -BOX_ORG_SHIFT6: ;4 bytes per row -.byte %10000000 -.byte %11000000 -.byte %10101010 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10100000 -.byte %10000000 -.byte %10000000 -.byte %11000000 -.byte %10101010 -.byte %10000000 + +BOX_ORG_SHIFT5: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%10010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11010000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10001010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts + + + +BOX_ORG_SHIFT6: + ldy PARAM0 + + ldx PARAM1 + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10100000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + inx + lda HGRROWS_H,x + sta SCRATCH1 + lda HGRROWS_L,x + sta SCRATCH0 + ldy PARAM0 + lda DIV7_2,y + tay + + iny + lda #%11000000 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + lda #%10101010 + ora (SCRATCH0),y + sta (SCRATCH0),y + iny + + RESTORE_AXY + rts +