From 4ff638f55af6c7934d31cc9b07cc7b98adbbb86e Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 18 Jan 2024 01:50:44 -0500 Subject: [PATCH] pt3_lib_ch6: add visualization not a particularly good one --- music/pt3_lib_6ch/Makefile | 2 +- music/pt3_lib_6ch/hardware.inc | 4 +- music/pt3_lib_6ch/pt3_test.s | 30 +++++++++ music/pt3_lib_6ch/release/pt3_lib_ch6.dsk | Bin 143360 -> 143360 bytes music/pt3_lib_6ch/visual.s | 74 ++++++++++++++++++++++ music/pt3_lib_6ch/zp.inc | 14 ++++ 6 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 music/pt3_lib_6ch/visual.s diff --git a/music/pt3_lib_6ch/Makefile b/music/pt3_lib_6ch/Makefile index 1c588f8c..e6aeedbc 100644 --- a/music/pt3_lib_6ch/Makefile +++ b/music/pt3_lib_6ch/Makefile @@ -26,7 +26,7 @@ PT3_TEST: pt3_test.o pt3_test.o: pt3_test.s \ pt3_lib_detect_model.s \ pt3_lib_init.s pt3_lib_core.s pt3_lib_irq_handler.s \ - pt3_lib_common.s pt3_lib_core2.s \ + pt3_lib_common.s pt3_lib_core2.s visual.s \ pt3_lib_mockingboard_detect.s pt3_lib_mockingboard_setup.s \ interrupt_handler.s zp.inc ca65 -o pt3_test.o pt3_test.s -l pt3_test.lst diff --git a/music/pt3_lib_6ch/hardware.inc b/music/pt3_lib_6ch/hardware.inc index 3b884c55..145dc793 100644 --- a/music/pt3_lib_6ch/hardware.inc +++ b/music/pt3_lib_6ch/hardware.inc @@ -13,8 +13,8 @@ SET_GR = $C050 SET_TEXT = $C051 FULLGR = $C052 TEXTGR = $C053 -PAGE0 = $C054 -PAGE1 = $C055 +PAGE1 = $C054 +PAGE2 = $C055 LORES = $C056 ; Enable LORES graphics HIRES = $C057 ; Enable HIRES graphics AN3 = $C05E ; Annunciator 3 diff --git a/music/pt3_lib_6ch/pt3_test.s b/music/pt3_lib_6ch/pt3_test.s index eb76ffc2..2f8fcae3 100644 --- a/music/pt3_lib_6ch/pt3_test.s +++ b/music/pt3_lib_6ch/pt3_test.s @@ -109,6 +109,8 @@ mockingboard_found: jsr print_mocking_found + jsr print_artist_message + ;================================================== ; patch the playing code with the proper slot value ;================================================== @@ -147,7 +149,14 @@ start_interrupts: ;============================ ; Loop forever ;============================ + bit SET_GR + bit LORES + bit TEXTGR + bit PAGE1 forever_loop: + + jsr visualization + jmp forever_loop @@ -222,6 +231,24 @@ done_found_message: rts + + +print_artist_message: + jsr CROUT1 + + ldy #0 +print_artist_message_loop: + lda artist_message,Y ; load loading message + beq done_artist_message + ora #$80 + jsr COUT + iny + jmp print_artist_message_loop +done_artist_message: + + rts + + ;========= ; strings ;========= @@ -231,6 +258,7 @@ mocking_message: .asciiz "LOOKING FOR MOCKINGBOARD: " not_message: .byte "NOT " found_message: .asciiz "FOUND SLOT#4" +artist_message: .asciiz "PLAYING: 'DANCE OF THE DEAD' BY DYA" ;========= @@ -254,6 +282,8 @@ found_message: .asciiz "FOUND SLOT#4" ; if you're self patching, detect has to be after interrupt_handler.s .include "pt3_lib_mockingboard_detect.s" +.include "visual.s" + ;============= ; include song ;============= diff --git a/music/pt3_lib_6ch/release/pt3_lib_ch6.dsk b/music/pt3_lib_6ch/release/pt3_lib_ch6.dsk index f9a9ade2a03d104789aa1a039410a5840193d54b..9ab1b768372b77193b2121bb4275fe8fac70fc4a 100644 GIT binary patch delta 4447 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

