some wipes

This commit is contained in:
4am 2019-11-05 20:12:26 -05:00
parent 57a2614166
commit 9ac23e6ab0
19 changed files with 71944 additions and 2 deletions

View File

@ -1 +1 @@
# set 1 FAVORITES1.CONF=1 ACTIONHIJ1.CONF=2 JUNGLE.HUNT=0 DHGR1.CONF=3 ACTIONPOP.CONF=2 SAMMY.LIGHTFOOT=0 OTHER4.CONF=1 SHR1.CONF=5 # set 2 FAVORITES4.CONF=1 PITFALL.II=0 SYNERGIST.CONF=1 SPCARTOON.1.=0 ACTIONMNO1.CONF=2 CONAN=0 DHGR2.CONF=3 ACTIONCLR1.CONF=2 ATARI.CONF=1 SNEAKERS=0 SHR2.CONF=5 # set 3 AB4.CONF=1 DIG.DUG=0 BRODER2.CONF=1 FALCONS=0 ACTIONT4.CONF=2 STAR.BLAZER=0 ACTIONEFG4.CONF=2 ATARI2.CONF=1 BRAINTEASERBLVD=0 ACTIONAB5.CONF=2 SPACE.EGGS=0 SHR3.CONF=5 # set 4 FAVORITES3.CONF=1 BOUNCING.KMNGAS=0 BRODERBUND.CONF=1 ACTIONCLR2.CONF=2 LADY.TUT=0 DHGR4.CONF=3 ACTIONAB1.CONF=2 CD2.CONF=1 SPYS.DEMISE=0 SHR4.CONF=5 # set 5 P1.CONF=1 PIEMAN=0 OTHER3.CONF=1 SPCARTOON.6.=0 ACTIONHIJ3.CONF=2 CHAMP.LODERUN=0 ACTDHGR13.CONF=4 ACTIONHIJ4.CONF=2 AB3.CONF=1 AXIS.ASSASSIN=0 ACTIONAB4.CONF=2 FIREBIRD=0 SHR5.CONF=5 # set 6 MATTEL.CONF=1 THUNDERBOMBS=0 FAVORITES2.CONF=1 ACTIONBURG.CONF=2 VINDICATOR=0 ACTDHGR2.CONF=4 ACTIONEFG2.CONF=2 S1.CONF=1 LODE.RUNNER=0 SHR6.CONF=5 # set 7 EFG2.CONF=1 REPTON=0 DATAMOST.CONF=1 ACTIONCLR4.CONF=2 AGENT.USA=0 ACTDHGR3.CONF=4 ACTIONMNO3.CONF=2 MNO.CONF=1 AQUATRON=0 SHR7.CONF=5 # set 8 SIERRA.CONF=1 POOYAN=0 CD1.CONF=1 SPCARTOON.3.=0 ACTIONPQR1.CONF=2 ALIEN.DOWNPOUR=0 ACTDHGR4.CONF=4 ACTIONT1.CONF=2 BOLO=0 T2.CONF=1 BUZZARD.BAIT=0 SHR8.CONF=5 # set 9 MICROFUN.CONF=1 GAMMA.GOBLINS=0 OTHER2.CONF=1 ACTIONCLR5.CONF=2 CEILING.ZERO=0 ACTDHGR5.CONF=4 ACTIONPQR2.CONF=2 P2.CONF=1 ROBOTRON=0 SHR9.CONF=5 # set 10 SYNAPSE.CONF=1 WARP.DESTROYER=0 PICCADILLY.CONF=1 ACTIONT3.CONF=2 WAVY.NAVY=0 ACTDHGR6.CONF=4 ACTIONT2.CONF=2 CYCLOD=0 CD3.CONF=1 TRACK.AND.FIELD=0 SHR10.CONF=5 # set 11 DATAEAST.CONF=1 PEST.PATROL=0 EA.CONF=1 SPCARTOON.4.=0 ACTIONMNO2.CONF=2 CHOPLIFTER=0 ACTDHGR7.CONF=4 ACTIONEFG1.CONF=2 LABYRINTH=0 HIJKL2.CONF=1 GOONIES=0 SHR11.CONF=5 # set 12 SEGA.CONF=1 LOST.TOMB=0 HIJKL.CONF=1 ACTIONEFG3.CONF=2 KARATEKA=0 ACTDHGR8.CONF=4 ACTIONS2.CONF=2 ALIEN.TYPHOON=0 S2.CONF=1 SNAKE.BYTE=0 SHR12.CONF=5 # set 13 ACTIVISION.CONF=1 DINO.EGGS=0 SIRIUS2.CONF=1 ACTIONHIJ2.CONF=2 ALIEN.RAIN=0 ACTDHGR9.CONF=4 ACTIONCD2.CONF=2 BELLHOP=0 GEBELLI.CONF=1 SERPENTINE=0 SHR13.CONF=5 # set 14 PENGUIN.CONF=1 PACMAN=0 DATASOFT.CONF=1 SPCARTOON.5.=0 ACTIONAB3.CONF=2 FLIP.OUT=0 ACTDHGR10.CONF=4 ACTIONCD1.CONF=2 ALIEN.MUNCHIES=0 QR.CONF=1 PLASMANIA=0 SHR14.CONF=5 # set 15 SUBLOGIC.CONF=1 HIGH.RISE=0 EFG1.CONF=1 ACTIONS1.CONF=2 ORILEYS.MINE=0 ACTDHGR11.CONF=4 ACTIONCD3.CONF=2 BEER.RUN=0 OTHER1.CONF=1 SPY.HUNTER=0 SHR15.CONF=5 # set 16 EPYX.CONF=1 NIBBLER=0 AB1.CONF=1 ACTIONPQR3.CONF=2 ALIEN.AMBUSH=0 ACTDHGR12.CONF=4 ACTIONCAPT.CONF=2 TUBEWAY=0 SHR16.CONF=5 # set 17 T1.CONF=1 MR.COOL=0 SIRIUS.CONF=1 SPCARTOON.2.=0 ACTIONCLR3.CONF=2 CIDER.SPIDER=0 ACTDHGR1.CONF=4 ACTIONAB2.CONF=2 BATTLEZONE=0 AB2.CONF=1 SPARE.CHANGE=0 SHR17.CONF=5 # set 18 IDSI.CONF=1 HARD.HAT.MACK=0 BALLY.CONF=1 MR.DO.CONF=2 BURGERTIME=0 DHGR3.CONF=3 ACTIONS3.CONF=2 GUMBALL=0 S3.CONF=1 STARGATE=0 ACTGR1.CONF=6 SHR18.CONF=5 [eof] # # Mega-Attract-Mode configuration file # # Mega-Attract-Mode is split into modules. Each module can be a short # slideshow, a self-running demo (like a game's built-in 'attract mode'), or # even just a single screenshot. Modules are run in the order listed here, one # after the next, until interrupted by user input. The last-run module is # tracked in the global prefs file. # # The same format is used by the per-game attract mode configuration files. # # Format: # key=value # # |key| must be unique within this file # # |value| must be one of # 0 = self-running demo (|key| is an executable binary file in /DEMO/) # 1 = HGR title slideshow (|key| is a file in /SS/ containing files in /TITLE.HGR/) # 2 = HGR action slideshow (|key| is a file in /SS/ containing files in /ACTION.HGR/) # 3 = DHGR title slideshow (|key| is a file in /SS/ containing files in /TITLE.DHGR/) # 4 = DHGR action slideshow (|key| is a file in /SS/ containing files in /ACTION.DHGR/) # 5 = SHR box art slideshow (|key| is a file in /SS/ containing files in /ARTWORK.SHR/) # 6 = GR action slideshow (|key| is a file in /SS/ containing files in /ACTION.GR/) # A = single HGR file (|key| is arbitrary path from program root directory) # B = single DHGR file (|key| is arbitrary path from program root directory) # C = single SHR file (|key| is arbitrary path from program root directory) # D = single GR file (|key| is arbitrary path from program root directory) # # Blank lines and lines beginning with '#' are ignored (like this one!) # A line beginning with '[' terminates the parsing # FAVORITES2.CONF=1 # # set 1 FAVORITES1.CONF=1 ACTIONHIJ1.CONF=2 JUNGLE.HUNT=0 DHGR1.CONF=3 ACTIONPOP.CONF=2 SAMMY.LIGHTFOOT=0 OTHER4.CONF=1 SHR1.CONF=5 # set 2 FAVORITES4.CONF=1 PITFALL.II=0 SYNERGIST.CONF=1 SPCARTOON.1.=0 ACTIONMNO1.CONF=2 CONAN=0 DHGR2.CONF=3 ACTIONCLR1.CONF=2 ATARI.CONF=1 SNEAKERS=0 SHR2.CONF=5 # set 3 AB4.CONF=1 DIG.DUG=0 BRODER2.CONF=1 FALCONS=0 ACTIONT4.CONF=2 STAR.BLAZER=0 ACTIONEFG4.CONF=2 ATARI2.CONF=1 BRAINTEASERBLVD=0 ACTIONAB5.CONF=2 SPACE.EGGS=0 SHR3.CONF=5 # set 4 FAVORITES3.CONF=1 BOUNCING.KMNGAS=0 BRODERBUND.CONF=1 ACTIONCLR2.CONF=2 LADY.TUT=0 DHGR4.CONF=3 ACTIONAB1.CONF=2 CD2.CONF=1 SPYS.DEMISE=0 SHR4.CONF=5 # set 5 P1.CONF=1 PIEMAN=0 OTHER3.CONF=1 SPCARTOON.6.=0 ACTIONHIJ3.CONF=2 CHAMP.LODERUN=0 ACTDHGR13.CONF=4 ACTIONHIJ4.CONF=2 AB3.CONF=1 AXIS.ASSASSIN=0 ACTIONAB4.CONF=2 FIREBIRD=0 SHR5.CONF=5 # set 6 MATTEL.CONF=1 THUNDERBOMBS=0 FAVORITES2.CONF=1 ACTIONBURG.CONF=2 VINDICATOR=0 ACTDHGR2.CONF=4 ACTIONEFG2.CONF=2 S1.CONF=1 LODE.RUNNER=0 SHR6.CONF=5 # set 7 EFG2.CONF=1 REPTON=0 DATAMOST.CONF=1 ACTIONCLR4.CONF=2 AGENT.USA=0 ACTDHGR3.CONF=4 ACTIONMNO3.CONF=2 MNO.CONF=1 AQUATRON=0 SHR7.CONF=5 # set 8 SIERRA.CONF=1 POOYAN=0 CD1.CONF=1 SPCARTOON.3.=0 ACTIONPQR1.CONF=2 ALIEN.DOWNPOUR=0 ACTDHGR4.CONF=4 ACTIONT1.CONF=2 BOLO=0 T2.CONF=1 BUZZARD.BAIT=0 SHR8.CONF=5 # set 9 MICROFUN.CONF=1 GAMMA.GOBLINS=0 OTHER2.CONF=1 ACTIONCLR5.CONF=2 CEILING.ZERO=0 ACTDHGR5.CONF=4 ACTIONPQR2.CONF=2 P2.CONF=1 ROBOTRON=0 SHR9.CONF=5 # set 10 SYNAPSE.CONF=1 WARP.DESTROYER=0 PICCADILLY.CONF=1 ACTIONT3.CONF=2 WAVY.NAVY=0 ACTDHGR6.CONF=4 ACTIONT2.CONF=2 CYCLOD=0 CD3.CONF=1 TRACK.AND.FIELD=0 SHR10.CONF=5 # set 11 DATAEAST.CONF=1 PEST.PATROL=0 EA.CONF=1 SPCARTOON.4.=0 ACTIONMNO2.CONF=2 CHOPLIFTER=0 ACTDHGR7.CONF=4 ACTIONEFG1.CONF=2 LABYRINTH=0 HIJKL2.CONF=1 GOONIES=0 SHR11.CONF=5 # set 12 SEGA.CONF=1 LOST.TOMB=0 HIJKL.CONF=1 ACTIONEFG3.CONF=2 KARATEKA=0 ACTDHGR8.CONF=4 ACTIONS2.CONF=2 ALIEN.TYPHOON=0 S2.CONF=1 SNAKE.BYTE=0 SHR12.CONF=5 # set 13 ACTIVISION.CONF=1 DINO.EGGS=0 SIRIUS2.CONF=1 ACTIONHIJ2.CONF=2 ALIEN.RAIN=0 ACTDHGR9.CONF=4 ACTIONCD2.CONF=2 BELLHOP=0 GEBELLI.CONF=1 SERPENTINE=0 SHR13.CONF=5 # set 14 PENGUIN.CONF=1 PACMAN=0 DATASOFT.CONF=1 SPCARTOON.5.=0 ACTIONAB3.CONF=2 FLIP.OUT=0 ACTDHGR10.CONF=4 ACTIONCD1.CONF=2 ALIEN.MUNCHIES=0 QR.CONF=1 PLASMANIA=0 SHR14.CONF=5 # set 15 SUBLOGIC.CONF=1 HIGH.RISE=0 EFG1.CONF=1 ACTIONS1.CONF=2 ORILEYS.MINE=0 ACTDHGR11.CONF=4 ACTIONCD3.CONF=2 BEER.RUN=0 OTHER1.CONF=1 SPY.HUNTER=0 SHR15.CONF=5 # set 16 EPYX.CONF=1 NIBBLER=0 AB1.CONF=1 ACTIONPQR3.CONF=2 ALIEN.AMBUSH=0 ACTDHGR12.CONF=4 ACTIONCAPT.CONF=2 TUBEWAY=0 SHR16.CONF=5 # set 17 T1.CONF=1 MR.COOL=0 SIRIUS.CONF=1 SPCARTOON.2.=0 ACTIONCLR3.CONF=2 CIDER.SPIDER=0 ACTDHGR1.CONF=4 ACTIONAB2.CONF=2 BATTLEZONE=0 AB2.CONF=1 SPARE.CHANGE=0 SHR17.CONF=5 # set 18 IDSI.CONF=1 HARD.HAT.MACK=0 BALLY.CONF=1 MR.DO.CONF=2 BURGERTIME=0 DHGR3.CONF=3 ACTIONS3.CONF=2 GUMBALL=0 S3.CONF=1 STARGATE=0 ACTGR1.CONF=6 SHR18.CONF=5 [eof] # # Mega-Attract-Mode configuration file # # Mega-Attract-Mode is split into modules. Each module can be a short # slideshow, a self-running demo (like a game's built-in 'attract mode'), or # even just a single screenshot. Modules are run in the order listed here, one # after the next, until interrupted by user input. The last-run module is # tracked in the global prefs file. # # The same format is used by the per-game attract mode configuration files. # # Format: # key=value # # |key| must be unique within this file # # |value| must be one of # 0 = self-running demo (|key| is an executable binary file in /DEMO/) # 1 = HGR title slideshow (|key| is a file in /SS/ containing files in /TITLE.HGR/) # 2 = HGR action slideshow (|key| is a file in /SS/ containing files in /ACTION.HGR/) # 3 = DHGR title slideshow (|key| is a file in /SS/ containing files in /TITLE.DHGR/) # 4 = DHGR action slideshow (|key| is a file in /SS/ containing files in /ACTION.DHGR/) # 5 = SHR box art slideshow (|key| is a file in /SS/ containing files in /ARTWORK.SHR/) # 6 = GR action slideshow (|key| is a file in /SS/ containing files in /ACTION.GR/) # A = single HGR file (|key| is arbitrary path from program root directory) # B = single DHGR file (|key| is arbitrary path from program root directory) # C = single SHR file (|key| is arbitrary path from program root directory) # D = single GR file (|key| is arbitrary path from program root directory) # # Blank lines and lines beginning with '#' are ignored (like this one!) # A line beginning with '[' terminates the parsing #

