From 6a9edf267b553a58d2aca28f05989357b26d9f71 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Mon, 12 Apr 2021 01:33:27 -0400 Subject: [PATCH] mod9: update --- basic/appleiibot/Makefile | 9 +- basic/appleiibot/convert_tgreene.c | 46 ++-- basic/appleiibot/mod9_hgr.bas | 2 + games/ootw/ending/graphics/ending/Makefile | 12 +- .../ending/graphics/ending/left_unfurl1.png | Bin 2519 -> 7086 bytes .../ending/graphics/ending/left_unfurl2.png | Bin 466 -> 7751 bytes .../ending/graphics/ending/left_unfurl3.png | Bin 0 -> 843 bytes .../ending/graphics/ending/left_unfurl4.png | Bin 0 -> 939 bytes .../ending/graphics/ending/left_unfurl5.png | Bin 0 -> 12314 bytes .../ending/{onboard.png => onboard01.png} | Bin .../ending/graphics/ending/right_unfurl1.png | Bin 248 -> 6947 bytes .../ending/graphics/ending/right_unfurl2.png | Bin 469 -> 754 bytes .../ending/graphics/ending/right_unfurl3.png | Bin 0 -> 858 bytes .../ending/graphics/ending/right_unfurl4.png | Bin 0 -> 12429 bytes .../ending/graphics/ending/right_unfurl5.png | Bin 0 -> 931 bytes games/ootw/ending/graphics/ending/wing_bg.png | Bin 554 -> 12575 bytes graphics/hgr/tiny_triangles/Makefile | 29 ++- graphics/hgr/tiny_triangles/mod9.s | 1 + graphics/hgr/tiny_triangles/rainbow_squares.s | 219 ++++++++++++++++++ graphics/hgr/tiny_triangles/sier_hgr.s | 214 +++++++++++++++++ 20 files changed, 505 insertions(+), 27 deletions(-) create mode 100644 basic/appleiibot/mod9_hgr.bas create mode 100644 games/ootw/ending/graphics/ending/left_unfurl3.png create mode 100644 games/ootw/ending/graphics/ending/left_unfurl4.png create mode 100644 games/ootw/ending/graphics/ending/left_unfurl5.png rename games/ootw/ending/graphics/ending/{onboard.png => onboard01.png} (100%) create mode 100644 games/ootw/ending/graphics/ending/right_unfurl3.png create mode 100644 games/ootw/ending/graphics/ending/right_unfurl4.png create mode 100644 games/ootw/ending/graphics/ending/right_unfurl5.png create mode 100644 graphics/hgr/tiny_triangles/rainbow_squares.s create mode 100644 graphics/hgr/tiny_triangles/sier_hgr.s diff --git a/basic/appleiibot/Makefile b/basic/appleiibot/Makefile index 8a514cd4..6101e098 100644 --- a/basic/appleiibot/Makefile +++ b/basic/appleiibot/Makefile @@ -15,7 +15,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \ FASTAR2.BAS BIN.BAS FALLING.BAS SNOW.BAS XMAS.BAS AN3.BAS PLASMA.BAS \ C64.BAS SIERPINSKI.BAS FAKES.BAS SIER.BAS DROPS.BAS RR.BAS RR_HGR.BAS \ COMBO.BAS WIRES.BAS PATTERN.BAS BALL.BAS LINES.BAS MOD9.BAS \ - XOR_ZOOM.BAS + XOR_ZOOM.BAS MOD9_HGR.BAS # cp $(EMPTY_DISK)/empty.dsk appleiibot.dsk cp empty.dsk appleiibot.dsk $(DOS33) -y appleiibot.dsk BSAVE -a 0x0300 LOAD @@ -74,7 +74,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \ $(DOS33) -y appleiibot.dsk SAVE A LINES.BAS $(DOS33) -y appleiibot.dsk SAVE A MOD9.BAS $(DOS33) -y appleiibot.dsk SAVE A XOR_ZOOM.BAS - + $(DOS33) -y appleiibot.dsk SAVE A MOD9_HGR.BAS #### @@ -167,6 +167,11 @@ MOD9.BAS: mod9.bas #### +MOD9_HGR.BAS: mod9_hgr.bas + $(TOKENIZE) < mod9_hgr.bas > MOD9_HGR.BAS + +#### + XOR_ZOOM.BAS: xor_zoom.bas $(TOKENIZE) < xor_zoom.bas > XOR_ZOOM.BAS diff --git a/basic/appleiibot/convert_tgreene.c b/basic/appleiibot/convert_tgreene.c index 43ae882b..f8bf84b1 100644 --- a/basic/appleiibot/convert_tgreene.c +++ b/basic/appleiibot/convert_tgreene.c @@ -8,8 +8,14 @@ //#define OFFSET 35 +#define END_AT_3F5 0 +#define BEGIN_AT_3F5 1 + + int main(int argc, char **argv) { +// int mode=END_AT_3F5; + int mode=BEGIN_AT_3F5; int i = 0; int e = 0,filesize; int val,pv,final; @@ -19,7 +25,6 @@ int main(int argc, char **argv) { // printf("1REM"); - filesize=read(0,in,1024); do { third = ((in[i + 2] & 3) << 4) + @@ -107,25 +112,28 @@ int main(int argc, char **argv) { printf("2CALL768\"%s%s\n",enc2,enc); #endif -#if 1 -// if using & to the end then jumping back - printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-" - "192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n", - filesize-1, - 0x3f5-filesize+3, - 2125,2125+filesize,OFFSET2); - printf("2&\"%s%s\n",enc2,enc); -#endif + if (mode==END_AT_3F5) { + fprintf(stderr,"Ending at $3F5\n"); + printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-" + "192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n", + filesize-1, + 0x3f5-filesize+3, + 2125,2125+filesize,OFFSET2); + printf("2&\"%s%s\n",enc2,enc); + } -#if 0 -// if using & to jump to beginning (over-writing text page) - printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-" - "192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n", - filesize-1, - 0x3f5, - 2126,2126+filesize,OFFSET2); - printf("2&\"%s%s\n",enc2,enc); -#endif + + // if using & to jump to beginning (over-writing text page) + if (mode==BEGIN_AT_3F5) { + fprintf(stderr,"Beginning at $3F5\n"); + + printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-" + "192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n", + filesize-1, + 0x3f5, + 2126,2126+filesize,OFFSET2); + printf("2&\"%s%s\n",enc2,enc); + } // printf("%s\n",enc); // printf("2FORI=0TO%d:POKE768+I,4*PEEK(2054+I)-" diff --git a/basic/appleiibot/mod9_hgr.bas b/basic/appleiibot/mod9_hgr.bas new file mode 100644 index 00000000..c6ebd2fb --- /dev/null +++ b/basic/appleiibot/mod9_hgr.bas @@ -0,0 +1,2 @@ +1FORI=0TO122:POKE1013+I,4*PEEK(2126+I)-192+(PEEK(2249+I/3)-35)/4^(I-INT(I/3)*3):NEXT +2&"7G1,clNnX0QoP.X/Yo74mP.QiQAiY_(2Yjc2b0l#W0C91.lZTB2UkmQ7:Q08Om8Fm8JkYojdaioYo`Ta^bmYmb1`0Z%Nna2d0Z0NnCl0X.X0QV04bl1jh*jlblH'S0#C''E<;C6$Y#P+L$/%%E$-#SA*3W('00+)#&D+ diff --git a/games/ootw/ending/graphics/ending/Makefile b/games/ootw/ending/graphics/ending/Makefile index 34325c2e..e4e5df63 100644 --- a/games/ootw/ending/graphics/ending/Makefile +++ b/games/ootw/ending/graphics/ending/Makefile @@ -9,8 +9,10 @@ all: ootw_c16_end.inc ootw_c16_end.inc: \ blank.lzsa wing_bg.lzsa \ - left_unfurl1.lzsa left_unfurl2.lzsa \ - right_unfurl1.lzsa right_unfurl2.lzsa \ + left_unfurl1.lzsa left_unfurl2.lzsa left_unfurl3.lzsa \ + left_unfurl4.lzsa left_unfurl5.lzsa \ + right_unfurl1.lzsa right_unfurl2.lzsa right_unfurl3.lzsa \ + right_unfurl4.lzsa right_unfurl5.lzsa \ sky_bg.lzsa \ rooftop_bg.lzsa \ rooftop01.lzsa rooftop02.lzsa rooftop03.lzsa rooftop04.lzsa \ @@ -59,8 +61,14 @@ ootw_c16_end.inc: \ echo "wing_bg_lzsa: .incbin \"wing_bg.lzsa\"" >> ootw_c16_end.inc echo "left_unfurl1_lzsa: .incbin \"left_unfurl1.lzsa\"" >> ootw_c16_end.inc echo "left_unfurl2_lzsa: .incbin \"left_unfurl2.lzsa\"" >> ootw_c16_end.inc + echo "left_unfurl3_lzsa: .incbin \"left_unfurl3.lzsa\"" >> ootw_c16_end.inc + echo "left_unfurl4_lzsa: .incbin \"left_unfurl4.lzsa\"" >> ootw_c16_end.inc + echo "left_unfurl5_lzsa: .incbin \"left_unfurl5.lzsa\"" >> ootw_c16_end.inc echo "right_unfurl1_lzsa: .incbin \"right_unfurl1.lzsa\"" >> ootw_c16_end.inc echo "right_unfurl2_lzsa: .incbin \"right_unfurl2.lzsa\"" >> ootw_c16_end.inc + echo "right_unfurl3_lzsa: .incbin \"right_unfurl3.lzsa\"" >> ootw_c16_end.inc + echo "right_unfurl4_lzsa: .incbin \"right_unfurl4.lzsa\"" >> ootw_c16_end.inc + echo "right_unfurl5_lzsa: .incbin \"right_unfurl5.lzsa\"" >> ootw_c16_end.inc echo "onboard_lzsa: .incbin \"onboard.lzsa\"" >> ootw_c16_end.inc echo "sky_bg_lzsa: .incbin \"sky_bg.lzsa\"" >> ootw_c16_end.inc echo "flying01_lzsa: .incbin \"flying01.lzsa\"" >> ootw_c16_end.inc diff --git a/games/ootw/ending/graphics/ending/left_unfurl1.png b/games/ootw/ending/graphics/ending/left_unfurl1.png index 31c169dba87487c70637d234e9827b4500e78131..7305dcb9a0bc39d88b69407d0c8e3c04bd1c5222 100644 GIT binary patch literal 7086 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

