diff --git a/res/fx.conf b/res/fx.conf index 24be42458..495c92e5f 100644 --- a/res/fx.conf +++ b/res/fx.conf @@ -1 +1 @@ -RIPPLE STARWHITE SOFT.DIAGONAL STAGGERWHITE.UD RADIAL STAGGER.LR SOFT.UD CRYSTAL BIT.FIZZLE MEETINTHEMIDDLE DIAGONAL R.BY.PIXEL SUNRISE SOFT.L SUNSET IRIS.IN CORNER.CIRCLE CENTER.BY.PIXEL DIAGONAL2 RIPPLE2 PALETTE.FIZZLE RADIAL2 SPLIT.UD.INTRO R.BY.2 HALF.FIZZLE RADIAL3 DIAGONAL3 CORNER4.OUT BAR.DISSOLVE R.BY.PALETTE FOURSPIRAL SOFT.R IRIS CASCADE AND CHECKERBOARD LR.BY.PIXEL RADIAL4 CHECKER.FIZZLE STAGGERWHITE.LR SOFT.UD.OUT ONESQUARE FIZZLE STAR DIAMOND TWOPASS.LR HALF.MOSAIC RADIAL5 ARROW FOURSQUARE DIAGONAL4 STAGGER.UD INTERLOCK.LR SOFT.UD.IN BLOCK.MOSAIC CORNER4.IN INTERLOCK.UD BLOCK.FIZZLE SPIRAL ARROW.WHITE [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. # \ No newline at end of file +RIPPLE STARWHITE SOFT.DIAGONAL STAGGERWHITE.UD RADIAL STAGGER.LR SOFT.UD CRYSTAL BIT.FIZZLE MEETINTHEMIDDLE DIAGONAL R.BY.PIXEL SUNRISE SOFT.L SUNSET IRIS.IN CORNER.CIRCLE CENTER.BY.PIXEL DIAGONAL2 RIPPLE2 PALETTE.FIZZLE RADIAL2 SPLIT.UD.INTRO R.BY.2 HALF.FIZZLE RADIAL3 DIAGONAL3 CORNER4.OUT BAR.DISSOLVE R.BY.PALETTE FOURSPIRAL SOFT.R IRIS CASCADE AND CHECKERBOARD LR.BY.PIXEL RADIAL4 CHECKER.FIZZLE STAGGERWHITE.LR SOFT.UD.OUT ONESQUARE FIZZLE STAR DIAMOND TWOPASS.LR HALF.MOSAIC RADIAL5 ARROW FOURSQUARE DIAGONAL4 STAGGER.UD INTERLOCK.LR SOFT.UD.IN BLOCK.MOSAIC CORNER4.IN INTERLOCK.UD BLOCK.FIZZLE SPIRAL ARROW.WHITE TRI.FIZZLE [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. # \ No newline at end of file diff --git a/src/fx/fx.hgr.common.a b/src/fx/fx.hgr.common.a index 88a7599a8..226fc433c 100644 --- a/src/fx/fx.hgr.common.a +++ b/src/fx/fx.hgr.common.a @@ -99,8 +99,7 @@ HGRStaggerToWhite rts SetSourceMask -; in: A/Y points to 8-byte array of bit masks used by HGRBlockCopyWithMask - +STAY SourceMaskAddr + ; NOOP- to be removed rts SetCopyMask @@ -109,29 +108,13 @@ SetCopyMask rts BuildSourceMaskFromCopyMask -; build an 8-byte array of bit masks at (SourceMaskAddr) -; that are the inverse (EOR #$FF) of the bit masks at (CopyMaskAddr) -; -; in: must call SetSourceMask and SetCopyMask first -; out: A/Y clobbered -; $00/$01/$02/$03 clobbered -; X preserved - +LDAY CopyMaskAddr - +STAY $00 - +LDAY SourceMaskAddr - +STAY $02 - ldy #$07 -- lda ($00),y - eor #$FF - sta ($02),y - dey - bpl - + ; NOOP- to be removed rts HGRBlockCopyWithMask ; in: A = HGR row / 8 (0x00..0x17) ; Y = HGR column (0x00..0x27) -; must call SetSourceMask and SetCopyMask first +; must call SetCopyMask first ; out: Y preserved ; A/X clobbered ; $00 clobbered @@ -140,13 +123,10 @@ HGRBlockCopyWithMaskNoRecalc ldx #7 HGRBlockCopyWithMasksLoop lda ($26),y -SourceMaskAddr=*+1 - and $FDFD,x ; call SetSourceMask to set - sta $00 - lda ($3c),y + eor ($3c),y CopyMaskAddr=*+1 and $FDFD,x ; call SetCopyMask to set - ora $00 + eor ($3c),y sta ($26),y clc +HGR_INC_WITHIN_BLOCK diff --git a/src/fx/fx.hgr.tri.fizzle.a b/src/fx/fx.hgr.tri.fizzle.a new file mode 100644 index 000000000..b0aa1a355 --- /dev/null +++ b/src/fx/fx.hgr.tri.fizzle.a @@ -0,0 +1,114 @@ +;license:MIT +;(c) 2018 by 4am +; +!cpu 6502 +!to "build/FX/TRI.FIZZLE",plain +*=$6000 + +phase = $FC ; byte, $80 or $00 +maskindex = $FD ; byte +coord = $FE ; word + + lda #$80 + sta phase + lda #4 + sta maskindex +@outerloop + lda #Coordinates + sta coord+1 +@loop + dec maskindex + bpl + + lda #4 + sta maskindex ++ ldx maskindex + lda maskslo,x + ldy maskshi,x + jsr SetCopyMask + ldy #0 + lda (coord),y + bmi @nextPhase + tax + iny + lda (coord),y + tay + txa + bit phase + bmi + + jsr HGRBlockCopy + jmp @wait ++ jsr HGRBlockCopyWithMask +@wait + lda #$0C + jsr WaitForKeyWithTimeout + bmi @exit + inc coord + bne + + inc coord+1 ++ inc coord + bne + + inc coord+1 ++ bne @loop +@nextPhase + bit phase + bpl @exit + asl phase + bcs @outerloop ; always branches +@exit rts + +maskslo + !byte mask1 + !byte >mask2 + !byte >mask3 + !byte >mask4 + +mask1 + !byte %11111111 + !byte %11111110 + !byte %11111100 + !byte %11111000 + !byte %11110000 + !byte %11100000 + !byte %11000000 + !byte %10000000 +mask2 + !byte %11111111 + !byte %10111111 + !byte %10011111 + !byte %10001111 + !byte %10000111 + !byte %10000011 + !byte %10000001 + !byte %10000000 +mask3 + !byte %10000000 + !byte %10000001 + !byte %10000011 + !byte %10000111 + !byte %10001111 + !byte %10011111 + !byte %10111111 + !byte %11111111 +mask4 + !byte %10000000 + !byte %11000000 + !byte %11100000 + !byte %11110000 + !byte %11111000 + !byte %11111100 + !byte %11111110 + !byte %11111111 + + +Coordinates + !source "src/fx/fx.hgr.block.fizzle.data.a" + + !source "src/wait.a" + !source "src/fx/fx.hgr.common.a"