From 995915237085b2a516f97ff1c4783751bb1f4344 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 21 Feb 2023 20:38:34 -0500 Subject: [PATCH] hgr_viewer: merge some of the code --- graphics/gr/moon/moon.s | 2 +- graphics/hgr/flood_fill/flood_orig.s | 92 +++-- graphics/hgr_viewer/Makefile | 94 ++++- graphics/hgr_viewer/hires_jiskey.s | 140 +------ graphics/hgr_viewer/hires_main.s | 95 +++++ graphics/hgr_viewer/hires_plain.s | 157 ++++---- graphics/hgr_viewer/hires_special.s | 369 ++++++++++++------ graphics/hgr_viewer/jiskey/Makefile | 12 +- graphics/hgr_viewer/plain/45.hgr.zx02 | Bin 0 -> 3196 bytes graphics/hgr_viewer/plain/45b2d.hgr.zx02 | Bin 0 -> 7307 bytes graphics/hgr_viewer/plain/45zoom.hgr.zx02 | Bin 0 -> 6853 bytes .../plain/FULUd0EXEAgPCeG_a2.hgr.zx02 | Bin 0 -> 2897 bytes .../plain/FXeGzxKXgAEnsbj_a2.hgr.zx02 | Bin 0 -> 5311 bytes .../plain/FllGu1OWIAAAG8O_a2.hgr.zx02 | Bin 0 -> 2585 bytes .../plain/Fm2JZOJWAAEVX0l_a2.hgr.zx02 | Bin 0 -> 4112 bytes .../plain/FmDIeJZXkAA4IiP_a2.hgr.zx02 | Bin 0 -> 660 bytes .../plain/FmH3w6vXwAAd1pF_a2.hgr.zx02 | Bin 0 -> 3751 bytes .../plain/FpLVqVDaIAk9jtc_a2.hgr.zx02 | Bin 0 -> 4388 bytes graphics/hgr_viewer/plain/Makefile | 109 +++++- graphics/hgr_viewer/plain/gp.hgr.zx02 | Bin 0 -> 2133 bytes graphics/hgr_viewer/plain/peddle.hgr.zx02 | Bin 0 -> 6691 bytes graphics/hgr_viewer/plain/peddle3.hgr.zx02 | Bin 0 -> 2157 bytes graphics/hgr_viewer/plain/zebra.hgr.zx02 | Bin 0 -> 5127 bytes graphics/hgr_viewer/special/Makefile | 338 +++++++++++++++- music/sound_effects/Makefile | 14 +- music/sound_effects/test_audio.s | 95 ++--- 26 files changed, 1084 insertions(+), 433 deletions(-) create mode 100644 graphics/hgr_viewer/hires_main.s create mode 100644 graphics/hgr_viewer/plain/45.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/45b2d.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/45zoom.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/FULUd0EXEAgPCeG_a2.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/FXeGzxKXgAEnsbj_a2.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/FllGu1OWIAAAG8O_a2.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/Fm2JZOJWAAEVX0l_a2.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/FmDIeJZXkAA4IiP_a2.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/FmH3w6vXwAAd1pF_a2.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/FpLVqVDaIAk9jtc_a2.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/gp.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/peddle.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/peddle3.hgr.zx02 create mode 100644 graphics/hgr_viewer/plain/zebra.hgr.zx02 diff --git a/graphics/gr/moon/moon.s b/graphics/gr/moon/moon.s index 1b21fa93..5662b074 100644 --- a/graphics/gr/moon/moon.s +++ b/graphics/gr/moon/moon.s @@ -94,7 +94,7 @@ water_line: jsr random -; adc FRAME + adc FRAME adc COUNT and #$1F diff --git a/graphics/hgr/flood_fill/flood_orig.s b/graphics/hgr/flood_fill/flood_orig.s index 377c0fdc..78713cde 100644 --- a/graphics/hgr/flood_fill/flood_orig.s +++ b/graphics/hgr/flood_fill/flood_orig.s @@ -14,12 +14,32 @@ color_green = 2 color_blue = 3 color_orange = 4 color_white = 5 + work_buffer = $7000 ; work data area,$ from $7000-7fff + TXTCLR = $c050 MIXCLR = $c052 TXTPAGE1 = $c054 LORES = $c056 +pageflg = $00 +xc = $01 +yc = $02 +back = $03 +evenc = $04 +oddc = $05 +screen_bit = $06 +hptr = $07 +cflag = $09 +ptr = $0e +match_color = $10 +add_coord_lo = $12 +plot_coord_lo = $13 +add_coord_ptr = $14 ; new coords are added at this point +plot_coord_ptr = $16 ; coords are read from this pointer and plotted +tmp = $18 + + ;******************************************************************************* ;* FILL - flood fill with dither pattern. * ;* * @@ -43,17 +63,6 @@ LORES = $c056 ;* Preserves X/Y registers. * ;******************************************************************************* -xc = $01 -yc = $02 -back = $03 -evenc = $04 -oddc = $05 -match_color = $10 -add_coord_lo = $12 -plot_coord_lo = $13 -add_coord_ptr = $14 ; new coords are added at this point -plot_coord_ptr = $16 ; coords are read from this pointer and plotted -tmp = $18 FILL: txa @@ -201,13 +210,8 @@ PLT: ;* Preserves X/Y registers. * ;******************************************************************************* ;Clear variables -pageflg = $00 -;xc = $01 -;yc = $02 -;back = $03 -;evenc = $04 -;oddc = $05 -hptr = $07 + + DITHER1: txa @@ -245,8 +249,6 @@ L691C: ;* * ;* Preserves X/Y registers. * ;******************************************************************************* -screen_bit = $06 -cflag = $09 PLT1: txa @@ -404,7 +406,7 @@ SCOPE: ;* Preserves X/Y registers. * ;******************************************************************************* ; Clear variables -ptr = $0e + INIT: txa @@ -450,8 +452,8 @@ L6A17: ;* Preserves X/Y registers. * ;******************************************************************************* ;Clear variables -;xc = $00 -;yc = $01 +xc_scope = $00 +yc_scope = $01 col_ctr = $02 row_ctr = $03 saved_byte_off = $04 @@ -463,20 +465,23 @@ start_x = $09 ;hptr = $0c work_ptr = $0e + + + SCOPE1: txa pha tya pha sec ; left edge is XC - 9 - lda xc + lda xc_scope sbc #9 - sta xc + sta xc_scope sta start_x sec - lda yc ; top edge is YC - 11 + lda yc_scope ; top edge is YC - 11 sbc #11 - sta yc + sta yc_scope lda #$00 sta work_ptr_lo sta work_ptr @@ -500,14 +505,14 @@ SCOPE1: RowLoop: lda #38 sta col_ctr - ldx yc ; get the Y-coord + ldx yc_scope ; get the Y-coord cpx #192 ; did we wrap off the top? bcs OffEdge ; yes, bail lda ytable_lo,X ; get the hi-res row base sta hptr lda ytable_hi,X sta hptr+1 - ldx xc ; get the X-coord + ldx xc_scope ; get the X-coord cpx #140 ; did we wrap around to the left when subtracting? bcc ScanPixel ; no, scan it @@ -588,8 +593,8 @@ L6ACE: L6AD2: sty work_ptr_lo lda start_x ; reset X-coord - sta xc - inc yc ; advance to next row + sta xc_scope + inc yc_scope ; advance to next row dec row_ctr ; are we done? beq Scope2 ; yes, move to rendering jmp RowLoop ; no, loop @@ -606,14 +611,14 @@ lr_ptr = $0e Scope2: lda #$01 ; left edge; 1-pixel boundary at sides - sta xc + sta xc_scope lda #$00 ; no border at top - sta yc + sta yc_scope sta saved_byte_off sta work_ptr lda #>work_buffer sta work_ptr+1 - ldx yc ; get lo-res screen row base + ldx yc_scope ; get lo-res screen row base L6B12: lda lr_ytable_lo,X sta lr_ptr @@ -633,18 +638,18 @@ L6B2A: sty saved_byte_off tax ; put color value (0-15) in X lda lr_color_map,X ; convert it to a lo-res color - ldy xc + ldy xc_scope sta (lr_ptr),Y ; plot 2x2 pixel (two bytes wide) iny sta (lr_ptr),Y iny - sty xc + sty xc_scope cpy #39 ; end of row? bne DrawLoLoop ; not yet, loop lda #$01 ; reset X-coord - sta xc - inc yc ; advance to next row - ldx yc + sta xc_scope + inc yc_scope ; advance to next row + ldx yc_scope cpx #23 ; done? (leaves 1-pixel boundary at bottom) bne L6B12 ; no, loop @@ -757,10 +762,6 @@ ytable_lo: ; Clear variables -;xc = $01 -;yc = $02 -;back = $03 - CLEAN: txa pha @@ -820,11 +821,6 @@ ytable_hi: ; Clear variables -;xc = $01 -;yc = $02 -;hptr = $07 -;hptr_h = $08 - NEG: txa pha diff --git a/graphics/hgr_viewer/Makefile b/graphics/hgr_viewer/Makefile index c071f950..5ae86492 100644 --- a/graphics/hgr_viewer/Makefile +++ b/graphics/hgr_viewer/Makefile @@ -12,7 +12,25 @@ all: hires_plain.dsk hires_jiskey.dsk hires_special.dsk: HELLO HIRES_SPECIAL \ special/bbl.hgr.zx02 special/bbl2.hgr.zx02 \ special/grl.hgr.zx02 special/1bg.hgr.zx02 \ - special/fup.hgr.zx02 special/witch.hgr.zx02 + special/fup.hgr.zx02 special/witch.hgr.zx02 \ + special/ob.hgr.zx02 special/bg2.hgr.zx02 \ + special/oopb.hgr.zx02 special/ooc5.hgr.zx02 \ + special/fze.hgr.zx02 special/fjj.hgr.zx02 \ + special/dadz.hgr.zx02 special/mope_a2.hgr.zx02 \ + special/lh.hgr.zx02 special/fcd.hgr.zx02 \ + special/facd.hgr.zx02 special/fif.hgr.zx02 \ + special/fif2.hgr.zx02 special/oo4.hgr.zx02 \ + special/oo2.hgr.zx02 special/fwq.hgr.zx02 \ + special/piz.hgr.zx02 special/cit.hgr.zx02 \ + special/cel.hgr.zx02 special/mug.hgr.zx02 \ + special/jis.hgr.zx02 special/ojm.hgr.zx02 \ + special/nda.hgr.zx02 special/fri.hgr.zx02 \ + special/win.hgr.zx02 special/bar.hgr.zx02 \ + special/ani.hgr.zx02 special/gld.hgr.zx02 \ + special/rnu.hgr.zx02 special/ooh.hgr.zx02 \ + special/two.hgr.zx02 special/rug.hgr.zx02 \ + special/ndz.hgr.zx02 special/crd.hgr.zx02 \ + special/gfa.hgr.zx02 special/sxy.hgr.zx02 cp $(EMPTY_DISK) hires_special.dsk $(DOS33) -y hires_special.dsk SAVE A HELLO $(DOS33) -y hires_special.dsk BSAVE -a 0x0c00 HIRES_SPECIAL HIRES @@ -22,16 +40,82 @@ hires_special.dsk: HELLO HIRES_SPECIAL \ $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/1bg.hgr.zx02 OBG.ZX02 $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/fup.hgr.zx02 FUP.ZX02 $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/witch.hgr.zx02 WITCH.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/ob.hgr.zx02 OB.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/bg2.hgr.zx02 BG2.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/oopb.hgr.zx02 OOPB.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/ooc5.hgr.zx02 OOC5.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/fze.hgr.zx02 FZE.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/fjj.hgr.zx02 FJJ.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/dadz.hgr.zx02 DADZ.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/mope_a2.hgr.zx02 MOPE.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/lh.hgr.zx02 LH.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/fcd.hgr.zx02 FCD.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/facd.hgr.zx02 FACD.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/fif.hgr.zx02 FIF.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/fif2.hgr.zx02 FIF2.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/oo4.hgr.zx02 OO4.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/oo2.hgr.zx02 OO2.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/fwq.hgr.zx02 FWQ.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/piz.hgr.zx02 PIZ.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/cit.hgr.zx02 CIT.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/cel.hgr.zx02 CEL.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/mug.hgr.zx02 MUG.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/quad.hgr.zx02 QUAD.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/gb.hgr.zx02 GB.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/jis.hgr.zx02 JIS.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/ojm.hgr.zx02 OJM.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/nda.hgr.zx02 NDA.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/fri.hgr.zx02 FRI.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/win.hgr.zx02 WIN.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/bar.hgr.zx02 BAR.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/ani.hgr.zx02 ANI.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/gld.hgr.zx02 GLD.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/rnu.hgr.zx02 RNU.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/ooh.hgr.zx02 OOH.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/two.hgr.zx02 TWO.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/rug.hgr.zx02 RUG.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/ndz.hgr.zx02 NDZ.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/crd.hgr.zx02 CRD.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/gfa.hgr.zx02 GFA.ZX02 + $(DOS33) -y hires_special.dsk BSAVE -a 0xa000 ./special/sxy.hgr.zx02 SXY.ZX02 + + + #### hires_plain.dsk: HELLO HIRES_PLAIN \ - ./plain/gp.hgr.zx02 ./plain/peddle.hgr.zx02 + ./plain/gp.hgr.zx02 ./plain/peddle.hgr.zx02 \ + ./plain/gp.hgr.zx02 ./plain/peddle3.hgr.zx02 \ + ./plain/45.hgr.zx02 ./plain/45b2d.hgr.zx02 \ + ./plain/45zoom.hgr.zx02 ./plain/zebra.hgr.zx02 \ + ./plain/Fm2JZOJWAAEVX0l_a2.hgr.zx02 \ + ./plain/FmH3w6vXwAAd1pF_a2.hgr.zx02 \ + ./plain/FULUd0EXEAgPCeG_a2.hgr.zx02 \ + ./plain/FllGu1OWIAAAG8O_a2.hgr.zx02 \ + ./plain/FpLVqVDaIAk9jtc_a2.hgr.zx02 \ + ./plain/FXeGzxKXgAEnsbj_a2.hgr.zx02 \ + ./plain/FmDIeJZXkAA4IiP_a2.hgr.zx02 cp $(EMPTY_DISK) hires_plain.dsk $(DOS33) -y hires_plain.dsk SAVE A HELLO $(DOS33) -y hires_plain.dsk BSAVE -a 0x0c00 HIRES_PLAIN HIRES $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/gp.hgr.zx02 GP.ZX02 $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/peddle.hgr.zx02 PEDDLE.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/peddle3.hgr.zx02 PEDDLE3.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/45.hgr.zx02 FORTY5.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/45b2d.hgr.zx02 FORTY5B2D.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/45zoom.hgr.zx02 FORTY5Z.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/zebra.hgr.zx02 ZEB.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/Fm2JZOJWAAEVX0l_a2.hgr.zx02 FM2J.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/FmH3w6vXwAAd1pF_a2.hgr.zx02 FMH3.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/FULUd0EXEAgPCeG_a2.hgr.zx02 FULU.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/FllGu1OWIAAAG8O_a2.hgr.zx02 FLLG.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/FpLVqVDaIAk9jtc_a2.hgr.zx02 FPLV.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/FXeGzxKXgAEnsbj_a2.hgr.zx02 FXEG.ZX02 + $(DOS33) -y hires_plain.dsk BSAVE -a 0xa000 ./plain/FmDIeJZXkAA4IiP_a2.hgr.zx02 FMDI.ZX02 + + + #### @@ -46,6 +130,8 @@ hires_jiskey.dsk: HELLO HIRES_JISKEY \ $(DOS33) -y hires_jiskey.dsk BSAVE -a 0xa000 ./jiskey/mona.hgr.zx02 MONA.ZX02 $(DOS33) -y hires_jiskey.dsk BSAVE -a 0xa000 ./jiskey/gw.hgr.zx02 GW.ZX02 $(DOS33) -y hires_jiskey.dsk BSAVE -a 0xa000 ./jiskey/skull.hgr.zx02 SKULL.ZX02 + $(DOS33) -y hires_jiskey.dsk BSAVE -a 0xa000 ./jiskey/uw.hgr.zx02 UW.ZX02 + #### @@ -53,7 +139,7 @@ hires_jiskey.dsk: HELLO HIRES_JISKEY \ HIRES_SPECIAL: hires_special.o ld65 -o HIRES_SPECIAL hires_special.o -C ../../linker_scripts/apple2_c00.inc -hires_special.o: hires_special.s zx02_optim.s \ +hires_special.o: hires_special.s hires_main.s zx02_optim.s \ zp.inc hardware.inc ca65 -o hires_special.o hires_special.s -l hires_special.lst @@ -62,7 +148,7 @@ hires_special.o: hires_special.s zx02_optim.s \ HIRES_PLAIN: hires_plain.o ld65 -o HIRES_PLAIN hires_plain.o -C ../../linker_scripts/apple2_c00.inc -hires_plain.o: hires_plain.s \ +hires_plain.o: hires_plain.s hires_main.s zx02_optim.s \ zp.inc hardware.inc ca65 -o hires_plain.o hires_plain.s -l hires_plain.lst diff --git a/graphics/hgr_viewer/hires_jiskey.s b/graphics/hgr_viewer/hires_jiskey.s index dcb9aec2..4cd1786d 100644 --- a/graphics/hgr_viewer/hires_jiskey.s +++ b/graphics/hgr_viewer/hires_jiskey.s @@ -2,128 +2,25 @@ ; ; by deater (Vince Weaver) -.include "zp.inc" -.include "hardware.inc" +.include "hires_main.s" -hires_start: +MAX_FILES = 6 - ;=================== - ; Init RTS disk code - ;=================== - - jsr rts_init - - ;=================== - ; set graphics mode - ;=================== - jsr HOME - - bit HIRES - bit FULLGR - bit SET_GR - bit PAGE0 - - ;=================== - ; Load graphics - ;=================== -load_loop: - - ;============================= - - lda #grl_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - - ;============================= - - lda #witch_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - ;============================= - - lda #mona_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - ;============================= - - lda #gw_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - - - ;============================= - - ;============================= - - lda #skull_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - - ;============================= - - - - - - jmp load_loop - - - ;========================== - ; Load Image - ;=========================== - -load_image: - jsr opendir_filename ; open and read entire file into memory - - ; size in ldsizeh:ldsizel (f1/f0) - - comp_data = $a000 - out_addr = $2000 - - - jsr full_decomp - - rts - -.align $100 - .include "wait_keypress.s" - .include "zx02_optim.s" - .include "rts.s" +filenames_high: + .byte >grl_filename + .byte >witch_filename + .byte >mona_filename + .byte >gw_filename + .byte >skull_filename + .byte >uw_filename +filenames_low: + .byte + +.include "zp.inc" +.include "hardware.inc" + +WHICH = $E0 + +hires_start: + + ;=================== + ; Init RTS disk code + ;=================== + + jsr rts_init + + ;=================== + ; set graphics mode + ;=================== + jsr HOME + + bit HIRES + bit FULLGR + bit SET_GR + bit PAGE0 + + lda #0 + sta WHICH + + ;=================== + ; Load graphics + ;=================== +load_loop: + + ;============================= + + ldx WHICH + + lda filenames_low,X + sta OUTL + lda filenames_high,X + sta OUTH + + jsr load_image + +wait_until_keypress: + lda KEYPRESS ; 4 + bpl wait_until_keypress ; 3 + bit KEYRESET ; clear the keyboard buffer + + cmp #$88 ; left button + bne inc_which + + dec WHICH + bpl which_ok + + ldx #(MAX_FILES-1) + bne store_which ; bra + +inc_which: + inc WHICH + ldx WHICH + cpx #MAX_FILES + bcc which_ok ; blt + + ldx #0 +store_which: + stx WHICH + +which_ok: + jmp load_loop + + + ;========================== + ; Load Image + ;=========================== + +load_image: + jsr opendir_filename ; open and read entire file into memory + + ; size in ldsizeh:ldsizel (f1/f0) + + comp_data = $a000 + out_addr = $2000 + + + jsr full_decomp + + rts + + .include "zx02_optim.s" + .include "rts.s" + +; diff --git a/graphics/hgr_viewer/hires_plain.s b/graphics/hgr_viewer/hires_plain.s index c9bbff1b..5aff5011 100644 --- a/graphics/hgr_viewer/hires_plain.s +++ b/graphics/hgr_viewer/hires_plain.s @@ -1,82 +1,41 @@ -; VMW Productions HIRES viewer -; -; by deater (Vince Weaver) +; Some nice hires images -.include "zp.inc" -.include "hardware.inc" +.include "hires_main.s" -hires_start: +MAX_FILES = 14 - ;=================== - ; Init RTS disk code - ;=================== +filenames_low: + .byte gp_filename + .byte >peddle_filename + .byte >peddle3_filename + .byte >forty5_filename + .byte >forty5b_filename + .byte >forty5z_filename + .byte >zeb_filename + .byte >fm2j_filename + .byte >fmh3_filename + .byte >fulu_filename + .byte >fllg_filename + .byte >fplv_filename + .byte >fxeg_filename + .byte >fmdi_filename - ;=================== - ; set graphics mode - ;=================== - jsr HOME - - bit HIRES - bit FULLGR - bit SET_GR - bit PAGE0 - - ;=================== - ; Load graphics - ;=================== -load_loop: - - ;============================= - - lda #gp_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - lda #peddle_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - - jmp load_loop - - - ;========================== - ; Load Image - ;=========================== - -load_image: - jsr opendir_filename ; open and read entire file into memory - - ; size in ldsizeh:ldsizel (f1/f0) - - comp_data = $a000 - out_addr = $2000 - - - jsr full_decomp - - rts - -.align $100 - .include "wait_keypress.s" - .include "zx02_optim.s" - .include "rts.s" ; filename to open is 30-character Apple text: @@ -87,3 +46,53 @@ gp_filename: ; .byte "GP.ZX02",0 peddle_filename: ; .byte "PEDDLE.ZX02",0 .byte 'P'|$80,'E'|$80,'D'|$80,'D'|$80,'L'|$80,'E'|$80 .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +peddle3_filename: ; .byte "PEDDLE3.ZX02",0 + .byte 'P'|$80,'E'|$80,'D'|$80,'D'|$80,'L'|$80,'E'|$80,'3'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +forty5_filename: ; .byte "45.ZX02",0 + .byte 'F'|$80,'O'|$80,'R'|$80,'T'|$80,'Y'|$80,'5'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +forty5b_filename: ; .byte "45B2D.ZX02",0 + .byte 'F'|$80,'O'|$80,'R'|$80,'T'|$80,'Y'|$80,'5'|$80,'B'|$80,'2'|$80,'D'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +forty5z_filename: ; .byte "45Z.ZX02",0 + .byte 'F'|$80,'O'|$80,'R'|$80,'T'|$80,'Y'|$80,'5'|$80,'Z'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +zeb_filename: ; .byte "ZEB.ZX02",0 + .byte 'Z'|$80,'E'|$80,'B'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fm2j_filename: ; .byte "FM2J.ZX02",0 + .byte 'F'|$80,'M'|$80,'2'|$80,'J'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fmh3_filename: ; .byte "FMH3.ZX02",0 + .byte 'F'|$80,'M'|$80,'H'|$80,'3'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fulu_filename: ; .byte "FULU.ZX02",0 + .byte 'F'|$80,'U'|$80,'L'|$80,'U'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fllg_filename: ; .byte "FLLG.ZX02",0 + .byte 'F'|$80,'L'|$80,'L'|$80,'G'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fplv_filename: ; .byte "FPLV.ZX02",0 + .byte 'F'|$80,'P'|$80,'L'|$80,'V'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fxeg_filename: ; .byte "FXEG.ZX02",0 + .byte 'F'|$80,'X'|$80,'E'|$80,'G'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fmdi_filename: ; .byte "FMDI.ZX02",0 + .byte 'F'|$80,'M'|$80,'D'|$80,'I'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + + diff --git a/graphics/hgr_viewer/hires_special.s b/graphics/hgr_viewer/hires_special.s index c970fbbb..0faba24d 100644 --- a/graphics/hgr_viewer/hires_special.s +++ b/graphics/hgr_viewer/hires_special.s @@ -1,132 +1,101 @@ -; VMW Productions HIRES viewer -; -; by deater (Vince Weaver) +; fancy images -.include "zp.inc" -.include "hardware.inc" +.include "hires_main.s" -hires_start: +MAX_FILES = 44 - ;=================== - ; Init RTS disk code - ;=================== +filenames_low: + .byte bbl_filename + .byte >bbl2_filename + .byte >grl_filename + .byte >obg_filename + .byte >fup_filename + .byte >witch_filename + .byte >ob_filename + .byte >bg2_filename + .byte >oopb_filename + .byte >ooc5_filename + .byte >fze_filename + .byte >fjj_filename + .byte >dadz_filename + .byte >mope_filename + .byte >lh_filename + .byte >fcd_filename + .byte >facd_filename + .byte >fif_filename + .byte >fif2_filename + .byte >oo4_filename + .byte >oo2_filename + .byte >fwq_filename + .byte >piz_filename + .byte >cit_filename + .byte >cel_filename + .byte >mug_filename + .byte >quad_filename + .byte >gb_filename + .byte >jis_filename + .byte >ojm_filename + .byte >nda_filename + .byte >fri_filename + .byte >win_filename + .byte >bar_filename + .byte >ani_filename + .byte >gld_filename + .byte >rnu_filename + .byte >ooh_filename + .byte >two_filename + .byte >rug_filename + .byte >ndz_filename + .byte >crd_filename + .byte >gfa_filename + .byte >sxy_filename - ;=================== - ; set graphics mode - ;=================== - jsr HOME - - bit HIRES - bit FULLGR - bit SET_GR - bit PAGE0 - - ;=================== - ; Load graphics - ;=================== -load_loop: - - ;============================= - - lda #bbl_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - lda #bbl2_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - lda #grl_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - ;============================= - - lda #obg_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - lda #fup_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - ;============================= - - lda #witch_filename - sta OUTH - - jsr load_image - - jsr wait_until_keypress - - ;============================= - - - - - jmp load_loop - - - ;========================== - ; Load Image - ;=========================== - -load_image: - jsr opendir_filename ; open and read entire file into memory - - ; size in ldsizeh:ldsizel (f1/f0) - - comp_data = $a000 - out_addr = $2000 - - - jsr full_decomp - - rts - -.align $100 - .include "wait_keypress.s" - .include "zx02_optim.s" - .include "rts.s" ; filename to open is 30-character Apple text: @@ -154,3 +123,155 @@ witch_filename: ; .byte "WITCH.ZX02",0 .byte 'W'|$80,'I'|$80,'T'|$80,'C'|$80,'H'|$80 .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 +ob_filename: ; .byte "OB.ZX02",0 + .byte 'O'|$80,'B'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +bg2_filename: ; .byte "BG2.ZX02",0 + .byte 'B'|$80,'G'|$80,'2'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +oopb_filename: ; .byte "OOPB.ZX02",0 + .byte 'O'|$80,'O'|$80,'P'|$80,'B'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +ooc5_filename: ; .byte "OOC5.ZX02",0 + .byte 'O'|$80,'O'|$80,'C'|$80,'5'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fze_filename: ; .byte "FZE.ZX02",0 + .byte 'F'|$80,'Z'|$80,'E'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fjj_filename: ; .byte "FJJ.ZX02",0 + .byte 'F'|$80,'J'|$80,'J'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +dadz_filename: ; .byte "DADZ.ZX02",0 + .byte 'D'|$80,'A'|$80,'D'|$80,'Z'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +mope_filename: ; .byte "MOPE.ZX02",0 + .byte 'M'|$80,'O'|$80,'P'|$80,'E'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +lh_filename: ; .byte "LH.ZX02",0 + .byte 'L'|$80,'H'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fcd_filename: ; .byte "FCD.ZX02",0 + .byte 'F'|$80,'C'|$80,'D'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +facd_filename: ; .byte "FACD.ZX02",0 + .byte 'F'|$80,'A'|$80,'C'|$80,'D'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fif_filename: ; .byte "FIF.ZX02",0 + .byte 'F'|$80,'I'|$80,'F'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fif2_filename: ; .byte "FIF2.ZX02",0 + .byte 'F'|$80,'I'|$80,'F'|$80,'2'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +oo4_filename: ; .byte "OO4.ZX02",0 + .byte 'O'|$80,'O'|$80,'4'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +oo2_filename: ; .byte "OO2.ZX02",0 + .byte 'O'|$80,'O'|$80,'2'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fwq_filename: ; .byte "FWQ.ZX02",0 + .byte 'F'|$80,'W'|$80,'Q'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +piz_filename: ; .byte "PIZ.ZX02",0 + .byte 'P'|$80,'I'|$80,'Z'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +cit_filename: ; .byte "CIT.ZX02",0 + .byte 'C'|$80,'I'|$80,'T'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +cel_filename: ; .byte "CEL.ZX02",0 + .byte 'C'|$80,'E'|$80,'L'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +mug_filename: ; .byte "MUG.ZX02",0 + .byte 'M'|$80,'U'|$80,'G'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +quad_filename: ; .byte "QUAD.ZX02",0 + .byte 'Q'|$80,'U'|$80,'A'|$80,'D'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +gb_filename: ; .byte "GB.ZX02",0 + .byte 'G'|$80,'B'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +jis_filename: ; .byte "JIS.ZX02",0 + .byte 'J'|$80,'I'|$80,'S'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +ojm_filename: ; .byte "OJM.ZX02",0 + .byte 'O'|$80,'J'|$80,'M'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +nda_filename: ; .byte "NDA.ZX02",0 + .byte 'N'|$80,'D'|$80,'A'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +fri_filename: ; .byte "FRI.ZX02",0 + .byte 'F'|$80,'R'|$80,'I'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +win_filename: ; .byte "WIN.ZX02",0 + .byte 'W'|$80,'I'|$80,'N'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +bar_filename: ; .byte "BAR.ZX02",0 + .byte 'B'|$80,'A'|$80,'R'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +ani_filename: ; .byte "ANI.ZX02",0 + .byte 'A'|$80,'N'|$80,'I'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +gld_filename: ; .byte "GLD.ZX02",0 + .byte 'G'|$80,'L'|$80,'D'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +rnu_filename: ; .byte "RNU.ZX02",0 + .byte 'R'|$80,'N'|$80,'U'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +ooh_filename: ; .byte "OOH.ZX02",0 + .byte 'O'|$80,'O'|$80,'H'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +two_filename: ; .byte "TWO.ZX02",0 + .byte 'T'|$80,'W'|$80,'O'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +rug_filename: ; .byte "RUG.ZX02",0 + .byte 'R'|$80,'U'|$80,'G'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +ndz_filename: ; .byte "NDZ.ZX02",0 + .byte 'N'|$80,'D'|$80,'Z'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +crd_filename: ; .byte "CRD.ZX02",0 + .byte 'C'|$80,'R'|$80,'D'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +gfa_filename: ; .byte "GFA.ZX02",0 + .byte 'G'|$80,'F'|$80,'A'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + +sxy_filename: ; .byte "SXY.ZX02",0 + .byte 'S'|$80,'X'|$80,'Y'|$80 + .byte '.'|$80,'Z'|$80,'X'|$80,'0'|$80,'2'|$80,$00 + diff --git a/graphics/hgr_viewer/jiskey/Makefile b/graphics/hgr_viewer/jiskey/Makefile index f28b9ab2..3a8cd1be 100644 --- a/graphics/hgr_viewer/jiskey/Makefile +++ b/graphics/hgr_viewer/jiskey/Makefile @@ -3,7 +3,8 @@ include ../../../Makefile.inc ZX02 = ~/research/6502_compression/zx02.git/build/zx02 PNG_TO_HGR = ../../../utils/hgr-utils/png2hgr -all: grl.hgr.zx02 witch.hgr.zx02 mona.hgr.zx02 gw.hgr.zx02 skull.hgr.zx02 +all: grl.hgr.zx02 witch.hgr.zx02 mona.hgr.zx02 gw.hgr.zx02 skull.hgr.zx02 \ + uw.hgr.zx02 #### @@ -40,6 +41,15 @@ skull.hgr: skull.png skull.hgr.zx02: skull.hgr $(ZX02) -f skull.hgr skull.hgr.zx02 +### + +uw.hgr: uw.png + $(PNG_TO_HGR) uw.png > uw.hgr + +uw.hgr.zx02: uw.hgr + $(ZX02) -f uw.hgr uw.hgr.zx02 + + ### diff --git a/graphics/hgr_viewer/plain/45.hgr.zx02 b/graphics/hgr_viewer/plain/45.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..79865b0492d91a0e5c8924f8a7b3a4c70c00f929 GIT binary patch literal 3196 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 W?s&V=XpN?fviGICvtwN(3H=Ayzd9-a literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/45b2d.hgr.zx02 b/graphics/hgr_viewer/plain/45b2d.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..c53653ba404b53f902d6e08cf78a548c1de8e576 GIT binary patch literal 7307 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 Bj)MRI literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/45zoom.hgr.zx02 b/graphics/hgr_viewer/plain/45zoom.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..d2e181225f3c800e8009dbabd7c17097faeb7d6e GIT binary patch literal 6853 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 literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/FULUd0EXEAgPCeG_a2.hgr.zx02 b/graphics/hgr_viewer/plain/FULUd0EXEAgPCeG_a2.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..410d161d5e01a8951d2b91a662c84a508b5dc0cf GIT binary patch literal 2897 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 D%4%k* literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/FllGu1OWIAAAG8O_a2.hgr.zx02 b/graphics/hgr_viewer/plain/FllGu1OWIAAAG8O_a2.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..ca00c9ff6fad888113907e850bf5b5a1b23752d6 GIT binary patch literal 2585 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 H_wxS-dM1z* literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/Fm2JZOJWAAEVX0l_a2.hgr.zx02 b/graphics/hgr_viewer/plain/Fm2JZOJWAAEVX0l_a2.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..0921715983e98ece553fe1b7749b6fbc8e3d1650 GIT binary patch literal 4112 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 literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/FmDIeJZXkAA4IiP_a2.hgr.zx02 b/graphics/hgr_viewer/plain/FmDIeJZXkAA4IiP_a2.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..a62c44d003fb2e592f28e410d44fd81efda97ed3 GIT binary patch literal 660 zcmZ9|(MuC?007{-`_UcS4TS}|t=OTnJt)=TNJyj2W@0kDhoC}VHmDtKqKkXE>9K=? z3M&et&5))9;b!7#hL~fD1(HTD1*Rz)GX|;MMClGTcE9Q^`VT(7dgOc4JDf4wA|i28 z5W%7wC2O4z_z>H0u>-!2-NYxIUJ-TIMIMt9W*DNq9y4Nc`mr$IVh^EFRI+FTna zBF&uH;b%nHn6I`5;e@#=@Am1(MT!ZFx1Eurgz*OW5(F8Wmu|uhyuxWZ(J!pX_A(Te zZ647`=_?r4b)lS~Gm_jId(}z%mk&9F?d9C6tV*kl62%UJZ5X`o1vtqs)$k5~Y5Ix| zp40oUlGUz$Cr9i6U^JK<*+(AA5&3+bqOQ%LFW2QT*bK|xbQ1zAgt>hs;N)!>LrBs6 z#tjYZY0PalfL|`)17v!4EKZvO$|78LIGP&XSRGUDdIbJXLxm zC6uT!HJOA^8HVudAcO%C76+L9v&2sK zk_P@nnW?ARUU|C@?)DfK)mc){QO-*x=yR+A7n0L*H$T4>PQWPg2?D>NG!;Kks{AgW zcAR?y0w-Xmng{B{WCFA(jCnYr)gb9ee2{qW2`^Y*sK0W(X!al1U*^VUr9h2V;Lf?T zaEM+23%Q?a9f&Z;$}MASWCAmJQBK$2jH?rLZ5>Ds{0wg42PW6^U37M< b_}^A;4gSb&LfET9xKV^qh4oT#WCZyQtlv4# literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/FmH3w6vXwAAd1pF_a2.hgr.zx02 b/graphics/hgr_viewer/plain/FmH3w6vXwAAd1pF_a2.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..c55f09ea9321bf9b6e9abfc5cfe0d469a3eb7390 GIT binary patch literal 3751 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 T{*G%A3~#O^Ev;(yM9^E^RC!X z{HR%^^-{dBVB1xRB=X@#9g_R}QCxLQS{5C>Y_5we87Nq82MMk5g8BBhYA!T>=C zjPa~C%gARWP11hBAzX@1!LHyo(xz>_Ph)(1IbxWXh*^>#js=(n>n5ktD`?V}@{zd% zoN;G|wj{WdHFF?+gNCAE2;s#-5J#dkCPEkUMZ`u^BY}$rCP~pXwnAC>gNcy9<(4^o zI3FD0X+U4lASjnRQ2Xb6($%sI2FsOM3wm6F0y8ZzrrD__ZyFH(B2W#9QC>XgQqt-h zjXnlX`>sVn2feZdZzFjP=M`48TG9=+IP~RiY8qA6KE

