From 0cf8c9c7ee1eed12adfed0579cab8a91658c337f Mon Sep 17 00:00:00 2001 From: 4am Date: Wed, 24 Aug 2022 22:30:49 -0400 Subject: [PATCH] new dither transition effects --- res/FX.CONF | 21 ++++ src/fx/fx.hgr.dither.apple.a | 16 +++ src/fx/fx.hgr.dither.bolt.a | 19 ++++ src/fx/fx.hgr.dither.butterfly.a | 16 +++ src/fx/fx.hgr.dither.corner4.a | 16 +++ src/fx/fx.hgr.dither.dissolve.a | 68 +++++++++++ src/fx/fx.hgr.dither.flower.a | 16 +++ src/fx/fx.hgr.dither.flower.radial.a | 16 +++ src/fx/fx.hgr.dither.heart.a | 16 +++ src/fx/fx.hgr.dither.iris.a | 16 +++ src/fx/fx.hgr.dither.mandelbrot.a | 16 +++ src/fx/fx.hgr.dither.maple.a | 16 +++ src/fx/fx.hgr.dither.radial.a | 117 +++++++++++++++++++ src/fx/fx.hgr.dither.radial.common.a | 91 +++++++++++++++ src/fx/fx.hgr.dither.radial2.a | 20 ++++ src/fx/fx.hgr.dither.radial4.a | 20 ++++ src/fx/fx.hgr.dither.radial5.a | 20 ++++ src/fx/fx.hgr.dither.slow.star.a | 16 +++ src/fx/fx.hgr.dither.snowflake.a | 16 +++ src/fx/fx.hgr.dither.soft.iris.a | 16 +++ src/fx/fx.hgr.dither.star.a | 16 +++ src/fx/fx.hgr.dither.wavy.iris.a | 16 +++ src/fx/fx.hgr.precomputed.1bit.a | 149 +++++++++++++++++++++++- src/fx/fx.hgr.precomputed.2bit.a | 140 +++++++++++++++++++++-- src/fx/fx.hgr.precomputed.3bit.a | 162 ++++++++++++++++++++++++++- src/fx/fx.hgr.thin.bar.dissolve.a | 72 ++++++++++++ src/fx/macros.a | 35 ++++++ src/index/artwork.idx.a | 2 +- src/index/attract.idx.a | 2 +- src/index/cache00.idx.a | 2 +- src/index/cache01.idx.a | 2 +- src/index/cache10.idx.a | 2 +- src/index/cache11.idx.a | 2 +- src/index/coverfade.idx.a | 2 +- src/index/credits.idx.a | 2 +- src/index/decrunch.idx.a | 2 +- src/index/dfx.idx.a | 2 +- src/index/dgr.fizzle.idx.a | 2 +- src/index/dgr.idx.a | 2 +- src/index/dhgr.idx.a | 2 +- src/index/dtitle.idx.a | 2 +- src/index/fx.idx.a | 4 +- src/index/gamehelp.idx.a | 2 +- src/index/gr.fizzle.idx.a | 2 +- src/index/gr.idx.a | 2 +- src/index/helptext.idx.a | 2 +- src/index/hgr0.idx.a | 2 +- src/index/hgr1.idx.a | 2 +- src/index/hgr2.idx.a | 2 +- src/index/hgr3.idx.a | 2 +- src/index/hgr4.idx.a | 2 +- src/index/hgr5.idx.a | 2 +- src/index/hgr6.idx.a | 2 +- src/index/joystick.idx.a | 2 +- src/index/miniattract0.idx.a | 2 +- src/index/miniattract1.idx.a | 2 +- src/index/prelaunch.idx.a | 2 +- src/index/search00.idx.a | 2 +- src/index/search01.idx.a | 2 +- src/index/search10.idx.a | 2 +- src/index/search11.idx.a | 2 +- src/index/sfx.idx.a | 2 +- src/index/slideshow.idx.a | 2 +- src/index/title.idx.a | 2 +- 64 files changed, 1180 insertions(+), 54 deletions(-) create mode 100644 src/fx/fx.hgr.dither.apple.a create mode 100644 src/fx/fx.hgr.dither.bolt.a create mode 100644 src/fx/fx.hgr.dither.butterfly.a create mode 100644 src/fx/fx.hgr.dither.corner4.a create mode 100644 src/fx/fx.hgr.dither.dissolve.a create mode 100644 src/fx/fx.hgr.dither.flower.a create mode 100644 src/fx/fx.hgr.dither.flower.radial.a create mode 100644 src/fx/fx.hgr.dither.heart.a create mode 100644 src/fx/fx.hgr.dither.iris.a create mode 100644 src/fx/fx.hgr.dither.mandelbrot.a create mode 100644 src/fx/fx.hgr.dither.maple.a create mode 100644 src/fx/fx.hgr.dither.radial.a create mode 100644 src/fx/fx.hgr.dither.radial.common.a create mode 100644 src/fx/fx.hgr.dither.radial2.a create mode 100644 src/fx/fx.hgr.dither.radial4.a create mode 100644 src/fx/fx.hgr.dither.radial5.a create mode 100644 src/fx/fx.hgr.dither.slow.star.a create mode 100644 src/fx/fx.hgr.dither.snowflake.a create mode 100644 src/fx/fx.hgr.dither.soft.iris.a create mode 100644 src/fx/fx.hgr.dither.star.a create mode 100644 src/fx/fx.hgr.dither.wavy.iris.a create mode 100644 src/fx/fx.hgr.thin.bar.dissolve.a diff --git a/res/FX.CONF b/res/FX.CONF index 756de4104..bb7c4e7cf 100644 --- a/res/FX.CONF +++ b/res/FX.CONF @@ -28,83 +28,104 @@ MANDELBROT.IN RADIAL STAGGER.LR SOFT.UD +DITHER.IRIS HEART.IN CRYSTAL STAR.RIPPLE BIT2.FIZZLE +DITHER.HEART MEETINTHEMIDDLE BOXES48 APPLE.IN FLOWER.RAD.RIP +DITHER.CORNER4 SOFT.IRIS W.RIPPLE.BLOOM DIAGONAL PINWHEELS +DITHER.SLOWSTAR STAGGERWHITE.UD BOXES48.SYNCC CORNER4.RIP BOLT +DITHER.SNOWFLAK RADIAL2 STAR FLOWER.IN R.BY.PIXEL +DITHER.BUTTERFL WAVY.IRIS BIT.FIZZLE STAR.IN BOXES48.PAGEC +DITHER.MAPLE DIAG.STRIPES APPLE MANDELBROT.RIP SOFT.L +DITHER.SOFTIRIS HEART.RIPPLE FLOWER.RAD SLOW.STAR.IN IRIS.IN +DITHER.STAR BUTTERFLYRIPPLE BOXES48.SPIRALC W.IRIS.BLOOM.IN CENTER.BY.PIXEL +DITHER.WAVYIRIS RADBUBBLES SNOWFLAKE.IN FLOWER APPLE.RIPPLE +DITHER.DISSOLVE DIAGONAL2 STAR.BLOOM DIAMOND.STRIPES BOXES48.SYNC +DITHER.RADIAL +THIN.DISSOLVE PALETTE.FIZZLE BUTTERFLY BUBBLES +DITHER.RADIAL2 FLOWER.RIPPLE SPLIT.UD.INTRO WAVY.IRIS.IN R.BY.2 +DITHER.RADIAL4 HALF.FIZZLE BOXES48.LDIAGON SNOWFLAKE.RIP RADIAL3 HEART BOLT.IN +DITHER.RADIAL5 FLOWER.RAD.IN DIAGONAL3 MANDELBROT BOXES48.SPIRAL +DITHER.APPLE WAVY.RIPPLE CORNER4.OUT LATTICE BAR.DISSOLVE +DITHER.BOLT R.BY.PALETTE FOURSPIRAL SOFT.R MAPLE.IN +DITHER.FLOWER BOXES48.SNAKEC RADIAL4 IRIS CASCADE +DITHER.FLOWERRD SNOWFLAKE VERTICAL.BLINDS BUTTERFLY.IN LR.BY.PIXEL +DITHER.MANDEL CHECKERB.FIZZLE BOXES48.SIDES CIRCLE.STRIPES diff --git a/src/fx/fx.hgr.dither.apple.a b/src/fx/fx.hgr.dither.apple.a new file mode 100644 index 000000000..5c9d72ace --- /dev/null +++ b/src/fx/fx.hgr.dither.apple.a @@ -0,0 +1,16 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.APPLE",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.3bit.a" + + +FX_INITONCE_3BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_3BIT_DITHER Coordinates3Bit, EndCoordinates3Bit + +CoordinatesFile + !byte 13 + !text "FX/APPLE.DATA" diff --git a/src/fx/fx.hgr.dither.bolt.a b/src/fx/fx.hgr.dither.bolt.a new file mode 100644 index 000000000..2d11066a3 --- /dev/null +++ b/src/fx/fx.hgr.dither.bolt.a @@ -0,0 +1,19 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +; https://thenounproject.com/ArtZ91/collection/pure-lines/?i=550425 +; Lightning Bolt by Arthur Shlain from the Noun Project +; CC-BY +!cpu 6502 +!to "build/FX.INDEXED/DITHER.BOLT",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.3bit.a" + + +FX_INITONCE_3BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_3BIT_DITHER Coordinates3Bit, EndCoordinates3Bit + +CoordinatesFile + !byte 12 + !text "FX/BOLT.DATA" diff --git a/src/fx/fx.hgr.dither.butterfly.a b/src/fx/fx.hgr.dither.butterfly.a new file mode 100644 index 000000000..ad73ccf86 --- /dev/null +++ b/src/fx/fx.hgr.dither.butterfly.a @@ -0,0 +1,16 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.BUTTERFL",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.2bit.a" + + +FX_INITONCE_2BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_2BIT_DITHER Coordinates2Bit, EndCoordinates2Bit + +CoordinatesFile + !byte 17 + !text "FX/BUTTERFLY.DATA" diff --git a/src/fx/fx.hgr.dither.corner4.a b/src/fx/fx.hgr.dither.corner4.a new file mode 100644 index 000000000..36c7bc905 --- /dev/null +++ b/src/fx/fx.hgr.dither.corner4.a @@ -0,0 +1,16 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.CORNER4",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.1bit.a" + + +FX_INITONCE_1BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_1BIT_DITHER Coordinates1Bit, EndCoordinates1Bit + +CoordinatesFile + !byte 15 + !text "FX/CORNER4.DATA" diff --git a/src/fx/fx.hgr.dither.dissolve.a b/src/fx/fx.hgr.dither.dissolve.a new file mode 100644 index 000000000..5ca8c6280 --- /dev/null +++ b/src/fx/fx.hgr.dither.dissolve.a @@ -0,0 +1,68 @@ +;license:MIT +;(c) 2022 by 4am +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.DISSOLVE",plain +*=$6000 + +row1 = $fe +row2 = $ff +src = $3c +dst = $26 + + lda #$00 + sta row1 + lda #$BF + sta row2 +@loop lda row1 + jsr HGRCalc + ldy #$27 +- tya + and #$03 + tax + lda (src),y + eor (dst),y ; merge source and destination bits +@amask and mask1,x ; isolate the bits to replace, zero the rest + eor (dst),y ; unmerge source and destination bits, leaves 'to keep' destination bits intact + sta (dst),y ; write the result + dey + bpl - + lda row2 + jsr HGRCalc + ldy #$27 +- tya + and #$03 + tax + lda (src),y + eor (dst),y +@bmask and mask3,x + eor (dst),y + sta (dst),y + dey + bpl - + lda #$28 + jsr WaitForKeyWithTimeout + bmi @exit + inc row1 + dec row2 + lda row1 + cmp #$60 + beq @loop + ldx @amask+1 + ldy @bmask+1 + stx @bmask+1 + sty @amask+1 + cmp #$C0 + bne @loop +@exit rts + +mask1 !byte %10110011 +mask2 !byte %11100110 +mask3 !byte %11001100 +mask4 !byte %10011001 + !byte %10110011 + !byte %11100110 + + !source "src/wait.a" + !source "src/fx/fx.hgr.common.a" + +HGR_CALC_ROUTINES diff --git a/src/fx/fx.hgr.dither.flower.a b/src/fx/fx.hgr.dither.flower.a new file mode 100644 index 000000000..a424a6d26 --- /dev/null +++ b/src/fx/fx.hgr.dither.flower.a @@ -0,0 +1,16 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.FLOWER",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.3bit.a" + + +FX_INITONCE_3BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_3BIT_DITHER Coordinates3Bit, EndCoordinates3Bit + +CoordinatesFile + !byte 14 + !text "FX/FLOWER.DATA" diff --git a/src/fx/fx.hgr.dither.flower.radial.a b/src/fx/fx.hgr.dither.flower.radial.a new file mode 100644 index 000000000..ac8733258 --- /dev/null +++ b/src/fx/fx.hgr.dither.flower.radial.a @@ -0,0 +1,16 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.FLOWERRD",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.3bit.a" + + +FX_INITONCE_3BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_3BIT_DITHER Coordinates3Bit, EndCoordinates3Bit + +CoordinatesFile + !byte 18 + !text "FX/FLOWER.RAD.DATA" diff --git a/src/fx/fx.hgr.dither.heart.a b/src/fx/fx.hgr.dither.heart.a new file mode 100644 index 000000000..c9bd202f3 --- /dev/null +++ b/src/fx/fx.hgr.dither.heart.a @@ -0,0 +1,16 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.HEART",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.2bit.a" + + +FX_INITONCE_2BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_2BIT_DITHER Coordinates2Bit, EndCoordinates2Bit + +CoordinatesFile + !byte 13 + !text "FX/HEART.DATA" diff --git a/src/fx/fx.hgr.dither.iris.a b/src/fx/fx.hgr.dither.iris.a new file mode 100644 index 000000000..0061b928e --- /dev/null +++ b/src/fx/fx.hgr.dither.iris.a @@ -0,0 +1,16 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.IRIS",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.1bit.a" + + +FX_INITONCE_1BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_1BIT_DITHER Coordinates1Bit, EndCoordinates1Bit + +CoordinatesFile + !byte 12 + !text "FX/IRIS.DATA" diff --git a/src/fx/fx.hgr.dither.mandelbrot.a b/src/fx/fx.hgr.dither.mandelbrot.a new file mode 100644 index 000000000..00767b4da --- /dev/null +++ b/src/fx/fx.hgr.dither.mandelbrot.a @@ -0,0 +1,16 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.MANDEL",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.3bit.a" + + +FX_INITONCE_3BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_3BIT_DITHER Coordinates3Bit, EndCoordinates3Bit + +CoordinatesFile + !byte 18 + !text "FX/MANDELBROT.DATA" diff --git a/src/fx/fx.hgr.dither.maple.a b/src/fx/fx.hgr.dither.maple.a new file mode 100644 index 000000000..a57ff6ccb --- /dev/null +++ b/src/fx/fx.hgr.dither.maple.a @@ -0,0 +1,16 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.MAPLE",plain +*=$6000 + + !source "src/fx/fx.hgr.precomputed.2bit.a" + + +FX_INITONCE_2BIT CoordinatesFile, Start +Start + +FX_PRECOMPUTED_2BIT_DITHER Coordinates2Bit, EndCoordinates2Bit + +CoordinatesFile + !byte 13 + !text "FX/MAPLE.DATA" diff --git a/src/fx/fx.hgr.dither.radial.a b/src/fx/fx.hgr.dither.radial.a new file mode 100644 index 000000000..e168ffa00 --- /dev/null +++ b/src/fx/fx.hgr.dither.radial.a @@ -0,0 +1,117 @@ +;license:MIT +;(c) 2019-2022 by 4am/qkumba +; +!cpu 6502 +!to "build/FX.INDEXED/DITHER.RADIAL",plain +*=$6000 + +evenrow_ptr = $E4 ; word +oddrow_ptr = $E6 ; word +mirror_src1 = $E8 ; word +mirror_dest1 = $EA ; word +mirror_src2 = $EC ; word +mirror_dest2 = $EE ; word +src1 = $F0 ; word +dest1 = $F2 ; word +src2 = $F4 ; word +dest2 = $F6 ; word +input = $FE ; word + + !source "src/fx/fx.hgr.precomputed.1bit.a" + + +FX_INITONCE_1BIT CoordinatesFile, Start + lda #$80 + sta Coordinates1Bit-2 + +BUILD_DITHER_MASKS dither_masks, evenrow_masks, oddrow_masks, no_masks + +BUILD_HGR_LOOKUP_TABLES hgrlo, hgr1hi + +BUILD_HGR_MIRROR_LOOKUP_TABLES hgrlomirror, hgr1himirror + +BUILD_MIRROR_COLS mirror_cols + +BUILD_SPARSE_BITMASKS copymasks, mirror_copymasks +Start + +LDADDR evenrow_masks + +ST16 evenrow_ptr + +LDADDR oddrow_masks + +ST16 oddrow_ptr + jsr FullRadial + bit KBD + bpl + + rts ++ lda # 127 then we're done + +ROW_X_TO_BASE_ADDRESSES + +ROW_X_TO_MIRROR_ADDRESSES + + iny + lda (Coordinates2Bit sta $f1 - lda #<(Coordinates2Bit + $3C00 - 2) + lda #<(EndCoordinates2Bit - 2) sta $f2 - lda #>(Coordinates2Bit + $3C00 - 2) + lda #>(EndCoordinates2Bit - 2) sta $f3 ldx #$1E ; #$3C/2 @@ -305,13 +310,134 @@ dest2=*+1 inc