@`?X6;5 zzW1AAWX}!^B@E4K{U}WD0R0$Dw*Ug@5F`O~2r#xy03~P00fdw8ffRtSEI|rDSUz}V z-f}AN&A3mLNpTLKaEv|YV9z^v;UzPF#gPIKw)~VLfI30xMAgufpzuiWv3>^v=!gRy zz#cGjuLCzNfPR#KTWfT%$M_9~Q&M^XBN@XSMf}j2W8*b}_l1P+^vMGzfNGKe3I})8 zAb`ShSZl!xj05Odyz#=U6R(@FzlJ@@zf4Kho;PcMOx6B`bHw060Bxeai+?X+b(Gap zt)3!)J}8L}%mt7aqj+=TgNvrz1W-M_SVy%wY67T^qCNtsFTBw~w-n%s!K?u@tsUeZ zZ70b4v1D>#ztzQ)7)(kcO`C+pn zo@$irV~)~OXYBp9ug*2vY1paOvSFuM%2X$fI=$CBQ~m5?xv6fv&&vPn^Of^dqkU}J znKZ@wOtW|G=RUJ1P5jjqe>z9JG-*OI#~I4h7S>cxRmHPMgqPLI3z;Kne#)kb*)Q`h z%)_YM+(y!>%{>Yb_uKb!bx)-%htIoG$W{{lsp zQ{tjnOR(O#UfbpjZgQgJ^CJ~G#y?uLdS|@LNWWND?>u6>h5wF4yio$Dw%PH937qGvYA=6jLpufU$D2z*l)^sOS)PXdEsH9 zYPDKM*HJugxzXbZyE=(Mgf1`-qdbuKg#MR51|ho5l!Zl<{9 delta 4251 zcmZXXe{fSp9>DY3Qqlr#vTexAmo$ALZQ4SSs(?kI{1hk+S_eJxypvdd*c4LWfGgZx z`ik&`Q#O|KkHXx&xn8w%ecnB72L>(EcXsAc0XDThVR9PTLLo}9ofIm{LI z8(iiF(UP}VSoNbY>$YN&Y86geD>VzcMObJNnhHD9g?fu`x}|-6`JjdNSp?A{XobSq z0%2!?FtI>bRUp*4SNY~y+BeX@SXxcp&6Ze3Mw4(Y9`RLLgxBIY^w#~MU$7xRj(u={ zjBK{Bk$>JF+12v?LT=%Eu0>o!ig=r^6!dhZTu)JWdYh-y9dwO@zTuz|hhH%X2Xho| zPhDn5cfc#vbk}+DXHBcAt498eM6mvxwATbu_-znBxaUN`BSxd5UBJCn6+Y}3)xk&U{!(@oa zACnGEC!t{?>qLtY`6AJ-6TMO!CKlJhf$s?l<2OllN@Y`-hxK(cjttx+F&nCsx&KGS zs@)*+DS~dfh*OJfQl-BnyENBk5jwQ1q`Z2j8#AY!xk?W5p{t~9 zY}C>`M#(N!Omv)0>qFmUW@hwvboW`&g-ZYOj?M|%CnRRpz9bnI98z;_sG$hxBeO*~ zm=WttEy?CXgM==(6^pS{d61wdf=3+;ZbGr5!kuQ@wmxy+W41B`|&Jhgql7^o1BnJER91LhBC-;+Bde3*n_cvS5HKLs- z9sV0YEWYZBFdMu_}lz!SfQTL)w-!b0zkBL!>?o>x?`WP9%KUMg*J<`>@z&4Xrz;=SW0PrM@_EwL7?F+qVvQlAJ4}4v*rO@2RG(zWIj)n@YLN)eWwxYLj>yAg zUsq!>Z%M5jDG!*?xHqB_}*pYMCYuJmKlW2KXF?Rygcm}oaiTql<8+7PK6;R75lfVo{cf=eZKn5vuE zrY{rysc2fFeTnFgN5|++HvZk+eP6qq_$=>Zg;CM0+fjkW9W)(SBipF$pl3!i^mI1z zA*kMaJY#XNnNr-ym|j>Es4Shlah5?>eg?*S4y%`bA(90QcXG1R%{tITQj|^nE7Br)N-JT%N2@p zq-|<(jmMJw(^MPq6Bj85dRkzTa!~C~hMc|9 z-aE4Z12IqlNEi>uv*6B5&}PCw85@`m7~~~;dme-Ya`K^)lk)+Q^Cu&jg>@Wgus19wO(IfL%n6 zxFQczoQW86P}GT`5$f{s_QITG$XSth7dc_s*bX8`U|);KS(Kkd4z6iN12jbBI3bCg zrFjYDyblI)1i;B~wdAHEzS6vis3edx50=XhLRUB<8~Mc=bByj>@Rj8o$T{J{&zJ|J z)fjTZ3FOR$eO=-E$e9C(oVjoxIg*PZhq`)-A&Hy?fFmNZXCY|CAkW8xsBU)Q=llNd zLfYhEDq(7tYYQNr2iii2y8w|h2NKAc1DM+eauPda$iYp|f+TXVJrk11!S8$L1vlYrxk8Q&U`mIfQ~il z6gLJJ9x=HPIcC8>^oM*J&!?QAasndf zKz{py(a1@`EEZ#54HnrF$0shMiuqE&r_yax#@Fh);IPi^dFz;Fz91djg`9Aiw_}ny_eo9cxO#TZ1eHh6USpk zt>d~s@Epn#t=%U*hw82SEZ6(8tiocCa+|*3Q9N|DM|j@j`*3nn&)WU3q#Dy1{y&|+ z;#}75!=rTKRI>K{$(oqrbwm8eQR4H7DMVwPwsdtuMfqS^G^3MyTPZ!8-kA~*=$~Em zDf`(mn51S;tF>)PXWG7lZCCb>Os1SC%zIibZ5Ct!hKKVgCj2q8pOMND3Z7-P%dViv zbg0i7sSR?TWh!`rW)Dg(zgm*5pQ}|lPqaZ#9a_qHUe%A`-&`Iqn7Tt?#S5qI&~L1f z-lz5N@cP%zd!#z0o^JIhR=Um8I(B^>URL#1UKtS4pC;5HB4)^g$*?$rFL1;;Hv z_}j+fi{>R^Y5}&|_a<8H8=`A;#}4(iUMxy4y)&W|(2)`43f){tw-mCGRHdNh+RwPM ziq(a}kL>u_+M8omr5}?BU0|F|=|Jp)@D6(oLi<`nwwOnm@l=!ou?ua2ucqbsXStQ> z8wy{k6;`zzd6s+FtQP7St$PHuW%yan&5dobuHuBW)%tn%sB*lQ_8j-)=WkjHx&H$7 Cl;uhQ diff --git a/music/pt3_lib_6ch/visual.s b/music/pt3_lib_6ch/visual.s new file mode 100644 index 00000000..868fc42c --- /dev/null +++ b/music/pt3_lib_6ch/visual.s @@ -0,0 +1,74 @@ + +visualization: + + ldx #0 +vis_loop_outer: + lda gr_offsets_l,X + sta GBASL + lda gr_offsets_h,X + sta GBASH + + lda $70,X + ldy #19 +vis_loop_inner: + sta (GBASL),Y + dey + bne vis_loop_inner + + inx + cpx #14 + bne vis_loop_outer + + ldx #0 +vis_loop_outer2: + lda gr_offsets_l,X + sta GBASL + lda gr_offsets_h,X + sta GBASH + + lda $80,X + ldy #39 +vis_loop_inner2: + sta (GBASL),Y + dey + cpy #20 + bne vis_loop_inner2 + + inx + cpx #14 + bne vis_loop_outer2 + + lda #200 + jsr wait + + rts + + +gr_offsets_l: + .byte <$400,<$480,<$500,<$580,<$600,<$680,<$700,<$780 + .byte <$428,<$4a8,<$528,<$5a8,<$628,<$6a8,<$728,<$7a8 + .byte <$450,<$4d0,<$550,<$5d0,<$650,<$6d0,<$750,<$7d0 + +gr_offsets_h: + .byte >$400,>$480,>$500,>$580,>$600,>$680,>$700,>$780 + .byte >$428,>$4a8,>$528,>$5a8,>$628,>$6a8,>$728,>$7a8 + .byte >$450,>$4d0,>$550,>$5d0,>$650,>$6d0,>$750,>$7d0 + +; copy of ROM wait +; because we might disable ROM + + +wait: + sec +wait2: + pha +wait3: + sbc #$01 + bne wait3 + pla + sbc #$01 + bne wait2 + rts +wait_end: + +.assert (>wait_end - >wait) < 1 , error, "wait crosses page boundary" diff --git a/music/pt3_lib_6ch/zp.inc b/music/pt3_lib_6ch/zp.inc index 0cf20554..d4f1b783 100644 --- a/music/pt3_lib_6ch/zp.inc +++ b/music/pt3_lib_6ch/zp.inc @@ -63,3 +63,17 @@ PATTERN_H_2 = $8F LOOP_2 = $90 DONE_SONG_2 = $91 + + +; visualization + +X1 = $F0 +Y1 = $F1 +X2 = $F2 +Y2 = $F3 +YY = $F4 + +COLOR = $30 +GBASL = $26 +GBASH = $27 +