9VQt3omwJ*jk8~QIdd@A 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 literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/Makefile b/graphics/hgr_viewer/plain/Makefile index 2bd68f87..8fdd3889 100644 --- a/graphics/hgr_viewer/plain/Makefile +++ b/graphics/hgr_viewer/plain/Makefile @@ -3,7 +3,43 @@ include ../../../Makefile.inc ZX02 = ~/research/6502_compression/zx02.git/build/zx02 PNG_TO_HGR = ../../../utils/hgr-utils/png2hgr -all: gp.hgr.zx02 peddle.hgr.zx02 +all: 45zoom.hgr.zx02 45b2d.hgr.zx02 45.hgr.zx02 \ + gp.hgr.zx02 \ + peddle.hgr.zx02 peddle3.hgr.zx02 \ + zebra.hgr.zx02 \ + Fm2JZOJWAAEVX0l_a2.hgr.zx02 \ + FmH3w6vXwAAd1pF_a2.hgr.zx02 \ + FULUd0EXEAgPCeG_a2.hgr.zx02 \ + FllGu1OWIAAAG8O_a2.hgr.zx02 \ + FpLVqVDaIAk9jtc_a2.hgr.zx02 \ + FXeGzxKXgAEnsbj_a2.hgr.zx02 \ + FmDIeJZXkAA4IiP_a2.hgr.zx02 + +#### + +45.hgr.zx02: 45.hgr + $(ZX02) 45.hgr 45.hgr.zx02 + +45.hgr: 45years1.png + $(PNG_TO_HGR) 45years1.png > 45.hgr + +#### + +peddle3.hgr.zx02: peddle3.hgr + $(ZX02) peddle3.hgr peddle3.hgr.zx02 + +peddle3.hgr: peddle3.png + $(PNG_TO_HGR) peddle3.png > peddle3.hgr + +#### + +45zoom.hgr.zx02: 45zoom.hgr + $(ZX02) 45zoom.hgr 45zoom.hgr.zx02 + +#### + +45b2d.hgr.zx02: 45b2d.hgr + $(ZX02) 45b2d.hgr 45b2d.hgr.zx02 #### @@ -13,6 +49,77 @@ gp.hgr.zx02: gp.hgr gp.hgr: gp.png $(PNG_TO_HGR) gp.png > gp.hgr +#### + +zebra.hgr.zx02: zebra.hgr + $(ZX02) zebra.hgr zebra.hgr.zx02 + +zebra.hgr: zebra.png + $(PNG_TO_HGR) zebra.png > zebra.hgr + + +#### + +Fm2JZOJWAAEVX0l_a2.hgr.zx02: Fm2JZOJWAAEVX0l_a2.hgr + $(ZX02) Fm2JZOJWAAEVX0l_a2.hgr Fm2JZOJWAAEVX0l_a2.hgr.zx02 + +Fm2JZOJWAAEVX0l_a2.hgr: Fm2JZOJWAAEVX0l_a2.png + $(PNG_TO_HGR) Fm2JZOJWAAEVX0l_a2.png > Fm2JZOJWAAEVX0l_a2.hgr + +#### + +FmH3w6vXwAAd1pF_a2.hgr.zx02: FmH3w6vXwAAd1pF_a2.hgr + $(ZX02) FmH3w6vXwAAd1pF_a2.hgr FmH3w6vXwAAd1pF_a2.hgr.zx02 + +FmH3w6vXwAAd1pF_a2.hgr: FmH3w6vXwAAd1pF_a2.png + $(PNG_TO_HGR) FmH3w6vXwAAd1pF_a2.png > FmH3w6vXwAAd1pF_a2.hgr + +#### + +FULUd0EXEAgPCeG_a2.hgr.zx02: FULUd0EXEAgPCeG_a2.hgr + $(ZX02) FULUd0EXEAgPCeG_a2.hgr FULUd0EXEAgPCeG_a2.hgr.zx02 + +FULUd0EXEAgPCeG_a2.hgr: FULUd0EXEAgPCeG_a2.png + $(PNG_TO_HGR) FULUd0EXEAgPCeG_a2.png > FULUd0EXEAgPCeG_a2.hgr + +#### + +FllGu1OWIAAAG8O_a2.hgr.zx02: FllGu1OWIAAAG8O_a2.hgr + $(ZX02) FllGu1OWIAAAG8O_a2.hgr FllGu1OWIAAAG8O_a2.hgr.zx02 + +FllGu1OWIAAAG8O_a2.hgr: FllGu1OWIAAAG8O_a2.png + $(PNG_TO_HGR) FllGu1OWIAAAG8O_a2.png > FllGu1OWIAAAG8O_a2.hgr + +#### + +FpLVqVDaIAk9jtc_a2.hgr.zx02: FpLVqVDaIAk9jtc_a2.hgr + $(ZX02) FpLVqVDaIAk9jtc_a2.hgr FpLVqVDaIAk9jtc_a2.hgr.zx02 + +FpLVqVDaIAk9jtc_a2.hgr: FpLVqVDaIAk9jtc_a2.png + $(PNG_TO_HGR) FpLVqVDaIAk9jtc_a2.png > FpLVqVDaIAk9jtc_a2.hgr + +#### + +FXeGzxKXgAEnsbj_a2.hgr.zx02: FXeGzxKXgAEnsbj_a2.hgr + $(ZX02) FXeGzxKXgAEnsbj_a2.hgr FXeGzxKXgAEnsbj_a2.hgr.zx02 + +FXeGzxKXgAEnsbj_a2.hgr: FXeGzxKXgAEnsbj_a2.png + $(PNG_TO_HGR) FXeGzxKXgAEnsbj_a2.png > FXeGzxKXgAEnsbj_a2.hgr + +#### + +FmDIeJZXkAA4IiP_a2.hgr.zx02: FmDIeJZXkAA4IiP_a2.hgr + $(ZX02) FmDIeJZXkAA4IiP_a2.hgr FmDIeJZXkAA4IiP_a2.hgr.zx02 + +FmDIeJZXkAA4IiP_a2.hgr: FmDIeJZXkAA4IiP_a2.png + $(PNG_TO_HGR) FmDIeJZXkAA4IiP_a2.png > FmDIeJZXkAA4IiP_a2.hgr + + + + + + + #### peddle.hgr.zx02: peddle.hgr diff --git a/graphics/hgr_viewer/plain/gp.hgr.zx02 b/graphics/hgr_viewer/plain/gp.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..3499342dfb9181fc074eb18dc72299cc175c6488 GIT binary patch literal 2133 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 literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/peddle3.hgr.zx02 b/graphics/hgr_viewer/plain/peddle3.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..ad39f3c1e990f674c6102f7b944d696846babd69 GIT binary patch literal 2157 zcmWNR|63D>9mmgPCV4Ilq!nqgl6X9`S#UMQXTop-qeLv-rg21Czs0&*H9U`0_gKGk zmm}C~@Jq51?Lf$ROg#>ppl(8wR#He-Y+WTTXX+QeJi0O)T?}A|BXFPP4|xCbdcR-q zUn6f>CAo93GFkdBE7f|jK3_V{92}+skwH)Vx&r-~p**(WrjO-4f$$8DpCG-Ijq$CX zK4l`IUp?0|x8&7l2dh{+H|U1`Dp{hyI>13>u%I4cc+Q>^o}TDg)X~9c%fQ1 zcxIhdyb#Qtt+ZzqSWTQH5ZH79F5Ge{598se@IL$-Sv7FRJ!Te!7fd(zI7W4GY2T!+ z=@6{kS{nRBdREsCY*)!11>?VyIJ?#`@ke7dWJVq>Yr-2SQI2KDh8cdn6E2|>FoG@G zQ-0oh`>o$dq*eI_M+`ArC)q&Y;%dNrxN#M%+HP460B-?=ty&xV=5Z(0zaWT9hG z-h2ItKhG2cf?}S0nVmf~aYMS={-1sud00H;7&j#5$zh!G5~kAIJNzAGy{;2sJWW5= zZ?iiuxuWvb^$y!4{W@4_y2u_e;wmW3yoDv*b3ivcwsohF+rfm;h_$Lhcd7*c>00iI8Q1 zc6g25VWXIZ#_uqD?P>a+_b67zv-DDZ+;h5Om<{9(rs_M9#+KP^V%-Me>J`TYV`R6O=e9rqWVOlF*BKtEyeWLr ztH&v{h4jfd4ew7NX4CUur9Vo75P@$5yM|CClX5mN?18M|9d7wu2Bt+S^)#jyZ{pmj zM_wLZJpWP@kN24RM9g}yUbW6eAKu!HtxRe(I&v>miOv>kSeuyKEP>TM_xc3>ONn4+ z;iOD^7>~^0N9JNrl`<1?pNr%rVSh3aCA%)?A4w=|L*S<%|Fw;5dq;NY&J^qySHRb^ zqL32wv9YG}FhchsgzaR|l4`l4DM64jg42W}X~ndc=BSVp58=Wkd^vvcU& zQcekcR3Rv7{^#)>b6z|Jw5e{*|KI~a5tO?HqR^5m)lo@9M){Oy^SfhdGtf;e@T$Hw zsyD7uL*15wfcM9mx^v75~ zcRp$U3hQQRR{|e~uMS>Y>{@}hL$@NJlfq}WBF4mC>0tcxsalw|pB;Bmf+6vW7v5Zl zCpfu)M44WO4E6=4Px`1{-E$>cDZ`7o!9RRu=JLTS=I)*c+Q+5pABwS8m=2^PT(@ba zZ)vs=chw2@NB^QVd%J#t9;hvsrwWx_v+~s)3dovZK%RN7)pKP2;Yl$*1ifz~>isur zwk=84IKHi(wZle`tTDBjt{oDCw|Zg1!o2~3i!#JoN)-(~SR&wetw5T{tT-*idh4fi zDG`lOykE&vQz-~R`$AWWlIquSb@9(HIpX5#?TM)1cQ#!B#83uHeax7p*hiVjG#X1j zG^ODfKuQ$d%7pf*%=^$8^nie;GM!YnIB0uPY%@$1!#m4<&)TvE8F(ThrijxbhD{BQ zYmgFMn%1}r7NI(B4~X3%U3<@cNU@IFEHpQjr_raK-NzMxI>TFbOph5K%umb!=G41H zw1u^^{1@JeeY-q$_;i-Jvn9*TKx%#bztS_4+5U6e4na*6Zs==IEBPr|PNBYu78qhs zX?Lea;t!>1=9)Nkimn>ZH$aXo<6^EC4Rve$epl$X;!kwcw-s0svj$;C0+AfbrjhwrOPH6* z3oH8vNHSI;gbO{6acKG>F1#ycIR{*4?)Q8Hvhre-;1`A3VYv0f920|a{+{Yd7l9iqn}I|qcZ_IIBNy5xs@q_cWB(7KmX(44 literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/plain/zebra.hgr.zx02 b/graphics/hgr_viewer/plain/zebra.hgr.zx02 new file mode 100644 index 0000000000000000000000000000000000000000..0539c8a761794f68e16a010b14303e03b41a8358 GIT binary patch literal 5127 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 literal 0 HcmV?d00001 diff --git a/graphics/hgr_viewer/special/Makefile b/graphics/hgr_viewer/special/Makefile index df0b1c7c..337029f6 100644 --- a/graphics/hgr_viewer/special/Makefile +++ b/graphics/hgr_viewer/special/Makefile @@ -4,7 +4,20 @@ ZX02 = ~/research/6502_compression/zx02.git/build/zx02 PNG_TO_HGR = ../../../utils/hgr-utils/png2hgr all: bbl.hgr.zx02 bbl2.hgr.zx02 \ - grl.hgr.zx02 1bg.hgr.zx02 fup.hgr.zx02 witch.hgr.zx02 + grl.hgr.zx02 1bg.hgr.zx02 fup.hgr.zx02 witch.hgr.zx02 \ + mope_a2.hgr.zx02 ob.hgr.zx02 bg2.hgr.zx02 \ + oopb.hgr.zx02 ooc5.hgr.zx02 fze.hgr.zx02 \ + fjj.hgr.zx02 dadz.hgr.zx02 lh.hgr.zx02 \ + fcd.hgr.zx02 facd.hgr.zx02 fif.hgr.zx02 \ + fif2.hgr.zx02 oo4.hgr.zx02 oo2.hgr.zx02 \ + fwq.hgr.zx02 piz.hgr.zx02 cit.hgr.zx02 \ + cel.hgr.zx02 mug.hgr.zx02 quad.hgr.zx02 \ + gb.hgr.zx02 jis.hgr.zx02 ojm.hgr.zx02 \ + nda.hgr.zx02 fri.hgr.zx02 win.hgr.zx02 \ + bar.hgr.zx02 ani.hgr.zx02 gld.hgr.zx02 \ + rnu.hgr.zx02 ooh.hgr.zx02 two.hgr.zx02 \ + rug.hgr.zx02 ndz.hgr.zx02 crd.hgr.zx02 \ + gfa.hgr.zx02 sxy.hgr.zx02 #### @@ -47,6 +60,327 @@ witch.hgr.zx02: witch.hgr witch.hgr: witch.png $(PNG_TO_HGR) witch.png > witch.hgr +#### + +mope_a2.hgr.zx02: mope_a2.hgr + $(ZX02) mope_a2.hgr mope_a2.hgr.zx02 + +mope_a2.hgr: mope_a2.png + $(PNG_TO_HGR) mope_a2.png > mope_a2.hgr + +#### + +ob.hgr.zx02: ob.hgr + $(ZX02) ob.hgr ob.hgr.zx02 + +ob.hgr: ob.png + $(PNG_TO_HGR) ob.png > ob.hgr + +#### + +oopb.hgr.zx02: oopb.hgr + $(ZX02) oopb.hgr oopb.hgr.zx02 + +oopb.hgr: oopb.png + $(PNG_TO_HGR) oopb.png > oopb.hgr + +#### + +ooc5.hgr.zx02: ooc5.hgr + $(ZX02) ooc5.hgr ooc5.hgr.zx02 + +ooc5.hgr: ooc5.png + $(PNG_TO_HGR) ooc5.png > ooc5.hgr + + +#### + +bg2.hgr.zx02: bg2.hgr + $(ZX02) bg2.hgr bg2.hgr.zx02 + +bg2.hgr: bg2.png + $(PNG_TO_HGR) bg2.png > bg2.hgr + +#### + +fze.hgr.zx02: fze.hgr + $(ZX02) fze.hgr fze.hgr.zx02 + +fze.hgr: fze.png + $(PNG_TO_HGR) fze.png > fze.hgr + +#### + +fjj.hgr.zx02: fjj.hgr + $(ZX02) fjj.hgr fjj.hgr.zx02 + +fjj.hgr: fjj.png + $(PNG_TO_HGR) fjj.png > fjj.hgr + +#### + +dadz.hgr.zx02: dadz.hgr + $(ZX02) dadz.hgr dadz.hgr.zx02 + +dadz.hgr: dadz.png + $(PNG_TO_HGR) dadz.png > dadz.hgr + +#### + +lh.hgr.zx02: lh.hgr + $(ZX02) lh.hgr lh.hgr.zx02 + +lh.hgr: lh.png + $(PNG_TO_HGR) lh.png > lh.hgr + +#### + +fcd.hgr.zx02: fcd.hgr + $(ZX02) fcd.hgr fcd.hgr.zx02 + +fcd.hgr: fcd.png + $(PNG_TO_HGR) fcd.png > fcd.hgr + +#### + +facd.hgr.zx02: facd.hgr + $(ZX02) facd.hgr facd.hgr.zx02 + +facd.hgr: facd.png + $(PNG_TO_HGR) facd.png > facd.hgr + +#### + +fif.hgr.zx02: fif.hgr + $(ZX02) fif.hgr fif.hgr.zx02 + +fif.hgr: fif.png + $(PNG_TO_HGR) fif.png > fif.hgr + +#### + +fif2.hgr.zx02: fif2.hgr + $(ZX02) fif2.hgr fif2.hgr.zx02 + +fif2.hgr: fif2.png + $(PNG_TO_HGR) fif2.png > fif2.hgr + + +#### + +oo4.hgr.zx02: oo4.hgr + $(ZX02) oo4.hgr oo4.hgr.zx02 + +oo4.hgr: oo4.png + $(PNG_TO_HGR) oo4.png > oo4.hgr + +#### + +oo2.hgr.zx02: oo2.hgr + $(ZX02) oo2.hgr oo2.hgr.zx02 + +oo2.hgr: oo2.png + $(PNG_TO_HGR) oo2.png > oo2.hgr + +#### + +fwq.hgr.zx02: fwq.hgr + $(ZX02) fwq.hgr fwq.hgr.zx02 + +fwq.hgr: fwq.png + $(PNG_TO_HGR) fwq.png > fwq.hgr + +#### + +piz.hgr.zx02: piz.hgr + $(ZX02) piz.hgr piz.hgr.zx02 + +piz.hgr: piz.png + $(PNG_TO_HGR) piz.png > piz.hgr + +#### + +cit.hgr.zx02: cit.hgr + $(ZX02) cit.hgr cit.hgr.zx02 + +cit.hgr: cit.png + $(PNG_TO_HGR) cit.png > cit.hgr + +#### + +cel.hgr.zx02: cel.hgr + $(ZX02) cel.hgr cel.hgr.zx02 + +cel.hgr: cel.png + $(PNG_TO_HGR) cel.png > cel.hgr + +#### + +mug.hgr.zx02: mug.hgr + $(ZX02) mug.hgr mug.hgr.zx02 + +mug.hgr: mug.png + $(PNG_TO_HGR) mug.png > mug.hgr + +#### + +quad.hgr.zx02: quad.hgr + $(ZX02) quad.hgr quad.hgr.zx02 + +quad.hgr: quad.png + $(PNG_TO_HGR) quad.png > quad.hgr + + +#### + +gb.hgr.zx02: gb.hgr + $(ZX02) gb.hgr gb.hgr.zx02 + +gb.hgr: gb.png + $(PNG_TO_HGR) gb.png > gb.hgr + +#### + +jis.hgr.zx02: jis.hgr + $(ZX02) jis.hgr jis.hgr.zx02 + +jis.hgr: jis.png + $(PNG_TO_HGR) jis.png > jis.hgr + +#### + +ojm.hgr.zx02: ojm.hgr + $(ZX02) ojm.hgr ojm.hgr.zx02 + +ojm.hgr: ojm.png + $(PNG_TO_HGR) ojm.png > ojm.hgr + +#### + +nda.hgr.zx02: nda.hgr + $(ZX02) nda.hgr nda.hgr.zx02 + +nda.hgr: nda.png + $(PNG_TO_HGR) nda.png > nda.hgr + +#### + +fri.hgr.zx02: fri.hgr + $(ZX02) fri.hgr fri.hgr.zx02 + +fri.hgr: fri.png + $(PNG_TO_HGR) fri.png > fri.hgr + +#### + +win.hgr.zx02: win.hgr + $(ZX02) win.hgr win.hgr.zx02 + +win.hgr: win.png + $(PNG_TO_HGR) win.png > win.hgr + +#### + +bar.hgr.zx02: bar.hgr + $(ZX02) bar.hgr bar.hgr.zx02 + +bar.hgr: bar.png + $(PNG_TO_HGR) bar.png > bar.hgr + +#### + +ani.hgr.zx02: ani.hgr + $(ZX02) ani.hgr ani.hgr.zx02 + +ani.hgr: ani.png + $(PNG_TO_HGR) ani.png > ani.hgr + +#### + +gld.hgr.zx02: gld.hgr + $(ZX02) gld.hgr gld.hgr.zx02 + +gld.hgr: gld.png + $(PNG_TO_HGR) gld.png > gld.hgr + +#### + +rnu.hgr.zx02: rnu.hgr + $(ZX02) rnu.hgr rnu.hgr.zx02 + +rnu.hgr: rnu.png + $(PNG_TO_HGR) rnu.png > rnu.hgr + +#### + +ooh.hgr.zx02: ooh.hgr + $(ZX02) ooh.hgr ooh.hgr.zx02 + +ooh.hgr: ooh.png + $(PNG_TO_HGR) ooh.png > ooh.hgr + +#### + +two.hgr.zx02: two.hgr + $(ZX02) two.hgr two.hgr.zx02 + +two.hgr: two.png + $(PNG_TO_HGR) two.png > two.hgr + + +#### + +rug.hgr.zx02: rug.hgr + $(ZX02) rug.hgr rug.hgr.zx02 + +rug.hgr: rug.png + $(PNG_TO_HGR) rug.png > rug.hgr + +#### + +ndz.hgr.zx02: ndz.hgr + $(ZX02) ndz.hgr ndz.hgr.zx02 + +ndz.hgr: ndz.png + $(PNG_TO_HGR) ndz.png > ndz.hgr + +#### + +crd.hgr.zx02: crd.hgr + $(ZX02) crd.hgr crd.hgr.zx02 + +crd.hgr: crd.png + $(PNG_TO_HGR) crd.png > crd.hgr + + +#### + +gfa.hgr.zx02: gfa.hgr + $(ZX02) gfa.hgr gfa.hgr.zx02 + +gfa.hgr: gfa.png + $(PNG_TO_HGR) gfa.png > gfa.hgr + +#### + +sxy.hgr.zx02: sxy.hgr + $(ZX02) sxy.hgr sxy.hgr.zx02 + +sxy.hgr: sxy.png + $(PNG_TO_HGR) sxy.png > sxy.hgr + + + + + + + + + + + + + ### grl.hgr.zx02: grl.hgr @@ -56,5 +390,5 @@ grl.hgr.zx02: grl.hgr clean: - rm -f *~ *.o *.lst + rm -f *~ *.o *.lst *.zx02 diff --git a/music/sound_effects/Makefile b/music/sound_effects/Makefile index 3be1bffc..61e6f5e3 100644 --- a/music/sound_effects/Makefile +++ b/music/sound_effects/Makefile @@ -10,11 +10,12 @@ EMPTY_DISK = ../../empty_disk/empty.dsk all: sound.dsk -sound.dsk: HELLO SOUND TINY +sound.dsk: HELLO SOUND TINY TEST_AUDIO cp $(EMPTY_DISK) sound.dsk $(DOS33) -y sound.dsk SAVE A HELLO $(DOS33) -y sound.dsk BSAVE -a 0x1000 SOUND $(DOS33) -y sound.dsk BSAVE -a 0x1000 TINY + $(DOS33) -y sound.dsk BSAVE -a 0x1000 TEST_AUDIO ### @@ -34,12 +35,21 @@ tiny.o: tiny.s ### +TEST_AUDIO: test_audio.o + ld65 -o TEST_AUDIO test_audio.o -C ../../linker_scripts/apple2_1000.inc + +test_audio.o: test_audio.s audio.s + ca65 -o test_audio.o test_audio.s -l test_audio.lst + + +### + HELLO: hello.bas $(TOKENIZE) < hello.bas > HELLO #### clean: - rm -f *~ *.o *.lst HELLO SOUND TINY + rm -f *~ *.o *.lst HELLO SOUND TINY TEST_AUDIO diff --git a/music/sound_effects/test_audio.s b/music/sound_effects/test_audio.s index 82622f9c..afc08bed 100644 --- a/music/sound_effects/test_audio.s +++ b/music/sound_effects/test_audio.s @@ -6,67 +6,48 @@ SPEAKER= $C030 WAIT = $FCA8 ; delay 1/2(26+27A+5A^2) us ; zero page use -HALF_PERIOD = $FF +BTC_L = $FE +BTC_H = $FF +SAVEL = $FC +SAVEH = $FD -test_sound: - jsr tiny_sound_effect + +test_audio: +; lda #$D0 +; sta SAVEH +; lda #$00 +; sta SAVEL + +test_loop: +; lda SAVEH +; sta BTC_H +; lda SAVEL +; sta BTC_L + + lda #duck_sound + sta BTC_H + + ldx #3 + jsr play_audio + + jsr wait_until_keypress + + inc SAVEH + jmp test_loop + +bob: + jmp bob wait_until_keypress: - lda KEYPRESS - bpl wait_until_keypress - bit KEYRESET + lda KEYPRESS + bpl wait_until_keypress + bit KEYRESET - jmp test_sound - - - - -tiny_sound_effect: - ldy #0 - -freq_smc: - lda #$40 - sta HALF_PERIOD - -play_note: - -loop_half_period: - lda $C030 ; 4 cycles - ldx HALF_PERIOD ; 3 cycles -loop_nops: - pha ; 4 cycles - plp ; 4 cycles - - dex ; 2 cycles - bne loop_nops ; 3 cycles - - ; Testing duration loop - dey ; 2 cycles - bne loop_half_period ; 3 cycles - - - lsr freq_smc+1 - - lsr pattern - beq end - bcc skip_wait - -wait_smc: - lda #80 - jsr WAIT -skip_wait: - - beq tiny_sound_effect ; bra - -end: rts +.include "audio.s" - - - - - - -pattern: - .byte $13 +duck_sound: +.incbin "duck.btc"