iB_$?Q+H@ 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 delta 322 zcmV-I0logmJkkS@Ba=ZLSPJ6^6%-EykZJsylcOCce*q9lL_t(I%Z=3m5`!QN1i(C@ zdH#LDS5_fFatR_cYHPO#3C<`N4SB|uhg9wZl#lR1s%QAH2IUo6oYs*-&Y*0eF>UAH z9uB8=&QhW~Ke=v-ok8UlARxB*eY;6i$oRbWs33@K7{ zG=yd@e<5;UpId0^8tM*80i}dW5C_=5VGD&It!2kdN diff --git a/games/ootw/ending/graphics/ending/left_unfurl3.png b/games/ootw/ending/graphics/ending/left_unfurl3.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8615cf80cfc699c0edf81490832f9ca00ba4e1 GIT binary patch literal 843 zcmV-R1GM~!P)EX>4Tx04R}tkv&MmKpe$i)0P&gI9O1`AwzYtAS&XhRVYG*P%E_RU~>J0CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4RLxj8AiNQwVT3N2zhIPS;0dyl(!fY7Wm)eMXSs%9DK zWJ1j5R>jaO0tjLNeuQOa>T{Bmg6H_UhmWs!ah~OU?$6PiFPIGQiNv!^H!R`};^|FG z=e$oGWo0=}d`>)O&;^MfxvseU#<}FMz%!#pCOuCaB^FCvtaLFe8!GV>aV)QDlrLmm z&U4=4tXAu+eNXDJe?(N?*?f!lM*fw%$FVZTG0000pP)t-s0002v9$;Wjz5hi00Ha`>oSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02oXF02p)u zpQu0}00007bV*G`2jv6`5jqCJPSidC000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2H zM@dakSAh-}0002?Nklk7g!3&}J->jin4`T?ET{ za3=o-)XO#uk-Upw^Yw&V!M2YIifm3;0!QuxpeIRCJ2&DnBbb#r$ptu);0tcw96#p* z*e=^z+y9>MI0$fjM`8!<^`jE{f-|s_1u&LOfqudp68a6C!MTgLUhrxt9kfY<>tGIA zMsOY60Q&3W_d0?~f*VPeuxA8U@C?SHFM=`Qdbt}}NH}5y7`be*OJL8WQ}!ACSf2HN VXg#2;_q_lB002ovPDHLkV1hVLbpQYW literal 0 HcmV?d00001 diff --git a/games/ootw/ending/graphics/ending/left_unfurl4.png b/games/ootw/ending/graphics/ending/left_unfurl4.png new file mode 100644 index 0000000000000000000000000000000000000000..7aadfea5ad625c97081bf22026d426b909b93606 GIT binary patch literal 939 zcmV;c162HpP)EX>4Tx04R}tkv&MmKpe$i)0P&gI9O1`AwzYtAS&XhRVYG*P%E_RU~>J0CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4RLxj8AiNQwVT3N2zhIPS;0dyl(!fY7Wm)eMXSs%9DK zWJ1j5R>jaO0tjLNeuQOa>T{Bmg6H_UhmWs!ah~OU?$6PiFPIGQiNv!^H!R`};^|FG z=e$oGWo0=}d`>)O&;^MfxvseU#<}FMz%!#pCOuCaB^FCvtaLFe8!GV>aV)QDlrLmm z&U4=4tXAu+eNXDJe?(N?*?f!lM*fw%$FVZTG0000pP)t-s0002v9$;Wjz5hi00Ha`>oSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02oXF02p)u zpQu0}00007bV*G`2jv6`69p^Z%XS$6000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2H zM@dakSAh-}00042Nklyt zp5v|pfvZ5^DiG7T0Q_M@`sV_$>$(gSxdv3+0E)Z-&bSLeO;7dd_d}rKTC>2`UI1I` zxEaVbqH0$$FMt*|^gRUXka@tKqK`z@EbV_RkZDBCZbxWwj)6PQ8djj!JgDJ3pr0bL zVrWb2lhKpDX=Jta^c@35s=ytI3eEy;2mvs{`3k)yfh@hB9`EUR+XXTlOOTsJX4g-U zn?^++SGczhG8{8Zff>$j84qZY363l53vJh!0_Q)eu^qYTWf9D;ulm*--*lK>R1ylb zz2(gVyH%hyjlE&*))R>fwrWg&!14=#qk_9uJ9ImAnAQ2Ty2$Vf`~p{-Mf-_yVmbf- N002ovPDHLkV1hg$q4WR% literal 0 HcmV?d00001 diff --git a/games/ootw/ending/graphics/ending/left_unfurl5.png b/games/ootw/ending/graphics/ending/left_unfurl5.png new file mode 100644 index 0000000000000000000000000000000000000000..75903c1125605c5a22795b7025edc242c4016cbf GIT binary patch literal 12314 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 F0sx_kAmIQ2 diff --git a/games/ootw/ending/graphics/ending/right_unfurl2.png b/games/ootw/ending/graphics/ending/right_unfurl2.png index 21e185bb336060e98cbd957f13b673789aa57595..2a7392e3980f850d58c977ab78cfe1e0a64c6f0c 100644 GIT binary patch delta 658 zcmV;D0&V@(1M&rs7=H)@00027I}ODE00D$)LqkwWLqi~Na&Km7Y-IodD3N`UJxIeq z9K~PLmKLcvSWv_vLv^wsD&nYBC_;r$E41oha{YuR4M~cNqu^R_@ME#+;Nq;SgR3A2 zet@{SIVrkGiT_IqEn+-4?#H`(kGpq((5y1m42%P+W*O;ZLVwKWR>jaO0tjLNeuQOa z>T{Bmg6H_UhmWs!ah~OU?$6PiFPIGQiNv!^H!R`};^|FG=e$oGWo0=}d`>)O&;^Mf zxvseU#<}FMz%!#pCOuCaB^FCvtaLFe8!GV>aV)QDlrLmm&U4=4tXAu+eNXx5hrnowve!M{9q#V!-!tw0 zegN1ua%nHpDvkgE05g##G%o-E0G*G9fB*mh32;bRa{vGsOaK5FbOE2JKp+4B00(qQ zO+^Rg1PcTUGKBUa$B~66e*m3HL_t(Y$L-U>3cw%?1JL$Z|NnzGDMg2Fu$aPN7IxUd zM~YF(Fmg_TM`qjxH~1P_JLxG{!r|-^wG1kQ1;j sT|XFXdHRHC6K_FM!nk7^*lL4<2ZW7#C(RQ+Y5)KL07*qoM6N<$g83yOQ~&?~ delta 373 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 R8jV#Eps#JBRioh;_Fs$NR|^0D literal 0 HcmV?d00001 diff --git a/games/ootw/ending/graphics/ending/right_unfurl5.png b/games/ootw/ending/graphics/ending/right_unfurl5.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb1b303ec0465aaac4e72de7bf735b8f889d4e9 GIT binary patch literal 931 zcmV;U16=%xP)EX>4Tx04R}tkv&MmKpe$i)0P&gI9O1`AwzYtAS&XhRVYG*P%E_RU~>J0CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4RLxj8AiNQwVT3N2zhIPS;0dyl(!fY7Wm)eMXSs%9DK zWJ1j5R>jaO0tjLNeuQOa>T{Bmg6H_UhmWs!ah~OU?$6PiFPIGQiNv!^H!R`};^|FG z=e$oGWo0=}d`>)O&;^MfxvseU#<}FMz%!#pCOuCaB^FCvtaLFe8!GV>aV)QDlrLmm z&U4=4tXAu+eNXDJe?(N?*?f!lM*fw%$FVZTG0000pP)t-s0002v9$;Wjz5hi00Ha`>oSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02oXF02p)u zpQu0}00007bV*G`2jv6{1TZvFCu_<8000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2H zM@dakSAh-}0003_Nklu3=7ahqM|Q@L{{INE6_rsVpxE4-gq`hsNo)sEAj>4 zZd{IGR{vH1Fmo9OaRw{Q{mCDx?vgV z^;uk?p5K|`GNo?-moR!b*(A<5TEIO;d243q;aI1`F2{y#)9B$YdufF^eLO`1lud(A zS!^18eY`D*^jST&{x9eo=B5$rT`Mn#`!U=#~Ek?{q!0@X3*+1 zvAp7Jb?gA83Vp*oza6M<4jN~b+ED5AANbr(Mr+-5>avv4*9J!WU;>yi9O=Gl51=lt z8dtz)?StYeWW&7yvs$d-0SM3=-#A4>;Zw*yJ4-FG zA}H+z-Dhw2yXT$z&KURpcQQuuWv%s_zd6?|Yvo&CVs*7u2=Qp}0001?nyR8c>Z*%+ zgE7!ipUB~*UI2g|&Cl>IQXk?CaznV=xWp8SG93w zXrCbBR3m=ao#zraNz~NHk1H$NlwuXYf@mS_i`~HNi{Ps<{;R(H6-N>NhmXuhGh}M} zK1nVbo}E*l)Yl&by$F7L#uaqA+J>8N<-@xfeIkFfcRb?x!h3IQH!$X`m@11M{OmL;&BE)s+p$ zozflkHIJ`N=^svC_|f8Tx4sqZ^S{43Ka;x`IX0G`>Gyig+pYWXJ@!?Cz~_AYyqeT8 zUa=nh0SQ#p>kJd#`1@kbb$2275|eTzOlhU2cCg#m;JfH@mt~*kL&m1wRZRg zH_o-U1pChD`RL55&YIq+EL*LdA!KM6r@SQ9^58qgPq1W!HewIlCwOK)x}OE*xd`-r zZsrR(4kGomtmu96U9E%u;8Rb_Dt@R{VH))V3tWqDR#5ko*4;ZUZR!hr{al@^w%WeO z-@z}h_OA{PW)esBM#M_{SigS3eQu&GNT8&h?@Ix6->@`bcKkxxUK4qFk&H$gW8F4v zk!{_)+S;f3#l!`(&vYvPH0E2mi^;Snt-rE}Rz;71xmj^K!h8e+Z6f9q{&uj4@BWBEAFl3ev? za1Hbb#2txGW8uDN@jGSTEa8>_njL>7sG&04T>1dovV&V6(qgCbhIDE zEkrXydQ+7d;FA-|`Nd-if+JGHmGvVp&hc#Z2DobKwj3*5o7GC_z2|&0ExqS2QXJWH zecle1=K9TTTIu;0{ji&Sq4GsWWu#N@NL06bzdS%GakwPFWf_BAji1Hljs){Pav)G#dzHP$NZ8$pYh+}K+k}IS_@W5xbQLH)cVqE z4wq!3509exxS2xeXDp=b1cvo`Ec&V?hUkjrO`Y>SKjmIH37*~cE|8@Aw0In7nF`vN zP`Tx6@i9ny1!tDwb^B@LZY48*e-1*tbkDJ6l>ydIQ1Olb<3dS)!{|MahI(&;(okqM z_H@@CLb={fFf$w5;k}(HOJ66UJ>oJ*?O9bqlY9ijk;B5Sy3_r|^5oAOYGn_}nyTQ{ z_0tQ3DR{$G#9Og}p0>-j+GlHDXgM`*pT5gUEXr(@m6!>rWbtm7>?0o?3M?iy5xotw zXIgBm{Xu8(hV8Dmfl~>S*2({4LTX9H1slG^A$Z0=e?jSVz)KoDI}wB5eH?p9C1_L-9U&`~dQ=?XJgKMhRal@QS$(crUWqV$mfw&o))R5qKGhoQ zcVm~*c$5808lu1lu@It?Flr#{*$bB6;-#$ya1P6(;M*NdplkanjsASHw2vQ#15rz4?mRbkSbT15B2dc-ua-q zXp*kl_k~VRNcymN&1OhAgJC)W-J(i1$cvDIpM=VfMQM3EVwKX&_VG=Q*XMx9@3@>C zSyS&~(`mM~F(ce96jaew+c?XMBM9v)w1>WD=nD=D-=a_-#TfQqsytEZ94TWb!TKry zeey-!u5gQ4POo3k$7bW3nykYhJtdGFJ7h(=BsM*Q?JawK-1l5zgF9w|@W&`Y?po<)A!s z6^TCyC8<17gwcqjNt8G~daM@}Pu+$lIIsXBmwOjxNWI%j?lX|Bt5Pu}hBe)Si9f+8 z;vh&D-u0wRu;QC_^UE&xnpclLFe9InFJYVopn(Ul;!;38e3ckrF^&80cLG7(6IsR} zP5@GrxllHu@j*&a+&)uZX3d&qa;dZ%so!w1Hc`<`!!rmbSs5S#+n7I;fmrGgp?zgg;?r zxt+mwZ=89;l$)ASwr(>tz2=1i?@FW5U=~m+4IzAmY_#mCHy=Vv3B2nk;t}v9!q8^E%PCq_ksBShu?Sf86V9mG)6O9O2gtO!yN8+|8R+4 z6Ej8DSVa2ytTVBAC80~)uxB79BAO4Btr?)FWT>nCC~*F466Qx*l=s3UOS&f= zD(7jghN(9b`i<_KDQQVuKm@Q&NpjC~cWu8Na2*4cFN9 zR8tJgBpB)K+^G*as=nbH&Cx5?Cw=?JE%ePoG&6Yt#8BPN{utV)Ps+v5wMn=7KY+p- zRb^i%Y+odPy*K)Rh8%0D#0tmlCfZw87n9TjM7`eA-6S=@2Z8J?St~dFnKJaVUTj6a zo*(#}bsi@{Q}HuAG!7(}OyJq?&$|wvm(kh2n5+Y!^{3OX;(~ZY0QYyFNuj@U(z!Pr zjAmA5mT;@a$N-z(B9*)oh?5pTefwDfTwzG!OIZdfJUVdJ?eN6|^9P^hY;407?d#gq zdh!gj>&7D|r42z9B4o?#6+jX#ua$;zGt4|8bA%xe#iN3q45=oJ*B}F%yNY9}G>j0+ z^NPg?Dh5z!p#{dL5IrqTGy1|e-a{zsQFHDv27!b6}Ly?a?cK{Mn@M z==k}lZ5_#`_|!b?gU0}3vpbU`fsr1YFyLO)!gvg7MFjfAY@3K~ z`a#|nU+83qcuNt9^D|-Hs8=GtlHV%`*}^(C!|=!AjSbVZ6-m%$rb*Ym1B6FDO$Oe1 z+ElOJh^cA(NgMV^TFm0Hl|&`+0bH*b^TYF5HaBlp95)UyhNkUy3{40(Z!nGG6M5`V z?q*rcdy~yB>*UAYpx4== z#n?29t<>5OBk=H#lnZ9}()V4!oLaB&R(6aBO#0&7noR`ccjV?lxFy?uYDohrA4PMP zzbFb5Ml0uHqKkveD6A#R5ZLE{7>@DU=W9TZZRthwaC zl!G!y$Ox;U4-r~QR&W8b6}ETrYI(Q_Jna?@viy2+B{V z38#NeE0^i-N_&nY{E%@wOo}o>H$5qYHQk)4eP3J7Wqdc+T_##=L#w;%LQB#Ot!Nv^E{7MU*Z*P6rjk z(!DZHL2H4m7s8W$4lH(_uLSO60#DJj^&X%tV!!Yun*2sMp+~iwRoc^~#lH0FgVXex zX^dYK#;EsEdG4?bs5#VJ-*9`Emx1!(F!o#sRk7z_UWm$APVb|egxh|vqfXTrwQxzZ zf+X=;Lb$RhmvDlL8(v4o$Atz6;pGMfl%56!bb4bs$sdY-9p=b*NJNE{qDQ0Jj6$R_ z*^*n|4tvqP94vgNS3xNcM-u+vsl;jZ@B`*A<*X!%AHxt~VVY_x=Y&bt#-O<50{4I2(W)e*wYu_A?S_&tl*hQ-MVH_vRk;1p5*=*Ot2k)DX^S)It zt=sdIPsM#-cDc_X&#{?U;}mjYh+d<`5q*fh4mHXyZkiahUAdY1a@f}0wx8CSTJ*h0 z;_h6NPf)XujHJ|&S%;FD0mJArK{B1q`>bLuCSK1P{RF~*du8N0E`_8M#=)vwM>$Ps z{do4#8dlFapBpuPwVaPu+6AmM*rZ(I;cNTv5_69i*VDd?&r%)iS0fel%$Cvx58w__ zSU*f#A0bPVjc(pS^aZGVTGorWyO|J4)lOviV10L%lTN0u%r7UCad(QOnHKk1`6jg) zn#$x{P6qKSZ)^xz=7c;2UYRi|ZmVwJ1}jAiu(~f)rRK}N*SVUpNz4;AP?;%+Lh-lxi!+#;A!nEe2;iP1~? zC1nIGL#LA~iJN;w-sf_I?bv?^h=D$1kJ`t3^_tP zBWK3y0jb>a@4LI2nL1kQY8N|BI1B-Y5m!$|Zc;KV`rO5t%ikRM0NTNc`(`^ha^GdV zI4g&2W0tTGA!!IW+f9ddPtj$rE;!oj$Jx~{EP-uXWMMcI5lr68+DpW2TK2@kpDhE{ z#Y?(P@f8>*-0<;*bGp4K29uWE`Ui&w%YgZlJzXbq#W<6<%8qq$-d5{sd~Pg0>^)>T z!h2*xb>eP0`;3Qk#Vf$*Ngy`{x{87GIca4A{YePd*eLDA>ZA`h>BJ{SSLHq26W8Rr z>UTU*7aO+OZSBQ*au36zHPz`~3@6N#1KTg2tek0g?m5)1>(a)yFxQbuhUUVYyLWtZ zJEf&3QzT5>&~e14eC&&w%8Kyk%s8yYx=QhA8J9*5Fz-?7OA7N*R3}^B5MVy@I>r+T zby%@Gh%AvKn*XFc+AP4~aBjN!!)>}!%Db~t%~?uP4qf4g&N!*4@Wl;n$#FA9 zeU;~K9@h z7pG}z0N>YbK-c@QKw#<@_d+onXtBg`XlHJF@NJSKK9lUjya6<#>4#y1^8-~j&=UFT zBz+j|a@t3da?3ys+$n#Y2nuG$SoMOmfT#NpnH*Q_sQm+i6U>6F63wRX<(QoMbsW6d zjc5%w8xupPL~{+#pm`yLpoqDx&q9h!C%`acqK}(}6)P5#MnAeaj-f8hYMG@RB)pTNXO`*sxXZLO8EjqF)3bu;iAR3wimy9eVFlw1{pwo-;cIdZo zB{eRpI9q3Oa>rJ>{Td2S+R|`^y>G8w#=h>mv3eF4_$USq?C%~>M!WLM#?Ix-1yiSV z?coqr1EajxwODiwSza|)kag~=&yP^E`KC2#46H(AaTpHgq=D-n-vVEU48}o&oR&_@ z9QUcl@q;UzSy~CPhQ2%_t7>PdC}cMz+m|b``5HBx)?z-t#x16g)<`V@9?rp4kC}Qi z#2h!K?zdSfjm)?J1c0+#6ffh%!n?`tC_L`7Op@u{@A9Q3$3SL$rU=U=;VvL=;E8`Sym+!UGV?Ux zNMpC>jhVQOj;YQqfTJptmU9bRFU!Hn!LBO5sI>S}?$kO%An%}N)NrrBgk@*wN_MN_t-6_ppdC(s)V zH?Xp)3`tlpspF64=wyRZ6>3J12J?(EJ5dW->wJlU2dXrZ!}d#MJ=^^m7RuJ@TrB7} z1U2q1NOXmy2hbk}JyI{7R-H#vjZbn5R9f)i8%oY4&3LdB8}Q0l#|OW6%skICN^cig zjP*dborD8mfR--37ggI$;#UQiS+Er2AYI{;1yS*G%jAg! zFFHVT=(ggs8q*1kInttxOtw8mi86tKHi1g+%(9Q6Nw9T!0$`v~sFFb)(pGsI7BG$B zP5C3gfyW0nG<)`z%rTK_kcCh9lBqLjnQC+1T#+=vv5c@LXzH}WF7XyN7$YXjiVt0; zkv*PQuF8q}@nSMX)=2{Z933%ZT1A)N>0CDiC2}SEo=holh`An4HQhuHxfNBJz!c_V z`?g`HL_v6;AcdVE(yf}2<_js?Arkg_OB>%lqGXPt`G{$clyCsuSV;;vHo;5G_m}PbpxnoE%JO7PuYy0M@ zeZf%U@w#6ym+Li?cC~&TJZZWNqAB)7frI@o@r_;c! zIZYIxFXJS>w%Z4*s?eIuswCRSjrkV@9dbAa6&~LOYGNt*H|sSKFWcJ%559TU2V}fY zPaXTf(CeMAzO?E=-h`>@P?FK%%*&_nu2yHYO)s|OaNh8_&3h1Z$kuo_z9+t3kLM;g z$&^+#)GLy*e;6H`etc?Lum)|M8@60PbvX1SWTIB80RM?QnB2bPu{#-&V5AgqyG)al ze$tja-U(=Uu;gX*E{v(7WN0aFE@U9?{3{)N0+>}?ydd^&w$h~D_}+qdc!~7_pe^b7 zU;;~4^|sta5o4{>fHwJRFVb;!hD8$=%oLj^DrnJiISi&-u4ru576!&avv&BZyZ> zmn$M5?Vyj7lE7did7y3!h)~)4*zv*bS>c|6rSAg;QCx{Wd_Y%@kE@X#pYL1TVF8V` z=FaK03^YBa#FbO4->)TWTxj6M|NLx>DGyj6$eLl$M*}e%XG&4Frp3cv6>Y#I(UV#8 zJYPwW9$$rSsLXJUOJ6vZW{pVH(V!obtlD|2d!IhuQkBPoFC2@F`7v>;5waT3Flv9Q zZGWJp>?8PnMG|MlDD!UadX<#YxikS+U6a2tHleRcgPHT_a!iU}F}|34a$xV!(5n=J zZ+p&;;pgTOwd@WFbZCPqHRG&4LBbku8N|q+N|UW+c2Mf)v0(-x7lNH9fsCIN={Mxd zkdG4?yNgyr8jlzoG9xNuj~VEoZKK%EH@?3QRnJS5lJJx33+Flw@=uPJv)QWO&Ujvi z^(DGlg7Iq}hy>5!S#2V#eF(8KszB^YNsZLwgR7uSCOqko`gWX zJeC}o#GWdmb$`!kb0e?S*(1Sr$VxW~kximG@o|Swutv+S8?gyf_6lEUW|f1|9E5)zG%I!wOtvo{AeNO z{#U?rn!L3_6^1i47lNA$opL*PA=+sx1^RbF;9+QPV_H|Z^0cj=AG@~w&V`rA-|%9;W5*hQ<$0I0e6_1OTOL?6>_^D4zxj+ zMIJvIFdj#BIb#<%l8MhYeAJ63diRnxy^ILfYoPM-A&J73C%1Wf#qs0e(Z1f~po{aB zCW48FGEL&O)Z>OmiJKA3GX<^THd#;QUA(2C(%wcZ(i$829!q1EwQtKA=#Mftr?Lrm z>z!X+Y!jz{UnQU1TfI!6$q}W8SE3WDu5gZw)@h*e=B<#il%u1}Zk&h>N6=!#Pu` zobZU3^aLxsI-aW#!Rul*zi~l*VCBIFG;_XCd%kwj<2z!vx>vtzcQt!@^vSy%Ofo8| zbVaovQS`*?-jUan_5>lIC#Lg;%GW%*%sCcjuONJ&FrAFi{zb)Mb@mn3=L?TlPuzp= z0sz1W2L%OPH3fx#JPk!X1I-Ogl~(PMrR%eLmqA%Bc2~ETNx`!YbbF=Dh(kV7m#bmR z8gUVEi%=~tzG%tJZ68{@wX{-M5nchp2?}Xx73XYIjlI&qao;!>8jcMhC<1P~<&l;iwsG1Pom}JX{&+p`%h*H?UlzfBY;V1$ zDEA8C%BGgaMu!d^94@XCpe%erSW!Upw8thRXKChPZA>#*4h|0RpP>eB)n(OiA#-G`V=31BV)K^ z>gP+pu;bdi`+TwzFP8bwsl9m(u!jZS&DZKP5=~I7EC?g-Gk1%S1$Qrl0J9CQ3`ashKF&@q9uhv%%s+W0P~We+`ItdJA;|mE%y+ePK?<%2 zI7o=Q zD*2!~|4?w<{z>nFgz>4N8bYY~pa6UVV6YeuSb#@BobPve)Tox$pVBTKe|Qn)Pd*=r z8y`O}n9teyZxS9zC9l8q{Zk1KL)4!H`1Ii(uAT@eT*(XWf@Jw!shg9h$L~5lJ>b_} zKkasc+47-``lKm7I6mY;r=P;`ZQUMp2olxDuRR|4h=b%06y z{3;F=0NaRxZFr!f5Mdr6h^;M;m@r(JM_f?Y7Qzn|66WWJ{YItc;(>&?K;hR^C~{s0 z6b}SuBPMPO7vm8W6+=;oKp{L38<-G}s2I#fNRVF;&MzqZ8-)(S0aXbQr{Ar*rh=iU z#KnbR{7?ZXj|dcO%Ok`uB*Fu+<+tU5@N*Y*a=L2L%mTdNzj}0? zAV^zRgtIiWrh|*8&tC(E4$g1`B;?v@{385f{QM%q;zA;#VuE4*&Li9c5ps77rUP#*I|)BO$Oyy$aQU?n1A-8<|3hhfJ2b32t!v_ zCu!zuTS3>9KT8TE^+&NtXu3jw3jPGcVb}HcN5#oQ?D&2*rTG38_`fh2*t>eW{QvR% z1^tsn4uSM`Mcmgx=-4>Ip~!#D^UuJ4GU=n%Iu9hmSM9%<)c=K(`jxJ#C|Os8?{E4I z;O@U#zZN7Xho7zjfqpIm5)kMw_j^FR;JnmlikDB7U>N^z~$^vIe>~Ys(q{vPOm zB>w*c_nZ75MfTr`{|@^lt>EhBi&}*2kviTk|5E)w0sdmpbb!KLJY4^k>AypMx#hQg z6lL?TKGgn<+V1)O-0%NLb5uzFH(!60&;OTj{w@Fh$6fz%*T3a~e+&Gd?D~(p z{w)vuTj2j>*Z-Ki@cue6fV-f6xO$_`0}MZDoukeYz`B}-N~r59gSEAG=au3GpvXEm zHek?WqF%fY!esy&P!Ojju$>6%FntA{LWHr}sAoNob z>f8c=ja1W8!d}O~$KV%vDj->k>Y_#}-9;+6I$z%|0{*x$0eL$h?LpUfF(#ozH&N$L zchwZ-48?{Mr{ZhTnQ$<5b2@m&(biu!$DjA*i4DTiayjs_l*UkIp+p6H3QkBFuPYb#~F}HQU z{}Ok7H;$oP=|$mQ;`C)e2s6bUD+?y90Zc>~)F(@N0Og5cDgi+gxz~A^AWKI z+sTsEwq;?Y^Uu%yb0}Dvjue{3h##=>a+T{47T;LT8K#3*wC*_lT(qKf00!&Me88CG6T*{-6*>1p=U^q^(#j IZyol30Mn>gfdBvi delta 409 zcmV;K0cQT6VyXm?BaPNfOwJHYmk=xL_AMNb`~nhu zh|%^8f5>}yL`L8@v4?R3HLNqCw(R-m9_mAUcQifT2GWYwcW+nhOHEd&Z(DyoHbvgy z0f{bZ*XJ9kOBy`CxZvLkv4I>Q3-p)+qAZwDKfd6ZN6XU!^~}i5X`YFxW&(OM+SWO4 zxPdhIVTCn6$RD>j;?VO7#kyjEjCf%6;$zYRe@{qU>HTPj4Rhv#StC{l)?U;7Z(b(~ zrS7=EvSLmMsZ|=#pTF^b?;#mq#W1gXw`}qPfn~`G&vT$o`JtR!RQ?Rdo|75Ei<|^k zXoJBZo}rFfNUlh3w`Tlf=00000NkvXXu0mjf D`WwOJ diff --git a/graphics/hgr/tiny_triangles/Makefile b/graphics/hgr/tiny_triangles/Makefile index 91193d8c..5ce2145b 100644 --- a/graphics/hgr/tiny_triangles/Makefile +++ b/graphics/hgr/tiny_triangles/Makefile @@ -7,15 +7,18 @@ EMPTY_DISK = ../../../empty_disk/empty.dsk all: triangles.dsk -triangles.dsk: HELLO TINY_TRIANGLES XOR MOD9 MOD9_64 WRITING MOVE_RIGHT +triangles.dsk: HELLO TINY_TRIANGLES XOR MOD9 MOD9_64 WRITING MOVE_RIGHT \ + SIER_HGR RAINBOW_SQUARES cp $(EMPTY_DISK) triangles.dsk $(DOS33) -y triangles.dsk SAVE A HELLO $(DOS33) -y triangles.dsk BSAVE -a 0x070 TINY_TRIANGLES $(DOS33) -y triangles.dsk BSAVE -a 0x300 XOR - $(DOS33) -y triangles.dsk BSAVE -a 0x300 MOD9 + $(DOS33) -y triangles.dsk BSAVE -a 0x3F5 MOD9 $(DOS33) -y triangles.dsk BSAVE -a 0x300 MOD9_64 $(DOS33) -y triangles.dsk BSAVE -a 0x300 WRITING $(DOS33) -y triangles.dsk BSAVE -a 0x300 MOVE_RIGHT + $(DOS33) -y triangles.dsk BSAVE -a 0x300 SIER_HGR + $(DOS33) -y triangles.dsk BSAVE -a 0x300 RAINBOW_SQUARES ### @@ -41,11 +44,29 @@ xor.o: xor.s ### MOD9: mod9.o - ld65 -o MOD9 mod9.o -C $(LINKER_SCRIPTS)/apple2_300.inc + ld65 -o MOD9 mod9.o -C $(LINKER_SCRIPTS)/apple2_3f5.inc mod9.o: mod9.s ca65 -o mod9.o mod9.s -l mod9.lst +### + +SIER_HGR: sier_hgr.o + ld65 -o SIER_HGR sier_hgr.o -C $(LINKER_SCRIPTS)/apple2_300.inc + +sier_hgr.o: sier_hgr.s + ca65 -o sier_hgr.o sier_hgr.s -l sier_hgr.lst + +### + +RAINBOW_SQUARES: rainbow_squares.o + ld65 -o RAINBOW_SQUARES rainbow_squares.o -C $(LINKER_SCRIPTS)/apple2_3f5.inc + +rainbow_squares.o: rainbow_squares.s + ca65 -o rainbow_squares.o rainbow_squares.s -l rainbow_squares.lst + + + ### MOD9_64: mod9_64.o @@ -77,4 +98,4 @@ move_right.o: move_right.s clean: rm -f *~ *.o *.lst HELLO TINY_TRIANGLES XOR MOD9 MOD9_64 WRITING \ - MOVE_RIGHT + MOVE_RIGHT SIER_HGR RAINBOW_SQUARES diff --git a/graphics/hgr/tiny_triangles/mod9.s b/graphics/hgr/tiny_triangles/mod9.s index 1337ee1d..a6ca50f9 100644 --- a/graphics/hgr/tiny_triangles/mod9.s +++ b/graphics/hgr/tiny_triangles/mod9.s @@ -174,3 +174,4 @@ m9_loop: m9_done: rts + diff --git a/graphics/hgr/tiny_triangles/rainbow_squares.s b/graphics/hgr/tiny_triangles/rainbow_squares.s new file mode 100644 index 00000000..71c2f190 --- /dev/null +++ b/graphics/hgr/tiny_triangles/rainbow_squares.s @@ -0,0 +1,219 @@ +; this was a weird effect that turns out to be because we're linking +; at the wrong address so it's just the effect when +; TL/TH holds the values $A0 $A0 + + +; sierpinski-like demo +; based on the code from Hellmood's Memories demo + +; by Vince `deater` Weaver + +; the simple sierpinski you more or less just plot +; X AND Y + +; Hellmood's you plot something more or less like +; COLOR = ( (Y-(X*T)) & (X+(Y*T) ) & 0xf0 +; where T is an incrementing frame value + +; to get speed on 6502/Apple II we change the multiplies to +; a series of 16-bit 8.8 fixed point adds + +; TODO: +; HPLOT timing +; MOVERIGHT timing +; MOVERIGHT MOVEDOWN timing +; LOOKUP TABLE timing + + +; zero page + +HGR_BITS = $1C +GBASH = $27 +MASK = $2E +COLOR = $30 +HGR_X = $E0 +HGR_Y = $E2 +HGR_COLOR = $E4 + +;XX = $F7 +XX_TH = $F8 +XX_TL = $F9 +;YY = $FA +YY_TH = $FB +YY_TL = $FC +;T_L = $FD +;T_H = $FE +SAVED = $FF + +; Soft switches +FULLGR = $C052 +PAGE1 = $C054 +PAGE2 = $C055 +LORES = $C056 ; Enable LORES graphics + +; ROM routines +HGR = $F3E2 +HGR2 = $F3D8 +HPLOT0 = $F457 +PLOT1 = $F80E ;; PLOT at (GBASL),Y (need MASK to be $0f or $f0) +GBASCALC= $F847 ;; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear) +SETGR = $FB40 + + +;.zeropage +;.globalzp T_L,T_H + + ;================================ + ; Clear screen and setup graphics + ;================================ +sier: + jsr HGR2 ; set FULLGR, sets A=0 + + +; lda #0 ; start with multiplier 0 +; sta T_L +; sta T_H + +sier_outer: + + ldy #0 ; YY starts at 0 + + sty YY_TL + sty YY_TH + +sier_yloop: + + ; calc YY_T (8.8 fixed point add) + ; save space by skipping clc as it's only a slight variation w/o +; clc + lda YY_TL + adc T_L + sta YY_TL + lda YY_TH + adc T_H + sta YY_TH + +; txa ; YY ; plot call needs Y/2 +; lsr + +; php + +; bcc even_mask +; ldy #$f0 +; .byte $2C ; bit hack +;even_mask: +; ldy #$0f +; sty MASK + +; jsr GBASCALC ; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear) + +; lda GBASH +;draw_page_smc: +; adc #0 +; sta GBASH ; adjust for PAGE1/PAGE2 ($400/$800) + +; plp +; jsr $f806 ; trick to calculate MASK by jumping + ; into middle of PLOT routine + + ; reset XX to 0 + + ldx #0 ; XX + stx XX_TL + stx XX_TH + +sier_xloop: + + ; want (YY-(XX*T)) & (XX+(YY*T) + + + ; SAVED = XX+(Y*T) +; clc + txa ; XX + adc YY_TH + sta SAVED + + + ; calc XX*T +; clc + lda XX_TL + adc T_L + sta XX_TL + lda XX_TH + adc T_H + sta XX_TH + + + ; calc (YY-X_T) + tya ; lda YY + sec + sbc XX_TH + + ; want (YY-(XX*T)) & (XX+(YY*T) + + and SAVED + + and #$f0 + + beq white +black: + lda #00 ; black + .byte $2C ; bit trick +white: + lda #$ff ; green + sta HGR_COLOR + + + tya ; YY in A + ldy #0 + ; XX in X + + jsr HPLOT0 ; plot at (Y,X), (A) + ; at begin, stores A to HGR_Y + ; X to HGR_X and Y to HGR_X+1 + ; destroys X,Y,A + ; Y is XX/7 + + + ldy HGR_Y + ldx HGR_X + + inx ; XX + cpx #255 + bne sier_xloop + + iny ; YY + cpy #192 + bne sier_yloop + + ; inc T +; clc + lda T_L +blah_smc: + adc #1 + sta T_L + bcc no_carry + inc T_H +no_carry: + + ; speed up the zoom as it goes + inc blah_smc+1 + + + ; x is 48 +;flip_pages: +; lda draw_page_smc+1 ; DRAW_PAGE +; beq done_page +; inx +;done_page: + ; X=48 ($30) PAGE1=$C054-$30=$C024 +; ldy $C024,X ; set display page to PAGE1 or PAGE2 + +; eor #$4 ; flip draw page between $400/$800 +; sta draw_page_smc+1 ; DRAW_PAGE + + jmp sier_outer ; what can we branch on? + +T_L: .byte $00 +T_H: .byte $00 + diff --git a/graphics/hgr/tiny_triangles/sier_hgr.s b/graphics/hgr/tiny_triangles/sier_hgr.s new file mode 100644 index 00000000..009dee31 --- /dev/null +++ b/graphics/hgr/tiny_triangles/sier_hgr.s @@ -0,0 +1,214 @@ +; sierpinski-like demo +; based on the code from Hellmood's Memories demo + +; by Vince `deater` Weaver + +; the simple sierpinski you more or less just plot +; X AND Y + +; Hellmood's you plot something more or less like +; COLOR = ( (Y-(X*T)) & (X+(Y*T) ) & 0xf0 +; where T is an incrementing frame value + +; to get speed on 6502/Apple II we change the multiplies to +; a series of 16-bit 8.8 fixed point adds + +; TODO: +; HPLOT timing +; MOVERIGHT timing +; MOVERIGHT MOVEDOWN timing +; LOOKUP TABLE timing + + +; zero page + +HGR_BITS = $1C +GBASH = $27 +MASK = $2E +COLOR = $30 +HGR_X = $E0 +HGR_Y = $E2 +HGR_COLOR = $E4 + +;XX = $F7 +XX_TH = $F8 +XX_TL = $F9 +;YY = $FA +YY_TH = $FB +YY_TL = $FC +;T_L = $FD +;T_H = $FE +SAVED = $FF + +; Soft switches +FULLGR = $C052 +PAGE1 = $C054 +PAGE2 = $C055 +LORES = $C056 ; Enable LORES graphics + +; ROM routines +HGR = $F3E2 +HGR2 = $F3D8 +HPLOT0 = $F457 +PLOT1 = $F80E ;; PLOT at (GBASL),Y (need MASK to be $0f or $f0) +GBASCALC= $F847 ;; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear) +SETGR = $FB40 + + +;.zeropage +;.globalzp T_L,T_H + + ;================================ + ; Clear screen and setup graphics + ;================================ +sier: + jsr HGR2 ; set FULLGR, sets A=0 + + +; lda #0 ; start with multiplier 0 +; sta T_L +; sta T_H + +sier_outer: + + ldy #0 ; YY starts at 0 + + sty YY_TL + sty YY_TH + +sier_yloop: + + ; calc YY_T (8.8 fixed point add) + ; save space by skipping clc as it's only a slight variation w/o +; clc + lda YY_TL + adc T_L + sta YY_TL + lda YY_TH + adc T_H + sta YY_TH + +; txa ; YY ; plot call needs Y/2 +; lsr + +; php + +; bcc even_mask +; ldy #$f0 +; .byte $2C ; bit hack +;even_mask: +; ldy #$0f +; sty MASK + +; jsr GBASCALC ; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear) + +; lda GBASH +;draw_page_smc: +; adc #0 +; sta GBASH ; adjust for PAGE1/PAGE2 ($400/$800) + +; plp +; jsr $f806 ; trick to calculate MASK by jumping + ; into middle of PLOT routine + + ; reset XX to 0 + + ldx #0 ; XX + stx XX_TL + stx XX_TH + +sier_xloop: + + ; want (YY-(XX*T)) & (XX+(YY*T) + + + ; SAVED = XX+(Y*T) +; clc + txa ; XX + adc YY_TH + sta SAVED + + + ; calc XX*T +; clc + lda XX_TL + adc T_L + sta XX_TL + lda XX_TH + adc T_H + sta XX_TH + + + ; calc (YY-X_T) + tya ; lda YY + sec + sbc XX_TH + + ; want (YY-(XX*T)) & (XX+(YY*T) + + and SAVED + + and #$f0 + + beq white +black: + lda #00 ; black + .byte $2C ; bit trick +white: + lda #$ff ; green + sta HGR_COLOR + + + tya ; YY in A + ldy #0 + ; XX in X + + jsr HPLOT0 ; plot at (Y,X), (A) + ; at begin, stores A to HGR_Y + ; X to HGR_X and Y to HGR_X+1 + ; destroys X,Y,A + ; Y is XX/7 + + + ldy HGR_Y + ldx HGR_X + + inx ; XX + cpx #255 + bne sier_xloop + + iny ; YY + cpy #192 + bne sier_yloop + + ; inc T +; clc + lda T_L +blah_smc: + adc #1 + sta T_L + bcc no_carry + inc T_H +no_carry: + + ; speed up the zoom as it goes + inc blah_smc+1 + + + ; x is 48 +;flip_pages: +; lda draw_page_smc+1 ; DRAW_PAGE +; beq done_page +; inx +;done_page: + ; X=48 ($30) PAGE1=$C054-$30=$C024 +; ldy $C024,X ; set display page to PAGE1 or PAGE2 + +; eor #$4 ; flip draw page between $400/$800 +; sta draw_page_smc+1 ; DRAW_PAGE + + jmp sier_outer ; what can we branch on? + +T_L: .byte $00 +T_H: .byte $00 +