From 8e72f1d54f8960a961046b7707111dc31b40f768 Mon Sep 17 00:00:00 2001 From: 4am Date: Sun, 28 Oct 2018 22:59:51 -0400 Subject: [PATCH] add fx.hgr.diagonal.a --- res/attract.conf | 2 +- src/4cade.a | 3 +- src/fx.hgr.diagonal.a | 54 ++++++++++++++ src/fx.hgr.interlockinghorizontal.a | 14 +--- src/fx.hgr.interlockingvertical.a | 106 ++++++++++++++-------------- 5 files changed, 111 insertions(+), 68 deletions(-) create mode 100644 src/fx.hgr.diagonal.a diff --git a/res/attract.conf b/res/attract.conf index e597334a6..20b9f5353 100644 --- a/res/attract.conf +++ b/res/attract.conf @@ -1 +1 @@ -# # Mega-Attract-Mode configuration file # # Mega-Attract-Mode is split into modules. Each module can be a # short slideshow or a self-running demo (like a game's built-in # 'attract mode'). 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 master prefs file. # # Format: # key=value # # value must be one of # 1 for HGR slideshow (key is a file containing a list of HGR graphics) # 2 for DHGR slideshow (key is a file containing a list of DHGR graphics) # 3 for self-running demo (key is an executable binary file) # # Blank lines and lines beginning with '#' are ignored (like this one!) # A line beginning with '[' terminates the parsing # SHORT.CONF=1 WAVY.NAVY=3 FAVORITES.CONF=1 AB.CONF=1 BRODERBUND.CONF=1 DHGR.CONF=2 ACTIVISION.CONF=1 CD.CONF=1 ATARI.CONF=1 EFG.CONF=1 SIERRA.CONF=1 DATAMOST.CONF=1 HIJKL.CONF=1 DATASOFT.CONF=1 MNO.CONF=1 MICROFUN.CONF=1 PQR.CONF=1 PICCADILLY.CONF=1 S.CONF=1 SIRIUS.CONF=1 T.CONF=1 [eof] \ No newline at end of file +# # Mega-Attract-Mode configuration file # # Mega-Attract-Mode is split into modules. Each module can be a # short slideshow or a self-running demo (like a game's built-in # 'attract mode'). 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 master prefs file. # # Format: # key=value # # value must be one of # 1 for HGR slideshow (key is a file containing a list of HGR graphics) # 2 for DHGR slideshow (key is a file containing a list of DHGR graphics) # 3 for self-running demo (key is an executable binary file) # # Blank lines and lines beginning with '#' are ignored (like this one!) # A line beginning with '[' terminates the parsing # FAVORITES.CONF=1 #SHORT.CONF=1 WAVY.NAVY=3 AB.CONF=1 BRODERBUND.CONF=1 DHGR.CONF=2 ACTIVISION.CONF=1 CD.CONF=1 ATARI.CONF=1 EFG.CONF=1 SIERRA.CONF=1 DATAMOST.CONF=1 HIJKL.CONF=1 DATASOFT.CONF=1 MNO.CONF=1 MICROFUN.CONF=1 PQR.CONF=1 PICCADILLY.CONF=1 S.CONF=1 SIRIUS.CONF=1 T.CONF=1 [eof] \ No newline at end of file diff --git a/src/4cade.a b/src/4cade.a index 7901a7afd..b50a5d9a2 100644 --- a/src/4cade.a +++ b/src/4cade.a @@ -212,7 +212,7 @@ HGRLoad jsr AddToPath jsr LoadFile !word gPathname - jsr InterlockingHorizontalHGR;InterlockingVerticalHGR;FizzleHGR; + jsr DiagonalHGR;InterlockingVerticalHGR;FizzleHGR;InterlockingHorizontalHGR; jmp WaitOnScreenshot DHGRLoad @@ -326,6 +326,7 @@ kAttractModeConfFile !source "src/parse.common.a" !source "src/parse.games.a" !source "src/fx.hgr.fizzle.a" + !source "src/fx.hgr.diagonal.a" !source "src/fx.hgr.interlockingvertical.a" !source "src/fx.hgr.interlockinghorizontal.a" !source "src/fx.dhgr.fizzle.a" diff --git a/src/fx.hgr.diagonal.a b/src/fx.hgr.diagonal.a new file mode 100644 index 000000000..fd926af63 --- /dev/null +++ b/src/fx.hgr.diagonal.a @@ -0,0 +1,54 @@ +DiagonalHGR + lda #$27 + sta $FB + lda #$17 + sta $FA + sta $FC +@loop jsr @block + dec $FB + inc $FA + lda $FB + bmi + + lda $FA + cmp #$18 + bne @loop ++ dec $FC + lda #$27 + sta $FB + lda $FC + sta $FA + bpl @loop + lda $C000 + bmi @exit + lda #$00 + sta $FA + sec + sbc $FC + sta $FD + lda $FB + sec + sbc $FD + sta $FB + bpl @loop +@exit rts + +@block lda $FA + bpl + + lda #$00 ++ asl + asl + asl + jsr HGRCalc + ldx #$08 +- ldy $FB + lda ($3c),y + sta ($26),y + lda $27 + clc + adc #$04 + sta $27 + eor #$60 + sta $3d + dex + bne - + rts diff --git a/src/fx.hgr.interlockinghorizontal.a b/src/fx.hgr.interlockinghorizontal.a index d87bc3804..7decc3cf7 100644 --- a/src/fx.hgr.interlockinghorizontal.a +++ b/src/fx.hgr.interlockinghorizontal.a @@ -34,7 +34,7 @@ InterlockingHorizontalHGR dey bpl @innerloop lda #$40 - jsr @wait + jsr Wait lda $C000 bmi @exit inc index2 @@ -42,18 +42,6 @@ InterlockingHorizontalHGR bpl @outerloop @exit rts -@wait sec -@wait1 pha -@wait2 sbc #1 - bne @wait2 - pla - bit $C000 - bmi @exitwait - sbc #1 - bne @wait1 -@exitwait - rts - @data1 !hex 20283038202830382129313921293139 !hex 222A323A222A323A232B333B232B333B !hex 20283038202830382129313921293139 diff --git a/src/fx.hgr.interlockingvertical.a b/src/fx.hgr.interlockingvertical.a index 0b870a363..a8c7db844 100644 --- a/src/fx.hgr.interlockingvertical.a +++ b/src/fx.hgr.interlockingvertical.a @@ -1,38 +1,63 @@ +row1 = $fe +row2 = $ff + InterlockingVerticalHGR - ldy #$5F ; logical row index -@loop - lda @data1,y - sta @sub2+2 + lda #$00 + sta row1 + lda #$5F + sta row2 +@loop lda row1 + asl + jsr HGRCalc + ldy #$27 +- lda ($3c),y + sta ($26),y + dey + bpl - + lda row2 + asl clc - adc #$20 - sta @sub1+2 - lda @data2,y - sta @sub1+1 - sta @sub2+1 - lda @data3,y - sta @sub4+2 - clc - adc #$20 - sta @sub3+2 - lda @data4,y - sta @sub3+1 - sta @sub4+1 - ldx #$27 ; logical column index -@sub1 lda $FDFD,x -@sub2 sta $FDFD,x -@sub3 lda $FDFD,x -@sub4 sta $FDFD,x - dex - bpl @sub1 - lda #$40 - jsr @wait + adc #$01 + jsr HGRCalc + ldy #$27 +- lda ($3c),y + sta ($26),y + dey + bpl - + lda #$30 + jsr Wait lda $C000 bmi @exit - dey + inc row1 + dec row2 bpl @loop @exit rts -@wait sec +HGRCalc + asl + tax + and #$F0 + bpl @calc1 + ora #$05 +@calc1 bcc @calc2 + ora #$0A +@calc2 asl + asl + sta $26 + txa + and #$0E + adc #$10 + asl $26 + rol + sta $27 + eor #$60 + sta $3d + lda $26 + sta $3c + rts + +Wait + sec @wait1 pha @wait2 sbc #1 bne @wait2 @@ -43,28 +68,3 @@ InterlockingVerticalHGR bne @wait1 @exitwait rts - -@data1 !hex 20283038202830382129313921293139 - !hex 222A323A222A323A232B333B232B333B - !hex 20283038202830382129313921293139 - !hex 222A323A222A323A232B333B232B333B - !hex 20283038202830382129313921293139 - !hex 222A323A222A323A232B333B232B333B -@data2 !hex 00000000808080800000000080808080 - !hex 00000000808080800000000080808080 - !hex 28282828A8A8A8A828282828A8A8A8A8 - !hex 28282828A8A8A8A828282828A8A8A8A8 - !hex 50505050D0D0D0D050505050D0D0D0D0 - !hex 50505050D0D0D0D050505050D0D0D0D0 -@data3 !hex 3F372F273F372F273E362E263E362E26 - !hex 3D352D253D352D253C342C243C342C24 - !hex 3F372F273F372F273E362E263E362E26 - !hex 3D352D253D352D253C342C243C342C24 - !hex 3F372F273F372F273E362E263E362E26 - !hex 3D352D253D352D253C342C243C342C24 -@data4 !hex D0D0D0D050505050D0D0D0D050505050 - !hex D0D0D0D050505050D0D0D0D050505050 - !hex A8A8A8A828282828A8A8A8A828282828 - !hex A8A8A8A828282828A8A8A8A828282828 - !hex 80808080000000008080808000000000 - !hex 80808080000000008080808000000000