From 8dc649c28849f07a4c3fc70e33ced43f2d9bdf35 Mon Sep 17 00:00:00 2001 From: Antoine Vignau <34219772+antoinevignau@users.noreply.github.com> Date: Mon, 8 Jun 2020 23:08:57 +0200 Subject: [PATCH] All files belong to Callapple now --- source/twilight/nm/World3 | Bin 0 -> 32768 bytes source/twilight/nm/World4 | Bin 0 -> 32768 bytes source/twilight/nm/World5 | Bin 0 -> 32768 bytes source/twilight/nm/twilight/Boxes.Macs | 289 ++++++++ source/twilight/nm/twilight/Clocks.Macs | Bin 0 -> 4280 bytes source/twilight/nm/twilight/DataField.Rez | 60 ++ source/twilight/nm/twilight/Fireworks.Macs | 130 ++++ source/twilight/nm/twilight/LED.MSG | Bin 0 -> 3024 bytes source/twilight/nm/twilight/LEDMsg.Asm | Bin 0 -> 14261 bytes source/twilight/nm/twilight/LedMsg.Macs | Bin 0 -> 3786 bytes source/twilight/nm/twilight/MODERN.ART | Bin 0 -> 1890 bytes source/twilight/nm/twilight/NJM.Twlt.Icon.S | 615 +++++++++++++++++ source/twilight/nm/twilight/Persp.Macs | 101 +++ source/twilight/nm/twilight/SNF.Macs | Bin 0 -> 3655 bytes source/twilight/nm/twilight/Tunnel.Macs | 58 ++ source/twilight/nm/twilight/asm.getset2 | 28 + source/twilight/nm/twilight/boxes.asm | 581 ++++++++++++++++ source/twilight/nm/twilight/boxes.rez | 454 +++++++++++++ source/twilight/nm/twilight/clocks.asm | Bin 0 -> 22340 bytes source/twilight/nm/twilight/clocks.rez | Bin 0 -> 7233 bytes source/twilight/nm/twilight/datactl.info | Bin 0 -> 9304 bytes source/twilight/nm/twilight/datactleg.asm | 156 +++++ source/twilight/nm/twilight/datactleg.rez | 446 +++++++++++++ source/twilight/nm/twilight/fireworks.asm | Bin 0 -> 22908 bytes source/twilight/nm/twilight/fireworks.rez | 95 +++ source/twilight/nm/twilight/go | Bin 0 -> 1592 bytes source/twilight/nm/twilight/gorez | 50 ++ source/twilight/nm/twilight/imp.macros.s | Bin 0 -> 2900 bytes source/twilight/nm/twilight/impulse.rez | Bin 0 -> 16699 bytes source/twilight/nm/twilight/impulse.s | Bin 0 -> 11904 bytes source/twilight/nm/twilight/ledmsg.rez | Bin 0 -> 4378 bytes source/twilight/nm/twilight/makemacs | 42 ++ source/twilight/nm/twilight/makepdp.asm | 88 +++ source/twilight/nm/twilight/perspective.asm | 170 +++++ source/twilight/nm/twilight/perspective.rez | 138 ++++ source/twilight/nm/twilight/snf.asm | Bin 0 -> 24631 bytes source/twilight/nm/twilight/snf.rez | Bin 0 -> 25757 bytes source/twilight/nm/twilight/t2common.equ | 198 ++++++ source/twilight/nm/twilight/t2common.rez | 129 ++++ source/twilight/nm/twilight/tg.kludge | Bin 0 -> 3467 bytes source/twilight/nm/twilight/tg.w.newtime | Bin 0 -> 3476 bytes source/twilight/nm/twilight/tg.waitw0 | Bin 0 -> 3474 bytes source/twilight/nm/twilight/tunneldump | Bin 0 -> 5952 bytes source/twilight/nm/twilight/tunnelgame.asm | 704 ++++++++++++++++++++ source/twilight/nm/twilight/tunnelgame.rez | Bin 0 -> 7970 bytes source/twilight/nm/twilight/unrez | 7 + 46 files changed, 4539 insertions(+) create mode 100644 source/twilight/nm/World3 create mode 100644 source/twilight/nm/World4 create mode 100644 source/twilight/nm/World5 create mode 100644 source/twilight/nm/twilight/Boxes.Macs create mode 100644 source/twilight/nm/twilight/Clocks.Macs create mode 100644 source/twilight/nm/twilight/DataField.Rez create mode 100644 source/twilight/nm/twilight/Fireworks.Macs create mode 100644 source/twilight/nm/twilight/LED.MSG create mode 100644 source/twilight/nm/twilight/LEDMsg.Asm create mode 100644 source/twilight/nm/twilight/LedMsg.Macs create mode 100644 source/twilight/nm/twilight/MODERN.ART create mode 100644 source/twilight/nm/twilight/NJM.Twlt.Icon.S create mode 100644 source/twilight/nm/twilight/Persp.Macs create mode 100644 source/twilight/nm/twilight/SNF.Macs create mode 100644 source/twilight/nm/twilight/Tunnel.Macs create mode 100644 source/twilight/nm/twilight/asm.getset2 create mode 100644 source/twilight/nm/twilight/boxes.asm create mode 100644 source/twilight/nm/twilight/boxes.rez create mode 100644 source/twilight/nm/twilight/clocks.asm create mode 100644 source/twilight/nm/twilight/clocks.rez create mode 100644 source/twilight/nm/twilight/datactl.info create mode 100644 source/twilight/nm/twilight/datactleg.asm create mode 100644 source/twilight/nm/twilight/datactleg.rez create mode 100644 source/twilight/nm/twilight/fireworks.asm create mode 100644 source/twilight/nm/twilight/fireworks.rez create mode 100644 source/twilight/nm/twilight/go create mode 100644 source/twilight/nm/twilight/gorez create mode 100644 source/twilight/nm/twilight/imp.macros.s create mode 100644 source/twilight/nm/twilight/impulse.rez create mode 100644 source/twilight/nm/twilight/impulse.s create mode 100644 source/twilight/nm/twilight/ledmsg.rez create mode 100644 source/twilight/nm/twilight/makemacs create mode 100644 source/twilight/nm/twilight/makepdp.asm create mode 100644 source/twilight/nm/twilight/perspective.asm create mode 100644 source/twilight/nm/twilight/perspective.rez create mode 100644 source/twilight/nm/twilight/snf.asm create mode 100644 source/twilight/nm/twilight/snf.rez create mode 100644 source/twilight/nm/twilight/t2common.equ create mode 100644 source/twilight/nm/twilight/t2common.rez create mode 100644 source/twilight/nm/twilight/tg.kludge create mode 100644 source/twilight/nm/twilight/tg.w.newtime create mode 100644 source/twilight/nm/twilight/tg.waitw0 create mode 100644 source/twilight/nm/twilight/tunneldump create mode 100644 source/twilight/nm/twilight/tunnelgame.asm create mode 100644 source/twilight/nm/twilight/tunnelgame.rez create mode 100644 source/twilight/nm/twilight/unrez diff --git a/source/twilight/nm/World3 b/source/twilight/nm/World3 new file mode 100644 index 0000000000000000000000000000000000000000..edc7de7fe6ac8798b9a632ff234e2888c5d65623 GIT binary patch literal 32768 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 Qzu%+t`IF(l;9~^-10y&G=Kufz literal 0 HcmV?d00001 diff --git a/source/twilight/nm/World5 b/source/twilight/nm/World5 new file mode 100644 index 0000000000000000000000000000000000000000..9259ec04301f688bca61bb75d6fd443257a8ded2 GIT binary patch literal 32768 zcmeI2UyK{Y9mf~02_%Tn)glW&w1RW3pghGM8}6uD34DkPEmeBXYSEULQ=(I?ii#3e zMutj6ccOPiLb$oQx179wbT; zzVltgQ+<06Xyy{{dc3p0?|y#2-^}dJ_Ile}BA9VYCDL)Tn(#V*(d(_|ms`ztN3=xq=Tt9( zwz#HKG4!Mm-LM_hY9(2Lj|Be5r%!j?85k(F;mfe53vtbbuzIJ}X^D2HDZvJATht!a z^-N~`(L~7=;ersgb$N0dqdt9FT5uN-YltL-A{-vHTG$7_C9j9LE7huzoUs#n0@s0K z0$FiiR2?V3$bvDQguYNFO4ti@mr|o6mR!n^nm(PR!`x@DCl-_B@lNYvq40ptCNmGn z_Hpvl6U)DwHj>R&*b6_QeDFLGBq$&O$wlIXwbz=Pv2iz=4+f^dHdo;>N==nxjyZ6|7Ad5cx^gC{KAR$ao zH}1Xi;v8eFswcg==o~xF_W$~c%l4`dITh0}S3kM(N54_FP1AOc95MI%qp3`s`q<3J zQw+wbFE^K)pUue*nmx>mAUMe1J72TR_gA2c`}`Ns)nHlMp8~(lP*_ zQqULKGf$y|^Zg?6YtEwX;4T_(?c%`=ef|{mvAmgLDcNQKe!KT_cz|&oHc}f|%V;7+ zcXY^yyO+qk)MwjlL*K~$)1#wScGU8VR?Pawx}o@qw6VeO0Q6Zj!h+vYf%M&hX@lvf z2KrdqpGxJ6dCOs=L~y&Q4bJ!7ZWu@r1Af_4@GrU*=)0TZ5Bi|iw>I%ZU`h1KV8~Hmz$785Fb0CrzBfoJxz<5uZ+wd>DAMxjy z&zy$7U;@7pKX^F5RbQ6w>CVWeqXU0z_a5}g{MgJ7N-g9E#@T(rBm_bqgY)4= zQUpiI?iPKHStP6b@UR))|L`9co+xadFw;DS0McP7gY#|o-q->X_!!yPqEAkw5r25Z z5fsLIi&kF<9T*i0H%gZ2oR;6VTh-uv<1Q9DPLPo;`nWH>M*40pzOnD87KVzg{Y$07 zP41Wx)WP|-dykE~OEZ$e7JZdf)S-XwbbEoPX>$`P+^nq+fO7jtW$rP{aSAvt&gVmH z0qY;P=mUcW*~R_aeOM#9f$h@dT<#6JpF_cg(DqR7)$Eg$zbuPPkE`G|GN_ReSncy! z-=m5u)qX!Phh_(TVHu zGpULE{B{4$Rpk5gan!(MPwnuRI($4v7Fj2TRqwRnPmgVLlIy07d$VPx>j z7jM(q7-rl-O~>K_D`et)zWWd!;x1v4#V|5P2G;TK;j+#$*p~vog#jii;(T)!S0EQ; z4EEH~L*Y0SQqwrsj~E0rvAAX!kzwrRUdUweC1aqDy)Hspw4oxdSJ#ip7&&AD>EdhXU` zRq$m~68+egl8A&D#!)E?!n(azktD&QJS^!}*AK@f zuo(S|@Cq>lye00xFG6YmUc4d!zse^x;gaih#aq*Ql9D+@E4qH@do z1jra&PgeEuu!eUHq&!GkbiK~vw0xB!Y9(7@fWZhDSLqwN5k|m(BT=m(Swk#eR+C=O zMe@j(BVJ4dlyHdI*jrC9O=D~^x>rp50)|E!y|?M2ML0tPou5;q?d+d2{ETxFY)o~ zpZT8HEevNs=~MiMBQRWR6@QA~a0G^Ht>RDd8;-zmtyTOfe!~$MuCCg9D(6ltN2s=h9fXsYZZTr-*5zmYpvo>@f(i7aIIDR zDSpEd7_PO7zt19KoL*`6ahs*5l{pa0YyL&Py`eKML-cy z1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eK zML-cy1QdbKB=E}rSv2h~EpdDDwg*SDyT3Z}`0l57e{c7(J>@+=yX(!pm+lh#KGT@0 I{M-=uABDfp_5c6? literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/Boxes.Macs b/source/twilight/nm/twilight/Boxes.Macs new file mode 100644 index 0000000..f4b6f82 --- /dev/null +++ b/source/twilight/nm/twilight/Boxes.Macs @@ -0,0 +1,289 @@ + MACRO +&lab _GetCtlHandleFromID +&lab ldx #$3010 + jsl $E10000 + MEND + MACRO +&lab _GetCtlValue +&lab ldx #$1A10 + jsl $E10000 + MEND + MACRO +&lab _NewControl2 +&lab ldx #$3110 + jsl $E10000 + MEND + MACRO +&lab _SetCtlValue +&lab ldx #$1910 + jsl $E10000 + MEND + MACRO +&lab _UDivide +&lab ldx #$0B0B + jsl $E10000 + MEND + MACRO +&lab _MMStartUp +&lab ldx #$0202 + jsl $E10000 + MEND + MACRO +&lab _NewHandle +&lab ldx #$0902 + jsl $E10000 + MEND + MACRO +&lab _ReadAsciiTime +&lab ldx #$0F03 + jsl $E10000 + MEND + MACRO +&lab _ReadTimeHex +&lab ldx #$0D03 + jsl $E10000 + MEND + MACRO +&LAB JCC &BP +&LAB BCS *+5 + BRL &BP + MEND + MACRO +&LAB JEQ &BP +&LAB BNE *+5 + BRL &BP + MEND + MACRO +&LAB LONG &A,&B + LCLB &I + LCLB &M +&A AMID &A,1,1 +&M SETB ("&A"="M").OR.("&A"="m") +&I SETB ("&A"="I").OR.("&A"="i") + AIF C:&B=0,.A +&B AMID &B,1,1 +&M SETB ("&B"="M").OR.("&B"="m").OR.&M +&I SETB ("&B"="I").OR.("&B"="i").OR.&I +.A +&LAB REP #&M*32+&I*16 + AIF .NOT.&M,.B + LONGA ON +.B + AIF .NOT.&I,.C + LONGI ON +.C + MEND + MACRO +&LAB SHORT &A,&B + LCLB &I + LCLB &M +&A AMID &A,1,1 +&M SETB ("&A"="M").OR.("&A"="m") +&I SETB ("&A"="I").OR.("&A"="i") + AIF C:&B=0,.A +&B AMID &B,1,1 +&M SETB ("&B"="M").OR.("&B"="m").OR.&M +&I SETB ("&B"="I").OR.("&B"="i").OR.&I +.A +&LAB SEP #&M*32+&I*16 + AIF .NOT.&M,.B + LONGA OFF +.B + AIF .NOT.&I,.C + LONGI OFF +.C + MEND + MACRO +&lab WordResult +&lab pha + MEND + MACRO +&lab LongResult +&lab pha + pha + MEND + MACRO +&lab PushLLcl &Num1 +&lab phb + phb + PushWord &Num1 + MEND + MACRO +&lab mov &num1,&num2 +&lab lda &num1 + sta &num2 + MEND + MACRO +&Lab MakePdp +&Lab phd + tsc + tcd + ldy #2 + lda [3],y + tay + lda [3] + sta <3 + sty <3+2 + MEND + MACRO +&lab killLdp +&lab pld + pla + pla + MEND + MACRO +&lab _EraseRect +&lab ldx #$5504 + jsl $E10000 + MEND + MACRO +&lab _Line +&lab ldx #$3D04 + jsl $E10000 + MEND + MACRO +&lab _LineTo +&lab ldx #$3C04 + jsl $E10000 + MEND + MACRO +&lab _Move +&lab ldx #$3B04 + jsl $E10000 + MEND + MACRO +&lab _MoveTo +&lab ldx #$3A04 + jsl $E10000 + MEND + MACRO +&lab _PaintOval +&lab ldx #$5904 + jsl $E10000 + MEND + MACRO +&lab _Random +&lab ldx #$8604 + jsl $E10000 + MEND + MACRO +&lab _SetPenMode +&lab ldx #$2E04 + jsl $E10000 + MEND + MACRO +&lab _SetPenSize +&lab ldx #$2C04 + jsl $E10000 + MEND + MACRO +&lab _SetSolidBackPat +&lab ldx #$3804 + jsl $E10000 + MEND + MACRO +&lab _SetSolidPenPat +&lab ldx #$3704 + jsl $E10000 + MEND + MACRO +&lab _ShowPen +&lab ldx #$2804 + jsl $E10000 + MEND + MACRO +&lab pullword &SYSOPR +&lab ANOP + pla + AIF C:&SYSOPR=0,.end + sta &SYSOPR +.end + MEND + MACRO +&lab pushlong &addr,&offset +&lab ANOP + LCLC &C + LCLC &REST +&C AMID &addr,1,1 + AIF "&C"="#",.immediate + AIF "&C"="[",.zeropage + AIF C:&offset=0,.nooffset + AIF "&offset"="s",.stack + pushword &addr+2,&offset + pushword &addr,&offset + MEXIT +.nooffset + pushword &addr+2 + pushword &addr + MEXIT +.immediate +&REST AMID &addr,2,L:&addr-1 + dc I1'$F4',I2'(&REST)|-16' + dc I1'$F4',I2'&REST' + MEXIT +.stack + pushword &addr+2,s + pushword &addr+2,s + MEXIT +.zeropage + ldy #&offset+2 + pushword &addr,y + ldy #&offset + pushword &addr,y + MEND + MACRO +&lab pushword &SYSOPR +&lab ANOP + AIF C:&SYSOPR=0,.b + LCLC &C +&C AMID "&SYSOPR",1,1 + AIF ("&C"="#").AND.(S:LONGA),.immediate + lda &SYSOPR + pha + MEXIT +.b + pha + MEXIT +.immediate + LCLC &REST + LCLA &BL +&BL ASEARCH "&SYSOPR"," ",1 + AIF &BL>0,.a +&BL SETA L:&SYSOPR+1 +.a +&REST AMID "&SYSOPR",2,&BL-2 + dc I1'$F4',I2'&REST' + MEND + MACRO +&lab str &string +&lab dc i1'L:&string',C'&string' + MEND + MACRO +&lab _AddResource +&lab ldx #$0C1E + jsl $E10000 + MEND + MACRO +&lab _GetCurResourceApp +&lab ldx #$141E + jsl $E10000 + MEND + MACRO +&lab _GetCurResourceFile +&lab ldx #$121E + jsl $E10000 + MEND + MACRO +&lab _MarkResourceChange +&lab ldx #$101E + jsl $E10000 + MEND + MACRO +&lab _ReleaseResource +&lab ldx #$171E + jsl $E10000 + MEND + MACRO +&lab _SetCurResourceFile +&lab ldx #$111E + jsl $E1 \ No newline at end of file diff --git a/source/twilight/nm/twilight/Clocks.Macs b/source/twilight/nm/twilight/Clocks.Macs new file mode 100644 index 0000000000000000000000000000000000000000..f7d495eff9d777013ef50f3bf793e36259af99ff GIT binary patch literal 4280 zcmds4TaVgS5bmp2+W#*Ph`2aYRTnWHWZyfBJs^{8?y zYEX2A<9kT_trssPg5BAKVnGYf7f>vD^9QP?Z^Ja?0fhEseAj_ilH>h=BDh906%VXz z_L&(=XAk6hcEC_q21Fk7>uVG$ZeSrmNNzXBM_ocm;s7B9zDptdPp7NE-TI;yVI71w zXUw}pz?{ohuc*T9;P+tbG*dpfqrHii>RvkfMml2J|R5=@Ye zLZHljv6zIx{E$SU*w3~}Mz{!7@`Y@Ra#1)7X-UA$giE$qZG5y&z1mLl#kHTf$QAl6 zS{~>(g(dnE2>9;3QsuTqHI+}7zt!*YjM6FYB8g2lb?kthsZ3b{>l+V!EiFpGla_%z zZIBssej=WNduuka`;PCx2x%@o-S{qcik;F`WOF1xrKDtuL%|20@ZArNzXe-m?6QZq z*ALOg!T5Pn_3}#TE?Ae=+tp_gQiEIMo{)$zCMTxLEB2~f^b#JtRFtmc-#YgZJ%}*a zv$&IpoE7}bxHz-5Da|H^(f@zY@HKM9ZJW{XASsw}k1T@zVg}PLeymdq>rij^28){w(l4x97}nCJw5f z1G)U+Z-T&+J&f;Pim?oCp35YftW3&@q3i#H{0qJiN zfw!%CQ>-yzd9r0%$=-oHZ}9%``M#z)t{c|XV6lj}S7f#lJC<(gr0M|OJxz_74GEpJ zq1jIq+jYE~q%Rd!ue_~PEA^(gS_#*~i>q+*2`4-|H_n&z0PgSXvis{G^&x@VErA(9 z6JgD7fX9CCGQ)mfbTZFNN4bNc@rwz^^A^f5d&t;G)pFseoPvD#ox1f#X0X9&aOY&U zYbS%NTHWl_PNnqO?~V5B+TNi&FkX)9=+4fiX_62&p1uH+h!U) zn=0<)>Qx{vFEmnn7C79qNShhjRDVyITNQ$9fa7o=@e@diMq}BTVQYj+@4E2YI zLk0py_N)fyzQ~4L!S{w<6o;hZ3m3$s1EK4+Yp}T6t=08f`UvC$1-jPU#~WmV;mg6< z(%S}9o*%r$KL*+cx6It=Y+wB&nBD)2JWl6@I727ANw38E(pmG+$m6u0!708~2HxG& zi9KB0au_Y6)q7EDe(rnUJh$jTtM|OJrS*vUOsWP}z!VtRBh`F-8p0nfnJ3z=Ez}{i ztw-n#4YO}pIctum&1AKz;2)4`79`AqgvSz+!5FSRo~s%(dWntRo{e6?2Cra)EvoEW zW{FQSOT2<5DTipJ4Gwl{OfY|j=a-!e)jV(Gz9?O3j>a|s>rI&hZg3ippvFsXw%xf| YZ_0NK&duF9FH2l!E3^0Gsh!K|pI9Fxu>b%7 literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/DataField.Rez b/source/twilight/nm/twilight/DataField.Rez new file mode 100644 index 0000000..b66f40a --- /dev/null +++ b/source/twilight/nm/twilight/DataField.Rez @@ -0,0 +1,60 @@ +212723FFFF' +FW2D4 anop + dc h'A725E526E426A225A1252023E021A020611F231E241E261E671FA820E8216824FFFF' +FW2D5 anop + dc h'E72625282328E126A0251F23DF21601F211EE31CE51C271E681FA9202923A825FFFF' +FW2D6 anop + dc h'27286529222820289F251E239E201F1EE11CA31BA61BE81C691FEA216A24E926FFFF' +FW2D7 anop + dc h'6729A42A61291F289E251D235E1FDF1CA11B641AA71BE91C6A1FEB21AA252928FFFF' +FW2D8 anop + dc h'A62AE32BA02A1E289C25DC211D1E9F1B621A651A681AEA1CAC202C23EB266929FFFF' +FW2D9 anop + dc h'E62BE22B9F2A1C285B249B20DD1C5F1A22192619691AEC1CAD206D242B28A92AFFFF' +FW2D10 anop + dc h'252D212D9D2A1B281A235B1F9C1B2019E317E7176B1A2D1EEE21ED26AC2A282DFFFF' +FW2D11 anop + dc h'642E5F2E9C2ADA26D9211A1E5D1AE017A416E9176C1A6E1F2F232E28EB2B682EFFFF' +FW2D12 anop + dc h'A22F5E2E9A2A982598209A1BDD17A116A616EA17AE1B701FB0256E292B2DA72FFFFF' +FW2D13 anop + dc h'E1305C2E992A5724571F5A1A9E1662156715EC17AF1BF121F126EE2BAA2FE630FFFF' +FW2D14 anop + dc h'DF305A2E57291623171E1A195E1524146915EE17F11C322371296E2EEA302432FFFF' +FW2D15 anop + dc h'1D32582E1628D521971B9A162014E5126B153019321E7324B12AAE2F68336333FFFF' +FW2D16 anop + dc h'1B32172DD426541F17195B15E112E7126D15711AB420F426312D2D32A734A134FFFF' +FW2D17 anop + dc h'1932D52B5324141ED717DC12A311A9116F15B31BF5217429B12FAC34E5359F34FFFF' +FW2D18 anop + dc h'D730932A1223941B58159E116510AB11B116F51C7624F42B3032EA352337DD35FFFF' +FW2D19 anop + dc h'952F522991201419D9121F0F270FAE11F317761FF726742EAF3469386138DA35FFFF' +FW2D20 anop + dc h'532ED026111E94169A11E10D290FF0123519B8207729F4302E37A7399F39D835FFFF' +FW2D21 anop + dc h'112D4F24901B15141C0FA40C2C0FF312771A3923F82B7333AC39E43A9C399534FFFF' +FW2D22 anop + dc h'CF2BCE2110199611DD0DA60C2E0F7515F91CFA26B82F3237EB3A223C9A395333FFFF' +FW2D23 anop + dc h'4D294D1F9116170F600B690B310FB7167B1F7B293732B139683D5F3D97391132FFFF' +FW2D24 anop + dc h'CC26CD1C1214990C220A6B0B74103919FC213B2DF6352F3CA63E5D3D5438CF30FFFF' +FW2D25 anop + dc h'4B240D1953105B0BE5086E0BB6117B1ABD25BB2F7538AD3EE33F5A3D12374D2EFFFF' + +FW3D1 anop + dc h'E52125232423242324232323E321E321E321E321A420A420A420A520E521E521FFFF' +FW3D2 anop + dc h'E6212623652464246424632422232223E221A220A320641F641FA520A620E621FFFF' +FW3D3 anop + dc h'E72127236624A525A425A32562242123E121A120621F631F641F651F661FA720FFFF' +FW3D4 anop + dc h'E8212823A725A625E426E326A1256024E021A020611F221E241E251E671FA820FFFF' +FW3D5 anop + dc h'E9212923A825E72625282328E126A0251F239F20601F211EE31CE51C271E681FFFFF' +FW3D6 anop + dc h'AA202A23A9252828262863292128DF265E24DE215F1FE01CA21BA51BE71C291EFFFF' +FW3D7 anop + dc h'6A1 \ No newline at end of file diff --git a/source/twilight/nm/twilight/Fireworks.Macs b/source/twilight/nm/twilight/Fireworks.Macs new file mode 100644 index 0000000..210558a --- /dev/null +++ b/source/twilight/nm/twilight/Fireworks.Macs @@ -0,0 +1,130 @@ + MACRO +&lab _NewControl2 +&lab ldx #$3110 + jsl $E10000 + MEND + MACRO +&lab _MMStartUp +&lab ldx #$0202 + jsl $E10000 + MEND + MACRO +&lab _NewHandle +&lab ldx #$0902 + jsl $E10000 + MEND + MACRO +&LAB JCC &BP +&LAB BCS *+5 + BRL &BP + MEND + MACRO +&LAB JEQ &BP +&LAB BNE *+5 + BRL &BP + MEND + MACRO +&LAB LONG &A,&B + LCLB &I + LCLB &M +&A AMID &A,1,1 +&M SETB ("&A"="M").OR.("&A"="m") +&I SETB ("&A"="I").OR.("&A"="i") + AIF C:&B=0,.A +&B AMID &B,1,1 +&M SETB ("&B"="M").OR.("&B"="m").OR.&M +&I SETB ("&B"="I").OR.("&B"="i").OR.&I +.A +&LAB REP #&M*32+&I*16 + AIF .NOT.&M,.B + LONGA ON +.B + AIF .NOT.&I,.C + LONGI ON +.C + MEND + MACRO +&LAB SHORT &A,&B + LCLB &I + LCLB &M +&A AMID &A,1,1 +&M SETB ("&A"="M").OR.("&A"="m") +&I SETB ("&A"="I").OR.("&A"="i") + AIF C:&B=0,.A +&B AMID &B,1,1 +&M SETB ("&B"="M").OR.("&B"="m").OR.&M +&I SETB ("&B"="I").OR.("&B"="i").OR.&I +.A +&LAB SEP #&M*32+&I*16 + AIF .NOT.&M,.B + LONGA OFF +.B + AIF .NOT.&I,.C + LONGI OFF +.C + MEND + MACRO +&lab WordResult +&lab pha + MEND + MACRO +&lab LongResult +&lab pha + pha + MEND + MACRO +&lab mov &num1,&num2 +&lab lda &num1 + sta &num2 + MEND + MACRO +&Lab MakePdp +&Lab phd + tsc + tcd + ldy #2 + lda [3],y + tay + lda [3] + sta <3 + sty <3+2 + MEND + MACRO +&lab killLdp +&lab pld + pla + pla + MEND + MACRO +&lab _Random +&lab ldx #$8604 + jsl $E10000 + MEND + MACRO +&lab pullword &SYSOPR +&lab ANOP + pla + AIF C:&SYSOPR=0,.end + sta &SYSOPR +.end + MEND + MACRO +&lab pushlong &addr,&offset +&lab ANOP + LCLC &C + LCLC &REST +&C AMID &addr,1,1 + AIF "&C"="#",.immediate + AIF "&C"="[",.zeropage + AIF C:&offset=0,.nooffset + AIF "&offset"="s",.stack + pushword &addr+2,&offset + pushword &addr,&offset + MEXIT +.nooffset + pushword &addr+2 + pushword &addr + MEXIT +.immediate +&REST AMID &addr,2,L:&addr-1 + dc I1'$F4',I2'( \ No newline at end of file diff --git a/source/twilight/nm/twilight/LED.MSG b/source/twilight/nm/twilight/LED.MSG new file mode 100644 index 0000000000000000000000000000000000000000..a12ba48549bcb76ead1e36029b62c156d5d35278 GIT binary patch literal 3024 zcmbtWeN0=|6+ibr8{V@YezsLwQWE<(73~4BYs#P7Wt))p7N~H~=X-hY)dt`3O+-%;t z&n`-%rIWU!$36GlbI$L4UB5@x3I@%{oS7&9DITn@MY#cX87FL&EUPy|~h4?T{Ycy*+H)^_eZFbb8Y4oyv<^0#@pjL#eDMiTp zsimd(GNeEmre~H;pQ65m>97Z2DOB4JRbdmvU!)dJK8vNQlY}XYpP>1a2=O6`kELd-nqv@uU|(|1&Ds6%eno^K0go?0LR6IYqBsTYMcxgap9PPSM#Wkr(>$ z5KRx!j07W1JcS|pG1f9j-__`dMHf?#0rsz|#6^>+nX zcO>xreL;4>A7%S{BVE1z?(SfKefL?m*WVZN_pm+wzF>4CI}q**vFQF_XV|}wam6!H z))!%|;cm3(4R=O*0uffz83_byH=;hszR|v&)pSRCgRFG8Bk1qKKs$OPQC9PGq^A!J z{XGGmUmzF=cVe6Xhuj|8^tiv9wS~Lu>+6f<;jb167pSgwI*l`DvlAZ>n~00KMfl44 zdqh)X?E|ulx(IQ}g23AYAX7pJl|e9xqG%GJ(pGJ&gED%#RJ3pAJMNDHm-&JR7y`jL zevwmr9T95e;RYiCl+XuscYYy}F(ga)WrjNG>BD8kA(Ztr%a0 zCTudMg7J!dG0fE_9?$8NWiZgxMo>|ZohmpS4jZ3eu`kV_7;%XLSg&YjpzyRrQNh7j z9IJzX{?F$K(1g$%FyD2^d8aS~(gcjvquj)0hlH|?5DtwpR-FVH7-K6Q9l$rQ1r+8i}E@IL=EK9;P)4<3kCj^ZKsj6^a+HjU z)~KGlu<>|vWQtQN62So~OleSBlt+~gWxq0@j40#Ev@)k;l|@BYbemqG%eqy!=#nn# z<$9TJ)=j#gQ=RCr4A}erGIDdj<1kNWR_WDXvj=v!%E%DdnWLf-z>`PGU;UBs9FJ+%E{f6vIzb5-~ z66Vd{TM7I9T$|7P5-um-rMZjC!ME(!QfZeH4D&IHPWYAeabM%P1+fIzz&#TlD`zPa ze#>I(S9rJOhl7DV(XK|;9z58G$T8cB&zJKKaGVsz*~lG6oca70Ki~t;Ss#3IoWcd+ zl}TYpc-}mIgIo|!jnSh=?JISmP%1~_WAqMb-0o^enA(ellL9*OlDq@Aq`(tNVj}k$ z1-S0vtm8j)1zm3GMlMJGTQepEA3h0BjREYDISYkuiCijvT8RA-a1cg!^8`cR#Z7Zn zV6`Tw#P<^(nVeA)hTV{7irBp_-RGj<&nLXb2FP*rZCs(}w6?|K|`>|jy;0)N4 zVzxY4hQBvmh`^Pr@wwy xFg3P3cIZc+Q2l$-7)3TOr6gp#ECy?{B)N3ZV(2aw4=1gLZi{TNhvcLL{{|kIO40xT literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/LEDMsg.Asm b/source/twilight/nm/twilight/LEDMsg.Asm new file mode 100644 index 0000000000000000000000000000000000000000..cb26f39de153db415e5f7c88cab4f9512c133fa7 GIT binary patch literal 14261 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 lX5a`aex9ZGec2*gjk#2cH=IuMPx}xa?>y@ zc?1@$n81p>0}sGk@CppWis?|!xmR*5+rb*Pcp=}PbH4NcNyJn%yYt{aA2`p+i5_Nh z)9dHkzoY~T)TphX^iyRn2fH3v#V5~J5r4<+@ z#cDRzy8GDu%DT|-heOZxoeW5a&>#!LDXi-I%5k<;P#0w)mPg) zbwQWwJPOz0cxs-pv?q_fOv{2ps88UvlW3>|1Jfp9JiRSS$jl3?l;b>cf>D{PC8Z*O zr3lwa`6zLZSWuk(J%FKgavYTf$q4BksM6q**l$5*A>>}lbQQ<=l$F@Lj zDQH4i{c}v&m`Bm?O(2W0R{3h;!fY{Ko3K!prIjlmfvG}mf(|JMwxnI8t@7mrn=$8Z4KSS-H69lJO(d1JZJv=iLD4Rrl$n915_8%m%@V@H z!w=8$$%b%zsSeSz)4HJ5izW4K_8VAn@#`QOCH*qDikj2{mBr+OBtJ?D3?(jel(h4o zVA_6Ac1Myc;+RfyUO1x-oDkc3;+-Rj6>)4Y@SM~upvoZcRRqD;#!YT!gOV!Z9Ebi_ zqp>ejuTg2QDoX6aher|7j5lJlB93jg{m``>_>w8WO6if6%0Ncs{2Nf!9<)u!bm0p+ zR`%!iz((X%5|In?%1Oz9{Ng2Eq|S$YR#IPTu}A3go`^`FO`>+j^{r6zYLe{2&~9Di-!>$UfzcP$Y|2Xb2rqam6GFxCN^N{pp!8vFwSNUQ;37bFJ#%MoKO z!4U9Zh$a~K1BXOgI4B`R5;7Sz$~s|`7(^FQTDHR2*4*ZX>_qDKuCxvezH9FLzMt>s z^ZCAe@1-ZFAbtGq&;m9hWGDcocOmzp=XFFZ4Z1WFN3UXpb}l=_EOf3}DBZvZZAl|i zOcB2+n&)>v)|&RW;}0qkN{2jozMVzlR@^P9yQjCN+slyHiQ9~=>F#b}JbD&MIqdfr z>0`@KJHzP0P+3DclE!ec1Wri0Ihi{+nd?T@ccn{FlD#v$nzZXUwX zT<*wCd^m^2A52jrl2k0;!Jd4rbO$HAQG`lGc?g$nx{akFEZ@YNZei#QOy7VL12t~y z0ilYW-a1)0)%)*4a*GonnB^9*Ss%`6F5 z=4c|ZBq0LJAM1#am`Bl8xx>S2%M5`F2o{m^i#0)wCRjwIn*S9fyb)jiFe1kUFii?5 z&VdsR1AHUjpyW7;o54479Qg*u5qxdK-_@xXWkg`}B}BS(T?~SkYD2B*$WG++a;ISi z*Hi<-TZ%c{R4w1w>kp}LlSMaJ)+V3ooxu*>Xio$xOn}RHvQ*pzteng6)5U zY;&yMKO4aj?{RG3E~t%A8gveRWZwmyIxrDkZ<7fxoTrb z8>@Q{ZA^$?(y44lJUXq@AdKqS&xOo8n(zj{f(7k^W?j$>&ia_cTNP-s#WLb)B&IzI zhe?<%W;|ykZ2%|4uCDNo$CztAtGv z)4|425bmHx8P_OqocAb7iGonCUwj?Q8MyvgEa0X2yfew7ra3y&Hwl?4_dUSDA+;pdCV(}#PqINUw53;qB{H**NlWD)t;+-#Q3C(PfQd(1zXe>0Dn z&D0c1q~=kzR2{XJ%4y@ul`H4YojY~vR4f+z^gkp2FwVmZZ&RO8UsJzOe^E0mwU*Z` zTP+7IXDtI3#`?JRCF^GEUh4_#W$T2soL)@7O21DZpueN9(^h6KQ_sA~>|u^GmzY19 zY3xFFE&Cq(Ir}Z!&r+O+TgGkTc5}zLAGvYvQQOnDHMVzcZMHMEYc|4H@k{xQyu=^n zFYNh}~Het{S5cM3K7CZ+IOX?CMU literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/NJM.Twlt.Icon.S b/source/twilight/nm/twilight/NJM.Twlt.Icon.S new file mode 100644 index 0000000..02741f8 --- /dev/null +++ b/source/twilight/nm/twilight/NJM.Twlt.Icon.S @@ -0,0 +1,615 @@ +SharkXYRts anop + ply ;for getting out in a hurry + plx + rts + +NormalMove ldx NumMoves ;x-reg for random #ing + beq SharkXYRts ;if no moves available, do nothing + jsr RandomX + asl a + tax ;offset in Table + lda FreeYPlaces,x + tay + lda FreeXPlaces,x + tax +NewSharkPos lda #Shark + jsr DrawIt ;draw shark in new place + lda SharkData + and #$FF ;breed bits + cmp SharkBreed ;time for shark to breed? + bge BreedShark + inc a + pha + lda SharkData + and #$FF00 ;mask out breed bits + ora 1,s ;and put new ones in + ora #$8000 ;make it a shark + jsr PutInField ;in new place + pla + ply + plx ;original place + lda #0 ;free + jsr PutInFieldC + lda #Water + brl DrawIt ;put water in old place +BreedShark lda SharkData + and #$8F00 ;clean out breed bits + ora #$8001 ;just bred + inc NumSharks + jsr PutInField + ply + plx ;original place + brl PutInFieldC + +EvalCenter ds 2 +EvalAround stz NumMoves + stz NumFood + phx + phy ;save for safety + jsr GetOffset + stx EvalCenter + lda 3,s ;x + tax + iny + cpy #24 + blt CanChkDown + ldy #0 ;wrap to top of screen + jsr ChkPlace + bra DoneChkDown +CanChkDown lda EvalCenter + clc + adc #64 ;one row down + tax + lda 3,s ;x-value + jsr ChkPlace2 ;and faster ops +DoneChkDown lda 1,s + tay ;restore value + lda 3,s + tax ;restore values + dey + bpl CanChkUp + ldy #23 ;wrap to bottom + jsr ChkPlace + bra DoneChkUp +CanChkUp lda EvalCenter + sec + sbc #64 + tax + lda 3,s ;x-value + jsr ChkPlace2 ;faster ops +DoneChkUp lda 1,s + tay ;restore value + lda 3,s + tax ;restore values + inx + cpx #32 ;off right? + blt CanChkRight + ldx #0 + jsr ChkPlace + bra DoneChkRight +CanChkRight lda EvalCenter + inc a + inc a ;one square to the right + tax + lda 3,s ;x-value + inc a + jsr ChkPlace2 +DoneChkRight lda 3,s + tax ;restore value + lda 1,s + tay + dex + bpl CanChkLeft + ldx #31 ;off top. + jsr ChkPlace + bra FishXYRts ;get out of here +CanChkleft lda EvalCenter + dec a + dec a + tax + lda 3,s + dec a ;proper x-value + jsr ChkPlace2 +FishXYRts ply ;don't change this area! + plx ;clean up stack + rts + +HandleFish phx + phy ;for safety + jsr EvalAround + lda NumMoves ;x-reg for random #ing + beq FishXYRts ;if no moves available, do nothing + jsr GetFromFieldC ;get time till breed + pha + ldx NumMoves ;value to restrict to + jsr RandomX + asl a + tax ;offset in Table + lda FreeYPlaces,x + tay + lda FreeXPlaces,x + tax + lda #Fish + jsr DrawIt ;draw fish in new place + pla + cmp FishBreed ;time for fish to breed? + bge BreedEm + inc a + jsr PutInField ;in new place + ply + plx ;original place + lda #Water + jsr DrawIt ;put water in old place + lda #0 ;free + brl PutInFieldC +BreedEm lda #1 ;just bred + jsr PutInField + ply + plx ;original place + jsr PutInFieldC + inc NumFish + lda #Fish + brl DrawIt + +NumMoves ds 2 +NumFood ds 2 +FreeXPlaces ds 10 ;space for positions +FreeYPlaces ds 10 +FoodXPlaces ds 10 +FoodYPlaces ds 10 + + +RandomX LongResult + jsr Random + cpx #1 ;modulo 1 (==> 0)? + beq Return0 + cpx #2 ;mod 2 ==> 0 or 1 + beq Return01 + pha + phx + _UDivide + pla + pla ;modulo result + rts +Return0 pla + pla ;clean up stack + lda #0 ;anything mod 1 is 0 + rts +Return01 plx + plx ;clean up stack + and #$1 ;real fast mod 2 + rts + +RandomXY anop + LongResult + WordResult + _Random ;random # + PushWord #32 ;divide by + _UDivide + pla ;leave modulo on stack + LongResult + WordResult + _Random ;random # + PushWord #24 ;divide by + _UDivide + pla ;leave modulo on stack + ply ;0-23 + plx ;0-32 + jsr GetFromField + cmp #0 ;check a-reg + bne RandomXY ;loop back until empty space + rts + +done anop +Bye anop + lda EntryStack + tcs + pld + plx + ply ;return address & bank + pla + pla ;T2data2 + pla + pla ;T2data1 + pla ;Message + phy + phx + plb + rtl + +JustMoved ds 2 +Random lda [10] + bne Done + stz JustMoved + lda >$E0C02E + xba ;volatile bits in low byte + cmp LastVCtr + blt NewPals + sta LastVCtr ;store updated position +QuitRandom rts ;return with highly variable results +NewPals inc JustMoved + sta LastVCtr ;keep updating position + dec WaitVBLs + bpl QuitRandom + mov #15,WaitVBLs + phx + lda ScreenBank ;depends on shadowing... + pha + plb + plb + ldx #PalLen +PalRef lda >Pal1,x + sta $9e00,x + dex + dex + bpl PalRef + phk + plb ;back to program bank + lda PalRef+1 ;address of palette + clc + adc #32 ;next palette in program + cmp #Pal4+1 ;past last one? + blt SetNewPal + lda #Pal1 ;if so, go back to 1st +SetNewPal sta PalRef+1 + plx ;restore value + lda LastVCtr ;and random # + rts + +DrawIt pha + phx + phy ;save values + tya + asl a + asl a + asl a ;*8 + clc + adc #256 + pha ;max of what to wait for + sec + sbc #30 ;minimum + pha +ChkVblDraw jsr Random ;keep random #s up + lda >$e0c02e + and #$FF + rol a ;make proper counter + cmp 1,s ;min + blt DoDraw + cmp 3,s ;max + blt ChkVblDraw +DoDraw pla + pla + + tya ;start plot at y*1280+x*5+$2000 + xba + pha ;*256 + asl a + asl a ;*1024 + clc + adc 1,s + sta 1,s ;keep on stack + lda 5,s ;x posn + asl a + asl a + clc + adc 5,s ;x*5 + adc 1,s ;y*1280 + adc #$2000 ;start of screen in bank + ply ;temp value + tax ;target location + lda 5,s ;pic to draw + asl a + tay + lda BMGTbl,y + sta SourceLoc1+1 ;now, ready to draw + sta SourceLoc2+1 ;now, ready to draw + sta SourceLoc3+1 ;now, ready to draw + ldy #0 +SourceLoc1 lda |0,y +TargetLoc1 sta >$e10000,x + iny + iny +SourceLoc2 lda |0,y +TargetLoc2 sta >$e10002,x + iny +SourceLoc3 lda |0,y +TargetLoc3 sta >$e10003,x ;5 bytes/row to move in + txa + clc + adc #$A0 ;go on to next row + tax + iny + iny + cpy #40 + blt SourceLoc1 + ply + plx + pla + rts + +OutOfRange brk $95 +GetOffset pha ;save a-reg +* cpx #32 +* bge OutOfRange +* cpy #24 +* bge OutOfRange + + tya ;offset= 64 * y + 2*x + xba ;*256 + lsr a + lsr a ;now * 64 + pha ;save on stack + txa + asl a ;double it for word offsets + clc + adc 1,s + tax + pla ;temp value + pla ;orig value + rts + +GetFromField phx + jsr GetOffset + lda Moved,x + bne BadLoc + lda TheField,x + clc + plx + rts + +BadLoc sec + lda TheField,x + plx + rts + +PutInField phx + jsr GetOffset + sta TheField,x + inc Moved,x + plx + rts + +GetFromFieldC phx + ldx CenterOffset + lda Moved,x + bne BadLoc + lda TheField,x + clc + plx + rts + +PutInFieldC phx + ldx CenterOffset + sta TheField,x + inc Moved,x + plx + rts + +LastVCtr ds 2 +ScreenBank ds 2 +OldBorder ds 2 +WaitVBLs ds 2 +FishBreed dc i'3' +SharkBreed dc i'4' +Starve dc i'3' +StNumFish dc i'380' +StNumSharks dc i'40' +NumFish ds 2 +NumSharks ds 2 +EntryStack ds 2 +TheField ds 32*24*2+8 +Moved ds 32*24*2+8 +CenterOffset ds 2 +OnColor dc i'StartBlue' + +* +* +* Bit-Mapped Graphics +* +* +BMGTbl dc a'H2OBMG,SharkBMG,FishBMG' + +H2OBMG anop + dc h'4432114321' + dc h'3321443214' + dc h'2214332143' + dc h'1143221432' + dc h'4432114321' + dc h'3321443214' + dc h'2214332143' + dc h'1143221432' + +FishBMG anop + dc h'4662614321' + dc h'6776743214' + dc h'7667632143' + dc h'1773721432' + dc h'4432118828' + dc h'3321489989' + dc h'2214398898' + dc h'1143229939' + +SharkBMG anop + dc h'4432114321' + dc h'3321F43214' + dc h'F214CF2143' + dc h'CDDDCCDDD2' + dc h'4CCCCCCCEF' + dc h'3BBBBBBBBB' + dc h'B214332143' + dc h'1143221432' + +Pal1 anop + dc i'$000,$007,$009,$00C,$00F,$0FFF' ;water colors 0 + dc i'$77F,$009,$009,$88F,$00F' ;fish colors 12 + dc i'$00F,$777,$999,$E00,$BBB' ;shark colors 22 +PalLen equ *-Pal1-2 + +Pal2 anop + dc i'$000,$00F,$007,$009,$00C,$0FFF' ;water colors + dc i'$00F,$88F,$00C,$99F,$00F' ;fish colors + dc i'$00C,$787,$9A9,$D00,$BAA' ;shark colors + +Pal3 anop + dc i'$000,$00C,$00F,$007,$009,$0FFF' ;water colors + dc i'$00F,$77F,$88F,$007,$00F' ;fish colors + dc i'$787,$9A9,$00F,$00E,$00C' ;shark colors + +Pal4 anop + dc i'$000,$009,$00C,$00F,$007,$0FFF' ;water colors + dc i'$88F,$007,$99F,$008,$00F' ;fish colors + dc i'$777,$999,$00F,$00E,$00C' ;shark colors + +MaxColor ds 2 +Red ds 2 +Green ds 2 +Blue ds 2 +WaitInc ds 2 +NewColors anop + jsr PrintStats + lda Prefs + beq NoNewColors + dec WaitInc + bmi CanInc + mov #2,WaitInc +NoNewColors rts + +CanInc ldx OnColor + lda Colors,x ;next color + sta MaxColor + inx + inx + cpx #ColorsLen + blt OkColor + ldx #0 +OkColor stx OnColor + short M +Wait1u lda >$e0C019 ;wait for start of next refresh + bpl Wait1u ;so no-blink screen color change +Wait2u lda >$e0C019 + bmi Wait2u + Long M + + lda MaxColor + sta Pal1+20 + sta Pal2+20 + sta Pal3+20 + sta Pal4+20 ;text color at bottom of screen + + tax ;save for a while + and #$F ;blue bits + sta Blue + txa + lsr a + lsr a + lsr a + lsr a + and #$F + sta Green + txa + xba + and #$F + sta Red + lda #FullTbl + jsr RestrictColor + sta Pal1+8 + sta Pal2+2 + sta Pal3+4 + sta Pal4+6 + sta Pal1+22 + sta Pal1+28 + sta Pal2+12 + sta Pal3+12 + sta Pal3+26 + sta Pal3+28 + sta Pal4+26 + sta Pal4+28 + ora #$AAA + sta Pal1+12 + sta Pal1+18 + sta Pal2+14 + sta Pal2+18 + sta Pal3+14 + sta Pal3+16 + sta Pal4+12 + sta Pal4+16 + + lda #TQTbl + jsr RestrictColor + sta Pal1+6 + sta Pal2+8 + sta Pal3+2 + sta Pal4+4 + sta Pal2+16 + sta Pal2+22 + sta Pal2+28 + sta Pal3+30 + sta Pal4+30 + + lda #HalfTbl + jsr RestrictColor + sta Pal1+4 + sta Pal2+6 + sta Pal3+8 + sta Pal4+2 + sta Pal1+14 + sta Pal1+16 + + lda #OneQTbl + jsr RestrictColor + sta Pal1+2 + sta Pal2+4 + sta Pal3+6 + sta Pal4+8 + sta Pal3+18 + sta Pal4+14 + sta Pal4+18 + rts + +NRed ds 2 +NGreen ds 2 +NBlue ds 2 + +RestrictColor sta Restrict1+1 + sta Restrict2+1 + sta Restrict3+1 + lda Red + asl a + tax +Restrict1 lda |0,x + sta NRed + lda Green + asl a + tax +Restrict2 lda |0,x + sta NGreen + lda Blue + asl a + tax +Restrict3 lda |0,x + sta NBlue + lda NRed + asl a + asl a + asl a + asl a + ora NGreen + asl a + asl a + asl a + asl a + ora NBlue + rts + + +Colors anop + dc i'$F00,$F10,$F20,$F30,$F40,$F50,$F60,$F70,$E70,$E80,$D80,$D90,$C90,$CA0' + dc i'$BA0,$BB0,$AB0,$AC0,$9C0,$9D0,$8D0' + dc i'$8E0,$7F0,$6F0,$5F0,$4F0,$3F0,$2F0,$1F0' + dc i'$0F0,$0F1,$0F2,$0F3,$0F4,$0F5,$0F6,$0F7,$0E7,$0E8,$0D8,$0D9,$0C9,$0CA' + dc i'$0BA,$0BB,$0AB,$0AC,$09C,$09D,$08D' + dc i'$08E,$07F,$06F,$05F,$04F,$03F,$02F,$01F' +StartBlue equ *-Colors + dc i'$00F,$10F,$20F,$30F,$40F,$50F,$60F,$70F,$70E,$80E,$80D,$90D,$90C,$A0C' + dc i'$A0B,$B0B,$B0A,$C0A,$C09,$D09,$D08' + dc i'$E08,$F07,$F06,$F05,$F04,$F03,$F02,$F0 \ No newline at end of file diff --git a/source/twilight/nm/twilight/Persp.Macs b/source/twilight/nm/twilight/Persp.Macs new file mode 100644 index 0000000..038b8a3 --- /dev/null +++ b/source/twilight/nm/twilight/Persp.Macs @@ -0,0 +1,101 @@ + MACRO +&lab _GetTick +&lab ldx #$2503 + jsl $E10000 + MEND + MACRO +&LAB LONG &A,&B + LCLB &I + LCLB &M +&A AMID &A,1,1 +&M SETB ("&A"="M").OR.("&A"="m") +&I SETB ("&A"="I").OR.("&A"="i") + AIF C:&B=0,.A +&B AMID &B,1,1 +&M SETB ("&B"="M").OR.("&B"="m").OR.&M +&I SETB ("&B"="I").OR.("&B"="i").OR.&I +.A +&LAB REP #&M*32+&I*16 + AIF .NOT.&M,.B + LONGA ON +.B + AIF .NOT.&I,.C + LONGI ON +.C + MEND + MACRO +&LAB SHORT &A,&B + LCLB &I + LCLB &M +&A AMID &A,1,1 +&M SETB ("&A"="M").OR.("&A"="m") +&I SETB ("&A"="I").OR.("&A"="i") + AIF C:&B=0,.A +&B AMID &B,1,1 +&M SETB ("&B"="M").OR.("&B"="m").OR.&M +&I SETB ("&B"="I").OR.("&B"="i").OR.&I +.A +&LAB SEP #&M*32+&I*16 + AIF .NOT.&M,.B + LONGA OFF +.B + AIF .NOT.&I,.C + LONGI OFF +.C + MEND + MACRO +&lab WordResult +&lab pha + MEND + MACRO +&lab LongResult +&lab pha + pha + MEND + MACRO +&lab mov &num1,&num2 +&lab lda &num1 + sta &num2 + MEND + MACRO +&lab _SetRandSeed +&lab ldx #$8704 + jsl $E10000 + MEND + MACRO +&lab pullword &SYSOPR +&lab ANOP + pla + AIF C:&SYSOPR=0,.end + sta &SYSOPR +.end + MEND + MACRO +&lab pushword &SYSOPR +&lab ANOP + AIF C:&SYSOPR=0,.b + LCLC &C +&C AMID "&SYSOPR",1,1 + AIF ("&C"="#").AND.(S:LONGA),.immediate + lda &SYSOPR + pha + MEXIT +.b + pha + MEXIT +.immediate + LCLC &REST + LCLA &BL +&BL ASEARCH "&SYSOPR"," ",1 + AIF &BL>0,.a +&BL SETA L:&SYSOPR+1 +.a +&REST AMID "&SYSOPR",2,&BL-2 + dc I1'$F4',I2'&REST' + MEND + MACRO +&lab _GetCtlHandleFromID +&lab ldx #$3010 + jsl $E10000 + MEND + MACRO diff --git a/source/twilight/nm/twilight/SNF.Macs b/source/twilight/nm/twilight/SNF.Macs new file mode 100644 index 0000000000000000000000000000000000000000..6ea5c507258411c90f63f5824071ec875f920b6f GIT binary patch literal 3655 zcmb_e&rjn<6n5AO0Rjp2)KeK5>hQw^J5X8>Td+;C1ldV&pj))6kQbZa#re_1>6WSo z{(v6n_S75OLn*B)?H|z7o_a*R_1eFnXN0u--i#e$FiljI!!Yyay>GrZ^WNu7r01pi zks5++yEWsbFj7)wV|0$YT7#R{g>nSO=nuof+?-3#2s>p${e)tsJ*oY2~YYjVe zhy&SsY`OkU)pxxBz_Y(1;}i4By&TRy7+!nxeVOA%hE`X&ME;6GeZDV>laZ%Th{{qg2nySh4+Rvv7SEGb^T zW;V5qKtI8tmM_k6{tFJT$O^|LxR>uwZs69rdOkON@iXrHhG(uOE`FHE&h^i&Xod9* zX1K9^@hj2K#&Cz2m#;6c`%g*VX{LXz|J(I7>7)ah?s5a_d(!V*;>IqG!F-itBwjHL zZa})`5~JY9Yru36hz?SogTRnxEcNXo`XJB-8(<8sa)QD?27P!dxLM5shDa_dA;MOnmpG1>?!pc-uiT)`QLCm4~FaOdVE zT)|1yFE=to&(IYWP>W<-FsA3zGeT}!UJR(D@`Y^x6jLe~^g{lTLJHX|#NisbGKZX) z(gKHE;DGCx2Ef`joo37Pfh2ZB{m_c{)N9ppjOV@n|4VCCYF`qe3au&Pm<~94w#BT# zwCS@s?8W7`XIfReR%r)fV}86SEr54dai~M@Kc~H4+AS4|W&on(3q=SIDuZodd7xX6cM%B+N_+T#=Ci<*EZERVPX*qnO$TxuL}qpcbS99-lxWfQ!D+8Vb>u zg9K*4iS8io?cCBL1kByIPRlia5ZVHSFxZEQ^iDnYRV5vs{1NzUc zd&d#}(vpN--TeX#qvTr+f2SS|PfPe9-NPY$_6X7NrS9PWP0X9 zI9D}wX21RRG$^yx8I;d-4FY8{tRtsrW0E@6DH~4loBKHKtQ^X^v*7IsH7oGKzy z4GUX6#cZ)BG!H#cVIo+z-4KP^!9mjrbvsa{wg3fE#8e(q_uy9SJu{1!8+Z>_@d#(&P+;bQc#C`Bo#uQ0h^Qk{A9HOxE?HbmVl8IEK|Y3dv}PRu#*-^OGU< zh+{gQV>O)+Dhl#Zk0AKjxVf9VNy$Cp>{Q(^T5T@3KBMwduPAjJet3i#-C-lG_lRQ} nS+{EEE%+r9f<>+;t@I3}*Q|d7>a_+<18zFxg2bYH?oaG3ig>R5 literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/Tunnel.Macs b/source/twilight/nm/twilight/Tunnel.Macs new file mode 100644 index 0000000..70c763b --- /dev/null +++ b/source/twilight/nm/twilight/Tunnel.Macs @@ -0,0 +1,58 @@ + +DUMP v3.12 - Copyright Peter Watson, 1989-91 + +/H1/system/cdevs/tw1/tunnelgame + +000000 | DB060000 00000000 01070000 00000402 | [ +000010 | 00000100 00000000 00000000 00000000 | +000020 | 00000100 00000000 30004500 00000000 | 0 E +000030 | 20202020 20202020 20200A20 20202020 | +000040 | 20202020 20F29103 0000C230 8B0B3B1A | r B0 ; +000050 | 5B4BAB3B 8D990348 48A20325 220000E1 | [K+; HH" %" a +000060 | A2048722 0000E1E2 20AF34C0 01AA290F | " " ab /4@ *) +000070 | 8D91038A 29F08F34 C0014B68 8DCA01C2 | )p 4@ Kh J B +000080 | 30AF9903 001BE220 A9E148AB AD19C010 | 0/ b )aH+- @ +000090 | FBAD19C0 30FBC220 A2FE7D9E 0020CACA | {- @0{B "~} JJ +0000A0 | 10F9A000 33A2207B 98EBA89D 32209D34 | y 3" { k( 2 4 +0000B0 | 209D3620 9D6E209D 70209D72 208A38E9 | 6 n p r 8i +0000C0 | A000AA10 E3A21E00 BF770400 9D009ECA | * c" ?w J +0000D0 | CA10F54B ABA26400 9E12049E AD03CACA | J uK+"d - JJ +0000E0 | 10F6A94B 008D9703 8D9B039C 95039C9D | v)K +0000F0 | 03A93200 8D9F038D A703A96E 008DA103 | )2 ' )n ! +000100 | 8DA903A7 08F01DE2 20AF34C0 0129F00D | ) ' p b /4@ )p +000110 | 91038F34 C001C220 2BFA7A68 68686868 | 4@ B +zzhhhhh +000120 | 5ADAAB6B C2300878 AF70C000 A00000A2 | ZZ+kB0 x/p@ " +000130 | 0300CAD0 FDAF64C0 00298080 F018C980 | JP}/d@ ) p I +000140 | 00300EF0 07C81002 300C80E9 E8300780 | 0 p H 0 ih0 +000150 | E4E8C8EA 10DF288E 9303AF61 C0002980 | dhHj _( /a@ ) +000160 | 80F01E48 A2048622 0000E168 8DAB03E2 | p H" " ah + b +000170 | 20AF19C0 0030FAAF 19C00010 FAC22080 | / @ 0z/ @ zB +000180 | 07AF2EC0 008DAB03 AD9303C9 5F00901A | /.@ + - I_ +000190 | C9A00090 28C9F500 B00BAD95 03490100 | I (Iu 0 - I +0001A0 | 8D9503D0 18EE9703 8013C90A 00900BAD | P n I - +0001B0 | 95034901 008D9503 F003CE97 03AD9703 | I p N - +0001C0 | CDA70390 05CDA903 9021E220 AF19C001 | M' M) !b / @ +0001D0 | 10FAAF19 C00130FA C220A21E 00A9FF0F | z/ @ 0zB " ) +0001E0 | 9F009EE1 CACA10F8 8294FEAD 97031869 | aJJ x ~- i +0001F0 | 7F2C8DC2 01AD9503 0AAABD97 0418691E | , B - *= i +000200 | 018DBF01 A21000DA A20000A0 0000A912 | ? " Z" ) +000210 | 008B54E1 E1ABADC2 0138E9A0 008DC201 | Taa+-B 8i B +000220 | ADBF0138 E912008D BF01FACA 10D9AD97 | -? 8i ? zJ Y- +000230 | 038D9B03 AD95038D 9D03AC9F 03E220AD | - , b - +000240 | 1204F010 1008CE9F 03CE9F03 8006EE9F | p N N n +000250 | 03EE9F03 A20000E2 20A9E148 ABAF1204 | n " b )aH+/ +000260 | 00F02810 14A90099 052099A4 20A93399 | p( ) $ )3 +000270 | FF1F999E 20888880 12A90099 FF1F99A0 |  )  +000280 | 20A93399 052099A6 20C8C8C2 20981869 | )3 & HHB i +000290 | 4001A8E2 20E8E063 00B00ABF 1204009F | @ (b h`c 0 ? +0002A0 | 11040080 BC4BABBD 12049D11 048CA303 | $00c035 + and #8 ;shadowing on? + bne NoShadow + lda #$0101 ;if so, faster draw to bank 01 + dc h'cf' +NoShadow lda #$E1E1 + sta MvnLoc+1 ;most important-- fast mvn if available + sta MvnLoc2+1 ;most important-- fast mvn if available + + lda DClockPrefs + and #$FF + sta ClockType + cmp #3 + blt DoDefType + +GetClockType WordResult + _Random + pla + and ClockType ;mask to 0-3... +DoDefType dec a + bmi GotoASClock + dec a + bmi GotoAClock + beq DoDClock ;0 now means was 2=DClock + bra GetClockType ;3= still random + +GotoAClock brl DoAClock +GotoASClock brl DoASClock +ClockType ds 2 + +DoDClock mov #$F00,>$e19e02 + stz OnColor ;now in current bank + + PushWord #1 ;color # + _SetSolidPenPat + PushWord #0 + _SetSolidBackPat + +NewLoc LongResult + WordResult + _Random ;random # + PushWord #160 ;divide by + _UDivide + pla + pla ;modulo + lsr a + asl a ;make it on an even byte boundary + sta Left ;left edge of stuff to draw + clc + adc #40 + sta WipeRect+6 ;for erasing hours +GetNewY LongResult ;for Division + WordResult + _Random + PushWord #171 ;to divide by + _UDivide + pla ;quotient + pla ;modulo result (0-170) + sta Top + clc + adc #29 + sta WipeRect+4 + jsr GetTimed + jsr Buf2Digs + lda Top + clc + adc #6 + sta Circle + clc + adc #4 + sta Circle+4 + lda Left + clc + adc #46 + sta Circle+2 + clc + adc #5 + sta Circle+6 + PushLlcl #Circle + _PaintOval + lda Circle + clc + adc #13 + sta Circle + clc + adc #4 + sta Circle+4 + PushLlcl #Circle + _PaintOval + stz LastDigits + stz LastDigits+2 + stz LastDigits+4 ;clean up after last time... + + jsr DrawAll + +LessThan mov #1,WasAbove + +WaitAround lda [T2Data1] ;check done ptr in long mode just in case + bne Done + + lda >$E0C02E ;vertical counter, upper 8 bits of it + and #$00FF + rol a + cmp WaitFor + blt LessThan + + lda WasAbove ;check position on screen + beq WaitAround ;check if we've already displayed it... + stz WasAbove ;flag below + dec CountTwo + bpl WaitAround + lda DClockPrefs + xba + and #$FF + sta CountTwo + + jsr MoveIt + jsr GetTimed + +* short M +*Wait1d lda >$e1C019 ;wait for start of next refresh +* bpl Wait1d ;so no-blink screen clear +*Wait2d lda >$E1C019 +* bmi Wait2d +* Long M ;force at least 1 full wait + + lda Buffer+$F + cmp Digits+4 ;seconds changed yet? + beq WaitAround + ldx OnColor + lda Colors,x ;next color + sta >$e19e02 + inx + inx + cpx #ColorsLen + blt OkColor + ldx #0 +OkColor stx OnColor +DontJump jsr Buf2Digs + jsr DrawAll + bra WaitAround + +done anop + stz <16 + stz <18 ;return w/no error +Bye anop + pld + plx + ply ;return address & bank + pla + pla ;T2data2 + pla + pla ;T2data1 + pla ;Message + phy + phx + plb + rtl + +GetTimed PushLlcl #Buffer + _ReadAsciiTime + ldx #18 +ToLowAscii lda Buffer,x + and #$7F7F + sta Buffer,x + dex + dex + bpl ToLowAscii + rts + +Buf2Digs lda Buffer+9 + cmp Digits ;hours changed? + beq Min2Digs + sta Digits ;update in memory + stz LastDigits ;and screen update list + lda Top + clc + adc #29 + sta WipeRect+4 + lda Left + clc + adc #40 + sta WipeRect+6 + + PushLlcl #WipeRect + _EraseRect +Min2Digs lda Buffer+$C + sta Digits+2 + lda Buffer+$F + sta Digits+4 +AnRts long I,m + rts + +DrawSeconds lda Left + clc + adc #140 + sta CharSX + lda Digits+5 ;fall into DrawDigit + ldx #5 ;correct place + +DrawDigit and #$FF ;clear a's hob + Short M + cmp #$20 ;space + beq AnRts ;quit if a space + sec + sbc #$30 ;mask into 0-9 + bmi AnRts ;in case out of range + cmp #$A + bge AnRts + tay + lda DigitBars,y + eor LastDigits,x ;get real set of bars to change + beq AnRts ;don't draw when nothing to update + sta ToDraw + lda DigitBars,y ;really what's on now + sta LastDigits,x + Long I,m ;long mode for tools + stz TblOffset + ldy #8 +DrawStuff phy ;save counter + lsr ToDraw + bcc NextBar ;branch if nothing to draw + ldx TblOffset + PushWord Line3EDX,x + PushWord Line3EDY,x + PushWord Line3SX,x + PushWord Line3SY,x + PushWord Line2EDX,x + PushWord Line2EDY,x + PushWord Line2SX,x + PushWord Line2SY,x + PushWord Line1EDX,x + PushWord Line1EDY,x + PushWord Line1SX,x + PushWord Line1SY,x + jsr ToTL + _Move + _Line ;draw 1st line + jsr ToTl + _Move + _Line ;draw 2nd line + jsr ToTl + _Move + _Line ;draw 3rd line +NextBar inc TblOffset + inc TblOffset + ply + dey + beq AnRts2 + brl DrawStuff + +ToTl PushWord CharSX + PushWord Top + _MoveTo +AnRts2 rts + +DrawAll ldx #0 ;6 digits to put on screen, counting up + mov Left,CharSX +DrawEm phx + lda Digits,x + jsr DrawDigit + plx + txa + asl a + tay + lda CharSX + clc + adc Widths,y ;adjust start of next one + sta CharSX + inx + cpx #6 + blt DrawEm + rts + +MoveIt anop + Long I,m + lda Left + cmp #2 + bge NotTooLeft + mov #1,MoveDirectX +NotTooLeft lda Left + cmp #319-158 + blt NotTooRight + mov #-1,MoveDirectX +NotTooRight lda Top + cmp #2 + bge NotTooHigh + mov #1,MoveDirectY +NotTooHigh lda Top + cmp #199-29 + blt NotTooLow + mov #-1,MoveDirectY +NotTooLow lda Top ;y coord + dec a ;move one blank line above it for safety + xba + lsr a ;now, y* 128 + pha + lsr a ;*64 + lsr a ;*32 + clc + adc 1,s + adc #$2000 + sta 1,s + lda Left + lsr a ;320-pixel to byte conv + dec a ;minus one for erase area + clc + adc 1,s + sta TopLeftByte + pla + lda MoveDirectY + bmi MovingUp + lda #160 ;next row is +160 bytes away + dc h'cf' ;skip next 3 bytes +MovingUp lda #-160 + clc + adc MoveDirectX ;could be negative, so keep carry ok + sta $E19e00,x + dex + dex + bpl NextPal + + jsr GetTime +NewLocA WordResult + _Random + pla + and #$7F + clc + adc #96 + sta CenterX ;center it on the field + sec +XCenter sbc #45 + sta Left + WordResult + _Random + pla + and #$3F + clc + adc #68 + sta CenterY + sec +YCenter sbc #39 + sta Top + jsr DrawTicks + jsr DrawHrMin + jsr DrawSecond + +LessThanA mov #1,WasAbove + +WaitAroundA lda [T2Data1] ;check done ptr in long mode just in case + beq ContAClock + brl Done + +ContAClock lda >$E0C02E ;vertical counter, upper 8 bits of it + and #$FF ;dump horiz count in upper 8 bits of a + rol a ;insert a 0 or 1, for full 9 bits + cmp WaitFor + blt LessThanA + + lda WasAbove ;check position on screen + beq WaitAroundA ;check if we've already displayed it... + stz WasAbove ;flag below + dec CountTwo + bpl WaitAroundA + lda DClockPrefs + xba + and #$FF + sta CountTwo + + jsr MoveItA + jsr GetTime + + lda LastSeconds + cmp TheTime + beq WaitAroundA + + lda LastSeconds ;move back to last second + jsr DrawSecond2 ;erase last second + jsr DrawSecond ;draw new one + + lda LastMinHr ;last minute & hour drawn + cmp TheTime+1 + beq WaitAroundA + jsr DrawHrMin2 + jsr DrawHrMin ;draw update + + bra WaitAroundA + +GetTime pha + pha + pha + pha + _ReadTimeHex + pla + sta TheTime + pla + sta TheTime+2 + pla + sta TheTime+4 + pla + sta TheTime+6 + rts + +DrawHrMin lda TheTime+1 +DrawHrMin2 pha ;and save it on stack + sta LastMinHr ;save minute & hour drawn + and #$FF + sta Minutes ;minutes Only + pla + xba ;flip hours into low byte + and #$FF ;mask to hours only + cmp #12 + blt HoursOk ;if hours >12, then + sec + sbc #12 ;make 0-11 (like regular clock) +HoursOk tay + lda #0 + tyx ;re-set flags +AddupHours beq AddMins ;multiply hours by 60 + clc + adc #60 + dex + bra AddUpHours ;do all hours +AddMins clc + adc Minutes ;+ minutes=minutes so far today + lsr a + lsr a ;divide by 4 for offsets + ldx CenterX + dex + dex + phx ;end of line + ldx CenterY + dex + dex + phx + tax ;change into offset +HoursDXRef lda HoursDX,x + and #$FF ;1 byte only + pha +HoursDYRef lda HoursDY,x + and #$FF + pha + PushWord Left + PushWord Top + _MoveTo + PushWord #1 + _SetSolidPenPat ;blue pen +HrPenSize lda #6 + pha + pha ;6*6 pen + _SetPenSize + _Move + _LineTo ;data is sitting on the stack! + lda #2 + pha ;red pen +MinPenSize lda #4 + pha + pha ;4*4 pen + _SetPenSize ;for minute hand + _SetSolidPenPat + lda CenterX + dec a ;account for 4*4 pen + pha + lda CenterY + dec a + pha ;save it on stack for draw + + lda Minutes + ldy #-51 ;offset to drawing: just negative + bra DrawMinSec + +DrawSecond lda TheTime +DrawSecond2 sta LastSeconds ;save value plotted + pha ;save thru toolbox calls +SecPenSize lda #2 + pha + pha ;2*2 pen + lda #4 + pha ;green + _SetSolidPenPat + _SetPenSize ;for minute hand + pla ;restore value + ldy #0 ;no delta in drawing + ldx CenterX + phx ;end of line + ldx CenterY + phx +DrawMinSec and #$FF ;mask to low byte (seconds only) + tax ;use as index +MinDXRef lda MinSecDX,x + and #$FF ;1 byte only + iny + bpl XIsOk + dec a ;-1 for 4*4 pen +XIsOk pha +MinDYRef lda MinSecDY,x + and #$FF ;1 byte only + iny ;test y-reg + bpl YIsOk + dec a ;-1 for 4*4 pen +YIsOk pha + PushWord Left + PushWord Top + _MoveTo + _Move + _LineTo ;already on stack! + rts + +DrawTicks PushWord #7 ;white + _SetSolidPenPat +TickSize lda #2 + pha + pha + _SetPenSize ;2*2 pen + ldx #22 +DrawAllTiks phx +TickEndXRef PushWord TickEndX,x +TickEndYRef PushWord TickEndY,x +TickStXRef PushWord TickStartX,x +TickStYRef PushWord TickStartY,x + lda CenterX + pha + lda CenterY + pha + _MoveTo + _Move + _Line + plx + dex + dex + bpl DrawAllTiks + rts + +MoveItA Long I,m + lda Left + cmp #6 + bge NotTooLeftA + mov #1,MoveDirectX +NotTooLeftA lda Left +RMargin cmp #319-98 + blt NotTooRightA + mov #-1,MoveDirectX +NotTooRightA lda Top + cmp #6 + bge NotTooHighA + mov #1,MoveDirectY +NotTooHighA lda Top +BotMargin cmp #199-82 + blt NotTooLowA + mov #-1,MoveDirectY +NotTooLowA lda Top ;y coord + dec a ;move one blank line above it for safety + dec a + dec a + xba + lsr a ;now, y* 128 + pha + lsr a ;*64 + lsr a ;*32 + clc + adc 1,s + adc #$2000 + sta 1,s + lda Left + lsr a ;320-pixel to byte conv + dec a ;minus two for erase area + dec a + clc + adc 1,s + sta TopLeftByte + pla + lda MoveDirectY + bmi MovingUpA + lda #160 ;next row is +160 bytes away + dc h'cf' ;skip next 3 bytes +MovingUpA lda #-160 + clc + adc MoveDirectX ;could be negative, so keep carry ok + clc + adc TopLeftByte + sta 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 E3#E?Ug#Z8m literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/clocks.rez b/source/twilight/nm/twilight/clocks.rez new file mode 100644 index 0000000000000000000000000000000000000000..d625e2776f98d7fb40fcecf5bd467fd545422a8b GIT binary patch literal 7233 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 literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/datactl.info b/source/twilight/nm/twilight/datactl.info new file mode 100644 index 0000000000000000000000000000000000000000..514125de04ea02669a86a78c19d0f4d9bf8360d6 GIT binary patch literal 9304 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,x + rts +PlotError ply + pla + rts +OddPix clc + adc 1,s + cmp #$8000 + bge PlotError ;don't plot if off screen + ply + tax ;byte address of pixel + pla ;color + and #$000F ;right pixel + sta Color + lda >$e12000,x + and #$FFF0 + ora Color + sta >$E12000,x + rts +Color ds 2 + +ChkColor phx + pha ;original value + jsr SplitColor + lda Red + sec + sbc Blue + bpl ChkRedBlue + eor #-1 + inc a +ChkRedBlue cmp #ColorDiff + blt Bad2 + lda Red + sec + sbc Green ;difference between red & green + bpl ChkRedGreen + eor #-1 + inc a +ChkRedGreen cmp #ColorDiff + blt Bad2 + lda Green + sec + sbc Blue ;diff between blu & green + bpl ChkBlueGrn + eor #-1 + inc a +ChkBlueGrn cmp #ColorDiff + blt Bad2 ;good, bright color here! + pla ;original value + plx ;entry value + clc ;good value + rts + +Bad2 pla ;orig value + plx ;original color + sec ;return w/error + rts + +SplitColor pha + and #$F + sta Blue + lda 1,s + lsr a + lsr a + lsr a + lsr a + and #$F + sta Green + pla ;get original value off stack + xba + and #$F + sta Red + rts + +IncColor sta OrigColor + jsr SplitColor + lda Red + cmp #$F + bge BadInc + lda Green + cmp #$F + bge BadInc + lda Blue + cmp #$F + bge BadInc + inc Red + inc Green + inc Blue +MakeColor lda Red + asl a + asl a + asl a + asl a + ora Green + asl a + asl a + asl a + asl a + ora Blue + rts +BadInc lda OrigColor + rts + +DecColor sta OrigColor + jsr SplitColor + lda Red + beq BadInc ;if 0, don't go any farther + lda Green + beq BadInc + lda Blue + beq BadInc + dec Red ;ok, none are 0, so can drop + dec Green + dec Blue +DoneDec bra MakeColor ;from Red, Green & blue components + + +;................................................................ + +OrigColor ds 2 +Red ds 2 +Green ds 2 +Blue ds 2 +EntryStack ds 2 +StartX ds 4 ;4 for 32-bit frac adds +StartY ds 4 ;ditto +TargetX ds 2 +TargetY ds 2 +XDSpeed ds 4 +YSpeed ds 4 +OldBorder ds 2 +ParamOffset ds 2 +ColorH ds 2 +ColorL ds 2 +Erase ds 2 +Running ds 2 +Block1 ds 50 +Block2 ds 50 + +Blocks dc a'Block1,Block2' + +EndFW equ 245 +SetColor equ 246 +WaitTick equ 247 +SetErase equ 248 +SetRunBlock equ 249 +RunNow equ 250 +Brighter equ $FFFF ;-1 +Darker equ $FFFE ;-2 + +FWs dc a'FW1Code,FW2Code,FW3Code,FW4Code,FW5Code,FW6Code,FW7Code' + dc a'FW8Code,FW9Code,FW10Code,FW11Code,FW12Code,FW13Code' + dc a'FW14Code,FW15Code,FW16Code' + +Colors dc H'EEEEEEEEEEDDDDDDCCCCCCBBBBBBAAAAAA9999999999999999' ;1-25 + DC H'99999999999999999999FF' ;26-36 + dc H'EEEEEEEEEEDDDDDDCCCCCCBBBBBBAAAAAA99999999999999FF' ;1-25 + dc H'EEEEEEEEEEDDDDDDCCCCCCBBBBBBAAAAAA99999999999999FF' ;1-25 + +FWDTrans dc a'FW1D1,FW1D2,FW1D3,FW1D4,FW1D5,FW1D6,FW1D7,FW1D8,FW1D9' + DC A'FW1D10,FW1D11,FW1D12,FW1D13,FW1D14,FW1D15,FW1D16' + DC A'FW1D17,FW1D18,FW1D19,FW1D20,FW1D21,FW1D22,FW1D23' + DC A'FW1D24,FW1D25,FW1D26,FW1D27,FW1D28,FW1D29,FW1D30' + DC A'FW1D31,FW1D32,FW1D33,FW1D34,FW1D35,FW1D36' + dc a'FW2D1,FW2D2,FW2D3,FW2D4,FW2D5,FW2D6,FW2D7,FW2D8,FW2D9' + DC A'FW2D10,FW2D11,FW2D12,FW2D13,FW2D14,FW2D15,FW2D16' + DC A'FW2D17,FW2D18,FW2D19,FW2D20,FW2D21,FW2D22,FW2D23' + DC A'FW2D24,FW2D25' + dc a'FW3D1,FW3D2,FW3D3,FW3D4,FW3D5,FW3D6,FW3D7,FW3D8,FW3D9' + DC A'FW3D10,FW3D11,FW3D12,FW3D13,FW3D14,FW3D15,FW3D16' + DC A'FW3D17,FW3D18,FW3D19,FW3D20,FW3D21,FW3D22,FW3D23' + DC A'FW3D24,FW3D25' +FW1P1 EQU 1+15 +FW1P2 EQU 2+15 +FW1P3 EQU 3+15 +FW1P4 EQU 4+15 +FW1P5 EQU 5+15 +FW1P6 EQU 6+15 +FW1P7 EQU 7+15 +FW1P8 EQU 8+15 +FW1P9 EQU 9+15 +FW1P10 EQU 10+15 +FW1P11 EQU 11+15 +FW1P12 EQU 12+15 +FW1P13 EQU 13+15 +FW1P14 EQU 14+15 +FW1P15 EQU 15+15 +FW1P16 EQU 16+15 +FW1P17 EQU 17+15 +FW1P18 EQU 18+15 +FW1P19 EQU 19+15 +FW1P20 EQU 20+15 +FW1P21 EQU 21+15 +FW1P22 EQU 22+15 +FW1P23 EQU 23+15 +FW1P24 EQU 24+15 +FW1P25 EQU 25+15 +FW1P26 EQU 26+15 +FW1P27 EQU 27+15 +FW1P28 EQU 28+15 +FW1P29 EQU 29+15 +FW1P30 EQU 30+15 +FW1P31 EQU 31+15 +FW1P32 EQU 32+15 +FW1P33 EQU 33+15 +FW1P34 EQU 34+15 +FW1P35 EQU 35+15 +FW1P36 EQU 36+15 +FW2P1 EQU 37+15 +FW2P2 EQU 38+15 +FW2P3 EQU 39+15 +FW2P4 EQU 40+15 +FW2P5 EQU 41+15 +FW2P6 EQU 42+15 +FW2P7 EQU 43+15 +FW2P8 EQU 44+15 +FW2P9 EQU 45+15 +FW2P10 EQU 46+15 +FW2P11 EQU 47+15 +FW2P12 EQU 48+15 +FW2P13 EQU 49+15 +FW2P14 EQU 50+15 +FW2P15 EQU 51+15 +FW2P16 EQU 52+15 +FW2P17 EQU 53+15 +FW2P18 EQU 54+15 +FW2P19 EQU 55+15 +FW2P20 EQU 56+15 +FW2P21 EQU 57+15 +FW2P22 EQU 58+15 +FW2P23 EQU 59+15 +FW2P24 EQU 60+15 +FW2P25 EQU 61+15 +FW3P1 EQU 62+15 +FW3P2 EQU 63+15 +FW3P3 EQU 64+15 +FW3P4 EQU 65+15 +FW3P5 EQU 66+15 +FW3P6 EQU 67+15 +FW3P7 EQU 68+15 +FW3P8 EQU 69+15 +FW3P9 EQU 70+15 +FW3P10 EQU 71+15 +FW3P11 EQU 72+15 +FW3P12 EQU 73+15 +FW3P13 EQU 74+15 +FW3P14 EQU 75+15 +FW3P15 EQU 76+15 +FW3P16 EQU 77+15 +FW3P17 EQU 78+15 +FW3P18 EQU 79+15 +FW3P19 EQU 80+15 +FW3P20 EQU 81+15 +FW3P21 EQU 82+15 +FW3P22 EQU 83+15 +FW3P23 EQU 84+15 +FW3P24 EQU 85+15 +FW3P25 EQU 86+15 + +FW1Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW1P1,FW1P36' + dc i1'RunNow' + dc i1'EndFW' + +FW2Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW1P1,FW1P20' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW1P21,FW1P36' + dc i1'SetRunBlock,2,FW1P1,FW1P16' + dc i1'RunNow' + dc i1'EndFW' + +FW3Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW2P1,FW2P25' + dc i1'RunNow' + dc i1'EndFW' + +FW4Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW1P1,FW1P20' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW1P21,FW1P36' + dc i1'SetRunBlock,2,FW2P1,FW2P16' + dc i1'RunNow' + dc i1'EndFW' + +FW5Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW3P1,FW3P25' + dc i1'RunNow' + dc i1'EndFW' + +FW6Code anop + dc i1'SetErase,25' + dc i1'SetRunBlock,1,FW2P1,FW2P25' + dc i1'RunNow' + dc i1'EndFW' + +FW7Code anop + dc i1'SetErase,25' + dc i1'SetRunBlock,1,FW3P1,FW3P25' + dc i1'RunNow' + dc i1'EndFW' + +FW8Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW2P1,FW2P15' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW2P16,FW2P25' + dc i1'SetRunBlock,2,FW3P1,FW3P10' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW3P11,FW3P25' + dc i1'RunNow' + dc i1'EndFW' + +FW9Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW1P1,FW1P13' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW2P14,FW2P25' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW1P26,FW1P35' + dc i1'RunNow' + dc i1'EndFW' + +FW10Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW1P1,FW1P13' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW2P14,FW2P25' + dc i1'RunNow' + dc i1'EndFW' + +FW11Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW2P1,FW2P25' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW1P26,FW1P36' + dc i1'RunNow' + dc i1'EndFW' + +FW12Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW1P1,FW1P13' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW3P14,FW3P25' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW1P26,FW1P35' + dc i1'RunNow' + dc i1'EndFW' + +FW13Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW1P1,FW1P13' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW3P14,FW3P25' + dc i1'RunNow' + dc i1'EndFW' + +FW14Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW3P1,FW3P25' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW1P26,FW1P36' + dc i1'RunNow' + dc i1'EndFW' + +FW15Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW1P1,FW1P20' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW1P21,FW1P36' + dc i1'SetRunBlock,2,FW3P1,FW3P16' + dc i1'RunNow' + dc i1'EndFW' + +FW16Code anop + dc i1'SetErase,5' + dc i1'SetRunBlock,1,FW1P1,FW1P20' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW1P21,FW1P25' + dc i1'SetRunBlock,2,FW3P1,FW3P5' + dc i1'RunNow' + dc i1'SetRunBlock,1,FW3P6,FW3P25' + dc i1'RunNow' + dc i1'EndFW' + +FW1D1 anop + dc h'E52125232423242324232323E321E321E321A320A420A420A420A520E521E521FFFF' +FW1D2 anop + dc h'2623252365246424632423232223E221A220A320A320641FA520A520A620E621FFFF' +FW1D3 anop + dc h'27236624A525A425A32562242123E121A120621F631F641F651F661FA720E721FFFF' +FW1D4 anop + dc h'6824A725E626E426E226A1256024E021A020611F221E241E261E671FA820E821FFFF' +FW1D5 anop + dc h'6924A825E6262428E226A0255F24DF219F20201EE21CE41CE61C281EA920E921FFFF' +FW1D6 anop + dc h'6A24E826262864292228E0265E24DE215E1F201EE21CA41BE61C281E6A1FEA21FFFF' +FW1D7 anop + dc h'AA2529286729A42A61291F289E251D235E1FDF1CA11B641AA71BE91C6A1F2B23FFFF' +FW1D8 anop + dc h'AB256A29A72AE42BA12A5E299D251C235D1FDE1C611A641A671AEA1C6B1F2C23FFFF' +FW1D9 anop + dc h'EC266A29E72B242DE12B5E29DC261B235C1F9E1B211924192719AA1B6C1F2D23FFFF' +FW1D10 anop + dc h'ED26AB2A282D642E202D9D2ADB261A231B1E9D1B2019E4172819AB1B2D1E2E23FFFF' +FW1D11 anop + dc h'2E28EC2B682E642E602EDC2B1A2819231A1E5C1AE017A416E8176C1A2E1E2F23FFFF' +FW1D12 anop + dc h'2F28EC2BA92FA42F9F2FDC2B19281823191E1C199F166415A9162C192F1E3023FFFF' +FW1D13 anop + dc h'30282D2DE930E430DF301B2D18281723181E1B195F15641569152D19301E3123FFFF' +FW1D14 anop + dc h'71296E2EE9302432DF305A2E57291623D71CDA175F1524146915EE17F11C3223FFFF' +FW1D15 anop + dc h'72296F2E2A3264331E32592E56291523D61CD9171E14E4122A14EF17F21C3323FFFF' +FW1D16 anop + dc h'B32AAF2F6A33A4345E33992F952A1423D51C9916DE12A411EA12AF16F31C3423FFFF' +FW1D17 anop + dc h'B42AF030AB34E4359D34D830942A1323D41C9816DD126410EB12B016F41C3523FFFF' +FW1D18 anop + dc h'B52A3132EB352437DD351732932A1223931B57159D116410AB117115B51B3623FFFF' +FW1D19 anop + dc h'F62B31322B3764381D371732D22B5124921B57155D10240F6B107115B61B7724FFFF' +FW1D20 anop + dc h'F62B72336C38A4395C385633D22B5024921B16141C0FE40D2C0F3214B61B7824FFFF' +FW1D21 anop + dc h'372DB334AC39E43A9C399534112D4F24911B15141C0FA40C2C0F3314B71B7924FFFF' +FW1D22 anop + dc h'382DB434EC3A243CDC3A9434102D4E24901BD412DC0DA40CEC0DF412B81B7A24FFFF' +FW1D23 anop + dc h'792EF4352D3C643D1B3CD4354F2E4D244F1AD4129B0C640BAD0CF412791A7B24FFFF' +FW1D24 anop + dc h'7A2E35376D3DA43E5B3D13374E2E4C244E1A93119B0C240AAD0CB5117A1A7C24FFFF' +FW1D25 anop + dc h'BB2F76386E3DE43F5A3D52388D2F4B244D1A92115A0BE4086E0BB6117B1A7D24FFFF' +FW1D26 anop + dc h'BC2F7638AE3E24419A3E52388C2F4A244C1A52101A0AE4082E0A76107C1A7E24FFFF' +FW1D27 anop + dc h'FD30B739EE3F6442DA3F9139CB3089250B1951101A0AA4072E0A77103D19BF25FFFF' +FW1D28 anop + dc h'FE30F83A2F41A44319 \ No newline at end of file diff --git a/source/twilight/nm/twilight/fireworks.asm b/source/twilight/nm/twilight/fireworks.asm new file mode 100644 index 0000000000000000000000000000000000000000..f08695be55b52d5af79f60ef34cb467896ffe672 GIT binary patch literal 22908 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 literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/fireworks.rez b/source/twilight/nm/twilight/fireworks.rez new file mode 100644 index 0000000..b4b084a --- /dev/null +++ b/source/twilight/nm/twilight/fireworks.rez @@ -0,0 +1,95 @@ +// itemTitleRef +}; + +resource rMenuItem (MENUITEM_0000010D, $C018) { + 3, // itemID -- DYA + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + PSTR_0000010D // itemTitleRef +}; + +resource rMenuItem (3, $C018) { + 4, // itemID -- DIAMOND + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + 3 // itemTitleRef +}; + +resource rMenuItem (4, $C018) { + 5, // itemID -- PYRAMID + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + 4 // itemTitleRef +}; + +resource rMenuItem (MENUITEM_0000010C, $C018) { + 6, // itemID + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + PSTR_0000010C // itemTitleRef +}; + +resource rMenuItem (MENUITEM_0000010B, $C018) { + 7, // itemID + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + PSTR_0000010B // itemTitleRef +}; + +resource rMenuItem (2, $C018) { + 8, // itemID + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + 2 // itemTitleRef +}; + +resource rMenuItem (MENUITEM_0000010A, $C018) { + 9, // itemID + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + PSTR_0000010A // itemTitleRef +}; + +resource rMenuItem (MENUITEM_00000109, $C018) { + 10, // itemID + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + PSTR_00000109 // itemTitleRef +}; + +resource rMenuItem (MENUITEM_00000108, $C018) { + 11, // itemID + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + PSTR_00000108 // itemTitleRef +}; + +resource rMenuItem (MENUITEM_00000110, $C018) { + 12, // itemID + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + PSTR_00000110 // itemTitleRef +}; + +resource rMenuItem (MENUITEM_0000010F, $C018) { + 13, // itemID + "","", // itemChar, itemAltChar + NIL, // itemCheck + $8000, // itemFlag + PSTR_0000010F // itemTitleRef +}; + +resource rMenuItem (MENUITEM_0000010E, $C018) { + 14, // itemID + "","", // itemChar, itemAltChar + NIL, // itemCheck diff --git a/source/twilight/nm/twilight/go b/source/twilight/nm/twilight/go new file mode 100644 index 0000000000000000000000000000000000000000..52ba1fbbc02e0194cd992609e6bfcc2aa3e0a224 GIT binary patch literal 1592 zcmc&!&1%9x5cbfELf&B-a?lcMVq1;$WUPVsTQmg^LJ4+SgKH9!6@=1LAEnSkAE8gs zSL&@Blc+HiN-cE=VdmR!zS-}vLve0cl;8mGx!ltwm*a9C`p&|eAb4H07dpi`vKjgt6H3yAd{WsS_fifd54Bh5bxd_t4JZl;m zYJU{IMYa>dRlw_WcR_rFzDq5~_WATy`GHtD5*rJW%oMVGYxQTPluANECxx$>Az=^` z&f{cEM@ewwO*W*EyvMYbrVzENWxS@!pR(7-5 z;y4+wo0T2K8%7$OxqkTH%rw}1rrquzhFSt{m@1y~7x^Ud)9Ht-0OC<`c@eG79}QMM zescrzxA?v_9H(I}!dB~Zz|}*DzIJ`e-LvzLE52+)Uq2cr`RH2SM@Jj_25AxG*)Z|a zu@}uoB5HrQS&YjM(~B#ZDpi7)f$RCA5azfZv@UkEGU1}epo9y8Qw11Oc(t;!@Rh60 zExq6};IM!@uz<|zwC)DSxHD|8*&2>UX)=t86hdW5G*4WUd2WVqMljWku1d4$Sry?M z0YI@LMit$Hl5~r*z+gTZk>9zDsI+A4R4(UP5JRcW*9%TcS1R*26L-K^|Z*LL9g&P<@UX~Xcf!`ER7N20a zBpwY(FT%IM=#uO-9wsVGm&AjqP+J{lk%p?Z;b-Z-);tH}nQ>0k$EwyvBqUn0LpTzi zGqAA^hme&gh}`ywnz7=4`xpsV7n2Ld|@Siwj2jhv{foWz*F<^=u`RGgIR zMNSqN0YVVB$Ou|{alFC@z;4BcNI&bN%0m7jF1ELH9$10~opW-QmPb?fEz*Odh~kVl zFwc>}TBKvtNI3HAV%lbn^sIGASj}v+I^)4$j$B)3JWgxm`a0wEeT{UCwRMh$HFAAN J`zN=3egSSpc=P}O literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/impulse.rez b/source/twilight/nm/twilight/impulse.rez new file mode 100644 index 0000000000000000000000000000000000000000..b5bc793adcb734f52be5e2685ab95e9950bf1e74 GIT binary patch literal 16699 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 literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/impulse.s b/source/twilight/nm/twilight/impulse.s new file mode 100644 index 0000000000000000000000000000000000000000..16abe2caebe6dc54efac51a51ab69ca18db4f4be GIT binary patch literal 11904 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 literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/ledmsg.rez b/source/twilight/nm/twilight/ledmsg.rez new file mode 100644 index 0000000000000000000000000000000000000000..7e91781b29fb796c9247b67bf9c08e07410abe24 GIT binary patch literal 4378 zcmeH~O>^5s7=YCS4C`Vpe4Mw5hn5l?$!<+Do+&uCoSLZ}4|ZEPF|xFZMdV#|wP_ME zIZ}qNzrcn6z=b16X1MVe`ZE~bcV)$PB**2_j~Ou)Q$X!ei#HP93$Q7G*uGp$w6qnYrfubab z%ZoLatF^{h`ma{qW?B%q~CVr7;G@Hruxf@<~zt6aC*))=UklbC{ujbu_ zxwo*Zri1)5g$RPxDu7zya!%XR;0i7^Y%b@tyQzP3Ik$){=aTSO+dJnH!%O4)&wekn zm$S+Kzq?-G|25h5c)9LOeS8+XyuUfwG?Kf^Fy1x{6=kpJwF0 zqWs-rAv5u|c6#mdUZaE14~hJZzTF$z<=sK5xU1ziUhjA8rhP6ojPJGl z!`E7S%|RuF;rS$yU+p$Jy{_FW5AJ@hXTQ_(tvNCo{;1`jUcJ`0?T5Bq?%EAK@spN+ zmf?TSNL~@amGYJMjDL)$#$U#7#xKSbgBuTwJI4FQTQ_O<{$NOVY}&hjk3MEH4g{xG z*`zl&;giDLNIxnzpOFO46`_z+IirwGtsLX7oHyl3=P2O&bRxWznRDa^p<OMCz@mZ(C?HHS4mC*@4Ln-9+$j(;zOTl!S@^n2r@lUn zRp1A%qj2FV7vzAki1cA6L}e^(u|OuSh)$-WuH(kI3>tu<1dkaVC`YPd;fsdn5%%bi z)QW{K)A8+Mp^5vU75KiMtlR>N(Rf5ieV{OL5qi{fltV`jKhSf!4@c+*NDq1yyU+*R zB@Vv1GZ`!cv0+(HAP5%}wNmIg#JWZ54#Wppxv#126Crl znyy)eLVz`otb=wuc08dEfZ!O|h%?d?11*JD)LJjW8d{_t_%s$9)OTV$5_oQ?61r5> zw1D+oGQRHm*TLn~z*OC~Y@CnASg{DJne_04IHe-pV&S0^C`q2a0iB{zX8-^I literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/makemacs b/source/twilight/nm/twilight/makemacs new file mode 100644 index 0000000..23d7e68 --- /dev/null +++ b/source/twilight/nm/twilight/makemacs @@ -0,0 +1,42 @@ +#include "types.rez" +#include "t2common.rez" + +// --- Flags resource + +resource rT2ModuleFlags (moduleFlags) { + fFadeOut+fFadeIn+fGrafPort320+fLeavesUsableScreen, // module flags word + $01, // enabled flag (unimplemented) + $0110, // minimum T2 version required + NIL, // reserved + "Perspective" // module name +}; + +// --- About text resource + +resource rTextForLETextBox2 (moduleMessage) { + TBLeftJust + TBBackColor TBColorF + TBForeColor TBColor1 + "Perspective" + TBForeColor TBColor0 + " generates random patterns, as if looking down a hallway.\n" + TBForeColor TBColor4 + "Written by Nathan Mates, dedicated to Ah-Ram Kim." +}; + +// --- Version resource + +resource rVersion (moduleVersion) { + {1,0,0,final,2}, // Version + verUS, // US Version + "T2 Perspective Module", // program's name + "By Nathan Mates.\n" + "Special Thanks to Jim Maricondo." // copyright notice +}; + +// --- About icon resource + +resource rIcon (moduleIcon) { + $8000, // kind + $0014, // height + $0016, // widt \ No newline at end of file diff --git a/source/twilight/nm/twilight/makepdp.asm b/source/twilight/nm/twilight/makepdp.asm new file mode 100644 index 0000000..7ddf305 --- /dev/null +++ b/source/twilight/nm/twilight/makepdp.asm @@ -0,0 +1,88 @@ + keep SNF + mcopy SNF.Macs + copy T2Common.equ + copy 18/e16.memory + +SNF Start +Water equ 0 +Shark equ 1 +Fish equ 2 +WaitHz equ 40 + phb ;Store old data bank + phk + plb + + phd + tsc + inc a + tcd + tsc + sta EntryStack + + lda T2Message ;action code? + cmp #2 + beq StartBlank + brl Setup + + +StartBlank anop + stz 16 + stz 18 ;return w/no error + + lda >$00c035 + and #8 ;shadowing on? + bne NoShadow + lda #$0101 ;if so, faster draw to bank 01 + dc h'cf' +NoShadow lda #$E1E1 + sta ScreenBank + short M + sta TargetLoc1+3 ;bank to draw to + sta TargetLoc2+3 ;bank to draw to + sta TargetLoc3+3 ;bank to draw to + Long M + + jsr Random ;update screen pallettes + +NewScreen jsr WipeAllText + lda #CreateTxt + ldx #$7800+48 + jsr PrintTxt + + ldx #0 +MakeNewCol ldy #0 +CreateCol lda #0 + jsr PutInField + jsr DrawIt + jsr Random ;animate screen + iny + cpy #24 + blt CreateCol + inx + cpx #32 + blt MakeNewCol ;do whole screen + + ldx StNumFish + stx NumFish +MakeFish phx + jsr RandomXY + lda #Fish + jsr DrawIt + phx + phy ;save thru toolbox + ldx FishBreed + inx + jsr RandomX ;get a random # + inc a + ply + plx + jsr PutInField + plx + dex + bne MakeFish + + ldx StNumSharks + stx NumSharks +MakeSharks phx + jsr RandomXY + l \ No newline at end of file diff --git a/source/twilight/nm/twilight/perspective.asm b/source/twilight/nm/twilight/perspective.asm new file mode 100644 index 0000000..35f86b6 --- /dev/null +++ b/source/twilight/nm/twilight/perspective.asm @@ -0,0 +1,170 @@ + string + PushWord #0 ;unsigned integer + _Int2Dec ;and convert to a string + lda TempString + ora #$2020 + sta PrintSharks + lda TempString+1 + ora #$2020 + sta PrintSharks+1 + inc Time + PushWord Time + PushLlcl #TempString + PushWord #4 ;len of string + PushWord #0 ;unsigned integer + _Int2Dec ;and convert to a string + lda TempString + ora #$2020 + sta PrintTime + lda TempString+2 + ora #$2020 + sta PrintTime+2 + lda #TextOut + ldx #$7800+16 ;centered on 192nd line on screen + +PrintTxt dec a + sta Msg +Print0 anop +LoopPrint2 stx XValue +LoopPrint1 inc Msg + lda |$0000 +Msg equ *-2 + tay + and #$00FF + beq EndPrint + cmp #$0C + beq Change_Color + cmp #$0D + beq NewLine + jsr Print_Char + bra LoopPrint1 +Change_Color tya + xba + Short M + sta Color + Long M + inc Msg + bra LoopPrint1 +NewLine lda #0 +XValue equ *-2 + clc + adc #8*$A0 + tax + bra LoopPrint2 +EndPrint rts + +Print_Char sec + sbc #32 + asl a + asl a + asl a + clc + adc #Font + sta Font_Adr + lda #8 +LoopChar2 pha + phx + lda |$0000 +Font_Adr equ *-2 + inc Font_Adr + ldy #4 +LoopChar phy + pha + ldy #0 + bit #%00000010 + beq No_Left + ldy #$0F +No_Left bit #%00000001 + beq No_Right + tya + ora #$F0 + tay +No_Right tya + Short M + and #$AA +Color equ *-1 + sta >$E12000,x + Long M + inx + pla + lsr a + lsr a + ply + dey + bne LoopChar + pla + clc + adc #$A0 + tax + pla + dec a + bne LoopChar2 + txa + sec + sbc #8*$A0-4 + tax + rts + + +WipeAllText ldx #$4FE + lda #0 ;kill text at bottom +WipeText sta >$E19800,x + dex + dex + bpl WipeText + rts + +* Police de caracteres... + +Font dc h'00000000000000000018181800180000' + dc h'003636360000000000263E263E260000' + dc h'003E1E3E383E0000002638181E260000' + dc h'00182618263800000018181800000000' + dc h'00380C0C0C380000001C3030301C0000' + dc h'0026183E182600000018187E18180000' + dc h'0000000018180C000000007E00000000' + dc h'0000000018180000006030180C060000' + dc h'007E6666667E00000018181818180000' + dc h'007E607E067E0000007E6078607E0000' + dc h'0066667E60600000007E067E607E0000' + dc h'007E067E667E0000007E6030180C0000' + dc h'007E667E667E0000007E667E60600000' + dc h'00001800180000000000180018180C00' + dc h'0030180C1830000000003E003E000000' + dc h'000C1830180C0000003E203800000018' + dc h'3F3F3F3F3F3F3F3F003C667E66660000' + dc h'003E663E663E0000007C0606067C0000' + dc h'003E6666663E0000007E063E067E0000' + dc h'007E063E06060000007C0606663C0000' + dc h'0066667E66660000007E1818187E0000' + dc h'00606060667E00000066361E36660000' + dc h'00060606067E000000667E7E66660000' + dc h'00666E7E76660000003C6666663C0000' + dc h'003E663E06060000003C6666366C0000' + dc h'003E661E36660000007C063C603E0000' + dc h'007E18181818000000666666663C0000' + dc h'006666663C180000006666667E660000' + dc h'00663C183C6600000066663C18180000' + dc h'007E6018067E0000001E0606061E0000' + dc h'0038183E183E0000003C3030303C0000' + dc h'00183E18181800000018063E00000000' + dc h'00000000000000000000000000000000' + +* +* +Setup anop +* +* Handle the Setup and all. Entry: Accum=T2Message +* +* + cmp #MakeT2 + beq doMake + cmp #HitT2 + jeq doHit +* cmp #KillT2 +* jeq doKill + cmp #SaveT2 + jeq doSave + cmp #LoadSetupT2 + jeq doLoadSetup +* cmp #UnloadSetupT \ No newline at end of file diff --git a/source/twilight/nm/twilight/perspective.rez b/source/twilight/nm/twilight/perspective.rez new file mode 100644 index 0000000..e09bb84 --- /dev/null +++ b/source/twilight/nm/twilight/perspective.rez @@ -0,0 +1,138 @@ +tCurResourceFile + PushWord RezFileID + _SetCurResourceFile + + jsr load_setup + +noShapes1 anop +MoveOn _SetCurResourceFile + + lda FishBreed + clc + adc #299 + pha + LongResult + PushLong WindPtr + PushLong #2 ;FishBreed Popup + _GetCtlHandleFromID + _SetCtlValue + + lda SharkBreed + clc + adc #299 + pha + LongResult + PushLong WindPtr + PushLong #4 ;SharkBreed Popup + _GetCtlHandleFromID + _SetCtlValue + + lda Starve + clc + adc #299 + pha + LongResult + PushLong WindPtr + PushLong #5 ;Starve Popup + _GetCtlHandleFromID + _SetCtlValue + + lda Prefs + pha + LongResult + PushLong WindPtr + PushLong #6 ;Cycle Colors Popup + _GetCtlHandleFromID + _SetCtlValue + + LongResult + PushWord StNumFish + PushWord #20 ;divisor + _UDivide ;divide + pla ;Dividend + plx ;modulo result + clc + adc #299 + pha + LongResult + PushLong WindPtr + PushLong #1 ;NumFish Popup + _GetCtlHandleFromID + _SetCtlValue + + LongResult + PushWord StNumSharks + PushWord #10 ;divisor + _UDivide ;divide + pla ;Dividend + plx ;modulo result + clc + adc #299 + pha + LongResult + PushLong WindPtr + PushLong #3 ;NumSharks Popup + _GetCtlHandleFromID + _SetCtlValue + + lda #11 + sta T2Result + brl Bye + +*================================================= + +Prefs ds 2 + +temp ds 4 + +rSNFStuff str 'SNF Preferences' + +* Format: Upper byte=clock type (ignored for now) +* 0=DClock; 1= AClock; 2=Random on Entry +* Lower byte=Refreshes between movement... + +*================================================= +doLoadSetup anop + + jsr load_setup + brl Bye + +load_setup anop + +* Load the fps/maxzoom/delay resource. + + LongResult + Pushword #$1012 ;type: rByteArray + PushLong #rSNFStuff + _RMLoadNamedResource + bcc HaveFishBreed1 + plx + plx ;setup not saved yet... + lda #$3 ;Random Clock Type; Normal Speed + sta FishBreed + lda #380 ;Random Clock Type; Normal Speed + sta StNumFish + lda #30 ;Random Clock Type; Normal Speed + sta StNumSharks + lda #4 ;Random Clock Type; Normal Speed + sta SharkBreed + lda #3 ;Random Clock Type; Normal Speed + sta Starve + lda #1 ;Random Clock Type; Normal Speed + sta Prefs + bra DoFishNum + +HaveFishBreed1 anop + jsr makePdp + lda [3] + sta FishBreed + ldy #2 + lda [3],y + sta StNumFish + iny + iny + lda [3],y + sta StNumSharks + iny + iny + lda \ No newline at end of file diff --git a/source/twilight/nm/twilight/snf.asm b/source/twilight/nm/twilight/snf.asm new file mode 100644 index 0000000000000000000000000000000000000000..c42e9e463d4d8ad2969b8259420b91b9d83514ef GIT binary patch literal 24631 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 NlFD3Kt4S(z{{}Sc*#iIo literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/snf.rez b/source/twilight/nm/twilight/snf.rez new file mode 100644 index 0000000000000000000000000000000000000000..d524ef678a6a2ba50bd8003ee992436a4a5ffce0 GIT binary patch literal 25757 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 WHNKG>dKQyOFjuC6#dx{weE%EE`;+AW literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/t2common.equ b/source/twilight/nm/twilight/t2common.equ new file mode 100644 index 0000000..7881842 --- /dev/null +++ b/source/twilight/nm/twilight/t2common.equ @@ -0,0 +1,198 @@ +eID ds 2 + +KeyLeft ds 2 +KeyRight ds 2 +KeyStop ds 2 +ControlType ds 2 +BeforeGame ds 2 +LastCompPos ds 2 +LastKey ds 2 +CompTime ds 2 +BOTTEXT STR 'Press Caps Lock down to start game' +BotText2 str 'Let Caps Lock up to quit' +NewTime ds 2 + +makePdp anop +TheHandle equ 3 + + plx ; yank return address + phd + tsc + tcd + ldy #2 + lda [TheHandle],y + tay + lda [TheHandle] + sta $00C025 + Long M + AND #4 ;check caps bit + beq CapsUp ;if up, let the computer at it + lda CapsMode + bne IgnoreCaps + lda MvnLoc+1 + pha + plb ;screen bank + ldx #$63e +ClearMessage stz $96c0,x + dex + dex + bpl ClearMessage + plb ;local bank + PUSHWORD #$F + _SETSOLIDPENPAT + PUSHWORD #75 + PUSHWORD #197 + _MOVETO + PUSHLONG #BOTTEXT2 + _DRAWSTRING + mov #1,CapsMode + lda #$787 + sta MsgColor +IgnoreCaps brl IsGame + +CapsUp lda CapsMode + stz CapsMode + beq ComputerFly + lda MvnLoc+1 + pha + plb ;screen bank + ldx #$63e +ClearMessage2 stz $96c0,x + dex + dex + bpl ClearMessage2 + plb ;local bank + PUSHWORD #$F + _SETSOLIDPENPAT + PUSHWORD #36 + PUSHWORD #197 + _MOVETO + PUSHLlcl #BOTTEXT + _DRAWSTRING + mov #$FFF,MsgColor + +ComputerFly anop + lda maxLeft + clc + adc MinRight ;get average of 2 + lsr a ;cut in half... + sec + sbc XPosn ;compare to where ship is + beq CompCenter + bpl CompRight + bmi CompLeft +CompCenter anop ;can get here from any position + stz LastCompPos + ldx #127 ;no change + rts +CompLeft CMP #-4 + BGE COMPCENTER + lda LastCompPos + ldy #-1 + sty LastCompPos + dec a + bpl CompCenter ;have to stay still first + ldx #50 + rts +CompRight CMP #4 + BLT COMPCENTER + lda LastCompPos + ldy #1 + sty LastCompPos + tay ;test a-reg + bmi CompCenter ;go center before going right + ldx #200 ;right + rts + +Joystick php + sei + lda >$00c070 ;trigger paddles + ldy #0 + ldx #3 +PRTime dex + bne PRTime ;timing loop for first count +PRead2 lda >$00c064 + and #$8080 ;check high bits of each + beq PRXit + cmp #$80 ;see if only x only is active + bmi PRBoth ;> no, do both + beq PRXOnly +PRYOnly iny + bpl PRYMore ;(just for timing) + bmi PRXit +PRYmore bra PRead2 ;go back for more +PRXOnly inx + bmi PRXit + bra PRead2 +PRBoth inx + iny + nop ;match timing of others + bpl PRead2 +PRXit plp + rts + + +IsGame anop + lda ControlType + dec a + beq Joystick + dec a + bne ComputerFly ;let the computer fly it... +* WordResult +* PushWord NewTime +* PushWord #$0004 ;1/2 tick +* _WaitUntil +* PullWord NewTime + ldx #500 + Short M + lda >$E1c036 + tay + and #$80 + sta HSFlag + tya ;original value + and #$7F ;force system speed slow, now + sta >$E1C036 ;force system fast now! + +KeyWait lda >$e0c000 + bmi GetKey2 + dex + bpl KeyWait + +GetKey2 lda >$E1c036 + ora HSFlag + sta >$E1c036 + lda >$e0c025 + and #%1000 + tay + lda >$e0c000 + sta >$e0c010 ;clear kbd strobe + Long i,M + cmp #$80 + blt KeepAlong ;ignore if no key down + cmp #$61 ;lower case? + blt ChkKey1 + and #$5F ;mask to upper case +ChkKey1 cmp KeyLeft + beq DoKeyLeft + cmp KeyStop + beq DoKeyStop + cmp KeyRight + beq DoKeyRight +KeepAlong ldx LastKey + rts +DoKeyLeft tya ;check y-reg. + and #$ff ;only low bits also + beq MedLeft + lda EvenByte ;go space & half on repeat... + eor #1 + sta EvenByte + beq HdLeft + dec XPosn +HdLeft ldx #0 \ No newline at end of file diff --git a/source/twilight/nm/twilight/t2common.rez b/source/twilight/nm/twilight/t2common.rez new file mode 100644 index 0000000..1819bf8 --- /dev/null +++ b/source/twilight/nm/twilight/t2common.rez @@ -0,0 +1,129 @@ +Byte ;go space-and-half right + eor #1 + sta EvenByte + bne HdRight + inc XPosn +HdRight ldx #255 + dc h'cf' +MedRight ldx #220 + stx LastKey + rts +MsgColor ds 2 + +HSFlag ds 2 + End +A #0 +]lp SEC + SBC Buf_VAL + STA ]3,X + DEX + DEX + BPL ]lp +Here EOM + +Add MAC + CPY ]1 + BEQ Same_Signe0 + SEC + SBC ]2 + DEY + BEQ First_Negatif0 + BCC Inverse_Value0 + BRA Cont_Calc0 +Inverse_Value0 EOR #$FFFF + INC + INC ]3 + BRA Cont_Calc0 +First_Negatif0 BCS Cont_Calc0 + EOR #$FFFF + INC ; Change le signe + STZ ]3 + BRA Cont_Calc0 +Same_Signe0 CLC + ADC1.0.1b4 +// v1.6 - 1/28/93 - Revised for _NEW_ rT2ModuleFlags format. - T2 v1.0.1f1 +// v1.7 - 2/7/93 - "f" flag word names, $D001 - T2 v1.0.1f2 +// v1.7a - 2/16/93 - $1000 -> $D001 - T2 v1.0.1f2 +// v1.8 - 03/02/93 - new moduleflagword bits - T2 v1.1f3 +// ===================================================== + +// ===================================================== +// Module resource IDs. +// ===================================================== + +/***** Required *****/ +// #define moduleName $00000001 +#define moduleMessage $0010DD01 +#define moduleIcon $0010DD01 +#define moduleVersion $00000001 +#define moduleFlags $00000001 + +/***** Added for you... *****/ +#define moduleComment $00000001 +#define moduleInfo $00000002 + +// ===================================================== +// --- custom resource type defines +// ===================================================== +#define rT2ModuleFlags $D001 +#define rT2ExtSetup1 $1001 +#define rT2ModuleWord $1002 + +// ===================================================== +// Defined bits of T2ModuleFlags module flag word. +// ===================================================== +#define fSetup $0001 +#define fFadeOut $0002 +#define fFadeIn $0004 +#define fGrafPort320 $0008 +#define fGrafPort640 $0010 +#define fLoadSetupBoot $0020 +#define fLoadSetupBlank $0040 +#define fOpenRForkWriteEnabled $0080 +// #define fNoBlackScreen $0100 +#define fReqUsableScreen $0200 +#define fLeavesUsableScreen $0400 +#define fForeground $0000 +#define fBackground $4000 +#define fInternal $8000 + +// ===================================================== +// Custom resource type defines. +// ===================================================== +type rT2ModuleFlags { + byte = $01; /* module flags version - use 1 */ + hex unsigned word; /* module flags word */ + byte; /* enabled flag (unimplemented) - use 1 now */ + hex unsigned word; /* minimum T2 version required */ + hex unsigned word; /* reserved */ + pstring[25]; /* module name */ +}; + +type rT2ModuleWord { + unsigned word; +}; + +// ===================================================== +// Current common comments. +// ===================================================== +resource rComment (ModuleComment) { + "Twilight II\$AA Module.\n" + "Part of DYA\$D5s Twilight II Project.\n" + "\n" + "Twilight II, the ultimate screen saver for your Apple IIgs! Competition? " + " Ha!\n" + "\n" + "Twilight II: A quality DYA product, from DigiSoft Innovations. " + "Support the II: do not distribute any parts of Twilight II! " + "II Infinitum!" + "\n" + "Dedicated to Ah-Ram Kim" +// "v5a" +}; + +resource rComment (moduleInfo) { + "This is a Twilight II\$AA screen saver module. " + "Place in the \$D2Twilight\$D3 module folder (located in the same directory " + "as the Twilight II control panel) and access via Twilight II!\n" + "For more information, refer to the Twilight II manual." +}; diff --git a/source/twilight/nm/twilight/tg.kludge b/source/twilight/nm/twilight/tg.kludge new file mode 100644 index 0000000000000000000000000000000000000000..09b9d90592d94123ce6d8af40084493e9166ee84 GIT binary patch literal 3467 zcmbVOeN+=y7Jtc1!Z3-DU}TAAZq0PJaUc1)2|%8&p6Zd1x%u|h*qN*{JY;|e&HvQv^IX-q-V zLIugX@Bk%=;9MlbS&Ae09&b{U{Vo}8w~a2|E@Lf+!cWvFzAp@YJz z++l)2Vb$(1p*zf=k-Lh5+pPugPx%vH30O8CNF^=rx4R2WHa)ypjFegng^q*JVVsuCqzw& ziJ!aR_vtHj*&FgUZ8PjFF@AZ#bo^}9h1yG3ueaX5XM6rKMC2tMMvNLiY0C83^A;^x zmbOy2{x6$~{6^z48B9um1CC^&pv%x@EyF3-&W*kIgW z@zselRW-E@SHJ(^&J%l=Bs_oXzJrI4e0Abn&CT{Z)`t#B#BV0P^XEMMU$^ht^ZCBA z3i@afzr%7DeekHW`(-RZB%^|Y$EqjB&YGPFb6v7DIW>J{=9;Vxx%v9dTZ=y3xx3`E zFG|Y}n*R=Cetov8=Hj;vjZMur{@r%V^61Ia=P!i-6AktKbs&D??00Zc|GD$5yI0B= zU|!0=F<}vtqNdFIAbCS>p+Kt;n!kAIwjH~VojTjnZgEHjo&jMWz}!}CDcWl+J5pVH6Z4YF z6r)1MMaFcYu;jc=py4^+rkAJ5p?KyL-SQOnEo20zEOm-=PH|yGiW~&RWipD%xef=T z7+Ve!;Y8-X+r^sF~>0@D4(a%5*69F_RlgcB1OAPP76{ z$px6BH9Cx$Va#M=8W~5cFdmE~YYn}CxED{>MustQdtp@aq8e2T=g=TdHS+yLH410j zLYH+a66j7e4WAYbpoTZsY$q~1Q6dBIgOY;iP6Z(p7C0OQU{VY~;diG_|1S^*v;?%k ztRxjOIQmu$BQhNgWCoC!%Gm5pIqxUJXnJ#{Y8fF;S1m|Xi{ZB#d`GIq#In*venC;YM!z)t9GG|wWv7^L`#{pG|r2|Sed|BsnV*uEtSPGIu=vBknxvFtvadHhtYE1 zvL-EL0;I~@(f~#);4m5h1dP8`=fflcAcS5*03V&@!M<=SJJYZOe1wepDWl=0eS@ z!*Csk^wxrt^bMS}dxAcO8^>DV@!m&=tc#Nl2_yDuMq6;d6&&}y4ls}(xwD;a!wu^& zR|KE?N;XDGqPUZ~!yN#b8V2eIw7Ub)fdI1z9^(27Kk+(oSdgdl_yG9MU#HV)Kb)DI zsU?!uYSXl9wYufnESS9h^PgU`Sw36}$7VYeJw4_GU}(e5?*c;yZk`Pc?YJ2M1`A#g zPpCwP5NPAhcWAAvJB2_qCoDMR0JpnEKE~#s1A`BKx9BhC;ANT2m1P}PpA1PVcp00P zE3m&jZvZ<60Q<}I2CyBry}$1R+tz=rfvbPBR!3c#AA1|~=U|Ze^Dx4M(|H(4=U{JT z{#QsB=I?WWX|WyZV}29v#{6&8*~$D|c?U4R>4gjP3s~kae({R=GYr>o*k8Cyos8ds zbBy2a6c#90j=zSJnod7X$8{^R2fHZ%U?Gl-t_J6cU=-L$I!e?OLyzH;hpDN;ebvPc4U+D| zc5gtTlh}=6e;3%lfiK*jhuvsHL=;-iTHullQ6h7phv7T1{v?2Lj8P)nJ3kXD&?Qt+ zk^Ldw7s=rbW6(oUzszB1LgZrsYC|Q;2oIwbr}BZOzSnWoPFwL(hvO3~9woU?jfYAU z?6}1$c>pR+5zSN`&|rT$vZfl80ze_4q3Pw3)M^l1P+;?`F8~odd)|-(I?MQ^{Vb#z#&k-&?f!56g8~x%$FSckV4WovyjueB+_LcOy^W zu@T=@Vl>gmuC(4|o({){NM!z@;o~O6!E4yUL>(P7b6)Do9C)q!`d_t|y%Q2QZ24r@p3g2cHQ#Kz*V!c! zipe~EVX<-l$;z58FSt4$f6n|Z8JoO4(&8X^M!2eIWTWB>pF literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/tg.w.newtime b/source/twilight/nm/twilight/tg.w.newtime new file mode 100644 index 0000000000000000000000000000000000000000..079087cba24648e809ce5cfee0d285a72752e0f0 GIT binary patch literal 3476 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 N6|5AnPMxKO{{Y-RPLKcq literal 0 HcmV?d00001 diff --git a/source/twilight/nm/twilight/tunneldump b/source/twilight/nm/twilight/tunneldump new file mode 100644 index 0000000000000000000000000000000000000000..f6c1365ef854f4784a28244da15e2353687a67bc GIT binary patch literal 5952 zcmcIo+jbMl6(x^;=zln7Lcrr&RbQ(hSx|k8fiR1eu#yQc(Acu28Ci0q76xY~^9#u@ zSAmW>TOBn_6Ou2Z}A*=N`3lE0-_!_l1P-RaqQK!?+#0nLZg^Eu&#`YD}u zlhN5?-1P(MsP6i%9Sz1u2%Pk@>6jMt(d2~s^C=xJ=Kb_E`gS#RI+)M9lfis%ZQ6Ws zb~c^$bLz%pn)buNj3(3BX*XWY>JIzS`%(XKkJ{-BXoC;JY==Hh7j)Q7Xg=r(6X~!Y zKb^b>^>?G5MiYN8usR-hCv!SxraRP4j(Bj5+4%^oPo_N`&ARiw2qUkih(_FW(bM^` z!wTIAz3;}0f#4pGX7k?T5sSqXraMTUhjD{tdl*F8+GKz&u`&iLE(r_4>p614eKG$x za$i^Mn)qj94!|xRMAw-}WYm2)+xY%h|GsnQU;n&w=MGH}89$i(=MMcu^o$nIx9=WF z;4VFTMv=nRDB?k_+T7W+B&AGk3zZOll`63n*^GbLTH@&a*7GZ*1f=yKDseW6mEyUr zN=!`-NY3Vsz&Z_BUW~S4!MIOb6QWHLCK~g2(A3UiQbEeJO4m(Hv2tyaR*IC4fvWk5|}%8mc$nGj)iN!u3}L%uu{gfo-O z)y|c9NmZOcmco#03k5_)j-^u$X&~

+K&)MIZLho^V=sJxJm~6sA_LR@Bz6%_R#J zTcZr_C~Ydd4NRWB{CWQfsSvVy8q!Gv2%|JmSrwImP%$y8QH`a>;BB!4QJ8x`gju5@ zUObb`gEVPlD$_XBx^81*8nOw5Zgb5l2`OQ6G(7l$-aNqU{Z8m`iFNKli~{Q>g%q($ zO&-UnEU0M+i^9P$sF#!&Jnpg<)D3AHRT7ZGgK$B$<$@xw*14AW6BdCcj;pmyXP=&s zy5Lv3D3|GkK~=amZUn@yOs?jHDoYtmVwHBD$^IUuZ=?Ou(>K8IOsr>8S*|2L#Hd7@ zp|Yh?C4e$gNeYZ$O4NfMJY7IohFOBRpb5fNf)Z=fG=A?W4IauNK`VHn#PpJ2c#i-i z(FD$6!5D%Ul%2vKU=Jh%JTL(v-jX7$EYBYKj+l%GfebuY)x6=5j>_;B+lZ`+b;JJm ziUXhHUfjpT7jW7pwhyZ-OppN&q7|Sd+REPH`oRCF7;wPN*|t@!XCj4BC=9B+^-BN= z{e<_aZ5mk1RoM3}>=E0vZCp*9iZ;3RATS78(FdY`a55v$B=nP_jVn`E@R;V3ARXnf zBOwNZ{w zEe;I@%cocxmIV!%jOX$%NNkkKVdGF^_>9^tY!S!p}!d?)N z&`{b|x7OMQQw(1~ivyY;3Of}h^%sETy?}&$bnX&W1`j|WG*ess}uc(4h~S? zVA(h{loVae8IhtfjmlwJg_hz<^f>5&1ii3N=)pT0zCA=oc`THKNua4UM}k&arKKy& zTISkXqdTOga_Dla694x3Hk%&TH$juoP-NesbHFDmS*x`J2x`5081HP-?yfKMCVdwk z#&KvU-V8FO@l!snwKv;jlkk68W?!AqP}mGi0#e*sYX;fghhNvrESiLdvZ~H!YAsAq zo%J$%CZVCM%&MJvRrq*5)8eJ)~fP{X+dWacZ#c$SY%|o_! zl`O_P82gvF%y_>e>EMhdgV_C*xUniv&GO*2Y=K1gq!o;CHn`6<5+=)j zqRLvfDh!^WS)xqZKS%KJ;QoT6n54rtJH(GXJb)u0%L7WnZdd5bc;GdB%);3TXE5LE z(1Bgp#lyEi_+hxaDIIRhgRJ^VYS>=9Woj|ZRZ9Fk6DEAJU^RqIXw*sQC)jMv8Exbf zN_>n1Eo@qTEO0joY)ZAe?U{srf_~b_F0)mUsWfIZ;NlkPB0*x|!9#o4bPH}v4;4K` zW}->xCymNXQDHY~Yn*fsK088MK3jlh8#H^QA{GA`fFz-^6&`$tSa~@n2KBAR`^x&KIyu4!<1SNjlyBAWD zbV5H-bx3?IFD%a|B%^e}{CstwgQNr!%*ksK`Uz)%!+;}xcCs9NWI;Py&x@HL5i!UM z=qo7+lh99AiF009KgHQ1Hf`PF>74T;eWi&|z{&0Bza29f0SWyCCt#=K91y+4ci=(a z4|rG=g(|F779FrayMl#PlI03VLsdt}7snsf!s<9ftJJls=1EnhDn1uQ(QACqoj)W^ z=lF^*fIN;X&ogVYJn-}P8Gc#7dQ=k?aENai5|gIa4Gth7d0hzp<*vR_6Z zCeJx4#9_e0MUBO&U8gAz0RR*D9X`i#ZdXCPPKrxnA<*0SB z%Ww#6qB1RuD%X{2;v}h(Hq%*=RS>=^bdeTCQMnjR)>Wl0O;y)vUDVigI9rrWgEM~K z)*7cSl|{;AO|J7aFLEbyZBf;6oz?iVhnϩ)ϩbZH"hH )H 4)4 hhH)H."hHH7"h)JJJJH"hHHHH H "hhhHHH JH "hhH"hHHHH H "hhhHHH JH "hh mm `:8m88 `mm `:8md88 `dmm `ad8888 `dmm `mm `d88 ` +K+zhhhhhZګkH"h- +:0:0ꋋ T"`Y"`#V  + +H"hHHHH 1"H" H" " )iHHHHH0"" )i,HHHHH0"" +)**HHHHH0"" + Boxes: Prefs  HH," +< ;[+hhHH*""`H" H"HHHHH0""h8,HHHHH0""h8 +HHHHH0""h  HH-,"HHH"  " ;[+hhHHHH"  "HH-"< ;[+hhHH*""+H +""Ⴚdd ldx #$2A1E + jsl $E10000 + MEND + MACRO +&lab _RMLoadNamedResource +&lab ldx #$2C1E + jsl $E10000 + MEND + MACRO +&lab _RMSetResourceName +&lab ldx #$2D1E + jsl $E10000 + MEND +u ro w as h ere.HTt f L/ - K C*LNupxC4 f@WUO2 Dn0@#<>3CZTQ**wXcHGsqo4>5r(34=({DvoV@PErM|k7>1?5~I{s zKr+)Af7lk|O2#Y{;YX)Vr_+{UI@Ms+jQy966Ju=!8FA5w5`^tJ=ew_LVjQPmvU|UK zUf+3rkMr&RQs9;h(nFO2Bmv0!jzKp=qE_>FZR*~%ef{Rn%{O-TF5lOC)YnmR`)KaC z3~6O(nJcN*R{>1V$dFW9sds$kNoa7xgqo71w^P&82hPb)|3CqFf(Dd8qW8l-`~4Wc z*J+4T8!|x1yGQ|jT!CSKBB}nIWcIh1@L)U^@Wx|mI^Z4rXy|axP`>+ujP&jl=m+IP z)4xH&F&qtAW+c>T6>-l1_S&hJNSG35Mj+|)vF!eyfS1Nq{mAAD57e_3e1o3&){=sm%E zLQS)e_fy+3dGvnaZyFVRNky+heqZkqoB$Oiok<*_b$7;-R^F*yX|(j(e9Sn-CVm1cK1`# zNR0M@=u)!$ntZ7z)ecSvbqzhfE&RM?mDO`U{)=>I=;;jknLREisLRO_@ZzEtr-AyC z00ia;@j@$TC&?uuxk#6bv>3T&p9y%!YTdsH)P?pSO{^%xf{(jwHhG*2>d-bajyO-5wM9e>mqC;X$-`nuCi=i z6m8oCF+0%FWn<>{{d#??-lspP59-7Eh<-vpsZZ$d>1jQki#vVVpZ3wilRn~3 z=cKi?E3KxLw49dGZ~;Dr&tL{Vhl}t9d?Lvb+8O7$V5q(bwyWom#*nKx?A_?0k7`U{q)Gy@gJXl1mMGi=o}<-A-RHVl0FWQ zE*;lkLKzyC$0d5Mknq@o&o^MG?5j~f1^NoQ+SoLeQE|{95GbP>p(Qu=X$H$O&ES55 zU1ofOXSjo1OnGK5OU!uCW}q`p@ET&AolPVoA?h77rFsyOM-ZCxt#n9m8vr8Voz+h} zYj~hZ!V?Yw7apxJVGb1|amiq@ISvc)v5dCGWt6iFJR}C4GEyo|qM;vNzCc--AL@Ky z_ucnD92ZB=tqbK|1N=qe)MsGnovgt@(~iZ={*D8xDA9 zXH$wy{$wo+23Pw!ZXc21Rb}jDWv}v->t)44>P`LqGYX*K#ijE&de*q~4&h{^k)0DM zqDSAnXy92^L}O7`mu9=EgrxPipKasW&z7i*O2E`G^1^VmDWOR^7x0?iu%&5>Tijy! z^Mo?=G+>e$`k^req}faue7>aYq5exOl)a(6#J*)u$><#kf?3YDQc!zZLFdz}gIc6I ziz-gw7$Pv43_g<)&b~zl^CcsG)=uUXdSStG!c3ZZNmQJSv=INil(DqVW36%e{U0fV zscNK5kOm{!yc)#NxdAVMjEot2>C!!+dxE3x3IC{u3r*TBim&~ba2wtm9K3je77;bo z!h4Au*K%W1Q&USBRAqyt6b|z|?U)>`=`73^T>1^v85^ahM7823tRY*8#}808%?E9B zfOwEsod6oY${PQ%Y}EHG)Kl50wp>%S*RoMP7V3>`lx(5i&PJ73sDC<8YAU*tEc>aW zMy2~l6V%3_7oDJY85Hn3VUIGb!3JrAyHdproD;bv49bq&q@{9pAAYF^lOSg5&S z8;pKq*jBJN=7g<`L36_9Vr}P!?N?0Z2%DPB)(O6PSGRFZejmWJ*sDm7yG4 z_4MgUdJzG{mm^ep@p9`zSzMY5XYea2!dc*`=DN&c&c46G)tBzA_*`REmaA!lNXd}E zGn50%7hWWn^-wYLjRe zTgi*M2j5-~N^!Q7*K!N8kg;v1v2)Gpo5?Zn?pPhu_CnxFmNx=XdGo?Ay1dYfE-&oD zr|bsNWiM3B8<9)&S)9CY&MkAbMatZF?Q(Tqnd{)oDrG(6kJ@}$xV(7$YYN?*p7^(^ zbVb3)wd>rXx7;XtQ<&RE=JPst-0@B^GK*lb3-Vj;Xec}oUAZ?j=t+rUco8A4eYiVP zsxWK$;ZS17WU9@oi;r-1Jk}qd`0$&n;|ObLSH~Q}>{6P6yrOU{)PVO0&rY6MEP#8; zGYsW~U?}(U`mhAWe_c;wxtP{7`h_sgeYd!*2DrfM-Be54wH@m^yL-3XwEdP_Z`-kB z$8ERXvi+tlz1>~wI<9SNsjsOhEy~yZ9!-^*Q&u&PU(YWpt*EI-akApd33vnEAVI2^ zHZ5Des$=c?uI^2}o3~Kg+`Fl}YyH}eRm+z(Ev+V5!GJf%rN{tH%`L6VV%M}SU$OGq zRqfZsJ65k*vv%F}>(}4V+1b^#VZ+9a-QBb{Zn7J_c6V>wxM4$AS7+x9>(^huZta>i zt2^S?wXeE%<%;EP*Tj~!wlp_2HqyZh*nlr*VNW6t#4@biRQ;9WLR9p zROn=Ka5Wlclig%ET7F$T-qEodtzWYi+d5|>0K!+V?&yfeuR|-zOtRB7)M06~0xg{~ zOf6(nO-qG-q^ZyuOH!zWI{f5g3_s3HWhU`M&wpn=$>1Ij<%lcCC%`8N!<`Q_yz9{T zlI2QfHggF-^t_DUgmod#g-?Jh2rDj&R94s4H#WCmfUjw5V|`ni8|&+;DdK1p z(y)-`^WDTq|^mCfJd2 zD(7qXvXZp0NLXG{T58xHsi;8n$$oSIwQ6S*AVMMyQbtT$OG{|Fgp1~xYs?qQqHKGG zwnB5hjSImN2=V3E#mxE4IsDKwo%sUO#e=tZA^gx$=nI75GJ=Uke{wB?u4caCKYCut zTxGO^NV;_+EN0xUyYB_OAK`{D3D8gYq=pxS+|PMrVAot41AgaS_df9O&gf?G+KQz#Fu(sCZ-|zs)i??da4qxf?R;Or!zQPQ~zKyQoNsq&RdCJFr7v-cKC_ z76V8-kyRK%;|i@woI@$Bh)Pt#I$+8P[=7N.L$N $ + z|$/v8n=?Z=R8/K$MZ n {}$/v8>$A>R8/J$LR +. +v|~$09?dB?90% Q +. +w=%0:/ACA:0% +d8>%?290FHF>F3% 0 B \ No newline at end of file