diff --git a/demos/second/part10_lens_rotozoom/Makefile b/demos/second/part10_lens_rotozoom/Makefile index 3000b8c6..e96f5567 100644 --- a/demos/second/part10_lens_rotozoom/Makefile +++ b/demos/second/part10_lens_rotozoom/Makefile @@ -25,8 +25,12 @@ lens.o: lens.s ../zx02_optim.s \ graphics/lenspic.gr.zx02: cd graphics && make +graphics/lens_sprites.inc: + cd graphics && make + #### clean: rm -f *~ *.o *.lst LENS cd graphics && make clean + cd audio && make clean diff --git a/demos/second/part10_lens_rotozoom/audio/Makefile b/demos/second/part10_lens_rotozoom/audio/Makefile new file mode 100644 index 00000000..5d308d75 --- /dev/null +++ b/demos/second/part10_lens_rotozoom/audio/Makefile @@ -0,0 +1,17 @@ +include ../../../../Makefile.inc + +ZX02 = ~/research/6502_compression/zx02.git/build/zx02 +PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr +PNG2GR = ../../../../utils/gr-utils/png2gr + +all: a_pboy.btc.zx02 + +#### + +a_pboy.btc.zx02: a_pboy.btc + $(ZX02) a_pboy.btc a_pboy.btc.zx02 + +#### + +clean: + rm -f *~ diff --git a/demos/second/part10_lens_rotozoom/audio/a_pboy.btc b/demos/second/part10_lens_rotozoom/audio/a_pboy.btc new file mode 100644 index 00000000..f0041aab --- /dev/null +++ b/demos/second/part10_lens_rotozoom/audio/a_pboy.btc @@ -0,0 +1 @@ +ªªªªªªªªªª•jªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª©UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUZ•UUUUUTªªªªªªªªªªªªªªªªªªªªZµUTªªª«Tª¥UVª«TªjªÒÕ*ªªª•UªUUn¥J”ÕVªª•Tª­jªªª•UUªª•*ªªª­%e[ª€©UªÕU*©UUmUTªªªªªªªªªªUZ•©]ª€©V­UUJªUjÕUUUUU+UURªªªª©V¥ºª•*jµURªªª­UUUUURªªªª•UUT«UuUJ”­j¬¥JªªÖ¥TªªÕURªªª•UUJµ[URUK[UT•UUVªª¥UVªªªªª¥UUT›MµT•*«jª€ªªªµUUUUUJª­UUJ¥U*Õ]¥RUKkUT•UUVªª¥UVªª•jª•UURZ«µT•JµªªUUU*­Uª•UUjªªª©UUUJ«Vµ*ªª­JUUjª•UUªªªªªªªª•UUUUUUUUªªªªªªª•UUUUZªªªªªª¥j¥UJªª­UV©UUUUUUUUUUUUUUTªªªªV•UUZªªªª¥j•ªUUUUUUUUUUUUUJª¥jªµUUUUUYUT«U5UUUUUUUUUUUUUUMUUUUUUYKR«T­T­RµRªªªªª•UUV•Zªªªªªª¥UUZUªUiUUU©UT­Jjªªª­JÕTªªµJªª•Zªªª©Uªªªª•UR­UUUZUj’Ô­•V©UUT«UUUU*Õ+Jª¥j•j–Ê­T­‘V¥lM²VÒj¥µ¬UªZ¥Z•TµU%Ù-ªªÔ]EZ‰ÚU©6©j•ªMi-¥VUY*ŽªÒŠê[UUªUT¬•Ž•Ž›UUJÕ*ԕª•jª«RU©I{ µJÕSUR¥Z’Ú•jªªÕ*ªJµJµUV©U¥R®…uUj©VÉUU%mIµRÚªV€ªªUj•kJµRŽ–ȶ©mT[Q[IUUUV€¶Ò[Tª©*ԕµ%¶JÙKRµ&Ú&ÕFڅº%m)Z©VÕMjJÕ%m$Û"¶”¶€Ö¥ZÒ«J«J­J­ImEZ¥V©[JkU*µ*ª¥ªUUUV¥Z¥jªªªªªªª¥UUUUUUUUMUUUUUUUUUUKU*ªªª«UTªªªªªªªªªªªª•UUUUUUUUUUUUUUUUUUUUURªµUUUUUUUUTÕUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª©UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTªÕUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUURÕUUUUUUUUUUUUUUUUUUUUUUUUUUKTªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª–ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª•ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª©jªªªªªªªªªªªªªZªªÔªª­KRUUmKR«UU*ªªªªªÕIUV«RÒVª©*ªÖÔª•jªª¥Zªªªª€­+[JÉ+U*¥]ªÔ•T­UiUUUUUš–ª»RªJª‹U]UUIj[UUTªªªµIUUº¥R¥UÕ­*ª•UVªª©iUUª¢¬­Ù*©*€¶ÕV•T•[V•UU*ªÕT–ªÖ©V’U+jªÕU%VÕUUU)ZµJ¥UZ¶•TŠ²­U[IUUUUµR¥UUUU«Uªª€VªZªêJ­Jª¶©UUJªÕ"ÖÒ¶Òªª*µm%­DµZ©V©UU¥IuRÖÔZŠªŠÚ[UV€µJªªÒªÒ¬‹j–Ö‘èU€WEmRíԕ©U¥j©š›h»X/ º‘muj.ÔV©USUK°—h®ž/d.¡]íÖm Ô+*ªªÚv…ë!Û!Ú%T®’ÛIvš¯"Z¥UV©UlVƒÚtKT­%¶‹µIv…u"µMVRœ «C¶ lJÔª¥mKjÑn…j’[*«dW¡z°·@މZ‹Tµi]UU±-RKYUm$¶Âë`»‚¶ÁmªªázªNÔUš–ª•m(®áulh-Ô.¥U¥Z7RÕmj%UR¶ª©WPìÔ;QÐ^¥+Ql¯JÒé*ªJ«JµV•&ì–“U‘œt’í%[RÕZª’Ž¥VUUjªKmEµIªUmBÕT«JÕ¥[UU€ª•*ªª­UZ’ªÕV©U*ªÕ*ªªÕUUUR¬ªªÕUK*ªªªªªªªªªª«UUUURªª­U*ªªªªªªªªªª©UUUUU*ª«UªªªUUU©UUUUUR­RÕUUUU*­R­RªªªªµUUUUUTªµ-RªÔªª¥ªªªªªªªªªª©UUUUUeVªªªª¥jUUUU*Õ*ÕUUUUUUUJµ*ª¥ªªªªªªªªÕURªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªUUUj•UUUUUUUUUUUUUUU-Jªªªªªªªªªªªªª•UUUUUUUUUUUUUUUUU*ªªªªªªªªªÕUUUUJªªªªªªªªªªªªµJªªªªªª•ª¥ªU¥jªŽªªªªªª©j•UUU-UUVªª¥U*ÕTÕUU¥jYURªªÕUUUUUUVKJªªªª¥j­Uii*•RµZªªÒ¬ª•UUUUjª­J¥jUZÒZUJª­U*ÕVÕUJRªUZµVªª•*ªªªÖVªªª’ªªµ[R©*ª©j­+Um-J”ªMUj­jš¥Rª–ªªªª­UUT•UUª¶UQUUKU¥Z«jªU)JªµªªÒª•Rªª­UUUUUUU*–ª«V¥¢ª’«jªV¥µUT¥J©[UZªªURªªÕijªªªªª¥UUUZ«R©*•Uµ5UUj«J¥RUUjÕj¥TªªªªªµUUUU*ªªU•ZªµURURÕjªšªÕUTªRª«Uªªª¥UUUVªª¥UUUUUURªªª­©U*¥UZªªÕZªªR©*«ZÕUSRªª•¥jª–ªªÕTªªª•UUjÚ¥RU*«jªªÒÕUTª•VjÕUTªªªªªªªªªªªªªUUj¥UUZ«U*JªU¶ª¥j­UJ€ª•­Yª–©URª•µV•UUUUJª­UUU*©Z«j©RMRÖªª–ÕUT¥*ÕmU*¥UV¥UUlª¥UUjªªªªª•UUJÕUZÊ©*UV­Tª«j¥IUVÚ©T•ªÕR•UµURUVªÔ©UUª•UUUTŠªµmJ€UM«UT®ªª‘UVÚ¥RZªµ$Ô¶ÕU%j«Tªª«JªªÕRª¥ªª¢ÕVڕP—Sj¢µ-ÕER[ªÕBÚV©*µ[RUJÚªªUU5*µUU*ªªªªªµU%UVéUQ.¥j©n–¥%Z«TŠÒµ)VªÙJ•U¥VµV’ªUZ–Õ+RªªªªªªªªKU[€•d^Š¶©mªSi6Ò«IU%µUjKT–ª­UU*ªªµV¥*¥jÕURªUªªªUª­©+R-¥n¢¶€ª•µ•jUQ+j«R­T•UZªµTªªª•jª©VªUUª¥j©jUjJ«i[%t…u*Õ-Ô*Ԫʶ©UT¬¥mR­*¬ªµ*ªªªªªª©Zªªªªªªªªªªª¥UZ•²ª€®€µªjªµJªªª¥©*µ*ÕUUURªµUKUT­*ªªª©jªªªªªªªªªªªª«Jª¥ªUªUªªªªUUUUUUUUUUUUUZª©Vªªªªªªªªªªªªªªªªªªªª•UUUZ©UUUUUUUUUUUUUUUUUUUUUUV•UUUUUUUUUUUUUURª­UUUTªªªªªªªªªZªªªª©ªªªªªªª©UUUUUUUUMUUUUU*ªªªªªª©UUUjªª¥URÕUUUUUUUUUUUUUUUUUUUUUU \ No newline at end of file diff --git a/demos/second/part15_transmission/Makefile b/demos/second/part15_transmission/Makefile index eea1ac56..1c36a207 100644 --- a/demos/second/part15_transmission/Makefile +++ b/demos/second/part15_transmission/Makefile @@ -20,7 +20,7 @@ spheres.o: spheres.s \ ../audio.s \ ../zp.inc ../hardware.inc ../qload.inc \ audio/transmission.btc.zx02 \ - graphics/spheres.hgr.zx02 + graphics/spheres.gr.zx02 ca65 -o spheres.o spheres.s -l spheres.lst ### @@ -28,6 +28,9 @@ spheres.o: spheres.s \ graphics/spheres.hgr.zx02: cd graphics && make +graphics/spheres.gr.zx02: + cd graphics && make + audio/transmission.btc.zx02: cd audio && make ### diff --git a/demos/second/part15_transmission/graphics/Makefile b/demos/second/part15_transmission/graphics/Makefile index 164bd29e..48321329 100644 --- a/demos/second/part15_transmission/graphics/Makefile +++ b/demos/second/part15_transmission/graphics/Makefile @@ -3,8 +3,9 @@ include ../../../../Makefile.inc ZX02 = ~/research/6502_compression/zx02.git/build/zx02 PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr PNG2GR = ../../../../utils/gr-utils/png2gr +PNG2SPRITES = ../../../../utils/gr-utils/png2sprites -all: spheres.hgr.zx02 spheres.gr.zx02 +all: spheres.hgr.zx02 spheres.gr.zx02 long_sword.inc #### @@ -23,6 +24,15 @@ spheres.hgr: spheres.png spheres.hgr.zx02: spheres.hgr $(ZX02) spheres.hgr spheres.hgr.zx02 +#### + +long_sword.inc: sprite_skewed1.png sprite_skewed2.png sprite_skewed3.png + $(PNG2SPRITES) sprite_skewed1.png long_sword1 0 0 6 48 > long_swords.inc + $(PNG2SPRITES) sprite_skewed2.png long_sword2 0 0 6 48 >> long_swords.inc + $(PNG2SPRITES) sprite_skewed3.png long_sword3 0 0 6 48 >> long_swords.inc + + + #### clean: diff --git a/demos/second/part15_transmission/graphics/sprite_skewed1.png b/demos/second/part15_transmission/graphics/sprite_skewed1.png new file mode 100644 index 00000000..b87b899a Binary files /dev/null and b/demos/second/part15_transmission/graphics/sprite_skewed1.png differ diff --git a/demos/second/part15_transmission/graphics/sprite_skewed2.png b/demos/second/part15_transmission/graphics/sprite_skewed2.png new file mode 100644 index 00000000..b0cd29b6 Binary files /dev/null and b/demos/second/part15_transmission/graphics/sprite_skewed2.png differ diff --git a/demos/second/part15_transmission/graphics/sprite_skewed3.png b/demos/second/part15_transmission/graphics/sprite_skewed3.png new file mode 100644 index 00000000..2c2bd310 Binary files /dev/null and b/demos/second/part15_transmission/graphics/sprite_skewed3.png differ diff --git a/demos/second/part15_transmission/graphics/sword_sprite.inc b/demos/second/part15_transmission/graphics/sword_sprite.inc new file mode 100644 index 00000000..927c5d62 --- /dev/null +++ b/demos/second/part15_transmission/graphics/sword_sprite.inc @@ -0,0 +1,82 @@ +long_sword1: +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$11,$11,$00,$00 +.byte $00,$11,$11,$11,$00,$00 +.byte $00,$11,$00,$11,$00,$00 +.byte $00,$11,$91,$11,$99,$00 +.byte $00,$00,$11,$11,$00,$00 +.byte $00,$00,$19,$11,$19,$00 +.byte $00,$91,$11,$11,$91,$00 +.byte $00,$00,$11,$11,$11,$00 +.byte $00,$11,$99,$11,$11,$00 +.byte $11,$91,$19,$11,$11,$00 +.byte $00,$11,$19,$99,$11,$00 +.byte $00,$11,$19,$99,$11,$00 +.byte $00,$11,$99,$99,$11,$00 +.byte $00,$11,$99,$99,$91,$11 +.byte $00,$19,$DD,$DD,$91,$11 +.byte $11,$99,$DD,$DD,$91,$11 +.byte $11,$99,$DD,$DD,$91,$11 +.byte $11,$19,$99,$DD,$11,$00 +.byte $11,$19,$99,$91,$11,$00 +.byte $11,$11,$11,$99,$11,$00 +.byte $00,$11,$11,$99,$11,$00 +.byte $00,$00,$11,$11,$00,$00 +.byte $00,$00,$11,$11,$88,$88 +.byte $00,$00,$11,$11,$88,$00 +.byte $00,$11,$51,$77,$00,$00 +.byte $00,$88,$5A,$77,$88,$88 +.byte $88,$88,$5A,$77,$88,$88 +.byte $88,$48,$5A,$77,$88,$00 +.byte $88,$00,$45,$77,$00,$00 +.byte $00,$88,$85,$77,$88,$00 +.byte $00,$88,$5A,$77,$88,$88 +.byte $88,$88,$5A,$77,$88,$00 +.byte $00,$00,$8A,$78,$00,$7C +.byte $44,$88,$5A,$75,$57,$00 +.byte $48,$78,$57,$88,$00,$00 +.byte $C5,$00,$88,$88,$00,$55 +.byte $00,$00,$88,$75,$00,$55 +.byte $00,$00,$A5,$75,$00,$57 +.byte $55,$00,$5A,$57,$00,$75 +.byte $57,$00,$55,$75,$00,$00 +.byte $75,$00,$55,$75,$00,$00 +.byte $55,$00,$55,$55,$00,$00 +.byte $00,$00,$57,$55,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00 + diff --git a/demos/second/part15_transmission/spheres.s b/demos/second/part15_transmission/spheres.s index f9cbed89..3da18aa1 100644 --- a/demos/second/part15_transmission/spheres.s +++ b/demos/second/part15_transmission/spheres.s @@ -85,11 +85,48 @@ spheres_start: cli + ;============================= + ; wait a bit + ;============================= + ; "10 seconds to transmission" + ; do we wait 10s? + + lda #4 + jsr wait_seconds -; lda #0 -; sta COUNT -; sta DRAW_PAGE + lda #0 + sta XMISSION_COUNT + + ;========================== + ; transmit sword + ;========================== + + lda #long_sword1 + sta BASE_SPRITEH + +move_sword_loop: + jsr gr_copy_to_current + + jsr draw_sword + + jsr page_flip + + lda #25 + jsr wait_ticks + + lda KEYPRESS + bmi done_sword_loop + + inc XMISSION_COUNT + lda XMISSION_COUNT + cmp #60 + bne move_sword_loop + +done_sword_loop: + bit KEYRESET spheres_loop: @@ -97,17 +134,101 @@ spheres_loop: jsr wait_for_pattern bcc spheres_loop + spheres_done: rts - .include "../wait_keypress.s" -; .include "../zx02_optim.s" -; .include "../hgr_table.s" -; .include "../hgr_clear_screen.s" -; .include "../hgr_copy_fast.s" - .include "../gr_pageflip.s" + + ;========================== + ; draw skewed sword + ;========================== +draw_sword: + + lda BASE_SPRITEL + sta CURRENT_SPRITEL + lda BASE_SPRITEH + sta CURRENT_SPRITEH ; copy start for sprite + + ldx #0 + + lda #3 + sta COUNT + +sword_loop: + lda gr_offsets,X + clc + adc COUNT + sta GBASL + + lda gr_offsets+1,X + clc + adc DRAW_PAGE + sta GBASH + + ldy #5 +sword_inner_loop: + lda (CURRENT_SPRITEL),Y + beq skip_pixel + sta (GBASL),Y +skip_pixel: + dey + bpl sword_inner_loop + + inc COUNT + + clc + lda CURRENT_SPRITEL + adc #6 + sta CURRENT_SPRITEL + lda #0 + adc CURRENT_SPRITEH + sta CURRENT_SPRITEH + + inx + inx + cpx #28 + bne sword_loop + + ; move to next input line + + clc + lda BASE_SPRITEL + adc #6 + sta BASE_SPRITEL + lda #0 + adc BASE_SPRITEH + sta BASE_SPRITEH + + rts + + + ;========== + ; page_flip + ;========== + +page_flip: + lda DRAW_PAGE ; 3 + beq page_flip_show_1 ; 2nt/3 +page_flip_show_0: + ; show page2, draw page1 + bit PAGE2 ; 4 + lda #0 ; 2 + sta DRAW_PAGE + rts ; 6 + +page_flip_show_1: + ; show page1, draw page2 + bit PAGE1 ; 4 + lda #4 + sta DRAW_PAGE + rts + + + .include "../wait_keypress.s" + +; .include "../gr_pageflip.s" .include "../gr_copy.s" .include "../gr_offsets.s" @@ -121,3 +242,5 @@ spheres_data: transmission_data: .incbin "audio/transmission.btc.zx02" + + .include "graphics/sword_sprite.inc" diff --git a/demos/second/zp.inc b/demos/second/zp.inc index e2561c7b..a0ee0b2d 100644 --- a/demos/second/zp.inc +++ b/demos/second/zp.inc @@ -214,6 +214,14 @@ SAVED = $F8 BAR_X1 = $F0 BAR_X2 = $F1 +; spheres +BASE_SPRITEL = $F0 +BASE_SPRITEH = $F1 +CURRENT_SPRITEL = $F2 +CURRENT_SPRITEH = $F3 +XMISSION_COUNT = $F4 + + ;============================================== ; $FC-$FF we use for in/out pointers ;==============================================