View File

@ -1 +1 @@
RIPPLE STAR.IN SOFT.DIAGONAL STAGGERWHITE.UD RADIAL STAGGER.LR SOFT.UD HEART.IN CRYSTAL STAR.RIPPLE BIT.FIZZLE MEETINTHEMIDDLE SOFT.IRIS W.RIPPLE.BLOOM DIAGONAL STAR R.BY.PIXEL WAVY.IRIS SUNRISE SOFT.L HEART.RIPPLE SUNSET SLOW.STAR.IN IRIS.IN BUTTERFLYRIPPLE W.IRIS.BLOOM.IN CORNER.CIRCLE CENTER.BY.PIXEL DIAGONAL2 RIPPLE2 STAR.BLOOM PALETTE.FIZZLE RADIAL2 BUTTERFLY SPLIT.UD.INTRO WAVY.IRIS.IN R.BY.2 HALF.FIZZLE RADIAL3 HEART DIAGONAL3 WAVY.RIPPLE CORNER4.OUT LATTICE BAR.DISSOLVE R.BY.PALETTE FOURSPIRAL SOFT.R IRIS CASCADE AND BUTTERFLY.IN CHECKERBOARD LR.BY.PIXEL RADIAL4 CHECKER.FIZZLE STAGGERWHITE.LR SOFT.UD.OUT ONESQUARE W.IRIS.BLOOM FIZZLE SLOW.STAR ARROW.WHITE TRI.FIZZLE SOFT.IRIS.IN DIAMOND TWOPASS.LR HALF.MOSAIC RADIAL5 ARROW FOURSQUARE BLOCK.FIZZLE DIAGONAL4 STAGGER.UD INTERLOCK.LR SOFT.UD.IN BLOCK.MOSAIC CORNER4.IN INTERLOCK.UD LITTLE.BOXES SPIRAL WAVY.CORNER [eof] # # transition effects for HGR slideshows # # Each Mega-Attract Module that is an HGR slideshow (see attract.conf) # will use a single transition effect for the length of the module. # Transition effects are loaded in the order listed in this file. Each line # of this file is a filename (not including comments, like this one). The # name of the next transition effect is stored in the global prefs, so this # file should not contain duplicates. # # Transition effects are binary files loaded at $6000 and called with # hi-res page 1 showing and the next HGR graphic already loaded at $4000. # A transition effect can use $6000-$BFFF in main memory, zero page, and # text page if needed (but preserve the screen holes). $800-$1FFF is reserved # for the slideshow data. LC RAM banks 1 and 2 are reserved for the launcher. # # Important: LC RAM bank 1 will be read/write on entry and must be read/write # on exit. If you need ROM routines, you are responsible for switching to ROM # then switching back to RAM bank 1 (read/write) before returning. # RIPPLE STAR.IN SOFT.DIAGONAL STAGGERWHITE.UD RADIAL STAGGER.LR SOFT.UD HEART.IN CRYSTAL STAR.RIPPLE BIT.FIZZLE MEETINTHEMIDDLE FLOWER.RAD.RIP SOFT.IRIS W.RIPPLE.BLOOM DIAGONAL DIAGONAL STAR FLOWER.IN R.BY.PIXEL WAVY.IRIS SUNRISE SOFT.L HEART.RIPPLE SUNSET FLOWER.RAD SLOW.STAR.IN IRIS.IN BUTTERFLYRIPPLE W.IRIS.BLOOM.IN CORNER.CIRCLE CENTER.BY.PIXEL FLOWER DIAGONAL2 RIPPLE2 STAR.BLOOM PALETTE.FIZZLE RADIAL2 BUTTERFLY FLOWER.RIPPLE SPLIT.UD.INTRO WAVY.IRIS.IN R.BY.2 HALF.FIZZLE RADIAL3 HEART FLOWER.RAD.IN DIAGONAL3 WAVY.RIPPLE CORNER4.OUT LATTICE BAR.DISSOLVE R.BY.PALETTE FOURSPIRAL SOFT.R IRIS CASCADE AND BUTTERFLY.IN CHECKERBOARD LR.BY.PIXEL RADIAL4 CHECKER.FIZZLE STAGGERWHITE.LR SOFT.UD.OUT ONESQUARE W.IRIS.BLOOM FIZZLE SLOW.STAR ARROW.WHITE TRI.FIZZLE SOFT.IRIS.IN DIAMOND TWOPASS.LR HALF.MOSAIC RADIAL5 ARROW FOURSQUARE BLOCK.FIZZLE DIAGONAL4 STAGGER.UD INTERLOCK.LR SOFT.UD.IN BLOCK.MOSAIC CORNER4.IN INTERLOCK.UD LITTLE.BOXES SPIRAL WAVY.CORNER [eof] # # transition effects for HGR slideshows # # Each Mega-Attract Module that is an HGR slideshow (see attract.conf) # will use a single transition effect for the length of the module. # Transition effects are loaded in the order listed in this file. Each line # of this file is a filename (not including comments, like this one). The # name of the next transition effect is stored in the global prefs, so this # file should not contain duplicates. # # Transition effects are binary files loaded at $6000 and called with # hi-res page 1 showing and the next HGR graphic already loaded at $4000. # A transition effect can use $6000-$BFFF in main memory, zero page, and # text page if needed (but preserve the screen holes). $800-$1FFF is reserved # for the slideshow data. LC RAM banks 1 and 2 are reserved for the launcher. # # Important: LC RAM bank 1 will be read/write on entry and must be read/write # on exit. If you need ROM routines, you are responsible for switching to ROM # then switching back to RAM bank 1 (read/write) before returning. #

50
res/notes/transitions/corner.py Executable file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env python3
from math import sqrt, sin, cos, acos, pi
import util
# Graph is plotted across the entire HGR screen, but only coordinates
# - in the left half of the screen, AND
# - on even rows, AND
# - on even columns
# are included. It is assumed that the graph is symmetrical across
# the left and half sides of the screen (along an axis at X=140).
#
# X coordinates are converted to byte+bitmask (but see notes below).
# Y coordinates are flipped (so 0,0 ends up on the bottom left) then
# incremented by 1 so that 0 can terminate the loop,
#
# 6502 code will be responsible for plotting each of these coordinates
# in a 2x2 block. The bitmask usually includes 2 adjacent pixels;
# the code will also plot the same 2 adjacent pixels in the adjacent row,
# AND mirror both of those plots in the right half of the screen.
#
# Unfortunately, since bytes are 7 bits across, some blocks will cross a
# byte boundary. To simplify the 6502 code, those are simply listed as
# separate coordinate pairs, each with a bitmask that includes 1 pixel
# instead of 2.
max_x = 280
max_y = 192
def f(t):
return (sqrt(t)*cos(2*pi*sqrt(t)), 0.87*sqrt(t)*sin(2*pi*sqrt(t)))
coords = []
for i in range(2000000):
a, b = f(float(i)/10.0)
x = round(max_x+a)
y = round(b)
if x % 2 != 0 or y % 3 != 0:
continue
if x < 0 or x >= max_x or y < 0 or y >= max_y:
continue
coords.append((x,y))
unique_coords = util.unique(coords)
unique_vals = util.vals_3bit(unique_coords)
ripple_vals = util.ripple(unique_vals)
ripple_vals = util.ripple(ripple_vals)
with open("../../../src/fx/fx.hgr.corner.superripple.data.a", "w") as f:
for aval, bval in ripple_vals:
f.write(" !byte %s,%s\n" % (aval, bval))

57
res/notes/transitions/flower.py Executable file
View File

@ -0,0 +1,57 @@
#!/usr/bin/env python3
from math import sqrt, sin, cos, acos, pi
import util
# Graph is plotted across the entire HGR screen, but only coordinates
# - on every 3rd row
# - on even columns
# are included.
#
# X coordinates are converted to byte+bitmask (but see notes below).
# Y coordinates are flipped (so 0,0 ends up on the bottom left) then
# divided by 3.
#
# 6502 code will be responsible for plotting each of these coordinates
# in a 2x3 block. The bitmask usually includes 2 adjacent pixels;
# the code will also plot the same 2 adjacent pixels in the next two rows.
#
# Unfortunately, since bytes are 7 pixels across, some of the 2-pixel-wide
# blocks will cross a byte boundary. To simplify the 6502 code, these are
# simply listed as separate coordinate pairs, each with a bitmask that
# includes 1 pixel instead of 2.
max_x = 280
max_y = 192
def f(theta, k):
r = k*(5+2*cos(5*theta))
return r*cos(theta),r*sin(theta)
coords = []
for k_mul in range(5000):
for t_mul in range(int(pi*1000+1)):
a, b = f(float(t_mul/100), float(k_mul)/100.0)
x = round(max_x//2+a*1.2)
y = round(max_y//2+b)
if (x % 2 != 0) or (y % 3 != 0):
continue
if x < 0 or x >= max_x or y < 0 or y >= max_y:
continue
coords.append((x,y))
unique_coords = util.unique(coords)
unique_vals = util.vals_3bit(unique_coords)
with open("../../../src/fx/fx.hgr.flower.data.a", "w") as f:
for aval, bval in unique_vals:
f.write(" !byte %s,%s\n" % (aval, bval))
ripple_vals = util.ripple(unique_vals)
with open("../../../src/fx/fx.hgr.flower.ripple.data.a", "w") as f:
for aval, bval in ripple_vals:
f.write(" !byte %s,%s\n" % (aval, bval))
unique_vals.reverse()
with open("../../../src/fx/fx.hgr.flower.in.data.a", "w") as f:
for aval, bval in unique_vals:
f.write(" !byte %s,%s\n" % (aval, bval))

View File

@ -0,0 +1,57 @@
#!/usr/bin/env python3
from math import sqrt, sin, cos, acos, pi
import util
# Graph is plotted across the entire HGR screen, but only coordinates
# - on every 3rd row
# - on even columns
# are included.
#
# X coordinates are converted to byte+bitmask (but see notes below).
# Y coordinates are flipped (so 0,0 ends up on the bottom left) then
# divided by 3.
#
# 6502 code will be responsible for plotting each of these coordinates
# in a 2x3 block. The bitmask usually includes 2 adjacent pixels;
# the code will also plot the same 2 adjacent pixels in the next two rows.
#
# Unfortunately, since bytes are 7 pixels across, some of the 2-pixel-wide
# blocks will cross a byte boundary. To simplify the 6502 code, these are
# simply listed as separate coordinate pairs, each with a bitmask that
# includes 1 pixel instead of 2.
max_x = 280
max_y = 192
def f(theta, k):
r = k*(5+2*cos(5*theta))
return r*cos(theta+(2*pi*k/50.0)),r*sin(theta+(2*pi*k/50.0))
coords = []
for k_mul in range(5000):
for t_mul in range(int(pi*1000+1)):
a, b = f(float(t_mul/100), float(k_mul)/100.0)
x = round(max_x//2+a*1.2)
y = round(max_y//2+b)
if (x % 2 != 0) or (y % 3 != 0):
continue
if x < 0 or x >= max_x or y < 0 or y >= max_y:
continue
coords.append((x,y))
unique_coords = util.unique(coords)
unique_vals = util.vals_3bit(unique_coords)
with open("../../../src/fx/fx.hgr.flower.radial.data.a", "w") as f:
for aval, bval in unique_vals:
f.write(" !byte %s,%s\n" % (aval, bval))
ripple_vals = util.ripple(unique_vals)
with open("../../../src/fx/fx.hgr.flower.radial.ripple.data.a", "w") as f:
for aval, bval in ripple_vals:
f.write(" !byte %s,%s\n" % (aval, bval))
unique_vals.reverse()
with open("../../../src/fx/fx.hgr.flower.radial.in.data.a", "w") as f:
for aval, bval in unique_vals:
f.write(" !byte %s,%s\n" % (aval, bval))

View File

@ -0,0 +1,14 @@
;license:MIT
;(c) 2019 by 4am
;
!cpu 6502
!to "build/FX/CORNER.SUPERRIP",plain
*=$6000
!source "src/fx/fx.hgr.precomputed.3bit.a"
+FX_PRECOMPUTED_3BIT Coordinates
Coordinates
!source "src/fx/fx.hgr.corner.superripple.data.a"
!byte $80

File diff suppressed because it is too large Load Diff

14
src/fx/fx.hgr.flower.a Normal file
View File

@ -0,0 +1,14 @@
;license:MIT
;(c) 2019 by 4am
;
!cpu 6502
!to "build/FX/FLOWER",plain
*=$6000
!source "src/fx/fx.hgr.precomputed.3bit.a"
+FX_PRECOMPUTED_3BIT Coordinates
Coordinates
!source "src/fx/fx.hgr.flower.data.a"
!byte $80

10240
src/fx/fx.hgr.flower.data.a Normal file

File diff suppressed because it is too large Load Diff

14
src/fx/fx.hgr.flower.in.a Normal file
View File

@ -0,0 +1,14 @@
;license:MIT
;(c) 2019 by 4am
;
!cpu 6502
!to "build/FX/FLOWER.IN",plain
*=$6000
!source "src/fx/fx.hgr.precomputed.3bit.a"
+FX_PRECOMPUTED_3BIT Coordinates
Coordinates
!source "src/fx/fx.hgr.flower.in.data.a"
!byte $80

10240
src/fx/fx.hgr.flower.in.data.a Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
;license:MIT
;(c) 2019 by 4am
;
!cpu 6502
!to "build/FX/FLOWER.RAD",plain
*=$6000
!source "src/fx/fx.hgr.precomputed.3bit.a"
+FX_PRECOMPUTED_3BIT Coordinates
Coordinates
!source "src/fx/fx.hgr.flower.radial.data.a"
!byte $80

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
;license:MIT
;(c) 2019 by 4am
;
!cpu 6502
!to "build/FX/FLOWER.RAD.IN",plain
*=$6000
!source "src/fx/fx.hgr.precomputed.3bit.a"
+FX_PRECOMPUTED_3BIT Coordinates
Coordinates
!source "src/fx/fx.hgr.flower.radial.in.data.a"
!byte $80

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
;license:MIT
;(c) 2019 by 4am
;
!cpu 6502
!to "build/FX/FLOWER.RAD.RIP",plain
*=$6000
!source "src/fx/fx.hgr.precomputed.3bit.a"
+FX_PRECOMPUTED_3BIT Coordinates
Coordinates
!source "src/fx/fx.hgr.flower.radial.ripple.data.a"
!byte $80

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
;license:MIT
;(c) 2019 by 4am
;
!cpu 6502
!to "build/FX/FLOWER.RIPPLE",plain
*=$6000
!source "src/fx/fx.hgr.precomputed.3bit.a"
+FX_PRECOMPUTED_3BIT Coordinates
Coordinates
!source "src/fx/fx.hgr.flower.ripple.data.a"
!byte $80

File diff suppressed because it is too large Load Diff