From ae702381be52f070f2cf345e2c0dfbdb15c174f1 Mon Sep 17 00:00:00 2001 From: Pawel Kalinowski Date: Tue, 19 Jun 2018 23:44:59 +0200 Subject: [PATCH] Initial commit --- .gitattributes | 2 + .project | 12 + LICENSE | 24 + README.md | 1 + art/CHAR.FNT | Bin 0 -> 1024 bytes art/CHAR2.FNT | Bin 0 -> 1024 bytes art/CHAR3.FNT | Bin 0 -> 1024 bytes art/CHAR4.FNT | Bin 0 -> 1024 bytes art/CHAR5.FNT | Bin 0 -> 1024 bytes art/CHAR6.FNT | Bin 0 -> 1024 bytes art/CHAR6.FNT.cnv | 40 + art/CHAR6.FNT.png | Bin 0 -> 814 bytes art/cact0.bmp | Bin 0 -> 270 bytes art/cact0.bmp.cnv | 42 ++ art/cact0.data | Bin 0 -> 140 bytes art/cact0.xcf | Bin 0 -> 895 bytes art/cact1.bmp | Bin 0 -> 322 bytes art/cact1.data | Bin 0 -> 192 bytes art/cact1.xcf | Bin 0 -> 1151 bytes art/cact2.bmp | Bin 0 -> 410 bytes art/cact2.bmp.cnv | 42 ++ art/cact2.data | Bin 0 -> 280 bytes art/cact2.xcf | Bin 0 -> 1565 bytes art/dino.data | Bin 0 -> 6624 bytes art/dino.xcf | Bin 0 -> 2301 bytes art/dino0.data | Bin 0 -> 72 bytes art/dino0.png | Bin 0 -> 230 bytes art/dino0.png.cnv | 42 ++ art/dino0.xcf | Bin 0 -> 984 bytes art/dino1.data | Bin 0 -> 72 bytes art/dino1.png | Bin 0 -> 227 bytes art/dino1.png.cnv | 42 ++ art/dino1.xcf | Bin 0 -> 793 bytes art/dino2.data | Bin 0 -> 72 bytes art/dino2.png | Bin 0 -> 273 bytes art/dino2.png.cnv | 42 ++ art/dino2.xcf | Bin 0 -> 1034 bytes art/dino_mask0.data | Bin 0 -> 72 bytes art/dino_mask0.png | Bin 0 -> 212 bytes art/dino_mask0.png.cnv | 42 ++ art/dino_mask0.xcf | Bin 0 -> 972 bytes art/dino_mask1.data | Bin 0 -> 72 bytes art/dino_mask1.png | Bin 0 -> 212 bytes art/dino_mask1.png.cnv | 42 ++ art/dino_mask1.xcf | Bin 0 -> 955 bytes art/dino_mask2.data | Bin 0 -> 72 bytes art/dino_mask2.png | Bin 0 -> 213 bytes art/dino_mask2.png.cnv | 42 ++ art/dino_mask2.xcf | Bin 0 -> 1061 bytes art/gnd_0.data | Bin 0 -> 16 bytes art/gnd_0.png | Bin 0 -> 99 bytes art/gnd_1.data | Bin 0 -> 16 bytes art/gnd_1.png | Bin 0 -> 131 bytes art/gnd_2.data | Bin 0 -> 16 bytes art/gnd_2.png | Bin 0 -> 208 bytes art/ground.xcf | Bin 0 -> 1022 bytes artwork.asm | 76 ++ atari.asm | 483 +++++++++++++ macro.asm | 146 ++++ macro.lab | 2 + macro.lst | 148 ++++ ni.asm | 78 ++ ni.atdbg | 6 + ni.lab | 212 ++++++ ni.lst | 1566 ++++++++++++++++++++++++++++++++++++++++ ni.xex | Bin 0 -> 2780 bytes procs.asm | 366 ++++++++++ 67 files changed, 3498 insertions(+) create mode 100644 .gitattributes create mode 100644 .project create mode 100644 LICENSE create mode 100644 README.md create mode 100644 art/CHAR.FNT create mode 100644 art/CHAR2.FNT create mode 100644 art/CHAR3.FNT create mode 100644 art/CHAR4.FNT create mode 100644 art/CHAR5.FNT create mode 100644 art/CHAR6.FNT create mode 100644 art/CHAR6.FNT.cnv create mode 100644 art/CHAR6.FNT.png create mode 100644 art/cact0.bmp create mode 100644 art/cact0.bmp.cnv create mode 100644 art/cact0.data create mode 100644 art/cact0.xcf create mode 100644 art/cact1.bmp create mode 100644 art/cact1.data create mode 100644 art/cact1.xcf create mode 100644 art/cact2.bmp create mode 100644 art/cact2.bmp.cnv create mode 100644 art/cact2.data create mode 100644 art/cact2.xcf create mode 100644 art/dino.data create mode 100644 art/dino.xcf create mode 100644 art/dino0.data create mode 100644 art/dino0.png create mode 100644 art/dino0.png.cnv create mode 100644 art/dino0.xcf create mode 100644 art/dino1.data create mode 100644 art/dino1.png create mode 100644 art/dino1.png.cnv create mode 100644 art/dino1.xcf create mode 100644 art/dino2.data create mode 100644 art/dino2.png create mode 100644 art/dino2.png.cnv create mode 100644 art/dino2.xcf create mode 100644 art/dino_mask0.data create mode 100644 art/dino_mask0.png create mode 100644 art/dino_mask0.png.cnv create mode 100644 art/dino_mask0.xcf create mode 100644 art/dino_mask1.data create mode 100644 art/dino_mask1.png create mode 100644 art/dino_mask1.png.cnv create mode 100644 art/dino_mask1.xcf create mode 100644 art/dino_mask2.data create mode 100644 art/dino_mask2.png create mode 100644 art/dino_mask2.png.cnv create mode 100644 art/dino_mask2.xcf create mode 100644 art/gnd_0.data create mode 100644 art/gnd_0.png create mode 100644 art/gnd_1.data create mode 100644 art/gnd_1.png create mode 100644 art/gnd_2.data create mode 100644 art/gnd_2.png create mode 100644 art/ground.xcf create mode 100644 artwork.asm create mode 100644 atari.asm create mode 100644 macro.asm create mode 100644 macro.lab create mode 100644 macro.lst create mode 100644 ni.asm create mode 100644 ni.atdbg create mode 100644 ni.lab create mode 100644 ni.lst create mode 100644 ni.xex create mode 100644 procs.asm diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.project b/.project new file mode 100644 index 0000000..d65b7f3 --- /dev/null +++ b/.project @@ -0,0 +1,12 @@ + + + no_internet + + + Atari800 + + + + + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6bb8a29 --- /dev/null +++ b/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..da785e6 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# no_internet diff --git a/art/CHAR.FNT b/art/CHAR.FNT new file mode 100644 index 0000000000000000000000000000000000000000..d98e2891bd5fab9e9db2b4bea83ea66087522a6f GIT binary patch literal 1024 zcmZ`&J8s)R5S>85N(Eu5oPrRqz)B#H1>wr)Sb)JaCKy*X3u4702gy-X1g?AtcWzR+ zbRmd&Zzu3a@G7w zE3FWRiI}XOf8)ytu%Ac$te<`A@CfB^&);37#}ndi4O+;fp`dv)3;`A zpW=r=jxdA(|2l-uYW6FpmZ92|zk|>ZPH;s)3jCUf{cY0#zmKs4j&Lb&Mk62fcE|WO z(9fgq4m^n$dD7g#!^1;wn%n&Y`OL#Lok#%oEDv^D=Cc*KX2lM5P)8lBdn?3I^;$A0ir{o*m>mXk_28TqO?C44o2Le4(+(>GEnH+!PoQ2It25tu`hUVSlt<~vwmIx%pY|}q{^Sb)JaCKy*X3u4702gykS6+x;T!d;pa zE>#d@-die3;VO9$w4B+QH{TVxLIF_`GfNs<3_sC2csEerYH9B!Kjzg(dnZD3;x<>! zZ$%y|)#?Fue(_{bjaLhPm(WC-C-A~$T829jZ{4GL*uY<5;tdx#W2PDPS?=4IK@NkX z?89I@BMCt3%_rGg?Xn8=EQ6_~v!s<~4l+4K0we@px$*~ zhum!3hL~pJe3_>o=kY8uPv1Yhh5HT4O851bdY&)1d5s+~o}XVX)4cGT7B2wLk!Pp#=hXeVRcu1o%QPiVE(8(A|FO4B=$pRPPSV0m2L%XKjgZX EUq8^y6951J literal 0 HcmV?d00001 diff --git a/art/CHAR3.FNT b/art/CHAR3.FNT new file mode 100644 index 0000000000000000000000000000000000000000..4d7263d525d9bfc182a52f377ad5c6427a5aa92c GIT binary patch literal 1024 zcmeHDJ5Iwu6nrRXLt!N;x3H2cxQZ;XvQlx5m5g2!%cM$DSQ{4{gp;5Yh>And(Qtqi zmd(s2h>Dtqk)`MNc4pp3y^#)PSRzXKj^Ip>BJ8M7ADDI&oww&j2T%rG05pD;*p{8xexb6|Jt)ZYyt*v6#fnC-m}lXQmyu} zzxVX;jrY(O-q%|2ULl?g+s63~KpjMoq9FlYxjU@O67_8eHR@;==VmwhF|U^FuMKq$ zcQ^2fzL=AAg%5*6UY6^_j(+MOjS&NY&-K8YbDp`#iW?j3!5n+sq)VtS7`}ggjkB3e z7mMk5bakeT#%4@R7l(o9yU&-$SCOtKj;FSLe`?zwyT1E4wnve^d%M5J7$cmA`mT5` N`u>EMfBfYIz5sX>hyMTo literal 0 HcmV?d00001 diff --git a/art/CHAR4.FNT b/art/CHAR4.FNT new file mode 100644 index 0000000000000000000000000000000000000000..67fa183dbd1bf1e07486d399a2019fea5ce274a4 GIT binary patch literal 1024 zcmeHEu}T9$5FI($SS*@yizE4kt3tr#Nac4doJ^A=S|urt%@ux#Um^j;O7Iu#Z0u|- zjyvC5BUVBGXIrb* z+tfb3U-S(Y7zQZTn-_cdz?)FVc5Um&X_*!}Czz rm3L*|f8a)BkRru*n*wrspX&JRl389BvM+3gKs*VQ-IS`B!Hput`GM`|5adr*mM}Y zRrt5ehrm8JjcRj~`iDS|(1w8eI)s(hyjPb_hHcaQ1;9EKp%e`X)Ge>q7t1B`S6#P4 z9_`ZH>_$KGX3qZFvd-h~1$>e(=A>NV!{EV}%Zv3j{nVp0MGOEv*Mshu^BjwubK?Sg zkYkT&HAmGRE=pWv^#27iw!}`AdR1d==UPMN5DgHDmfSb=LkH1}V!$&7uXL1B0e{ebD=!A;@ zf@xXa5+^&vlMe}J5!e8dW!WjPW8nW7w`XPft29ogxI^yPE*tROZ0_RyyN~g-%re|H M2aWgp`#v|qZyj{9YybcN literal 0 HcmV?d00001 diff --git a/art/CHAR6.FNT b/art/CHAR6.FNT new file mode 100644 index 0000000000000000000000000000000000000000..463578b9cf3d06151d5c4e849c219c0a1f9f23be GIT binary patch literal 1024 zcma)3J!{)g6up*Q*@#Etp@BDuIC#wTCS&MBxJ&;*_6I6&iE%R}8H6lo2a{hB`V0CC z8beE`{D^E_x^)RfNImD-sh0+Fuyu96&bjwWWCsn17V+MPi0?dpqH|}HlJSK${+(pg zZ1%yw5n(xTkZGMAh+NFHo?W2Mc9slUSGx+n8$>FW2QZN+ZQNYM`sJm!s6oF*iSuvC@&l5ERJ=fr9!5UU+mB1&bh=T{=tq%8v{?bt& zG!+IfJ@`w;oukh6!u!Q_(07g;u5=FlxpPaO^Ilar8MY1cCjk4 z=f(;4ppQL<*%VznbWbnO+R;d7~9qeeDy8F@!2I-Od8o36~hqmy@_c% zBdmBCqG&?Yz#4d2)ALosG`%5Cwx~}&2b})nkG6tawe>oP<3VlUcF)}F^+)qpuiy6i z_*h4X&qw|K**^dOx0};6{gWyqL);-Y0=cNgAJp~T$1n9HjUwDNhFjm^z7qtP=X}gR GvHk@?&%_@9 literal 0 HcmV?d00001 diff --git a/art/CHAR6.FNT.cnv b/art/CHAR6.FNT.cnv new file mode 100644 index 0000000..abc6c71 --- /dev/null +++ b/art/CHAR6.FNT.cnv @@ -0,0 +1,40 @@ +#WUDSN IDE Converter Parameters +#Fri Jun 01 23:13:09 CEST 2018 +converterDirection=FILES_TO_IMAGE +filesConverterParameters.converterId=com.wudsn.ide.gfx.converter.generic.CharSet1x1HiresConverter +filesConverterParameters.imageAspect.factorX=1 +filesConverterParameters.imageAspect.factorY=1 +filesConverterParameters.displayAspect.factorX=1 +filesConverterParameters.displayAspect.factorY=1 +filesConverterParameters.displayShrinkToFit=false +filesConverterParameters.displayZoomToFit=true +filesConverterParameters.sourceFiles=1 +filesConverterParameters.sourceFiles.0.path=CHAR6.FNT +filesConverterParameters.sourceFiles.0.offset=0 +filesConverterParameters.imageFilePath=CHAR6.FNT.png +filesConverterParameters.columns=32 +filesConverterParameters.rows=4 +filesConverterParameters.spacingColor.red=0 +filesConverterParameters.spacingColor.green=0 +filesConverterParameters.spacingColor.blue=128 +filesConverterParameters.spacingWidth=0 +filesConverterParameters.palette=HIRES_1 +filesConverterParameters.paletteType=ATARI_DEFAULT +filesConverterParameters.paletteRGBs=2 +filesConverterParameters.paletteRGBs.0.red=0 +filesConverterParameters.paletteRGBs.0.green=0 +filesConverterParameters.paletteRGBs.0.blue=0 +filesConverterParameters.paletteRGBs.1.red=255 +filesConverterParameters.paletteRGBs.1.green=255 +filesConverterParameters.paletteRGBs.1.blue=255 +imageConverterParameters.converterId= +imageConverterParameters.imageAspect.factorX=1 +imageConverterParameters.imageAspect.factorY=1 +imageConverterParameters.displayAspect.factorX=1 +imageConverterParameters.displayAspect.factorY=1 +imageConverterParameters.displayShrinkToFit=false +imageConverterParameters.displayZoomToFit=true +imageConverterParameters.imageFilePath= +imageConverterParameters.targetFiles=0 +imageConverterParameters.useDefaultScript=true +imageConverterParameters.script= diff --git a/art/CHAR6.FNT.png b/art/CHAR6.FNT.png new file mode 100644 index 0000000000000000000000000000000000000000..ecdb1764d7d8d1afbb9d6552cb57582b0e2fb239 GIT binary patch literal 814 zcmV+}1JV46P)td=PCCD*LZ3!G@EIJ0MbG6Phf`|&=fVM6zjv)!OQG&{04H)VA$;K>8Z2Q3fR zI{=!zyyyKk_Dm)L>OG7zCaUb=~^i#=k5VG9CiS- z@10RY)#a{w0V5rp%s-@&m{15W@LsD#EQj%B7CSej7zNJIT88Aio#v>q?Xoen~$dFR%{)u-Kqg3(WHmXavAr51JF| z<&6FFvr9f2l9hCSFKY4fLjbrllkP!(2d|X>`rqs?(8mDCx_=e`zcO3c_d>P*kj`*; s0?z=DPJjRfld~%QKG1H`Pia&92M&q{TN3h5XaE2J07*qoM6N<$g5>sZkpKVy literal 0 HcmV?d00001 diff --git a/art/cact0.bmp b/art/cact0.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3b783e8a9705daaae88c4d0cbddc3cf77182f95a GIT binary patch literal 270 zcmZ?rz literal 0 HcmV?d00001 diff --git a/art/cact0.bmp.cnv b/art/cact0.bmp.cnv new file mode 100644 index 0000000..05fd771 --- /dev/null +++ b/art/cact0.bmp.cnv @@ -0,0 +1,42 @@ +#WUDSN IDE Converter Parameters +#Sun Jun 03 03:25:42 CEST 2018 +converterDirection=IMAGE_TO_FILES +filesConverterParameters.converterId= +filesConverterParameters.imageAspect.factorX=1 +filesConverterParameters.imageAspect.factorY=1 +filesConverterParameters.displayAspect.factorX=1 +filesConverterParameters.displayAspect.factorY=1 +filesConverterParameters.displayShrinkToFit=false +filesConverterParameters.displayZoomToFit=true +filesConverterParameters.sourceFiles=0 +filesConverterParameters.imageFilePath= +filesConverterParameters.columns=40 +filesConverterParameters.rows=24 +filesConverterParameters.spacingColor.red=0 +filesConverterParameters.spacingColor.green=0 +filesConverterParameters.spacingColor.blue=128 +filesConverterParameters.spacingWidth=0 +filesConverterParameters.palette=HIRES_1 +filesConverterParameters.paletteType=ATARI_DEFAULT +filesConverterParameters.paletteRGBs=0 +imageConverterParameters.converterId=com.wudsn.ide.gfx.converter.atari8bit.LinearBitMapGraphics8Converter +imageConverterParameters.imageAspect.factorX=1 +imageConverterParameters.imageAspect.factorY=1 +imageConverterParameters.displayAspect.factorX=1 +imageConverterParameters.displayAspect.factorY=1 +imageConverterParameters.displayShrinkToFit=false +imageConverterParameters.displayZoomToFit=true +imageConverterParameters.imageFilePath=cact2.bmp +imageConverterParameters.targetFiles=10 +imageConverterParameters.targetFiles.0.path=cact2.data +imageConverterParameters.targetFiles.1.path= +imageConverterParameters.targetFiles.2.path= +imageConverterParameters.targetFiles.3.path= +imageConverterParameters.targetFiles.4.path= +imageConverterParameters.targetFiles.5.path= +imageConverterParameters.targetFiles.6.path= +imageConverterParameters.targetFiles.7.path= +imageConverterParameters.targetFiles.8.path= +imageConverterParameters.targetFiles.9.path= +imageConverterParameters.useDefaultScript=false +imageConverterParameters.script=function convertToFileData(data) {\r\n\tvar bpsl \= (data.getImageDataWidth() + 7) / 8;\r\n\tvar bytes \= [];\r\n\tvar offset \= 0;\r\n\tfor (var y \= data.getImageDataHeight()-1; y >\= 0; y--) {\r\n\t for (var x \= 0; x < data.getImageDataWidth(); x \= x + 8) {\r\n\t\t\tvar b \= 0;\r\n\t\t\tfor (var p \= 0; p < 8; p++) {\r\n\t\t\t var color;\r\n\t\t\t color \= data.getPixel(x + p, y);\r\n\t\t\t if (color \!\= 0) {\r\n\t\t\t\t\tb \= b | 1 << 7 - p;\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t\tbytes[offset++] \= b;\r\n\t }\r\n\t}\r\n\tdata.setTargetFileObject(0, bytes);\r\n} diff --git a/art/cact0.data b/art/cact0.data new file mode 100644 index 0000000000000000000000000000000000000000..4582a4c1eee2e1a45d963d106668e9dca190daf2 GIT binary patch literal 140 xcmZQzU|?W=Ks=TQs?mBNqSw literal 0 HcmV?d00001 diff --git a/art/cact0.xcf b/art/cact0.xcf new file mode 100644 index 0000000000000000000000000000000000000000..56822a087487318971b623f43519e2b00ef4cff4 GIT binary patch literal 895 zcmb_a%SyvQ6rBmhrqyCwZ3T5PAV|81q~OA}A|fdC7t(Z+2HK<~Q5*aS{R98RPis9l zosm@I&I^Zg=Dy}KcY<)f5KGS&&yF)>Faewa2Ec(P>GgUIf^`5+?gPNQerJpTI|OP9 zeZ`d5L;fwe72qPE1V0bunI9$p#e(A6{R{Z{uWfaOc$;fMuE7}{hC%@ z;ZrXADGD3wMGtE~>9YxK{c52eg_RYHJic+6tF zZTpN5I-fIxpRgJ~F2P_cj(=6dKQ#DH?og1cU>gblryG3J&*Yt=Z=H8l{~l}bJ~R0d Nt8YzOp1Mk3vM-BYZ}b2F literal 0 HcmV?d00001 diff --git a/art/cact1.bmp b/art/cact1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6db277fdee096a3ebea3369184a327abdf9fb29a GIT binary patch literal 322 zcmZ?rbz)=ygC-!E1H=kIYyiZJKnMZ{fLNFtf|-D95O#78Dh5&{0gygq@c;jR1h*c@ qBop%kjgkNVfx-U&4~F{xe}MQOLruLr$=Cv@hXIWFh;xe_#Q6X^v@Rh4 literal 0 HcmV?d00001 diff --git a/art/cact1.data b/art/cact1.data new file mode 100644 index 0000000000000000000000000000000000000000..46b3791546ae2c86b306a04d59c9410c658ba6c1 GIT binary patch literal 192 zcmZQz0D^k*G5>!C2KoOV80`Q5V5tB92Z;YM)YQw9j4gnA7{Hj1IQQ6r9L~T10ONBe A!Tmxih$qK6VF&>@fCX@%Kzur#A|a{(CwUjhoxL$e zK-2+SV^3$QYoPuDx#Z(RZ7&>+WRPH;o?SbSq?^dTcvi`sxV-9gX{VBws*&rE21cPC@&4hMr+CiCk-n*5b!%5p2cf)4&UBbhHP2xRh%3@CNo zn4a|7oyZ95)JV!%fC|XToaW?EUUMXNxWLJHs;4LdhHo$M(gH7o)43+LKunLB4jL*Q z)~hB0nJ$mJSntc4^+D?vv-ttb^8F2vVHU5V&O%QfJfnFIYwO?g2JTwtMONb_R^eq< z+~{A|y~i;@~}#KP^gn#sB~S literal 0 HcmV?d00001 diff --git a/art/cact2.bmp b/art/cact2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b1b7034c937d8907bc44f4d90a7338ccfed15d3e GIT binary patch literal 410 zcmZ?royEui22DUR2Z$YjSQ&^Jfe-{FfRr#d1Tz8oAnfEGR1A_M1%UJ+ga7~kBXb#; zA25Dk_`yI4{ST`DKZIug-vBgE{sI4I5N-cJ9!%Fiu>9Nrw7M8fH!u|cvHaZr{{Tbr zKg-YkKY{dr%g^&c^mEJ4b4Z|-q3W5RTYi)Q>I2drQ0PZM{*MNr{{%m9VDTs80fq+* I1&AO40Kxcxl>h($ literal 0 HcmV?d00001 diff --git a/art/cact2.bmp.cnv b/art/cact2.bmp.cnv new file mode 100644 index 0000000..05fd771 --- /dev/null +++ b/art/cact2.bmp.cnv @@ -0,0 +1,42 @@ +#WUDSN IDE Converter Parameters +#Sun Jun 03 03:25:42 CEST 2018 +converterDirection=IMAGE_TO_FILES +filesConverterParameters.converterId= +filesConverterParameters.imageAspect.factorX=1 +filesConverterParameters.imageAspect.factorY=1 +filesConverterParameters.displayAspect.factorX=1 +filesConverterParameters.displayAspect.factorY=1 +filesConverterParameters.displayShrinkToFit=false +filesConverterParameters.displayZoomToFit=true +filesConverterParameters.sourceFiles=0 +filesConverterParameters.imageFilePath= +filesConverterParameters.columns=40 +filesConverterParameters.rows=24 +filesConverterParameters.spacingColor.red=0 +filesConverterParameters.spacingColor.green=0 +filesConverterParameters.spacingColor.blue=128 +filesConverterParameters.spacingWidth=0 +filesConverterParameters.palette=HIRES_1 +filesConverterParameters.paletteType=ATARI_DEFAULT +filesConverterParameters.paletteRGBs=0 +imageConverterParameters.converterId=com.wudsn.ide.gfx.converter.atari8bit.LinearBitMapGraphics8Converter +imageConverterParameters.imageAspect.factorX=1 +imageConverterParameters.imageAspect.factorY=1 +imageConverterParameters.displayAspect.factorX=1 +imageConverterParameters.displayAspect.factorY=1 +imageConverterParameters.displayShrinkToFit=false +imageConverterParameters.displayZoomToFit=true +imageConverterParameters.imageFilePath=cact2.bmp +imageConverterParameters.targetFiles=10 +imageConverterParameters.targetFiles.0.path=cact2.data +imageConverterParameters.targetFiles.1.path= +imageConverterParameters.targetFiles.2.path= +imageConverterParameters.targetFiles.3.path= +imageConverterParameters.targetFiles.4.path= +imageConverterParameters.targetFiles.5.path= +imageConverterParameters.targetFiles.6.path= +imageConverterParameters.targetFiles.7.path= +imageConverterParameters.targetFiles.8.path= +imageConverterParameters.targetFiles.9.path= +imageConverterParameters.useDefaultScript=false +imageConverterParameters.script=function convertToFileData(data) {\r\n\tvar bpsl \= (data.getImageDataWidth() + 7) / 8;\r\n\tvar bytes \= [];\r\n\tvar offset \= 0;\r\n\tfor (var y \= data.getImageDataHeight()-1; y >\= 0; y--) {\r\n\t for (var x \= 0; x < data.getImageDataWidth(); x \= x + 8) {\r\n\t\t\tvar b \= 0;\r\n\t\t\tfor (var p \= 0; p < 8; p++) {\r\n\t\t\t var color;\r\n\t\t\t color \= data.getPixel(x + p, y);\r\n\t\t\t if (color \!\= 0) {\r\n\t\t\t\t\tb \= b | 1 << 7 - p;\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t\tbytes[offset++] \= b;\r\n\t }\r\n\t}\r\n\tdata.setTargetFileObject(0, bytes);\r\n} diff --git a/art/cact2.data b/art/cact2.data new file mode 100644 index 0000000000000000000000000000000000000000..2fcdc55d002414036903fb43bb154a8703ba247a GIT binary patch literal 280 zcmZQzfB@zPj2{?&FfdR+|AXrP524xrHvr9(f5874MB6`*2h;TrEI&8=XJ9A>(+v#8 ze=I+@|3AP`{Lk`p|4$(O-}3W(5dGZp^BfXrWvF`Q=awI3fck*+2Ne1dkpH6r=s&>^ S99aCxc!1#nLjg1}fD`~Ny?Jr~ literal 0 HcmV?d00001 diff --git a/art/cact2.xcf b/art/cact2.xcf new file mode 100644 index 0000000000000000000000000000000000000000..6c131c294a25ef4091272c199de539c79e40259b GIT binary patch literal 1565 zcmdT^!EVz)5Z!fL+ezA{r4&(#!%AGzL#p(~(E>S~BvDl{$wtSW{y2?`Nl~hPvkc1gB2vSXVPhM}sc{`6^c#aS&Hk3OvYN_QFeZO# zvQ-%&#LAjA1vrl?KIzA3mX!3fkTefq04o_7&I+{+$0A-VaTcEOv@T%z_7Z2ct=CT>$BZq?*f-|V**30ygcsW+^uTP5ANRyNA4IL30HOvp09CV+)JF|$^~JBqg4l8 z>q-yDaBai`5ZMT;PHKR&S%-m2D@#lM5_4C1GDIPKHrWD9LI59{kk)+*jDR)JNXeC z_39f~58tz0zQ^QTmv4IJso&)*Pvb8C?)&RKH16I**53y{OApQ%c_5MqbieiyZJVYXK>7WbbRIW46AiN@WIg-`KtAJ nEB3}d9v`(;R%fiYV$D_Gu#%PCVP@tF;#oS; literal 0 HcmV?d00001 diff --git a/art/dino.xcf b/art/dino.xcf new file mode 100644 index 0000000000000000000000000000000000000000..6e50989c75b74a1ef9273863609832afa2a84171 GIT binary patch literal 2301 zcmeHJ&2G~`5Z<-p*!gi23KXg0-~)&BkWy}(L5Lp_sS;1%IvaO|9apvy%>m`k30{D= zK;p<-@Bo}Sa4%iHS?^Y92;7hm>PVmW+izyao3VGCROTnqX)=puG7}8;1h_>6b`9Vh zm+L_A;2mQG*bSfsIKYnK6n7Kx&oG85(vFiN&&9mPoRM?;VJYHTOrzJbK8_wgog9*9 zs6%BQr(&Fza!MMaxjU-rMJA%E$mDddJDR0Qkrib$(!;n+kK*WH|3KRYa?iN-u=Hrd zQtOX?PiX0BbrL6Xo<{d=zV2wTK{L|$)m+w5F0)MLq84REDT>*w67|I%AuWED8l_n; z=gG0aQYwWp{;?tcS0mWRM1>6xMLUWj@}$5cJqjJ-ZJKYF#$$*K0u>=vWfE9K!dZs>ab98 zcCMHQ;y}2VG@ejL5GN;%n|O<)9(Ia6&oI%~vjT%Ph8*9vLD#hHt{_?N~u zbcb;jupf$&u5%y$5ZMU*OWajG)`Ql?*iv2Wuz`nMTL!*rv!Ou;xzF%))llEWL9sY) z%#oNQF@DkzWJimb1f&=lY?r2ij^s$m*)G7;Rnf1CPH)El|E4d!&&tQa<~UBet*l-2 z(Q2V7=riLrMR9O4&(Knp+ssj^NB>loCHq7T{|-P+oXj@d!3&Xzq?W}zn#9#ha@l@u zzZFYp)YD1-)3;)4C1wcj0x;Y5b^C6lfc{t59Y7D>0N)#*)r0rYzL9npJ?w8`y)r)m D>j8De literal 0 HcmV?d00001 diff --git a/art/dino0.data b/art/dino0.data new file mode 100644 index 0000000000000000000000000000000000000000..45e3cbcc62504418dcef13d76a25f22539d5691c GIT binary patch literal 72 zcmZQzU|?YW!@&NJf$blNgrWls>^}tf8wBJVBKgSFUJBB0n5-dNY zC0L$FOQ^h(H#qSp{(!>&{fs?7|1&RboFTblieLuIVQB?BrX#uzH9R>+3?661ma%Z; Q-UeCc>FVdQ&MBb@0OQd?ga7~l literal 0 HcmV?d00001 diff --git a/art/dino0.png.cnv b/art/dino0.png.cnv new file mode 100644 index 0000000..c7428a7 --- /dev/null +++ b/art/dino0.png.cnv @@ -0,0 +1,42 @@ +#WUDSN IDE Converter Parameters +#Fri Jun 01 16:04:29 CEST 2018 +converterDirection=IMAGE_TO_FILES +filesConverterParameters.converterId= +filesConverterParameters.imageAspect.factorX=1 +filesConverterParameters.imageAspect.factorY=1 +filesConverterParameters.displayAspect.factorX=1 +filesConverterParameters.displayAspect.factorY=1 +filesConverterParameters.displayShrinkToFit=false +filesConverterParameters.displayZoomToFit=true +filesConverterParameters.sourceFiles=0 +filesConverterParameters.imageFilePath= +filesConverterParameters.columns=40 +filesConverterParameters.rows=24 +filesConverterParameters.spacingColor.red=0 +filesConverterParameters.spacingColor.green=0 +filesConverterParameters.spacingColor.blue=128 +filesConverterParameters.spacingWidth=0 +filesConverterParameters.palette=HIRES_1 +filesConverterParameters.paletteType=ATARI_DEFAULT +filesConverterParameters.paletteRGBs=0 +imageConverterParameters.converterId=com.wudsn.ide.gfx.converter.atari8bit.LinearBitMapGraphics8Converter +imageConverterParameters.imageAspect.factorX=1 +imageConverterParameters.imageAspect.factorY=1 +imageConverterParameters.displayAspect.factorX=1 +imageConverterParameters.displayAspect.factorY=1 +imageConverterParameters.displayShrinkToFit=false +imageConverterParameters.displayZoomToFit=true +imageConverterParameters.imageFilePath=dino0.png +imageConverterParameters.targetFiles=10 +imageConverterParameters.targetFiles.0.path=dino0.data +imageConverterParameters.targetFiles.1.path= +imageConverterParameters.targetFiles.2.path= +imageConverterParameters.targetFiles.3.path= +imageConverterParameters.targetFiles.4.path= +imageConverterParameters.targetFiles.5.path= +imageConverterParameters.targetFiles.6.path= +imageConverterParameters.targetFiles.7.path= +imageConverterParameters.targetFiles.8.path= +imageConverterParameters.targetFiles.9.path= +imageConverterParameters.useDefaultScript=true +imageConverterParameters.script=function convertToFileData(data) {\r\n\tvar bpsl \= (data.getImageDataWidth() + 7) / 8;\r\n\tvar bytes \= [];\r\n\tvar offset \= 0;\r\n\tfor (var y \= 0; y < data.getImageDataHeight(); y++) {\r\n\t for (var x \= 0; x < data.getImageDataWidth(); x \= x + 8) {\r\n\t\t\tvar b \= 0;\r\n\t\t\tfor (var p \= 0; p < 8; p++) {\r\n\t\t\t var color;\r\n\t\t\t color \= data.getPixel(x + p, y);\r\n\t\t\t if (color \!\= 0) {\r\n\t\t\t\t\tb \= b | 1 << 7 - p;\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t\tbytes[offset++] \= b;\r\n\t }\r\n\t}\r\n\tdata.setTargetFileObject(0, bytes);\r\n} diff --git a/art/dino0.xcf b/art/dino0.xcf new file mode 100644 index 0000000000000000000000000000000000000000..622c0bb954f92bb4407b75a0eb6b5f6b9eaeaab1 GIT binary patch literal 984 zcma)5%}(1u5Z<@s)ru-QYjpQk~cu@0aYpzQlG#$8?$O+Bin7s3GoJ8cm(c! z2p*x&0;<$Pzc1`oK?I43KJT~R%&f;Vo7B!u^l38D--pAIg1vPJunN!t0{m`&-+*mW zrThwLeYjAHfV~E4KnT2XoN?QT-^UuIc+nuqXET#k*e}lB`dFB_GGqP2R>yk()4?G< zy+x><#i<#jg&n(SQT?)-PmM0~sU7ch`ja%tr+K0Ki)B!xN3kC64i~n9jGSu+sYfeP zydw&PgTyCu%iGoH2vc)q^Gqb1%2=egdR zAU?<64_^yh!MO|c#iN$s^05|NasOU5Wka8LeXR~?+vlCEmVCSv~ZYWMI6ctVd4$0&(t*5Zrpelb&% zR5s7_L0o>N%YUoy^BJ_4^m)VOauz*+{~?%f8D(eTPY_=L^zhm_oEHA#{w&zL{|7n- BejWe- literal 0 HcmV?d00001 diff --git a/art/dino1.data b/art/dino1.data new file mode 100644 index 0000000000000000000000000000000000000000..357cd3616187214bc3d6400c37927fd440af560f GIT binary patch literal 72 zcmZQzU|?YW!@%~BfgKqgU||0tz~3Ms-yl){K<57f`Tq?-#Q(p6{XYZqKL*A>3=Gd1 N7!EKnG=ND41^`PL7ZU&g literal 0 HcmV?d00001 diff --git a/art/dino1.png b/art/dino1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9f37ab78f5961e5b74e386603991fbbb2f1572 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaT3?y&uT)!Jgu?6^qxB}__|Nk$&IsYz@#aZAH zSGj#-C#g&`1VP LS3j3^P6|AS%G0}uyD5Wh;pe1d6G=7Bsfq&wk37)CF z1{5bbozs~!)7v`}gv*tDc76G1+hYMcEup~^U;xZFn+={_fH-^v=$CIoFkr_(6{r9w zC1+h9`fGSIz=uX|yj*%whWDa(?<(<}%$v!lFq_Mp+xrP;4hw0xbOLV_B;ib{*H)V4 z3s0u;BAg8k%MaXm5hv0r+$agAjt#XI2KS6Kr@)u_!-XF*DPDTV6rIE(hW z8`IwTeIOcifQ?%Vs*x$0zfh$f1U0cH{9=`wOlqPALR5jeAvA2OPM=t}x-bzp$q;R7 X2?L#U>WDgZ3ylU&)aM3$kb(FDtZZ^}tf8wBJVBQgt*SaqhK?~qlT)L9AN#vj36S7yWuz zH-}j;_R`fiW)}iwzO9eUnE97`$*Ow+b|Rl==2)H3cg_XgayRXWiqWqngy zEfIf#lf2H`H*cof-G*wh5^FyYftpJ~oaSKO1q=g^BcO5pM#MlI167~`oaCH+efV#Y zoe*P(ezaJ~Wr{U%v3CxnXkM)r@B6% zrgq5CThbN?FA7w34+e|2nrc+lO(qsuAcn5MRVPy$)X*RJ@)|kN9c@!fx5>tohVD>J Uci}aFUY0SS&r|wXiGTk3Ph48tI{*Lx literal 0 HcmV?d00001 diff --git a/art/dino_mask0.data b/art/dino_mask0.data new file mode 100644 index 0000000000000000000000000000000000000000..716f120cf51f4462cb88826563331a48261ba1a0 GIT binary patch literal 72 xcmezWgYo|d226DP0rT+#%!e8H4VGi&|HJtI9}o#Z5dfx3CfNW0 literal 0 HcmV?d00001 diff --git a/art/dino_mask0.png b/art/dino_mask0.png new file mode 100644 index 0000000000000000000000000000000000000000..bf5a4a5615a87dd8768cef96a45861bbfab03fb5 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaT3?y&uT)!Jgu?6^qxH2#?eE<3FUr&=dP=vF< zBeIx*fm;}a85w5H0qJ2c@$_|Nf5a*;CaW)fB}^PBB%2u$QR1ARo12ol@!=d&t5&qR9L8vyw*ie9v+>XlBYHe)q^lr z%{bE?6U|vYFUEZ(^R%x!4X@sfqqLu9vOZm!S$rPK)^2NRb4c5`8c02#lWP6)Z$hb~ zd>BSLiDlc~1#vu2G+OgA(S_7W)KfX-r`>L@ithp``?vI^{7j`j7~@Z0MC=&BPK`$3 zpN2U#^*9`>jQli8vPFObJ^fpsmaxU}YXKm;21)Rh;E9 zpSvvJWk9fZjy^5_B4uijEigD!eH9ftP2@?KUr=fG|7>q3(EiigWs^(C*8l;)Y@0|n WChkFO1<=K#aTrZJ(|+RYeS88~hIt48 literal 0 HcmV?d00001 diff --git a/art/dino_mask1.data b/art/dino_mask1.data new file mode 100644 index 0000000000000000000000000000000000000000..594728435bb4a2dad9aef3b97b71d4a6f3e21bdb GIT binary patch literal 72 zcmezWgYo|d226DP0rT+#%!e8H4VGiQ|6!>A$MFB3JQM){lM^Mx literal 0 HcmV?d00001 diff --git a/art/dino_mask1.png b/art/dino_mask1.png new file mode 100644 index 0000000000000000000000000000000000000000..6a6ab692029e6b0a819835588ab38419e4b3cd23 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaT3?y&uT)!Jgu?6^qxB}__|Nk$&IsYz@#aZAH zS_O-gx0iG;lwML_y`_+1n)kW z_)Xb05Fv4ruk-CUGu!D*12ugVGk+wWJDo0rooHC_94GC^`G@Z&Y#W}nC;3}40Du?1lrDJh(+v`)LmZhqx7sz%HtD(vM zZYJq`B1IBS)UZ`*jsicLM6qaQt{n#hPjt>YnQb9m9crO;u%*<*#co2Sv*gk9RTzkK zb6=@B-=b-${S>NHsL&tFgsP*_D3R%JdywXTrIoT-N>k9rzgEPiZIGFr(E=)cFQJj% zd2<<4kd{Zb4^RTFv7k9^sHiy{J6+?nc*-X$1BN?myt2k!aJtu69>mm`zr*x`khRc> zrg`*Yy=`jNJDnX~1j?+u1DsoIkC&JYpF@t#ZTzEUX!SL?EYDq5;8j-SPIi}rnhGzl zD)Ji|4o$>#Nh||1mK9XJFt5Apnln BA1(j@ literal 0 HcmV?d00001 diff --git a/art/dino_mask2.png b/art/dino_mask2.png new file mode 100644 index 0000000000000000000000000000000000000000..493e3e531d39ba73dab485edade2bdae427af936 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaT3?y&uT)!Jgu?6^qxB}__|Nk$&IsYz@#aZAH zSUf#Q~)E{-7_*OL{3wh8|aCnWxFKltoFJ6p9# x4MWe<|K%lO=3x6Q<&W--^0kfQ(lj&s>lyyx~Hq3%Q~loCII!@J}dwL literal 0 HcmV?d00001 diff --git a/art/dino_mask2.png.cnv b/art/dino_mask2.png.cnv new file mode 100644 index 0000000..f7eec64 --- /dev/null +++ b/art/dino_mask2.png.cnv @@ -0,0 +1,42 @@ +#WUDSN IDE Converter Parameters +#Fri Jun 01 16:10:03 CEST 2018 +converterDirection=IMAGE_TO_FILES +filesConverterParameters.converterId= +filesConverterParameters.imageAspect.factorX=1 +filesConverterParameters.imageAspect.factorY=1 +filesConverterParameters.displayAspect.factorX=1 +filesConverterParameters.displayAspect.factorY=1 +filesConverterParameters.displayShrinkToFit=false +filesConverterParameters.displayZoomToFit=true +filesConverterParameters.sourceFiles=0 +filesConverterParameters.imageFilePath= +filesConverterParameters.columns=40 +filesConverterParameters.rows=24 +filesConverterParameters.spacingColor.red=0 +filesConverterParameters.spacingColor.green=0 +filesConverterParameters.spacingColor.blue=128 +filesConverterParameters.spacingWidth=0 +filesConverterParameters.palette=HIRES_1 +filesConverterParameters.paletteType=ATARI_DEFAULT +filesConverterParameters.paletteRGBs=0 +imageConverterParameters.converterId=com.wudsn.ide.gfx.converter.atari8bit.LinearBitMapGraphics8Converter +imageConverterParameters.imageAspect.factorX=1 +imageConverterParameters.imageAspect.factorY=1 +imageConverterParameters.displayAspect.factorX=1 +imageConverterParameters.displayAspect.factorY=1 +imageConverterParameters.displayShrinkToFit=false +imageConverterParameters.displayZoomToFit=true +imageConverterParameters.imageFilePath=dino_mask2.png +imageConverterParameters.targetFiles=10 +imageConverterParameters.targetFiles.0.path= +imageConverterParameters.targetFiles.1.path= +imageConverterParameters.targetFiles.2.path= +imageConverterParameters.targetFiles.3.path= +imageConverterParameters.targetFiles.4.path= +imageConverterParameters.targetFiles.5.path= +imageConverterParameters.targetFiles.6.path= +imageConverterParameters.targetFiles.7.path= +imageConverterParameters.targetFiles.8.path= +imageConverterParameters.targetFiles.9.path= +imageConverterParameters.useDefaultScript=true +imageConverterParameters.script=function convertToFileData(data) {\r\n\tvar bpsl \= (data.getImageDataWidth() + 7) / 8;\r\n\tvar bytes \= [];\r\n\tvar offset \= 0;\r\n\tfor (var y \= 0; y < data.getImageDataHeight(); y++) {\r\n\t for (var x \= 0; x < data.getImageDataWidth(); x \= x + 8) {\r\n\t\t\tvar b \= 0;\r\n\t\t\tfor (var p \= 0; p < 8; p++) {\r\n\t\t\t var color;\r\n\t\t\t color \= data.getPixel(x + p, y);\r\n\t\t\t if (color \!\= 0) {\r\n\t\t\t\t\tb \= b | 1 << 7 - p;\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t\tbytes[offset++] \= b;\r\n\t }\r\n\t}\r\n\tdata.setTargetFileObject(0, bytes);\r\n} diff --git a/art/dino_mask2.xcf b/art/dino_mask2.xcf new file mode 100644 index 0000000000000000000000000000000000000000..b9f607f692e71600c42bee81e0a9c4e086ea8b17 GIT binary patch literal 1061 zcma))y-ve06ou^=Xh|E=Qa}t09?MWvHf9h)NFY_>2}0@yi#96ckl>F7aW#zgh-)av90t-mr=VX5W@}F?zXR)YawRhDINXn<&<4 zA`jetet*6oXH$dQRF_hx@s%oQI-5)iRem22srm2JSLWv^QLw?^zlS2aNhyKPHUZ|;xOP!_iJSwiK69Xm-1ttbe444=&!72=xAlI!aG+<)D#DEF*@eP<5Ffm|az@t)w FeFA0(k-Go@ literal 0 HcmV?d00001 diff --git a/art/gnd_0.data b/art/gnd_0.data new file mode 100644 index 0000000000000000000000000000000000000000..5b237a3fae25075e584504f4819250dfaf2f0a91 GIT binary patch literal 16 OcmZQzfPnx1Av6FF0RjI2 literal 0 HcmV?d00001 diff --git a/art/gnd_0.png b/art/gnd_0.png new file mode 100644 index 0000000000000000000000000000000000000000..121b078c1f51fff4a91245ba18452c035e2fa1f7 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!2~4hMP3{LQk(@Ik;M!Q+`=Ht$S`Y;1W-`a t)5S4FVrp`N#IJ^r|NsAIe#_>?$l#{J^ncat@Nl3422WQ%mvv4FO#rzE7z+RZ literal 0 HcmV?d00001 diff --git a/art/gnd_1.data b/art/gnd_1.data new file mode 100644 index 0000000000000000000000000000000000000000..a5d64756270cdead202ba0ab903198ac013146c4 GIT binary patch literal 16 TcmZSnz$PKXW5E1?kpT<<8nOaT literal 0 HcmV?d00001 diff --git a/art/gnd_1.png b/art/gnd_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3eba67d0d8e2b37de321a7d14147236f6d1fde5e GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!2~4hMP3{LQk(@Ik;M!Q+`=Ht$S`Y;1W?e_ z)5S4FVrp{A0fzto|GNt(rlcGRX$$CG#^~E37|ArfQb4oALV1~h+-XS(35kyqJ>KUN am>DKjDtz82{(le900vK2KbLh*2~7ZjQX`uH literal 0 HcmV?d00001 diff --git a/art/gnd_2.data b/art/gnd_2.data new file mode 100644 index 0000000000000000000000000000000000000000..42b4715fd9a985e0d04f8e70d740dc2e190a8523 GIT binary patch literal 16 PcmZQzfPkO>*}x0{4)p>5 literal 0 HcmV?d00001 diff --git a/art/gnd_2.png b/art/gnd_2.png new file mode 100644 index 0000000000000000000000000000000000000000..30320172b8e52fa8a1d5e0e66b9d9827cb8eb84f GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3HEhl+{lMQfx`y?k)`fL2$v|<&%LToCO|{ z#S9GG!XV7ZFl&wkP>{XE)7O>#5vx3xq2|3^hh_kUWHUn|N}Tg^b5rw5fLsO!=c3fa zlGGH1^30M91$R&1fE2w{cA&V4r;B5V#`)xwgoGdG9T*dm76|a{VbuBmKbehDSy`DG q1k5aXw%%Y8Tqc+%aFXqUDGvj0CJ$GY`_8E#gFRjST-G@yGywpRjy6*O literal 0 HcmV?d00001 diff --git a/art/ground.xcf b/art/ground.xcf new file mode 100644 index 0000000000000000000000000000000000000000..cc2d79a4714642f317d1328bdae2589910d6be32 GIT binary patch literal 1022 zcma)4%TC)s6uskVzy#9pUUe}m6ogWO5E4t&E-EBYBO$d?cgC5R5q6Ahw~&?B>{zov z>PNI6QT1C`@Bz5zni-U;Y1Jbg&6#r_9^aYBBp2!`9I7w9-VOmDzy;6)1=wU=RTUOs z2^4Ivfc~2sA||j3z5uyw-D=KTL;icLtq33LhG~-MQGtEkd--jqgF+9~r76zTyTju? zM;7Z;lLV3OMwuDdY~gqEVjOFgr?DAqHao*8Oye|DoqFkJ(P^N1uX{D7h#ec+MCs|2 zQWsZ$7hHOkUj(5UMQY#mYj(y{JZp77k4&Kw6UQdeh0bzrkq(EsE}qW_Yy7A6mO zd02>_PeQ)3hP%B6_N{)9^Kg%XvCcTocf*(g`L6g*eXIGd=B&m-+>mn^`~;kypV0hF zoZp(zZD{W6Fbm=GCf|vTd)HRD!{eOZS0cIiyYGF2SNCa9L+s-nN^p-n(ZIS3&Vk$5 z&(pH-X;mofXTUx3#TH5N3Azt%(4(MPBpy&HsrpE3qNH0Yh0i0|0(nFXcck`-j&)d= zbfk`h{G3DXkK8m%c>goam$sHC&VMLDzzv3N3wa0OP5@ti2On(E`tk?7d-k@eUHywC MI^YjE_4yBf0jf=np8x;= literal 0 HcmV?d00001 diff --git a/artwork.asm b/artwork.asm new file mode 100644 index 0000000..03a11a6 --- /dev/null +++ b/artwork.asm @@ -0,0 +1,76 @@ +; @com.wudsn.ide.asm.mainsourcefile=ni.asm +;------------------------------------------------------------- + ;24x24 pix = 3x3 chars (3x24 bytes) + .rept 3, # +dino:1 + ins 'art/dino:1.data' + .endr + + .rept 3, # +dino_mask:1 + ins 'art/dino_mask:1.data' + .endr + +dino_tab_l + .rept 3, # + .by dino:1 + .endr + +dino_mask_tab_l + .rept 3, # + .by dino_mask:1 + .endr + +dino_back ; background save for dino sprite +:3*24 .by 0 +dino_save_y .by 0 + +;------------------------------ +; ground pictures, 8x16 px = 2x1 chars (2x8 bytes) + .rept 3, # +gnd_:1 + ins 'art/gnd_:1.data' + .endr +gnd_tab_l + .rept 3, # + .by gnd_:1 + .endr +scr_addrs_l +:sh .by <(screen+#*sw) +scr_addrs_h +:sh .by >(screen+#*sw) +;------------------------------ +; cacti pictures, height and width variable +; cactX.data is flipped vertically +cacti = 3 + + .rept cacti, # +cact:1 + ins 'art/cact:1.data' + .endr + +cact_widths ; widths of cactii in bytes + .by 4, 4, 8 +cact_heights ; heights of cactii in lines + .by 35,48,35 +cact_tab_l + .rept cacti, # + .by cact:1 + .endr + diff --git a/atari.asm b/atari.asm new file mode 100644 index 0000000..9258fe5 --- /dev/null +++ b/atari.asm @@ -0,0 +1,483 @@ +/* +scr48 = %00111111 ;screen 48b +scr40 = %00111110 ;screen 40b +scr32 = %00111101 ;screen 32b +*/ + +* --------------------------------------------------------------------------------------------- +* --- GTIA +* --------------------------------------------------------------------------------------------- +HPOSP0 = $D000 ; pozioma pozycja gracza 0 (Z) +HPOSP1 = $D001 ; pozioma pozycja gracza 1 (Z) +HPOSP2 = $D002 ; pozioma pozycja gracza 2 (Z) +HPOSP3 = $D003 ; pozioma pozycja gracza 3 (Z) +HPOSM0 = $D004 ; pozioma pozycja pocisku 0 (Z) +HPOSM1 = $D005 ; pozioma pozycja pocisku 1 (Z) +HPOSM2 = $D006 ; pozioma pozycja pocisku 2 (Z) +HPOSM3 = $D007 ; pozioma pozycja pocisku 3 (Z) +SIZEP0 = $D008 ; poziomy rozmiar gracza 0 (Z) +SIZEP1 = $D009 ; poziomy rozmiar gracza 1 (Z) +SIZEP2 = $D00A ; poziomy rozmiar gracza 2 (Z) +SIZEP3 = $D00B ; poziomy rozmiar gracza 3 (Z) +SIZEM = $D00C ; poziomy rozmiar pocisków (Z) +GRAFP0 = $D00D ; rejestr grafiki gracza 0 (Z) +GRAFP1 = $D00E ; rejestr grafiki gracza 1 (Z) +GRAFP2 = $D00F ; rejestr grafiki gracza 2 (Z) +GRAFP3 = $D010 ; rejestr grafiki gracza 3 (Z) +GRAFM = $D011 ; rejestr grafiki pocisków (Z) +COLPM0 = $D012 ; rejestr koloru gracza i pocisku 0 (Z) +COLPM1 = $D013 ; rejestr koloru gracza i pocisku 1 (Z) +COLPM2 = $D014 ; rejestr koloru gracza i pocisku 2 (Z) +COLPM3 = $D015 ; rejestr koloru gracza i pocisku 3 (Z) +COLPF0 = $D016 ; rejestr koloru pola gry 0 (Z) +COLPF1 = $D017 ; rejestr koloru pola gry 1 (Z) +COLPF2 = $D018 ; rejestr koloru pola gry 2 (Z) +COLPF3 = $D019 ; rejestr koloru pola gry 3 (Z) +COLBAK = $D01A ; rejestr koloru tła (Z) + +COLOR0 = colpf0 +COLOR1 = colpf1 +COLOR2 = colpf2 +COLOR3 = colpf3 + +KOLM0PF = $D000 ; kolizja pocisku 0 z polem gry (O) +KOLM1PF = $D001 ; kolizja pocisku 1 z polem gry (O) +KOLM2PF = $D002 ; kolizja pocisku 2 z polem gry (O) +KOLM3PF = $D003 ; kolizja pocisku 3 z polem gry (O) +KOLP0PF = $D004 ; kolizja gracza 0 z polem gry (O) +KOLP1PF = $D005 ; kolizja gracza 1 z polem gry (O) +KOLP2PF = $D006 ; kolizja gracza 2 z polem gry (O) +KOLP3PF = $D007 ; kolizja gracza 3 z polem gry (O) +KOLM0P = $D008 ; kolizja pocisku 0 z graczem (O) +KOLM1P = $D009 ; kolizja pocisku 1 z graczem (O) +KOLM2P = $D00A ; kolizja pocisku 2 z graczem (O) +KOLM3P = $D00B ; kolizja pocisku 3 z graczem (O) +KOLP0P = $D00C ; kolizja gracza 0 z innym graczem (O) +KOLP1P = $D00D ; kolizja gracza 1 z innym graczem (O) +KOLP2P = $D00E ; kolizja gracza 2 z innym graczem (O) +KOLP3P = $D00F ; kolizja gracza 3 z innym graczem (O) +TRIG0 = $D010 ; stan przycisku joysticka 0 (O) +TRIG1 = $D011 ; stan przycisku joysticka 1 (O) +TRIG3 = $D013 ; znacznik dołączenia cartridge-a (O) +PAL = $D014 ; znacznik systemu TV (O) + +GTICTL = $D01B ; rejestr kontroli układu GTIA +GTIACTL = gtictl + +VDELAY = $D01C ; licznik opóźnienia pionowego P/MG +PMCNTL = $D01D ; rejestr kontroli graczy i pocisków +HITCLR = $D01E ; rejestr kasowania rejestrów kolizji +CONSOL = $D01F ; rejestr stanu klawiszy konsoli Start (bit 0), Select (bit 1), Option (bit 2) + +* --------------------------------------------------------------------------------------------- +* --- POKEY +* --------------------------------------------------------------------------------------------- + +IRQENS = $0010 ; rejestr-cień IRQEN +IRQSTAT = $0011 ; rejestr-cień IRQST + +AUDF3 = $D204 ; częstotliwość pracy generatora 3 (Z) +AUDCTL = $D208 ; rejestr kontroli generatorów dźwięku (Z) +STIMER = $D209 ; rejestr zerowania liczników (Z) +KBCODE = $D209 ; kod ostatnio naciśniętego klawisza (O) +SKSTRES = $D20A ; rejestr statusu złącza szeregowego (Z) +RANDOM = $D20A ; rejestr liczby losowej (O) +SEROUT = $D20D ; szeregowy rejestr wyjściowy (Z) +SERIN = $D20D ; szeregowy rejestr wejściowy (O) +IRQEN = $D20E ; zezwolenie przerwań IRQ (Z) +IRQST = $D20E ; status przerwań IRQ (O) +SKCTL = $D20F ; rejestr kontroli złącza szeregowego (Z) +SKSTAT = $D20F ; rejestr statusu złącza szeregowego (O) + +* --------------------------------------------------------------------------------------------- +* --- PIA +* --------------------------------------------------------------------------------------------- +PORTA = $D300 ; port A układu PIA +PORTB = $D301 ; port B układu PIA +PACTL = $D302 ; rejestr kontroli portu A +PBCTL = $D303 ; rejestr kontroli portu B + +* --------------------------------------------------------------------------------------------- +* --- ANTIC +* --------------------------------------------------------------------------------------------- +DMACTL = $D400 ; rejestr kontroli dostępu do pamięci +CHRCTL = $D401 ; rejestr kontroli wyświetlania znaków +DLPTR = $D402 ; adres programu ANTIC-a +HSCROL = $D404 ; znacznik poziomego przesuwu obrazu +VSCROL = $D405 ; znacznik pionowego przesuwu obrazu +PMBASE = $D407 ; adres pamięci graczy i pocisków +CHBASE = $D409 ; adres zestawu znaków +WSYNC = $D40A ; znacznik oczekiwania na synchronizację poziomą +VCOUNT = $D40B ; licznik linii obrazu +LPENH = $D40C ; poziome położenie pióra świetlengo +LPENV = $D40D ; pionowe położenie pióra świetlnego +NMIEN = $D40E ; rejestr zezwoleń na przerwania NMI +NMIST = $D40F ; rejestr statusu przerwań NMI + +;------------------------------------- +;additional system variables +;------------------------------------- +COLPM0S = $02C0 ;- - rejestr-cień COLPM0 +COLPM1S = $02C1 ;- - rejestr-cień COLPM1 +COLPM2S = $02C2 ;- - rejestr-cień COLPM2 +COLPM3S = $02C3 ;- - rejestr-cień COLPM3 +COLPF0S = $02C4 ;- - rejestr-cień COLPF0 +COLPF1S = $02C5 ;- - rejestr-cień COLPF1 +COLPF2S = $02C6 ;- - rejestr-cień COLPF2 +COLPF3S = $02C7 ;- - rejestr-cień COLPF3 + +COLBAKS = $02C8 +GTICTLS = $026F ;- - rejestr-cień GTIACTL + +DMACTLS = $022F ;- - rejestr kontroli dostępu do pamięci - cień +DLPTRS = $0230 ;- - adres programu ANTIC-a - cień +CHBAS = $02F4 ;- - rejestr-cień CHBASE +KBCODES = $02FC ;- - rejestr-cień KBCODE + +SETVBV = $E45C +XITVBV = $E462 +SYSVBV = $E45F +RTCLOK = $0012 + +MEMTOP = $02E5 ;- - adres górnej granicy wolnej pamięci RAM +MEMLO = $02E7 ;- - adres dolnej granicy wolnej pamięci RAM + +JSTICK0 = $0278 ;- - położenie joysticka 0 +JSTICK1 = $0279 ;- JSTICK1 - położenie joysticka 1 +JSTICK2 = $027A ;- JSTICK2 - położenie joysticka 0 +JSTICK3 = $027B ;- JSTICK3 - położenie joysticka 1 +PTRIG0 = $027C ;- PTRIG0 - przycisk potencjometru 0 +PTRIG1 = $027D ;- PTRIG1 - przycisk potencjometru 1 +TRIG0S = $0284 ;- TRIG0S - przycisk joysticka 0, rejestr-cień TRIG0 +TRIG1S = $0285 ;- TRIG1S - przycisk joysticka 1, rejestr-cień TRIG1 +TRIG2S = $0286 ;- TRIG2S - rejestr-cień TRIG0 +TRIG3S = $0287 ;- TRIG3S - rejestr-cień TRIG1 + + +/* +Rejestry OS w pamięci RAM + + $08 - WARMST - znacznik gorącego startu + $0E - APPMHI - najwyższy adres RAM zajęty przez program + $10 - IRQENS - rejestr-cień IRQEN + $11 - IRQSTAT - rejestr-cień IRQST + $12 - RTCLOK - zegar czasu rzeczywistego + $15 - BUFADR - adres bufora dla operacji dyskowych + $17 - ICCOMT - rejestr przejściowy kodu operacji I/O + $20 - ZIOCB - zerostronicowy blok kontroli I/O + $20 - ICHIDZ - indeks wpisu urządzenia w HATABS + $21 - ICDNOZ - numer urządzenia + $22 - ICCOMZ - kod operacji wejścia/wyjścia + $23 - ICSTZ - status operacji wejścia/wyjścia + $24 - ICBAZ - adres bufora danych dla operacji I/O + $26 - ICPTZ - adres procedury obsługi dla operacji + $28 - ICBLZ - długość bufora danych dla operacji I/O + $2A - ICAX1Z - rejestr pomocniczy ZIOCB + $2B - ICAX2Z - rejestr pomocniczy ZIOCB + $2C - ICAX3Z - rejestr pomocniczy ZIOCB + $2D - ICAX4Z - rejestr pomocniczy ZIOCB + $2E - ICAX5Z - rejestr pomocniczy ZIOCB + $2F - ICAX6Z - rejestr pomocniczy ZIOCB + $30 - STATUS - status aktualnej operacji SIO + $31 - CHKSUM - suma kontrolna dla operacji SIO + $32 - BUFR - adres bufora danych dla SIO + $34 - BUFEN - adres końca bufora danych dla SIO + $36 - LTEMP - pomocniczy wektor odczytu listy liniowej + $38 - BUFRFL - znacznik zapełnienia bufora SIO + $39 - RECVND - znacznik końca odczytu + $3A - XMTDON - znacznik końca transmisji + $3B - CHKSNT - znacznik nadania sumy kontrolnej + $3C - NOCKSM - znacznik braku sumy kontrolnej + $3D - BPTR - licznik bufora magnetofonu + $3E - GAPTYP - znacznik długości przerwy między blokami + $3F - FEOF - znacznik końca zbioru + $40 - FREQ - licznik dźwięku przy otwarciu magnetofonu + $41 - IOSNDEN - znacznik dźwięku przy transmisji + $42 - CRITIC - znacznik krytycznych czasowo operacji I/O + $4A - ZCHAIN - rejestr następstwa listy liniowej + $4C - DSTAT - status klawiatury i ekranu + $50 - TEMP - pomocniczy rejestr przejściowy + $51 - HOLD1 - pomocniczy rejestr przejściowy + $52 - LMARGIN - lewy margines obrazu + $53 - RMARGIN - prawy margines obrazu + $54 - ROWCRS - pionowa pozycja kursora + $55 - COLCRS - pozioma pozycja kursora + $57 - DINDEX - numer trybu graficznego OS + $58 - SAVMSC - adres pamięci obrazu + $5A - OLDROW - poprzednia pionowa pozycja kursora + $5B - OLDCOL - poprzednia pozioma pozycja kursora + $5D - OLDCHR - poprzedni znak na ekranie + $5E - OLDADR - poprzedni adres znaku na ekranie + $60 - FKDEFP - wektor tabeli definicji klawiszy F1-F4 + $62 - PALNTS - wskaźnik systemu TV + $63 - LOGCOL - adres kursora w wierszu logicznym + $64 - ADRESS - rejestr adresowy dla procedur edytora + $66 - MLTTMP - pomocniczy rejestr przejściowy + $68 - SAVADR - pomocniczy rejestr adresowy + $6A - RAMTOP - liczba stron pamięci RAM + $6B - BUFCNT - licznik bufora edytora + $6C - BUFSTR - adres bufora dla edytora + $6E - BITMSK - maska bitowa do wyświetlenia znaku + $6F - SHFAMT - liczba przesunięć punktu + $70 - ROWAC - aktualny wiersz przy rysowaniu + $72 - COLAC - aktualna kolumna przy rysowaniu + $74 - ENDPT - znacznik końca rysowanej linii + $76 - DELTAR - przyrost pionowej pozycji kursora + $77 - DELTAC - przyrost poziomej pozycji kursora + $79 - KEYDEFP - wektor tabeli definicji klawiszy + $7B - SWPFLG - znacznik kursora w trybach z oknem + $7C - HOLDCH - przechowywanie wartości znaku + $7D - INSDAT - rejestr pomocniczy edytora + $7E - COUNTR - licznik pamięci obrazu dla DOSCR i DRAW +$0100 - STACK - stos mikroprocesora 6502 +$0200 - DLIV - wektor przerwania programu ANTIC-a +$0210 - VTIMR1 - wektor przerwania licznika 1 POKEY-a +$0212 - VTIMR2 - wektor przerwania licznika 2 POKEY-a +$0214 - VTIMR4 - wektor przerwania licznika 4 POKEY-a +$0218 - TIMCNT1 - pierwszy licznik systemu +$0226 - TIMVEC1 - wektor przerwania licznika TIMCNT1 +$022A - TIMFLG3 - znacznik wyzerowania licznika TIMCNT3 +$022F - DMACTLS - rejestr-cień DMACTL +$0230 - DLPTRS - rejestr-cień DLPTR +$0232 - SKCTLS - rejestr-cień SKCTL +$0233 - LCOUNT - licznik odczytu dla nowego urządzenia +$0234 - LPENHS - rejestr-cień LPENH +$0235 - LPENVS - rejestr-cień LPENV +$023A - CDEVIC - kod urządzenia dla SIO +$023B - CCMND - kod operacji dla SIO +$023C - CAUX1 - pierwszy bajt pomocniczy dla SIO +$023D - CAUX2 - drugi bajt pomocniczy dla SIO +$023E - TEMP - tymczasowy rejestr odpowiedzi urządzenia +$023F - ERRFLG - znacznik błędu operacji SIO +$0244 - COLDST - znacznik zimnego startu systemu +$0245 - RECLEN - długość rekordu z nowego urządzenia +$0246 - DSKTIM - wartość Timeout dla stacji dysków +$0247 - PDVMSK - maska obecności nowych urządzeń +$0248 - PDVRS - rejestr-cień PDVREG +$024A - RELADR - adres procedury przemieszczalnej +$024C - PPTMPA - rejestr przechowania zawartości akumulatora +$024D - PPTMPX - rejestr przechowania zawartości rejestru X +$026B - CHSPTR - wektor nieużywanego zestawu znaków +$026C - VSFLAG - znacznik przesuwu pionowego obrazu +$026E - FINE - znacznik delikatnego przesuwu obrazu +$026F - GTICTLS - rejestr-cień GTIACTL +$0270 - PADDL0 - rejestr-cień POT0 +$0278 - JSTICK0 - położenie joysticka 0 +$0279 - JSTICK1 - położenie joysticka 1 +$027A - JSTICK2 - położenie joysticka 0 +$027B - JSTICK3 - położenie joysticka 1 +$027C - PTRIG0 - przycisk potencjometru 0 +$027D - PTRIG1 - przycisk potencjometru 1 +$0284 - TRIG0S - przycisk joysticka 0, rejestr-cień TRIG0 +$0285 - TRIG1S - przycisk joysticka 1, rejestr-cień TRIG1 +$0286 - TRIG2S - rejestr-cień TRIG0 +$0287 - TRIG3S - rejestr-cień TRIG1 +$0288 - HIBYTE - indeks operacji nowego urządzenia +$0289 - WMODE - znacznik sposobu dostępu do magnetofonu +$028A - BLIM - długość bufora magnetofonu +$028E - NEWADR - adres procedury nowego urządzenia +$0290 - TXTROW - wiersz kursora w oknie tekstowym +$0291 - TXTCOL - kolumna kursora w oknie tekstowym +$0293 - TINDEX - tryb graficzny OS w oknie tekstowym +$0294 - TXTMSC - adres pamięci okna tekstowego +$029C - CRETRY - liczba powtórzeń rozkazu operacji +$029D - HOLD3 - pomocniczy rejestr przejściowy +$029E - SUBTMP - pomocniczy rejestr przejściowy +$02A0 - DMASK - maska punktów obrazu +$02A2 - ESCFLG - znacznik klawisza ESC +$02A3 - TABMAP - mapa pozycji tabulacji +$02B2 - LOGMAP - mapa linii logicznych +$02B6 - INVFLG - znacznik klawisza inverse video +$02B7 - FILFLG - znacznik wypełniania obrazu +$02B8 - TMPROW - tymczasowy rejestr pozycji kursora +$02B9 - TMPCOL - tymczasowy rejestr pozycji kursora +$02BB - SCRFLG - znacznik przesuwu obrazu +$02BC - HOLD4 - pomocniczy rejestr przejściowy +$02BD - DRETRY - liczba powtórzeń wywołań urządzenia +$02BE - SHFLOK - znacznik klawiszy SHIFT i CONTROL +$02BF - BOTSCR - liczba wierszy tekstu +$02C0 - COLPM0S - rejestr-cień COLPM0 +$02C1 - COLPM1S - rejestr-cień COLPM1 +$02C2 - COLPM2S - rejestr-cień COLPM2 +$02C3 - COLPM3S - rejestr-cień COLPM3 +$02C4 - COLPF0S - rejestr-cień COLPF0 +$02C5 - COLPF1S - rejestr-cień COLPF1 ;gr.8 letters +$02C6 - COLPF2S - rejestr-cień COLPF2 ;gr.8 background +$02C7 - COLPF3S - rejestr-cień COLPF3 +$02C8 - COLBAKS - rejestr-cień COLBAK +$02C9 - RUNADR - adres procedury nowego urządzenia +$02CB - HIUSED - adres końcowy procedury nowego urządzenia +$02CF - GBYTEA - adres procedury nowego urządzenia +$02D1 - LOADAD - adres wczytywania z nowego urządzenia +$02D3 - ZLOADA - pomocniczy rejestr adresu wczytywania +$02D5 - DSCTLN - długość sektora dyskowego +$02DB - NOCLIK - znacznik dźwięku klawiatury +$02DE - PBPNT - licznik bufora drukarki +$02DF - PBUFSZ - długość bufora drukarki +$02E5 - MEMTOP - adres górnej granicy wolnej pamięci RAM +$02E7 - MEMLO - adres dolnej granicy wolnej pamięci RAM +$02E9 - HNDLOD - znacznik relokowalnej procedury obsługi I/O +$02EA - DVSTAT - dodatkowy rejestr statusu urządzenia +$02EC - DVTMOT - dodatkowy rejestr Timeout urządzenia +$02ED - REVNUM - numer wersji nowego urządzenia +$02EE - CBAUD - prędkość transmisji z magnetofonu +$02F0 - CRSINH - znacznik widoczności kursora +$02F3 - CHACT - rejestr-cień CHRCTL +$02F4 - CHBAS - rejestr-cień CHBASE +$02F5 - NEWROW - nowa pozycja pionowa kursora +$02F6 - NEWCOL - nowa pozycja pozioma kursora +$02F8 - ROWINC - zmiana pionowej pozycji kursora +$02F9 - COLINC - zmiana poziomej pozycji kursora +$02FA - CHAR - kod wewnętrzny znaku +$02FB - ATACHR - kod ATASCII znaku +$02FC - KBCODES - rejestr-cień KBCODE +$02FD - FILDAT - numer koloru dla wypełniania +$02FE - DSPFLG - znacznik wyświetlania znaków kontrolnych +$02FF - SSFLAG - znacznik start/stop dla przesuwu obrazu +$0300 - DDEVIC - kod identyfikacyjny urządzenia +$0301 - DUNIT - numer identyfikacyjny urządzenia +$0302 - DCMND - bajt rozkazu dla urządzenia +$0303 - DSTATS - status urządzenia +$0304 - DBUFA - adres bufora danych +$0306 - DTIMLO - wartość Timeout dla urządzenia +$0308 - DBYT - długość bufora danych +$030A - DAUX1 - rejestr pomocniczy dla operacji I/O +$030B - DAUX2 - rejestr pomocniczy dla operacji I/O +$030C - INTIM1 - rejestr czasu przy odczycie z magnetofonu +$030F - CASFLG - znacznik operacji z magnetofonem +$0310 - INTIM2 - rejestr czasu przy odczycie z magnetofonu +$0312 - TEMP1 - pomocniczy rejestr przejściowy +$0313 - TEMP2 - pomocniczy rejestr przejściowy +$0314 - PTIMOT - wartość Timeout dla drukarki +$0315 - TEMP3 - pomocniczy rejestr przejściowy +$0316 - SAVIO - rejestr przejściowy dla operacji SIO +$0317 - TIMFLG - znacznik upłynięcia czasu Timeout +$0318 - STACKP - rejestr wskaźnika stosu dla SIO +$0319 - TSTAT - przejściowy rejestr statusu SIO +$031A - HATABS - tabela wektorów procedur obsługi +$0340 - IOCB0 - blok kontroli I/O numer 0 +$0350 - IOCB1 - blok kontroli I/O numer 1 +$0360 - IOCB2 - blok kontroli I/O numer 2 +$0370 - IOCB3 - blok kontroli I/O numer 3 +$0380 - IOCB4 - blok kontroli I/O numer 4 +$0390 - IOCB5 - blok kontroli I/O numer 5 +$03A0 - IOCB6 - blok kontroli I/O numer 6 +$03B0 - IOCB7 - blok kontroli I/O numer 7 +$0340 - ICCHID - indeks wpisu urządzenia w HATABS +$0341 - ICDNO - numer urządzenia +$0342 - ICCMD - kod rozkazu operacji I/O +$0343 - ICSTAT - status operacji I/O +$0344 - ICBUFA - adres bufora danych dla operacji I/O +$0346 - ICPUTB - adres procedury przesyłania danych +$0348 - ICBUFL - długość bufora danych dla operacji I/O +$034A - ICAX1 - rejestr pomocniczy dla operacji I/O +$034B - ICAX2 - rejestr pomocniczy dla operacji I/O +$034C - ICAX3 - rejestr pomocniczy dla operacji I/O +$034D - ICAX4 - rejestr pomocniczy dla operacji I/O +$034E - ICAX5 - rejestr pomocniczy dla operacji I/O +$034F - ICAX6 - rejestr pomocniczy dla operacji I/O +$03C0 - PRNBUF - bufor drukarki +$03E8 - SUPERF - znacznik stosowany przy odczycie klawiatury +$03E9 - CKEY - znacznik klawisza START przy zimnym starcie +$03EC - DERRF - znacznik błędu przy otwieraniu edytora +$03FB - CHLINK - rejestr elementów listy liniowej +$03FD - CSCB - bajty kontroli szybkości magnetofonu +$03FF - CRCB - bajt długości rekordu magnetofonowego +$0400 - CASBUF - bufor magnetofonu +$047F - CASBEN - koniec bufora magnetofonu +$D000 - HPOSP0 - pozioma pozycja gracza 0 (Z) +$D000 - KOLM0PF - kolizja pocisku 0 z polem gry (O) +$D001 - HPOSP1 - pozioma pozycja gracza 1 (Z) +$D001 - KOLM1PF - kolizja pocisku 1 z polem gry (O) +$D002 - HPOSP2 - pozioma pozycja gracza 2 (Z) +$D002 - KOLM2PF - kolizja pocisku 2 z polem gry (O) +$D003 - HPOSP3 - pozioma pozycja gracza 3 (Z) +$D003 - KOLM3PF - kolizja pocisku 3 z polem gry (O) +$D004 - HPOSM0 - pozioma pozycja pocisku 0 (Z) +$D004 - KOLP0PF - kolizja gracza 0 z polem gry (O) +$D005 - HPOSM1 - pozioma pozycja pocisku 1 (Z) +$D005 - KOLP1PF - kolizja gracza 1 z polem gry (O) +$D006 - HPOSM2 - pozioma pozycja pocisku 2 (Z) +$D006 - KOLP2PF - kolizja gracza 2 z polem gry (O) +$D007 - HPOSM3 - pozioma pozycja pocisku 3 (Z) +$D007 - KOLP3PF - kolizja gracza 3 z polem gry (O) +$D008 - SIZEP0 - poziomy rozmiar gracza 0 (Z) +$D008 - KOLM0P - kolizja pocisku 0 z graczem (O) +$D009 - SIZEP1 - poziomy rozmiar gracza 1 (Z) +$D009 - KOLM1P - kolizja pocisku 1 z graczem (O) +$D00A - SIZEP2 - poziomy rozmiar gracza 2 (Z) +$D00A - KOLM2P - kolizja pocisku 2 z graczem (O) +$D00B - SIZEP3 - poziomy rozmiar gracza 3 (Z) +$D00B - KOLM3P - kolizja pocisku 3 z graczem (O) +$D00C - SIZEM - poziomy rozmiar pocisków (Z) +$D00C - KOLP0P - kolizja gracza 0 z innym graczem (O) +$D00D - GRAFP0 - rejestr grafiki gracza 0 (Z) +$D00D - KOLP1P - kolizja gracza 1 z innym graczem (O) +$D00E - GRAFP1 - rejestr grafiki gracza 1 (Z) +$D00E - KOLP2P - kolizja gracza 2 z innym graczem (O) +$D00F - GRAFP2 - rejestr grafiki gracza 2 (Z) +$D00F - KOLP3P - kolizja gracza 3 z innym graczem (O) +$D010 - GRAFP3 - rejestr grafiki gracza 3 (Z) +$D010 - TRIG0 - stan przycisku joysticka 0 (O) +$D011 - GRAFM - rejestr grafiki pocisków (Z) +$D011 - TRIG1 - stan przycisku joysticka 1 (O) +$D012 - COLPM0 - rejestr koloru gracza i pocisku 0 (Z) +$D013 - COLPM1 - rejestr koloru gracza i pocisku 1 (Z) +$D013 - TRIG3 - znacznik dołączenia cartridge'a (O) +$D014 - COLPM2 - rejestr koloru gracza i pocisku 2 (Z) +$D014 - PAL - znacznik systemu TV (O) +$D015 - COLPM3 - rejestr koloru gracza i pocisku 3 (Z) +$D016 - COLPF0 - rejestr koloru pola gry 0 (Z) +$D017 - COLPF1 - rejestr koloru pola gry 1 (Z) +$D018 - COLPF2 - rejestr koloru pola gry 2 (Z) +$D019 - COLPF3 - rejestr koloru pola gry 3 (Z) +$D01A - COLBAK - rejestr koloru tła (Z) +$D01B - GTIACTL - rejestr kontroli układu GTIA +$D01C - VDELAY - licznik opóźnienia pionowego P/MG +$D01D - PMCNTL - rejestr kontroli graczy i pocisków +$D01E - HITCLR - rejestr kasowania rejestrów kolizji +$D01F - CONSOL - rejestr stanu klawiszy konsoli +$D1FF - PDVREG - rejestr wyboru nowego urządzenia +$D200 - AUDF1 - częstotliwość pracy generatora 1 (Z) +$D200 - POT0 - rejestr położenia potencjometru 0 (O) +$D201 - AUDC1 - rejestr kontroli dźwięku generatora 1 (Z) +$D201 - POT1 - rejestr położenia potencjometru 1 (O) +$D202 - AUDF2 - częstotliwość pracy generatora 2 (Z) +$D202 - POT2 - rejestr położenia potencjometru 2 (O) +$D203 - AUDC2 - rejestr kontroli dźwięku generatora 2 (Z) +$D203 - POT3 - rejestr położenia potencjometru 3 (O) +$D204 - AUDF3 - częstotliwość pracy generatora 3 (Z) +$D205 - AUDC3 - rejestr kontroli dźwięku generatora 3 (Z) +$D206 - AUDF4 - częstotliwość pracy generatora 4 (Z) +$D207 - AUDC4 - rejestr kontroli dźwięku generatora 4 (Z) +$D208 - AUDCTL - rejestr kontroli generatorów dźwięku (Z) +$D208 - POTST - status odczytu potencjometrów (O) +$D209 - STIMER - rejestr zerowania liczników (Z) +$D209 - KBCODE - kod ostatnio naciśniętego klawisza (O) +$D20A - SKSTRES - reset statusu złącza szeregowego (Z) +$D20A - RANDOM - rejestr liczby losowej (O) +$D20B - POTG0 - znacznik przetwornika analogowo-cyfrowego (Z) +$D20D - SEROUT - szeregowy rejestr wyjściowy (Z) +$D20D - SERIN - szeregowy rejestr wejściowy (O) +$D20E - IRQEN - zezwolenia przerwań IRQ (Z) +$D20E - IRQST - status przerwań IRQ (O) +$D20F - SKCTL - rejestr kontroli złącza szeregowego (Z) +$D20F - SKSTAT - rejestr statusu złącza szeregowego (O) +$D300 - PORTA - port A układu PIA +$D301 - PORTB - port B układu PIA +$D302 - PACTL - rejestr kontroli portu A +$D303 - PBCTL - rejestr kontroli portu B +$D400 - DMACTL - rejestr kontroli dostępu do pamięci +$D401 - CHRCTL - rejestr kontroli wyświetlania znaków +$D402 - DLPTR - adres programu ANTIC-a +$D404 - HSCROL - znacznik poziomego przesuwu obrazu +$D405 - VSCROL - znacznik pionowego przesuwu obrazu +$D407 - PMBASE - adres pamięci graczy i pocisków +$D409 - CHBASE - adres zestawu znaków +$D40A - WSYNC - znacznik oczekiwania na synchronizację poziomą +$D40B - VCOUNT - licznik linii obrazu +$D40C - LPENH - poziome położenie pióra świetlengo +$D40D - LPENV - pionowe położenie pióra świetlnego +$D40E - NMIEN - rejestr zezwoleń na przerwania NMI +$D40F - NMIST - rejestr statusu przerwań NMI +*/ diff --git a/macro.asm b/macro.asm new file mode 100644 index 0000000..e9cea7e --- /dev/null +++ b/macro.asm @@ -0,0 +1,146 @@ +;------------------------------------- + .MACRO ROLW + ROL :1 + ROL :1+1 + .ENDM +;------------------------------------- + .MACRO ASLW + ASL :1 + ROL :1+1 + .ENDM +;------------------------------------- + .MACRO RORW + ROR :1+1 + ROR :1 + .ENDM +;------------------------------------- + .MACRO LSRW + LSR :1+1 + ROR :1 + .ENDM + +;------------------------------------- + .MACRO VMAIN +; VMAIN #WORD,interrupt.vector +; interrupt.vector: +; 0 - VIMIRQ +; 1 - TIMCNT1 +; 2 - TIMCNT2 +; 3 - TIMCNT3 +; 4 - TIMCNT4 +; 5 - TIMCNT5 +; 6 - VVBLKI +; 7 - VVBLKD +; 8 - TIMVEC1 +; 9 - TIMVEC2 +; Initialises Vertical Blank Interrupts +; (works only with system interrupts ON) + LDY # <:1 + LDX # >:1 + LDA #:2 + JSR SETVBV + .ENDM +;------------------------------------- + .MACRO VDLI +; VDLI #WORD +; Initialises Display List Interrupts + LDY # <:1 + LDX # >:1 + LDA #$C0 + STY $0200 + STX $0201 + STA NMIEN + .ENDM +;------------------------------------- + .MACRO halt +?stop + .if :1 + lda RANDOM + and #:1 + sta COLBAK + .endif + jmp ?stop + .ENDM +;------------------------------------- + .MACRO KEY +; KEY +; waits for releasing and pressing "any key" + PHA +?CK1 LDA SKSTAT + AND #$04 + BEQ ?CK1 +?CK LDA SKSTAT + AND #$04 + BNE ?CK + PLA + .ENDM +;------------------------------------- + .MACRO WAIT ;waits one frame (1/50 s(PAL) or 1/60s(NTSC)) + ;uses: A + LDA VCOUNT + STA WSYNC + STA WSYNC + STA WSYNC +@ CMP VCOUNT + BNE @- + .ENDM +;------------------------------------- + .macro negw + ; negate the given word (0-a) +;------------------------------------- + sec + lda #$00 + sbc :1 + sta :1 + lda #$00 + sbc :1+1 + sta :1+1 + .endm +;------------------------------------- + .macro randomize ;returns (in A) a random .byte between "floor" (incl) and "ceiling" (excl) + ;usage: randomize floor ceiling AND + ;uses: A + +?rand + lda random + .if :3 + and #:3 + .endif + cmp #:1 ;floor + bcc ?rand + cmp #:2+1 ;ceiling + bcs ?rand + .endm +;------------------------------------- + .macro phx + txa + pha + .endm +;------------------------------------- + .macro phy + tya + pha + .endm +;------------------------------------- + .macro plx + pla + tax + .endm +;------------------------------------- + .macro ply + pla + tay + .endm +;------------------------------------- + .macro pause ;waits :1 number (byte) of frames + ;uses: AX + .if :1 > 0 + ldx #:1 +loop wait + dex + bne loop + .else + wait + .endif + .ENDM + diff --git a/macro.lab b/macro.lab new file mode 100644 index 0000000..9d22722 --- /dev/null +++ b/macro.lab @@ -0,0 +1,2 @@ +mads 2.0.6 build 58 (28 Jan 17) +Label table: diff --git a/macro.lst b/macro.lst new file mode 100644 index 0000000..8f4f650 --- /dev/null +++ b/macro.lst @@ -0,0 +1,148 @@ +mads 2.0.6 build 58 (28 Jan 17) +Source: C:\jac\wudsn\Workspace\no_internet\macro.asm + 1 ;------------------------------------- + 2 .MACRO ROLW + 3 ROL :1 + 4 ROL :1+1 + 5 .ENDM + 6 ;------------------------------------- + 7 .MACRO ASLW + 8 ASL :1 + 9 ROL :1+1 + 10 .ENDM + 11 ;------------------------------------- + 12 .MACRO RORW + 13 ROR :1+1 + 14 ROR :1 + 15 .ENDM + 16 ;------------------------------------- + 17 .MACRO LSRW + 18 LSR :1+1 + 19 ROR :1 + 20 .ENDM + 21 + 22 ;------------------------------------- + 23 .MACRO VMAIN + 24 ; VMAIN #WORD,interrupt.vector + 25 ; interrupt.vector: + 26 ; 0 - VIMIRQ + 27 ; 1 - TIMCNT1 + 28 ; 2 - TIMCNT2 + 29 ; 3 - TIMCNT3 + 30 ; 4 - TIMCNT4 + 31 ; 5 - TIMCNT5 + 32 ; 6 - VVBLKI + 33 ; 7 - VVBLKD + 34 ; 8 - TIMVEC1 + 35 ; 9 - TIMVEC2 + 36 ; Initialises Vertical Blank Interrupts + 37 ; (works only with system interrupts ON) + 38 LDY # <:1 + 39 LDX # >:1 + 40 LDA #:2 + 41 JSR SETVBV + 42 .ENDM + 43 ;------------------------------------- + 44 .MACRO VDLI + 45 ; VDLI #WORD + 46 ; Initialises Display List Interrupts + 47 LDY # <:1 + 48 LDX # >:1 + 49 LDA #$C0 + 50 STY $0200 + 51 STX $0201 + 52 STA NMIEN + 53 .ENDM + 54 ;------------------------------------- + 55 .MACRO halt + 56 ?stop + 57 .if :1 + 58 lda RANDOM + 59 and #:1 + 60 sta COLBAK + 61 .endif + 62 jmp ?stop + 63 .ENDM + 64 ;------------------------------------- + 65 .MACRO KEY + 66 ; KEY + 67 ; waits for releasing and pressing "any key" + 68 PHA + 69 ?CK1 LDA SKSTAT + 70 AND #$04 + 71 BEQ ?CK1 + 72 ?CK LDA SKSTAT + 73 AND #$04 + 74 BNE ?CK + 75 PLA + 76 .ENDM + 77 ;------------------------------------- + 78 .MACRO WAIT ;waits one frame (1/50 s(PAL) or 1/60s(NTSC)) + 79 ;uses: A + 80 LDA VCOUNT + 81 STA WSYNC + 82 STA WSYNC + 83 STA WSYNC + 84 @ CMP VCOUNT + 85 BNE @- + 86 .ENDM + 87 ;------------------------------------- + 88 .macro negw + 89 ; negate the given word (0-a) + 90 ;------------------------------------- + 91 sec + 92 lda #$00 + 93 sbc :1 + 94 sta :1 + 95 lda #$00 + 96 sbc :1+1 + 97 sta :1+1 + 98 .endm + 99 ;------------------------------------- + 100 .macro randomize ;returns (in A) a random .byte between "floor" (incl) and "ceiling" (excl) + 101 ;usage: randomize floor ceiling AND + 102 ;uses: A + 103 + 104 ?rand + 105 lda random + 106 .if :3 + 107 and #:3 + 108 .endif + 109 cmp #:1 ;floor + 110 bcc ?rand + 111 cmp #:2+1 ;ceiling + 112 bcs ?rand + 113 .endm + 114 ;------------------------------------- + 115 .macro phx + 116 txa + 117 pha + 118 .endm + 119 ;------------------------------------- + 120 .macro phy + 121 tya + 122 pha + 123 .endm + 124 ;------------------------------------- + 125 .macro plx + 126 pla + 127 tax + 128 .endm + 129 ;------------------------------------- + 130 .macro ply + 131 pla + 132 tay + 133 .endm + 134 ;------------------------------------- + 135 .macro pause ;waits :1 number (byte) of frames + 136 ;uses: AX + 137 .if :1 > 0 + 138 ldx #:1 + 139 loop wait + 140 dex + 141 bne loop + 142 .else + 143 wait + 144 .endif + 145 .ENDM + 146 diff --git a/ni.asm b/ni.asm new file mode 100644 index 0000000..5594943 --- /dev/null +++ b/ni.asm @@ -0,0 +1,78 @@ +; @com.wudsn.ide.asm.mainsourcefile=ni.asm + icl 'atari.asm' + icl 'macro.asm' + + .zpvar tmp, tmp0, tmp1, tmp2, tmp3 .word +sw = $80 ;screen width in bytes +sh = 128 ; screen height in lines +screen = $4000 +pmgraph = $9000 + org $2000 +dl + .byte $70,$70,$70 +dl_addrs ;start of lines + .REPT sh + .byte $5f + .word screen+#*sw + .ENDR + .byte $41 + .word DL +start + mva #%00100011 DMACTLS + mwa #dl DLPTRS + mva #12 move_scr.hscr_state ;hscroll initialisation + sta HSCROL + + mva #0 COLPF1S + mva #$0F COLBAKS + mva #$0f COLPF2S + + + jsr sprites_init + pause 1 + jsr ground_init + + ldx #20 + ldy #0 + jsr cactus + ldx #30 + ldy #1 + jsr cactus + ldx #40 + ldy #2 + jsr cactus + +xx ldx #0 ; anim phaze +yy ldy #54 + jsr dino_pm + inc:lda xx+1 + cmp #3 + sne + mva #0 xx+1 + key + jsr move_scr + jmp xx + + +llp + mva #0 ntmp +lp + ldx ntmp + ldy #98 + jsr dino + key + jsr dino_clear + key + inc:lda ntmp + cmp #3 + bne lp + jmp llp + + + halt 03 + + run start +ntmp .by 0 + + icl 'procs.asm' + icl 'artwork.asm' \ No newline at end of file diff --git a/ni.atdbg b/ni.atdbg new file mode 100644 index 0000000..c6bead2 --- /dev/null +++ b/ni.atdbg @@ -0,0 +1,6 @@ +.sourcemode on +.echo +.echo "Loading executable..." +.echo +bc * +.onexerun .echo "Launching executable..." diff --git a/ni.lab b/ni.lab new file mode 100644 index 0000000..3aa1590 --- /dev/null +++ b/ni.lab @@ -0,0 +1,212 @@ +mads 2.0.6 build 58 (28 Jan 17) +Label table: +00 D000 HPOSP0 +00 D001 HPOSP1 +00 D002 HPOSP2 +00 D003 HPOSP3 +00 D004 HPOSM0 +00 D005 HPOSM1 +00 D006 HPOSM2 +00 D007 HPOSM3 +00 D008 SIZEP0 +00 D009 SIZEP1 +00 D00A SIZEP2 +00 D00B SIZEP3 +00 D00C SIZEM +00 D00D GRAFP0 +00 D00E GRAFP1 +00 D00F GRAFP2 +00 D010 GRAFP3 +00 D011 GRAFM +00 D012 COLPM0 +00 D013 COLPM1 +00 D014 COLPM2 +00 D015 COLPM3 +00 D016 COLPF0 +00 D017 COLPF1 +00 D018 COLPF2 +00 D019 COLPF3 +00 D01A COLBAK +00 D016 COLOR0 +00 D017 COLOR1 +00 D018 COLOR2 +00 D019 COLOR3 +00 D000 KOLM0PF +00 D001 KOLM1PF +00 D002 KOLM2PF +00 D003 KOLM3PF +00 D004 KOLP0PF +00 D005 KOLP1PF +00 D006 KOLP2PF +00 D007 KOLP3PF +00 D008 KOLM0P +00 D009 KOLM1P +00 D00A KOLM2P +00 D00B KOLM3P +00 D00C KOLP0P +00 D00D KOLP1P +00 D00E KOLP2P +00 D00F KOLP3P +00 D010 TRIG0 +00 D011 TRIG1 +00 D013 TRIG3 +00 D014 PAL +00 D01B GTICTL +00 D01B GTIACTL +00 D01C VDELAY +00 D01D PMCNTL +00 D01E HITCLR +00 D01F CONSOL +00 0010 IRQENS +00 0011 IRQSTAT +00 D204 AUDF3 +00 D208 AUDCTL +00 D209 STIMER +00 D209 KBCODE +00 D20A SKSTRES +00 D20A RANDOM +00 D20D SEROUT +00 D20D SERIN +00 D20E IRQEN +00 D20E IRQST +00 D20F SKCTL +00 D20F SKSTAT +00 D300 PORTA +00 D301 PORTB +00 D302 PACTL +00 D303 PBCTL +00 D400 DMACTL +00 D401 CHRCTL +00 D402 DLPTR +00 D404 HSCROL +00 D405 VSCROL +00 D407 PMBASE +00 D409 CHBASE +00 D40A WSYNC +00 D40B VCOUNT +00 D40C LPENH +00 D40D LPENV +00 D40E NMIEN +00 D40F NMIST +00 02C0 COLPM0S +00 02C1 COLPM1S +00 02C2 COLPM2S +00 02C3 COLPM3S +00 02C4 COLPF0S +00 02C5 COLPF1S +00 02C6 COLPF2S +00 02C7 COLPF3S +00 02C8 COLBAKS +00 026F GTICTLS +00 022F DMACTLS +00 0230 DLPTRS +00 02F4 CHBAS +00 02FC KBCODES +00 E45C SETVBV +00 E462 XITVBV +00 E45F SYSVBV +00 0012 RTCLOK +00 02E5 MEMTOP +00 02E7 MEMLO +00 0278 JSTICK0 +00 0279 JSTICK1 +00 027A JSTICK2 +00 027B JSTICK3 +00 027C PTRIG0 +00 027D PTRIG1 +00 0284 TRIG0S +00 0285 TRIG1S +00 0286 TRIG2S +00 0287 TRIG3S +00 0080 SW +00 0080 SH +00 4000 SCREEN +00 9000 PMGRAPH +00 0080 TMP +00 0082 TMP0 +00 0084 TMP1 +00 0086 TMP2 +00 0088 TMP3 +00 2000 DL +00 2003 DL_ADDRS +00 2186 START +00 21B1 PAUSE0.LOOP +00 21BD PAUSE0.WAIT0.0@ +00 21DD XX +00 21DF YY +00 2209 LLP +00 220E LP +00 2251 NTMP +00 2252 DINO +00 0080 DINO._DINO +00 0084 DINO._MASK +00 0086 DINO._SCR +00 0088 DINO._BACK +00 2290 DINO.LOOP1 +00 2292 DINO.DN1 +00 22D5 DINO_CLEAR +00 0086 DINO_CLEAR._SCR +00 0088 DINO_CLEAR._BACK +00 22F7 DINO_CLEAR.LOOP1 +00 22F9 DINO_CLEAR.DN1 +00 231C GROUND +00 0084 GROUND._GND +00 0086 GROUND._SCR +00 233B GROUND.LOOP1 +00 233D GROUND.1@ +00 2361 GROUND.LOOP2 +00 2363 GROUND.2@ +00 2389 GROUND_INIT +00 238D GROUND_INIT.GROUND_LOOP +00 23AA CACTUS +00 0084 CACTUS._CACT +00 0086 CACTUS._SCR +00 23C6 CACTUS.NO_INC +00 23D0 CACTUS.LOOP +00 23D2 CACTUS.3@ +00 23F9 CACTUS.CACT_W +00 23FA SPRITES_INIT +00 002A SPRITES_INIT.DX +00 2432 DINO_PM +00 0084 DINO_PM._DINO +00 0086 DINO_PM._DINO_SAV +00 0088 DINO_PM._SPR +00 244A DINO_PM.LOOP0 +00 245D DINO_PM.4@ +00 248D DINO_PM.5@ +00 24B5 DINO_PM.6@ +00 24E0 DINO_PM.COUNTER +00 24E1 DINO_PM.DINO_SAVE_PM_Y +00 24E2 DINO_PM.DINO_SAVE_PM_Y_PREV +00 24E3 MOVE_DL +00 24EF MOVE_DL.INCR +00 2504 MOVE_SCR +00 251F MOVE_SCR.7@ +00 2520 MOVE_SCR.HSCR_STATE +00 2521 DINO0 +00 2569 DINO1 +00 25B1 DINO2 +00 25F9 DINO_MASK0 +00 2641 DINO_MASK1 +00 2689 DINO_MASK2 +00 26D1 DINO_TAB_L +00 26D4 DINO_TAB_H +00 26D7 DINO_MASK_TAB_L +00 26DA DINO_MASK_TAB_H +00 26DD DINO_BACK +00 2725 DINO_SAVE_Y +00 2726 GND_0 +00 2736 GND_1 +00 2746 GND_2 +00 2756 GND_TAB_L +00 2759 GND_TAB_H +00 275C SCR_ADDRS_L +00 27DC SCR_ADDRS_H +00 0003 CACTI +00 285C CACT0 +00 28E8 CACT1 +00 29A8 CACT2 +00 2AC0 CACT_WIDTHS +00 2AC3 CACT_HEIGHTS +00 2AC6 CACT_TAB_L +00 2AC9 CACT_TAB_H diff --git a/ni.lst b/ni.lst new file mode 100644 index 0000000..7a20afd --- /dev/null +++ b/ni.lst @@ -0,0 +1,1566 @@ +mads 2.0.6 build 58 (28 Jan 17) +Source: C:\jac\wudsn\Workspace\no_internet\ni.asm + 1 ; @com.wudsn.ide.asm.mainsourcefile=ni.asm + 2 icl 'atari.asm' +Source: C:\jac\wudsn\Workspace\no_internet\atari.asm + 1 /* + 2 scr48 = %00111111 ;screen 48b + 3 scr40 = %00111110 ;screen 40b + 4 scr32 = %00111101 ;screen 32b + 5 */ + 5 + 6 + 7 * --------------------------------------------------------------------------------------------- + 8 * --- GTIA + 9 * --------------------------------------------------------------------------------------------- + 10 = D000 HPOSP0 = $D000 ; pozioma pozycja gracza 0 (Z) + 11 = D001 HPOSP1 = $D001 ; pozioma pozycja gracza 1 (Z) + 12 = D002 HPOSP2 = $D002 ; pozioma pozycja gracza 2 (Z) + 13 = D003 HPOSP3 = $D003 ; pozioma pozycja gracza 3 (Z) + 14 = D004 HPOSM0 = $D004 ; pozioma pozycja pocisku 0 (Z) + 15 = D005 HPOSM1 = $D005 ; pozioma pozycja pocisku 1 (Z) + 16 = D006 HPOSM2 = $D006 ; pozioma pozycja pocisku 2 (Z) + 17 = D007 HPOSM3 = $D007 ; pozioma pozycja pocisku 3 (Z) + 18 = D008 SIZEP0 = $D008 ; poziomy rozmiar gracza 0 (Z) + 19 = D009 SIZEP1 = $D009 ; poziomy rozmiar gracza 1 (Z) + 20 = D00A SIZEP2 = $D00A ; poziomy rozmiar gracza 2 (Z) + 21 = D00B SIZEP3 = $D00B ; poziomy rozmiar gracza 3 (Z) + 22 = D00C SIZEM = $D00C ; poziomy rozmiar pocisków (Z) + 23 = D00D GRAFP0 = $D00D ; rejestr grafiki gracza 0 (Z) + 24 = D00E GRAFP1 = $D00E ; rejestr grafiki gracza 1 (Z) + 25 = D00F GRAFP2 = $D00F ; rejestr grafiki gracza 2 (Z) + 26 = D010 GRAFP3 = $D010 ; rejestr grafiki gracza 3 (Z) + 27 = D011 GRAFM = $D011 ; rejestr grafiki pocisków (Z) + 28 = D012 COLPM0 = $D012 ; rejestr koloru gracza i pocisku 0 (Z) + 29 = D013 COLPM1 = $D013 ; rejestr koloru gracza i pocisku 1 (Z) + 30 = D014 COLPM2 = $D014 ; rejestr koloru gracza i pocisku 2 (Z) + 31 = D015 COLPM3 = $D015 ; rejestr koloru gracza i pocisku 3 (Z) + 32 = D016 COLPF0 = $D016 ; rejestr koloru pola gry 0 (Z) + 33 = D017 COLPF1 = $D017 ; rejestr koloru pola gry 1 (Z) + 34 = D018 COLPF2 = $D018 ; rejestr koloru pola gry 2 (Z) + 35 = D019 COLPF3 = $D019 ; rejestr koloru pola gry 3 (Z) + 36 = D01A COLBAK = $D01A ; rejestr koloru tła (Z) + 37 + 38 = D016 COLOR0 = colpf0 + 39 = D017 COLOR1 = colpf1 + 40 = D018 COLOR2 = colpf2 + 41 = D019 COLOR3 = colpf3 + 42 + 43 = D000 KOLM0PF = $D000 ; kolizja pocisku 0 z polem gry (O) + 44 = D001 KOLM1PF = $D001 ; kolizja pocisku 1 z polem gry (O) + 45 = D002 KOLM2PF = $D002 ; kolizja pocisku 2 z polem gry (O) + 46 = D003 KOLM3PF = $D003 ; kolizja pocisku 3 z polem gry (O) + 47 = D004 KOLP0PF = $D004 ; kolizja gracza 0 z polem gry (O) + 48 = D005 KOLP1PF = $D005 ; kolizja gracza 1 z polem gry (O) + 49 = D006 KOLP2PF = $D006 ; kolizja gracza 2 z polem gry (O) + 50 = D007 KOLP3PF = $D007 ; kolizja gracza 3 z polem gry (O) + 51 = D008 KOLM0P = $D008 ; kolizja pocisku 0 z graczem (O) + 52 = D009 KOLM1P = $D009 ; kolizja pocisku 1 z graczem (O) + 53 = D00A KOLM2P = $D00A ; kolizja pocisku 2 z graczem (O) + 54 = D00B KOLM3P = $D00B ; kolizja pocisku 3 z graczem (O) + 55 = D00C KOLP0P = $D00C ; kolizja gracza 0 z innym graczem (O) + 56 = D00D KOLP1P = $D00D ; kolizja gracza 1 z innym graczem (O) + 57 = D00E KOLP2P = $D00E ; kolizja gracza 2 z innym graczem (O) + 58 = D00F KOLP3P = $D00F ; kolizja gracza 3 z innym graczem (O) + 59 = D010 TRIG0 = $D010 ; stan przycisku joysticka 0 (O) + 60 = D011 TRIG1 = $D011 ; stan przycisku joysticka 1 (O) + 61 = D013 TRIG3 = $D013 ; znacznik dołączenia cartridge-a (O) + 62 = D014 PAL = $D014 ; znacznik systemu TV (O) + 63 + 64 = D01B GTICTL = $D01B ; rejestr kontroli układu GTIA + 65 = D01B GTIACTL = gtictl + 66 + 67 = D01C VDELAY = $D01C ; licznik opóźnienia pionowego P/MG + 68 = D01D PMCNTL = $D01D ; rejestr kontroli graczy i pocisków + 69 = D01E HITCLR = $D01E ; rejestr kasowania rejestrów kolizji + 70 = D01F CONSOL = $D01F ; rejestr stanu klawiszy konsoli Start (bit 0), Select (bit 1), Option (bit 2) + 71 + 72 * --------------------------------------------------------------------------------------------- + 73 * --- POKEY + 74 * --------------------------------------------------------------------------------------------- + 75 + 76 = 0010 IRQENS = $0010 ; rejestr-cień IRQEN + 77 = 0011 IRQSTAT = $0011 ; rejestr-cień IRQST + 78 + 79 = D204 AUDF3 = $D204 ; częstotliwość pracy generatora 3 (Z) + 80 = D208 AUDCTL = $D208 ; rejestr kontroli generatorów dźwięku (Z) + 81 = D209 STIMER = $D209 ; rejestr zerowania liczników (Z) + 82 = D209 KBCODE = $D209 ; kod ostatnio naciśniętego klawisza (O) + 83 = D20A SKSTRES = $D20A ; rejestr statusu złącza szeregowego (Z) + 84 = D20A RANDOM = $D20A ; rejestr liczby losowej (O) + 85 = D20D SEROUT = $D20D ; szeregowy rejestr wyjściowy (Z) + 86 = D20D SERIN = $D20D ; szeregowy rejestr wejściowy (O) + 87 = D20E IRQEN = $D20E ; zezwolenie przerwań IRQ (Z) + 88 = D20E IRQST = $D20E ; status przerwań IRQ (O) + 89 = D20F SKCTL = $D20F ; rejestr kontroli złącza szeregowego (Z) + 90 = D20F SKSTAT = $D20F ; rejestr statusu złącza szeregowego (O) + 91 + 92 * --------------------------------------------------------------------------------------------- + 93 * --- PIA + 94 * --------------------------------------------------------------------------------------------- + 95 = D300 PORTA = $D300 ; port A układu PIA + 96 = D301 PORTB = $D301 ; port B układu PIA + 97 = D302 PACTL = $D302 ; rejestr kontroli portu A + 98 = D303 PBCTL = $D303 ; rejestr kontroli portu B + 99 + 100 * --------------------------------------------------------------------------------------------- + 101 * --- ANTIC + 102 * --------------------------------------------------------------------------------------------- + 103 = D400 DMACTL = $D400 ; rejestr kontroli dostępu do pamięci + 104 = D401 CHRCTL = $D401 ; rejestr kontroli wyświetlania znaków + 105 = D402 DLPTR = $D402 ; adres programu ANTIC-a + 106 = D404 HSCROL = $D404 ; znacznik poziomego przesuwu obrazu + 107 = D405 VSCROL = $D405 ; znacznik pionowego przesuwu obrazu + 108 = D407 PMBASE = $D407 ; adres pamięci graczy i pocisków + 109 = D409 CHBASE = $D409 ; adres zestawu znaków + 110 = D40A WSYNC = $D40A ; znacznik oczekiwania na synchronizację poziomą + 111 = D40B VCOUNT = $D40B ; licznik linii obrazu + 112 = D40C LPENH = $D40C ; poziome położenie pióra świetlengo + 113 = D40D LPENV = $D40D ; pionowe położenie pióra świetlnego + 114 = D40E NMIEN = $D40E ; rejestr zezwoleń na przerwania NMI + 115 = D40F NMIST = $D40F ; rejestr statusu przerwań NMI + 116 + 117 ;------------------------------------- + 118 ;additional system variables + 119 ;------------------------------------- + 120 = 02C0 COLPM0S = $02C0 ;- - rejestr-cień COLPM0 + 121 = 02C1 COLPM1S = $02C1 ;- - rejestr-cień COLPM1 + 122 = 02C2 COLPM2S = $02C2 ;- - rejestr-cień COLPM2 + 123 = 02C3 COLPM3S = $02C3 ;- - rejestr-cień COLPM3 + 124 = 02C4 COLPF0S = $02C4 ;- - rejestr-cień COLPF0 + 125 = 02C5 COLPF1S = $02C5 ;- - rejestr-cień COLPF1 + 126 = 02C6 COLPF2S = $02C6 ;- - rejestr-cień COLPF2 + 127 = 02C7 COLPF3S = $02C7 ;- - rejestr-cień COLPF3 + 128 + 129 = 02C8 COLBAKS = $02C8 + 130 = 026F GTICTLS = $026F ;- - rejestr-cień GTIACTL + 131 + 132 = 022F DMACTLS = $022F ;- - rejestr kontroli dostępu do pamięci - cień + 133 = 0230 DLPTRS = $0230 ;- - adres programu ANTIC-a - cień + 134 = 02F4 CHBAS = $02F4 ;- - rejestr-cień CHBASE + 135 = 02FC KBCODES = $02FC ;- - rejestr-cień KBCODE + 136 + 137 = E45C SETVBV = $E45C + 138 = E462 XITVBV = $E462 + 139 = E45F SYSVBV = $E45F + 140 = 0012 RTCLOK = $0012 + 141 + 142 = 02E5 MEMTOP = $02E5 ;- - adres górnej granicy wolnej pamięci RAM + 143 = 02E7 MEMLO = $02E7 ;- - adres dolnej granicy wolnej pamięci RAM + 144 + 145 = 0278 JSTICK0 = $0278 ;- - położenie joysticka 0 + 146 = 0279 JSTICK1 = $0279 ;- JSTICK1 - położenie joysticka 1 + 147 = 027A JSTICK2 = $027A ;- JSTICK2 - położenie joysticka 0 + 148 = 027B JSTICK3 = $027B ;- JSTICK3 - położenie joysticka 1 + 149 = 027C PTRIG0 = $027C ;- PTRIG0 - przycisk potencjometru 0 + 150 = 027D PTRIG1 = $027D ;- PTRIG1 - przycisk potencjometru 1 + 151 = 0284 TRIG0S = $0284 ;- TRIG0S - przycisk joysticka 0, rejestr-cień TRIG0 + 152 = 0285 TRIG1S = $0285 ;- TRIG1S - przycisk joysticka 1, rejestr-cień TRIG1 + 153 = 0286 TRIG2S = $0286 ;- TRIG2S - rejestr-cień TRIG0 + 154 = 0287 TRIG3S = $0287 ;- TRIG3S - rejestr-cień TRIG1 + 155 + 156 + 157 /* + 158 Rejestry OS w pamięci RAM + 159 + 160 $08 - WARMST - znacznik gorącego startu + 161 $0E - APPMHI - najwyższy adres RAM zajęty przez program + 162 $10 - IRQENS - rejestr-cień IRQEN + 163 $11 - IRQSTAT - rejestr-cień IRQST + 164 $12 - RTCLOK - zegar czasu rzeczywistego + 165 $15 - BUFADR - adres bufora dla operacji dyskowych + 166 $17 - ICCOMT - rejestr przejściowy kodu operacji I/O + 167 $20 - ZIOCB - zerostronicowy blok kontroli I/O + 168 $20 - ICHIDZ - indeks wpisu urządzenia w HATABS + 169 $21 - ICDNOZ - numer urządzenia + 170 $22 - ICCOMZ - kod operacji wejścia/wyjścia + 171 $23 - ICSTZ - status operacji wejścia/wyjścia + 172 $24 - ICBAZ - adres bufora danych dla operacji I/O + 173 $26 - ICPTZ - adres procedury obsługi dla operacji + 174 $28 - ICBLZ - długość bufora danych dla operacji I/O + 175 $2A - ICAX1Z - rejestr pomocniczy ZIOCB + 176 $2B - ICAX2Z - rejestr pomocniczy ZIOCB + 177 $2C - ICAX3Z - rejestr pomocniczy ZIOCB + 178 $2D - ICAX4Z - rejestr pomocniczy ZIOCB + 179 $2E - ICAX5Z - rejestr pomocniczy ZIOCB + 180 $2F - ICAX6Z - rejestr pomocniczy ZIOCB + 181 $30 - STATUS - status aktualnej operacji SIO + 182 $31 - CHKSUM - suma kontrolna dla operacji SIO + 183 $32 - BUFR - adres bufora danych dla SIO + 184 $34 - BUFEN - adres końca bufora danych dla SIO + 185 $36 - LTEMP - pomocniczy wektor odczytu listy liniowej + 186 $38 - BUFRFL - znacznik zapełnienia bufora SIO + 187 $39 - RECVND - znacznik końca odczytu + 188 $3A - XMTDON - znacznik końca transmisji + 189 $3B - CHKSNT - znacznik nadania sumy kontrolnej + 190 $3C - NOCKSM - znacznik braku sumy kontrolnej + 191 $3D - BPTR - licznik bufora magnetofonu + 192 $3E - GAPTYP - znacznik długości przerwy między blokami + 193 $3F - FEOF - znacznik końca zbioru + 194 $40 - FREQ - licznik dźwięku przy otwarciu magnetofonu + 195 $41 - IOSNDEN - znacznik dźwięku przy transmisji + 196 $42 - CRITIC - znacznik krytycznych czasowo operacji I/O + 197 $4A - ZCHAIN - rejestr następstwa listy liniowej + 198 $4C - DSTAT - status klawiatury i ekranu + 199 $50 - TEMP - pomocniczy rejestr przejściowy + 200 $51 - HOLD1 - pomocniczy rejestr przejściowy + 201 $52 - LMARGIN - lewy margines obrazu + 202 $53 - RMARGIN - prawy margines obrazu + 203 $54 - ROWCRS - pionowa pozycja kursora + 204 $55 - COLCRS - pozioma pozycja kursora + 205 $57 - DINDEX - numer trybu graficznego OS + 206 $58 - SAVMSC - adres pamięci obrazu + 207 $5A - OLDROW - poprzednia pionowa pozycja kursora + 208 $5B - OLDCOL - poprzednia pozioma pozycja kursora + 209 $5D - OLDCHR - poprzedni znak na ekranie + 210 $5E - OLDADR - poprzedni adres znaku na ekranie + 211 $60 - FKDEFP - wektor tabeli definicji klawiszy F1-F4 + 212 $62 - PALNTS - wskaźnik systemu TV + 213 $63 - LOGCOL - adres kursora w wierszu logicznym + 214 $64 - ADRESS - rejestr adresowy dla procedur edytora + 215 $66 - MLTTMP - pomocniczy rejestr przejściowy + 216 $68 - SAVADR - pomocniczy rejestr adresowy + 217 $6A - RAMTOP - liczba stron pamięci RAM + 218 $6B - BUFCNT - licznik bufora edytora + 219 $6C - BUFSTR - adres bufora dla edytora + 220 $6E - BITMSK - maska bitowa do wyświetlenia znaku + 221 $6F - SHFAMT - liczba przesunięć punktu + 222 $70 - ROWAC - aktualny wiersz przy rysowaniu + 223 $72 - COLAC - aktualna kolumna przy rysowaniu + 224 $74 - ENDPT - znacznik końca rysowanej linii + 225 $76 - DELTAR - przyrost pionowej pozycji kursora + 226 $77 - DELTAC - przyrost poziomej pozycji kursora + 227 $79 - KEYDEFP - wektor tabeli definicji klawiszy + 228 $7B - SWPFLG - znacznik kursora w trybach z oknem + 229 $7C - HOLDCH - przechowywanie wartości znaku + 230 $7D - INSDAT - rejestr pomocniczy edytora + 231 $7E - COUNTR - licznik pamięci obrazu dla DOSCR i DRAW + 232 $0100 - STACK - stos mikroprocesora 6502 + 233 $0200 - DLIV - wektor przerwania programu ANTIC-a + 234 $0210 - VTIMR1 - wektor przerwania licznika 1 POKEY-a + 235 $0212 - VTIMR2 - wektor przerwania licznika 2 POKEY-a + 236 $0214 - VTIMR4 - wektor przerwania licznika 4 POKEY-a + 237 $0218 - TIMCNT1 - pierwszy licznik systemu + 238 $0226 - TIMVEC1 - wektor przerwania licznika TIMCNT1 + 239 $022A - TIMFLG3 - znacznik wyzerowania licznika TIMCNT3 + 240 $022F - DMACTLS - rejestr-cień DMACTL + 241 $0230 - DLPTRS - rejestr-cień DLPTR + 242 $0232 - SKCTLS - rejestr-cień SKCTL + 243 $0233 - LCOUNT - licznik odczytu dla nowego urządzenia + 244 $0234 - LPENHS - rejestr-cień LPENH + 245 $0235 - LPENVS - rejestr-cień LPENV + 246 $023A - CDEVIC - kod urządzenia dla SIO + 247 $023B - CCMND - kod operacji dla SIO + 248 $023C - CAUX1 - pierwszy bajt pomocniczy dla SIO + 249 $023D - CAUX2 - drugi bajt pomocniczy dla SIO + 250 $023E - TEMP - tymczasowy rejestr odpowiedzi urządzenia + 251 $023F - ERRFLG - znacznik błędu operacji SIO + 252 $0244 - COLDST - znacznik zimnego startu systemu + 253 $0245 - RECLEN - długość rekordu z nowego urządzenia + 254 $0246 - DSKTIM - wartość Timeout dla stacji dysków + 255 $0247 - PDVMSK - maska obecności nowych urządzeń + 256 $0248 - PDVRS - rejestr-cień PDVREG + 257 $024A - RELADR - adres procedury przemieszczalnej + 258 $024C - PPTMPA - rejestr przechowania zawartości akumulatora + 259 $024D - PPTMPX - rejestr przechowania zawartości rejestru X + 260 $026B - CHSPTR - wektor nieużywanego zestawu znaków + 261 $026C - VSFLAG - znacznik przesuwu pionowego obrazu + 262 $026E - FINE - znacznik delikatnego przesuwu obrazu + 263 $026F - GTICTLS - rejestr-cień GTIACTL + 264 $0270 - PADDL0 - rejestr-cień POT0 + 265 $0278 - JSTICK0 - położenie joysticka 0 + 266 $0279 - JSTICK1 - położenie joysticka 1 + 267 $027A - JSTICK2 - położenie joysticka 0 + 268 $027B - JSTICK3 - położenie joysticka 1 + 269 $027C - PTRIG0 - przycisk potencjometru 0 + 270 $027D - PTRIG1 - przycisk potencjometru 1 + 271 $0284 - TRIG0S - przycisk joysticka 0, rejestr-cień TRIG0 + 272 $0285 - TRIG1S - przycisk joysticka 1, rejestr-cień TRIG1 + 273 $0286 - TRIG2S - rejestr-cień TRIG0 + 274 $0287 - TRIG3S - rejestr-cień TRIG1 + 275 $0288 - HIBYTE - indeks operacji nowego urządzenia + 276 $0289 - WMODE - znacznik sposobu dostępu do magnetofonu + 277 $028A - BLIM - długość bufora magnetofonu + 278 $028E - NEWADR - adres procedury nowego urządzenia + 279 $0290 - TXTROW - wiersz kursora w oknie tekstowym + 280 $0291 - TXTCOL - kolumna kursora w oknie tekstowym + 281 $0293 - TINDEX - tryb graficzny OS w oknie tekstowym + 282 $0294 - TXTMSC - adres pamięci okna tekstowego + 283 $029C - CRETRY - liczba powtórzeń rozkazu operacji + 284 $029D - HOLD3 - pomocniczy rejestr przejściowy + 285 $029E - SUBTMP - pomocniczy rejestr przejściowy + 286 $02A0 - DMASK - maska punktów obrazu + 287 $02A2 - ESCFLG - znacznik klawisza ESC + 288 $02A3 - TABMAP - mapa pozycji tabulacji + 289 $02B2 - LOGMAP - mapa linii logicznych + 290 $02B6 - INVFLG - znacznik klawisza inverse video + 291 $02B7 - FILFLG - znacznik wypełniania obrazu + 292 $02B8 - TMPROW - tymczasowy rejestr pozycji kursora + 293 $02B9 - TMPCOL - tymczasowy rejestr pozycji kursora + 294 $02BB - SCRFLG - znacznik przesuwu obrazu + 295 $02BC - HOLD4 - pomocniczy rejestr przejściowy + 296 $02BD - DRETRY - liczba powtórzeń wywołań urządzenia + 297 $02BE - SHFLOK - znacznik klawiszy SHIFT i CONTROL + 298 $02BF - BOTSCR - liczba wierszy tekstu + 299 $02C0 - COLPM0S - rejestr-cień COLPM0 + 300 $02C1 - COLPM1S - rejestr-cień COLPM1 + 301 $02C2 - COLPM2S - rejestr-cień COLPM2 + 302 $02C3 - COLPM3S - rejestr-cień COLPM3 + 303 $02C4 - COLPF0S - rejestr-cień COLPF0 + 304 $02C5 - COLPF1S - rejestr-cień COLPF1 ;gr.8 letters + 305 $02C6 - COLPF2S - rejestr-cień COLPF2 ;gr.8 background + 306 $02C7 - COLPF3S - rejestr-cień COLPF3 + 307 $02C8 - COLBAKS - rejestr-cień COLBAK + 308 $02C9 - RUNADR - adres procedury nowego urządzenia + 309 $02CB - HIUSED - adres końcowy procedury nowego urządzenia + 310 $02CF - GBYTEA - adres procedury nowego urządzenia + 311 $02D1 - LOADAD - adres wczytywania z nowego urządzenia + 312 $02D3 - ZLOADA - pomocniczy rejestr adresu wczytywania + 313 $02D5 - DSCTLN - długość sektora dyskowego + 314 $02DB - NOCLIK - znacznik dźwięku klawiatury + 315 $02DE - PBPNT - licznik bufora drukarki + 316 $02DF - PBUFSZ - długość bufora drukarki + 317 $02E5 - MEMTOP - adres górnej granicy wolnej pamięci RAM + 318 $02E7 - MEMLO - adres dolnej granicy wolnej pamięci RAM + 319 $02E9 - HNDLOD - znacznik relokowalnej procedury obsługi I/O + 320 $02EA - DVSTAT - dodatkowy rejestr statusu urządzenia + 321 $02EC - DVTMOT - dodatkowy rejestr Timeout urządzenia + 322 $02ED - REVNUM - numer wersji nowego urządzenia + 323 $02EE - CBAUD - prędkość transmisji z magnetofonu + 324 $02F0 - CRSINH - znacznik widoczności kursora + 325 $02F3 - CHACT - rejestr-cień CHRCTL + 326 $02F4 - CHBAS - rejestr-cień CHBASE + 327 $02F5 - NEWROW - nowa pozycja pionowa kursora + 328 $02F6 - NEWCOL - nowa pozycja pozioma kursora + 329 $02F8 - ROWINC - zmiana pionowej pozycji kursora + 330 $02F9 - COLINC - zmiana poziomej pozycji kursora + 331 $02FA - CHAR - kod wewnętrzny znaku + 332 $02FB - ATACHR - kod ATASCII znaku + 333 $02FC - KBCODES - rejestr-cień KBCODE + 334 $02FD - FILDAT - numer koloru dla wypełniania + 335 $02FE - DSPFLG - znacznik wyświetlania znaków kontrolnych + 336 $02FF - SSFLAG - znacznik start/stop dla przesuwu obrazu + 337 $0300 - DDEVIC - kod identyfikacyjny urządzenia + 338 $0301 - DUNIT - numer identyfikacyjny urządzenia + 339 $0302 - DCMND - bajt rozkazu dla urządzenia + 340 $0303 - DSTATS - status urządzenia + 341 $0304 - DBUFA - adres bufora danych + 342 $0306 - DTIMLO - wartość Timeout dla urządzenia + 343 $0308 - DBYT - długość bufora danych + 344 $030A - DAUX1 - rejestr pomocniczy dla operacji I/O + 345 $030B - DAUX2 - rejestr pomocniczy dla operacji I/O + 346 $030C - INTIM1 - rejestr czasu przy odczycie z magnetofonu + 347 $030F - CASFLG - znacznik operacji z magnetofonem + 348 $0310 - INTIM2 - rejestr czasu przy odczycie z magnetofonu + 349 $0312 - TEMP1 - pomocniczy rejestr przejściowy + 350 $0313 - TEMP2 - pomocniczy rejestr przejściowy + 351 $0314 - PTIMOT - wartość Timeout dla drukarki + 352 $0315 - TEMP3 - pomocniczy rejestr przejściowy + 353 $0316 - SAVIO - rejestr przejściowy dla operacji SIO + 354 $0317 - TIMFLG - znacznik upłynięcia czasu Timeout + 355 $0318 - STACKP - rejestr wskaźnika stosu dla SIO + 356 $0319 - TSTAT - przejściowy rejestr statusu SIO + 357 $031A - HATABS - tabela wektorów procedur obsługi + 358 $0340 - IOCB0 - blok kontroli I/O numer 0 + 359 $0350 - IOCB1 - blok kontroli I/O numer 1 + 360 $0360 - IOCB2 - blok kontroli I/O numer 2 + 361 $0370 - IOCB3 - blok kontroli I/O numer 3 + 362 $0380 - IOCB4 - blok kontroli I/O numer 4 + 363 $0390 - IOCB5 - blok kontroli I/O numer 5 + 364 $03A0 - IOCB6 - blok kontroli I/O numer 6 + 365 $03B0 - IOCB7 - blok kontroli I/O numer 7 + 366 $0340 - ICCHID - indeks wpisu urządzenia w HATABS + 367 $0341 - ICDNO - numer urządzenia + 368 $0342 - ICCMD - kod rozkazu operacji I/O + 369 $0343 - ICSTAT - status operacji I/O + 370 $0344 - ICBUFA - adres bufora danych dla operacji I/O + 371 $0346 - ICPUTB - adres procedury przesyłania danych + 372 $0348 - ICBUFL - długość bufora danych dla operacji I/O + 373 $034A - ICAX1 - rejestr pomocniczy dla operacji I/O + 374 $034B - ICAX2 - rejestr pomocniczy dla operacji I/O + 375 $034C - ICAX3 - rejestr pomocniczy dla operacji I/O + 376 $034D - ICAX4 - rejestr pomocniczy dla operacji I/O + 377 $034E - ICAX5 - rejestr pomocniczy dla operacji I/O + 378 $034F - ICAX6 - rejestr pomocniczy dla operacji I/O + 379 $03C0 - PRNBUF - bufor drukarki + 380 $03E8 - SUPERF - znacznik stosowany przy odczycie klawiatury + 381 $03E9 - CKEY - znacznik klawisza START przy zimnym starcie + 382 $03EC - DERRF - znacznik błędu przy otwieraniu edytora + 383 $03FB - CHLINK - rejestr elementów listy liniowej + 384 $03FD - CSCB - bajty kontroli szybkości magnetofonu + 385 $03FF - CRCB - bajt długości rekordu magnetofonowego + 386 $0400 - CASBUF - bufor magnetofonu + 387 $047F - CASBEN - koniec bufora magnetofonu + 388 $D000 - HPOSP0 - pozioma pozycja gracza 0 (Z) + 389 $D000 - KOLM0PF - kolizja pocisku 0 z polem gry (O) + 390 $D001 - HPOSP1 - pozioma pozycja gracza 1 (Z) + 391 $D001 - KOLM1PF - kolizja pocisku 1 z polem gry (O) + 392 $D002 - HPOSP2 - pozioma pozycja gracza 2 (Z) + 393 $D002 - KOLM2PF - kolizja pocisku 2 z polem gry (O) + 394 $D003 - HPOSP3 - pozioma pozycja gracza 3 (Z) + 395 $D003 - KOLM3PF - kolizja pocisku 3 z polem gry (O) + 396 $D004 - HPOSM0 - pozioma pozycja pocisku 0 (Z) + 397 $D004 - KOLP0PF - kolizja gracza 0 z polem gry (O) + 398 $D005 - HPOSM1 - pozioma pozycja pocisku 1 (Z) + 399 $D005 - KOLP1PF - kolizja gracza 1 z polem gry (O) + 400 $D006 - HPOSM2 - pozioma pozycja pocisku 2 (Z) + 401 $D006 - KOLP2PF - kolizja gracza 2 z polem gry (O) + 402 $D007 - HPOSM3 - pozioma pozycja pocisku 3 (Z) + 403 $D007 - KOLP3PF - kolizja gracza 3 z polem gry (O) + 404 $D008 - SIZEP0 - poziomy rozmiar gracza 0 (Z) + 405 $D008 - KOLM0P - kolizja pocisku 0 z graczem (O) + 406 $D009 - SIZEP1 - poziomy rozmiar gracza 1 (Z) + 407 $D009 - KOLM1P - kolizja pocisku 1 z graczem (O) + 408 $D00A - SIZEP2 - poziomy rozmiar gracza 2 (Z) + 409 $D00A - KOLM2P - kolizja pocisku 2 z graczem (O) + 410 $D00B - SIZEP3 - poziomy rozmiar gracza 3 (Z) + 411 $D00B - KOLM3P - kolizja pocisku 3 z graczem (O) + 412 $D00C - SIZEM - poziomy rozmiar pocisków (Z) + 413 $D00C - KOLP0P - kolizja gracza 0 z innym graczem (O) + 414 $D00D - GRAFP0 - rejestr grafiki gracza 0 (Z) + 415 $D00D - KOLP1P - kolizja gracza 1 z innym graczem (O) + 416 $D00E - GRAFP1 - rejestr grafiki gracza 1 (Z) + 417 $D00E - KOLP2P - kolizja gracza 2 z innym graczem (O) + 418 $D00F - GRAFP2 - rejestr grafiki gracza 2 (Z) + 419 $D00F - KOLP3P - kolizja gracza 3 z innym graczem (O) + 420 $D010 - GRAFP3 - rejestr grafiki gracza 3 (Z) + 421 $D010 - TRIG0 - stan przycisku joysticka 0 (O) + 422 $D011 - GRAFM - rejestr grafiki pocisków (Z) + 423 $D011 - TRIG1 - stan przycisku joysticka 1 (O) + 424 $D012 - COLPM0 - rejestr koloru gracza i pocisku 0 (Z) + 425 $D013 - COLPM1 - rejestr koloru gracza i pocisku 1 (Z) + 426 $D013 - TRIG3 - znacznik dołączenia cartridge'a (O) + 427 $D014 - COLPM2 - rejestr koloru gracza i pocisku 2 (Z) + 428 $D014 - PAL - znacznik systemu TV (O) + 429 $D015 - COLPM3 - rejestr koloru gracza i pocisku 3 (Z) + 430 $D016 - COLPF0 - rejestr koloru pola gry 0 (Z) + 431 $D017 - COLPF1 - rejestr koloru pola gry 1 (Z) + 432 $D018 - COLPF2 - rejestr koloru pola gry 2 (Z) + 433 $D019 - COLPF3 - rejestr koloru pola gry 3 (Z) + 434 $D01A - COLBAK - rejestr koloru tła (Z) + 435 $D01B - GTIACTL - rejestr kontroli układu GTIA + 436 $D01C - VDELAY - licznik opóźnienia pionowego P/MG + 437 $D01D - PMCNTL - rejestr kontroli graczy i pocisków + 438 $D01E - HITCLR - rejestr kasowania rejestrów kolizji + 439 $D01F - CONSOL - rejestr stanu klawiszy konsoli + 440 $D1FF - PDVREG - rejestr wyboru nowego urządzenia + 441 $D200 - AUDF1 - częstotliwość pracy generatora 1 (Z) + 442 $D200 - POT0 - rejestr położenia potencjometru 0 (O) + 443 $D201 - AUDC1 - rejestr kontroli dźwięku generatora 1 (Z) + 444 $D201 - POT1 - rejestr położenia potencjometru 1 (O) + 445 $D202 - AUDF2 - częstotliwość pracy generatora 2 (Z) + 446 $D202 - POT2 - rejestr położenia potencjometru 2 (O) + 447 $D203 - AUDC2 - rejestr kontroli dźwięku generatora 2 (Z) + 448 $D203 - POT3 - rejestr położenia potencjometru 3 (O) + 449 $D204 - AUDF3 - częstotliwość pracy generatora 3 (Z) + 450 $D205 - AUDC3 - rejestr kontroli dźwięku generatora 3 (Z) + 451 $D206 - AUDF4 - częstotliwość pracy generatora 4 (Z) + 452 $D207 - AUDC4 - rejestr kontroli dźwięku generatora 4 (Z) + 453 $D208 - AUDCTL - rejestr kontroli generatorów dźwięku (Z) + 454 $D208 - POTST - status odczytu potencjometrów (O) + 455 $D209 - STIMER - rejestr zerowania liczników (Z) + 456 $D209 - KBCODE - kod ostatnio naciśniętego klawisza (O) + 457 $D20A - SKSTRES - reset statusu złącza szeregowego (Z) + 458 $D20A - RANDOM - rejestr liczby losowej (O) + 459 $D20B - POTG0 - znacznik przetwornika analogowo-cyfrowego (Z) + 460 $D20D - SEROUT - szeregowy rejestr wyjściowy (Z) + 461 $D20D - SERIN - szeregowy rejestr wejściowy (O) + 462 $D20E - IRQEN - zezwolenia przerwań IRQ (Z) + 463 $D20E - IRQST - status przerwań IRQ (O) + 464 $D20F - SKCTL - rejestr kontroli złącza szeregowego (Z) + 465 $D20F - SKSTAT - rejestr statusu złącza szeregowego (O) + 466 $D300 - PORTA - port A układu PIA + 467 $D301 - PORTB - port B układu PIA + 468 $D302 - PACTL - rejestr kontroli portu A + 469 $D303 - PBCTL - rejestr kontroli portu B + 470 $D400 - DMACTL - rejestr kontroli dostępu do pamięci + 471 $D401 - CHRCTL - rejestr kontroli wyświetlania znaków + 472 $D402 - DLPTR - adres programu ANTIC-a + 473 $D404 - HSCROL - znacznik poziomego przesuwu obrazu + 474 $D405 - VSCROL - znacznik pionowego przesuwu obrazu + 475 $D407 - PMBASE - adres pamięci graczy i pocisków + 476 $D409 - CHBASE - adres zestawu znaków + 477 $D40A - WSYNC - znacznik oczekiwania na synchronizację poziomą + 478 $D40B - VCOUNT - licznik linii obrazu + 479 $D40C - LPENH - poziome położenie pióra świetlengo + 480 $D40D - LPENV - pionowe położenie pióra świetlnego + 481 $D40E - NMIEN - rejestr zezwoleń na przerwania NMI + 482 $D40F - NMIST - rejestr statusu przerwań NMI + 483 */ + 483 + 3 icl 'macro.asm' +Source: C:\jac\wudsn\Workspace\no_internet\macro.asm + 1 ;------------------------------------- + 2 .MACRO ROLW + 3 ROL :1 + 4 ROL :1+1 + 5 .ENDM + 6 ;------------------------------------- + 7 .MACRO ASLW + 8 ASL :1 + 9 ROL :1+1 + 10 .ENDM + 11 ;------------------------------------- + 12 .MACRO RORW + 13 ROR :1+1 + 14 ROR :1 + 15 .ENDM + 16 ;------------------------------------- + 17 .MACRO LSRW + 18 LSR :1+1 + 19 ROR :1 + 20 .ENDM + 21 + 22 ;------------------------------------- + 23 .MACRO VMAIN + 24 ; VMAIN #WORD,interrupt.vector + 25 ; interrupt.vector: + 26 ; 0 - VIMIRQ + 27 ; 1 - TIMCNT1 + 28 ; 2 - TIMCNT2 + 29 ; 3 - TIMCNT3 + 30 ; 4 - TIMCNT4 + 31 ; 5 - TIMCNT5 + 32 ; 6 - VVBLKI + 33 ; 7 - VVBLKD + 34 ; 8 - TIMVEC1 + 35 ; 9 - TIMVEC2 + 36 ; Initialises Vertical Blank Interrupts + 37 ; (works only with system interrupts ON) + 38 LDY # <:1 + 39 LDX # >:1 + 40 LDA #:2 + 41 JSR SETVBV + 42 .ENDM + 43 ;------------------------------------- + 44 .MACRO VDLI + 45 ; VDLI #WORD + 46 ; Initialises Display List Interrupts + 47 LDY # <:1 + 48 LDX # >:1 + 49 LDA #$C0 + 50 STY $0200 + 51 STX $0201 + 52 STA NMIEN + 53 .ENDM + 54 ;------------------------------------- + 55 .MACRO halt + 56 ?stop + 57 .if :1 + 58 lda RANDOM + 59 and #:1 + 60 sta COLBAK + 61 .endif + 62 jmp ?stop + 63 .ENDM + 64 ;------------------------------------- + 65 .MACRO KEY + 66 ; KEY + 67 ; waits for releasing and pressing "any key" + 68 PHA + 69 ?CK1 LDA SKSTAT + 70 AND #$04 + 71 BEQ ?CK1 + 72 ?CK LDA SKSTAT + 73 AND #$04 + 74 BNE ?CK + 75 PLA + 76 .ENDM + 77 ;------------------------------------- + 78 .MACRO WAIT ;waits one frame (1/50 s(PAL) or 1/60s(NTSC)) + 79 ;uses: A + 80 LDA VCOUNT + 81 STA WSYNC + 82 STA WSYNC + 83 STA WSYNC + 84 @ CMP VCOUNT + 85 BNE @- + 86 .ENDM + 87 ;------------------------------------- + 88 .macro negw + 89 ; negate the given word (0-a) + 90 ;------------------------------------- + 91 sec + 92 lda #$00 + 93 sbc :1 + 94 sta :1 + 95 lda #$00 + 96 sbc :1+1 + 97 sta :1+1 + 98 .endm + 99 ;------------------------------------- + 100 .macro randomize ;returns (in A) a random .byte between "floor" (incl) and "ceiling" (excl) + 101 ;usage: randomize floor ceiling AND + 102 ;uses: A + 103 + 104 ?rand + 105 lda random + 106 .if :3 + 107 and #:3 + 108 .endif + 109 cmp #:1 ;floor + 110 bcc ?rand + 111 cmp #:2+1 ;ceiling + 112 bcs ?rand + 113 .endm + 114 ;------------------------------------- + 115 .macro phx + 116 txa + 117 pha + 118 .endm + 119 ;------------------------------------- + 120 .macro phy + 121 tya + 122 pha + 123 .endm + 124 ;------------------------------------- + 125 .macro plx + 126 pla + 127 tax + 128 .endm + 129 ;------------------------------------- + 130 .macro ply + 131 pla + 132 tay + 133 .endm + 134 ;------------------------------------- + 135 .macro pause ;waits :1 number (byte) of frames + 136 ;uses: AX + 137 .if :1 > 0 + 138 ldx #:1 + 139 loop wait + 140 dex + 141 bne loop + 142 .else + 143 wait + 144 .endif + 145 .ENDM + 146 + 4 + 5 .zpvar tmp, tmp0, tmp1, tmp2, tmp3 .word + 6 = 0080 sw = $80 ;screen width in bytes + 7 = 0080 sh = 128 ; screen height in lines + 8 = 4000 screen = $4000 + 9 = 9000 pmgraph = $9000 + 10 = 0080 TMP + 10 = 0082 TMP0 + 10 = 0084 TMP1 + 10 = 0086 TMP2 + 10 = 0088 TMP3 + 10 org $2000 + 11 dl + 12 FFFF> 2000-2250> 70 70 + .byte $70,$70,$70 + 13 2003 dl_addrs ;start of lines + 14 .REPT sh + 15 .BYTE $5F + 16 .WORD SCREEN+#*SW + 17 .ENDR + 17 .ENDR +Source: REPT + 15 2003 5F .BYTE $5F + 15 2004 00 40 .WORD SCREEN+#*SW + 15 2006 5F .BYTE $5F + 15 2007 80 40 .WORD SCREEN+#*SW + 15 2009 5F .BYTE $5F + 15 200A 00 41 .WORD SCREEN+#*SW + 15 200C 5F .BYTE $5F + 15 200D 80 41 .WORD SCREEN+#*SW + 15 200F 5F .BYTE $5F + 15 2010 00 42 .WORD SCREEN+#*SW + 15 2012 5F .BYTE $5F + 15 2013 80 42 .WORD SCREEN+#*SW + 15 2015 5F .BYTE $5F + 15 2016 00 43 .WORD SCREEN+#*SW + 15 2018 5F .BYTE $5F + 15 2019 80 43 .WORD SCREEN+#*SW + 15 201B 5F .BYTE $5F + 15 201C 00 44 .WORD SCREEN+#*SW + 15 201E 5F .BYTE $5F + 15 201F 80 44 .WORD SCREEN+#*SW + 15 2021 5F .BYTE $5F + 15 2022 00 45 .WORD SCREEN+#*SW + 15 2024 5F .BYTE $5F + 15 2025 80 45 .WORD SCREEN+#*SW + 15 2027 5F .BYTE $5F + 15 2028 00 46 .WORD SCREEN+#*SW + 15 202A 5F .BYTE $5F + 15 202B 80 46 .WORD SCREEN+#*SW + 15 202D 5F .BYTE $5F + 15 202E 00 47 .WORD SCREEN+#*SW + 15 2030 5F .BYTE $5F + 15 2031 80 47 .WORD SCREEN+#*SW + 15 2033 5F .BYTE $5F + 15 2034 00 48 .WORD SCREEN+#*SW + 15 2036 5F .BYTE $5F + 15 2037 80 48 .WORD SCREEN+#*SW + 15 2039 5F .BYTE $5F + 15 203A 00 49 .WORD SCREEN+#*SW + 15 203C 5F .BYTE $5F + 15 203D 80 49 .WORD SCREEN+#*SW + 15 203F 5F .BYTE $5F + 15 2040 00 4A .WORD SCREEN+#*SW + 15 2042 5F .BYTE $5F + 15 2043 80 4A .WORD SCREEN+#*SW + 15 2045 5F .BYTE $5F + 15 2046 00 4B .WORD SCREEN+#*SW + 15 2048 5F .BYTE $5F + 15 2049 80 4B .WORD SCREEN+#*SW + 15 204B 5F .BYTE $5F + 15 204C 00 4C .WORD SCREEN+#*SW + 15 204E 5F .BYTE $5F + 15 204F 80 4C .WORD SCREEN+#*SW + 15 2051 5F .BYTE $5F + 15 2052 00 4D .WORD SCREEN+#*SW + 15 2054 5F .BYTE $5F + 15 2055 80 4D .WORD SCREEN+#*SW + 15 2057 5F .BYTE $5F + 15 2058 00 4E .WORD SCREEN+#*SW + 15 205A 5F .BYTE $5F + 15 205B 80 4E .WORD SCREEN+#*SW + 15 205D 5F .BYTE $5F + 15 205E 00 4F .WORD SCREEN+#*SW + 15 2060 5F .BYTE $5F + 15 2061 80 4F .WORD SCREEN+#*SW + 15 2063 5F .BYTE $5F + 15 2064 00 50 .WORD SCREEN+#*SW + 15 2066 5F .BYTE $5F + 15 2067 80 50 .WORD SCREEN+#*SW + 15 2069 5F .BYTE $5F + 15 206A 00 51 .WORD SCREEN+#*SW + 15 206C 5F .BYTE $5F + 15 206D 80 51 .WORD SCREEN+#*SW + 15 206F 5F .BYTE $5F + 15 2070 00 52 .WORD SCREEN+#*SW + 15 2072 5F .BYTE $5F + 15 2073 80 52 .WORD SCREEN+#*SW + 15 2075 5F .BYTE $5F + 15 2076 00 53 .WORD SCREEN+#*SW + 15 2078 5F .BYTE $5F + 15 2079 80 53 .WORD SCREEN+#*SW + 15 207B 5F .BYTE $5F + 15 207C 00 54 .WORD SCREEN+#*SW + 15 207E 5F .BYTE $5F + 15 207F 80 54 .WORD SCREEN+#*SW + 15 2081 5F .BYTE $5F + 15 2082 00 55 .WORD SCREEN+#*SW + 15 2084 5F .BYTE $5F + 15 2085 80 55 .WORD SCREEN+#*SW + 15 2087 5F .BYTE $5F + 15 2088 00 56 .WORD SCREEN+#*SW + 15 208A 5F .BYTE $5F + 15 208B 80 56 .WORD SCREEN+#*SW + 15 208D 5F .BYTE $5F + 15 208E 00 57 .WORD SCREEN+#*SW + 15 2090 5F .BYTE $5F + 15 2091 80 57 .WORD SCREEN+#*SW + 15 2093 5F .BYTE $5F + 15 2094 00 58 .WORD SCREEN+#*SW + 15 2096 5F .BYTE $5F + 15 2097 80 58 .WORD SCREEN+#*SW + 15 2099 5F .BYTE $5F + 15 209A 00 59 .WORD SCREEN+#*SW + 15 209C 5F .BYTE $5F + 15 209D 80 59 .WORD SCREEN+#*SW + 15 209F 5F .BYTE $5F + 15 20A0 00 5A .WORD SCREEN+#*SW + 15 20A2 5F .BYTE $5F + 15 20A3 80 5A .WORD SCREEN+#*SW + 15 20A5 5F .BYTE $5F + 15 20A6 00 5B .WORD SCREEN+#*SW + 15 20A8 5F .BYTE $5F + 15 20A9 80 5B .WORD SCREEN+#*SW + 15 20AB 5F .BYTE $5F + 15 20AC 00 5C .WORD SCREEN+#*SW + 15 20AE 5F .BYTE $5F + 15 20AF 80 5C .WORD SCREEN+#*SW + 15 20B1 5F .BYTE $5F + 15 20B2 00 5D .WORD SCREEN+#*SW + 15 20B4 5F .BYTE $5F + 15 20B5 80 5D .WORD SCREEN+#*SW + 15 20B7 5F .BYTE $5F + 15 20B8 00 5E .WORD SCREEN+#*SW + 15 20BA 5F .BYTE $5F + 15 20BB 80 5E .WORD SCREEN+#*SW + 15 20BD 5F .BYTE $5F + 15 20BE 00 5F .WORD SCREEN+#*SW + 15 20C0 5F .BYTE $5F + 15 20C1 80 5F .WORD SCREEN+#*SW + 15 20C3 5F .BYTE $5F + 15 20C4 00 60 .WORD SCREEN+#*SW + 15 20C6 5F .BYTE $5F + 15 20C7 80 60 .WORD SCREEN+#*SW + 15 20C9 5F .BYTE $5F + 15 20CA 00 61 .WORD SCREEN+#*SW + 15 20CC 5F .BYTE $5F + 15 20CD 80 61 .WORD SCREEN+#*SW + 15 20CF 5F .BYTE $5F + 15 20D0 00 62 .WORD SCREEN+#*SW + 15 20D2 5F .BYTE $5F + 15 20D3 80 62 .WORD SCREEN+#*SW + 15 20D5 5F .BYTE $5F + 15 20D6 00 63 .WORD SCREEN+#*SW + 15 20D8 5F .BYTE $5F + 15 20D9 80 63 .WORD SCREEN+#*SW + 15 20DB 5F .BYTE $5F + 15 20DC 00 64 .WORD SCREEN+#*SW + 15 20DE 5F .BYTE $5F + 15 20DF 80 64 .WORD SCREEN+#*SW + 15 20E1 5F .BYTE $5F + 15 20E2 00 65 .WORD SCREEN+#*SW + 15 20E4 5F .BYTE $5F + 15 20E5 80 65 .WORD SCREEN+#*SW + 15 20E7 5F .BYTE $5F + 15 20E8 00 66 .WORD SCREEN+#*SW + 15 20EA 5F .BYTE $5F + 15 20EB 80 66 .WORD SCREEN+#*SW + 15 20ED 5F .BYTE $5F + 15 20EE 00 67 .WORD SCREEN+#*SW + 15 20F0 5F .BYTE $5F + 15 20F1 80 67 .WORD SCREEN+#*SW + 15 20F3 5F .BYTE $5F + 15 20F4 00 68 .WORD SCREEN+#*SW + 15 20F6 5F .BYTE $5F + 15 20F7 80 68 .WORD SCREEN+#*SW + 15 20F9 5F .BYTE $5F + 15 20FA 00 69 .WORD SCREEN+#*SW + 15 20FC 5F .BYTE $5F + 15 20FD 80 69 .WORD SCREEN+#*SW + 15 20FF 5F .BYTE $5F + 15 2100 00 6A .WORD SCREEN+#*SW + 15 2102 5F .BYTE $5F + 15 2103 80 6A .WORD SCREEN+#*SW + 15 2105 5F .BYTE $5F + 15 2106 00 6B .WORD SCREEN+#*SW + 15 2108 5F .BYTE $5F + 15 2109 80 6B .WORD SCREEN+#*SW + 15 210B 5F .BYTE $5F + 15 210C 00 6C .WORD SCREEN+#*SW + 15 210E 5F .BYTE $5F + 15 210F 80 6C .WORD SCREEN+#*SW + 15 2111 5F .BYTE $5F + 15 2112 00 6D .WORD SCREEN+#*SW + 15 2114 5F .BYTE $5F + 15 2115 80 6D .WORD SCREEN+#*SW + 15 2117 5F .BYTE $5F + 15 2118 00 6E .WORD SCREEN+#*SW + 15 211A 5F .BYTE $5F + 15 211B 80 6E .WORD SCREEN+#*SW + 15 211D 5F .BYTE $5F + 15 211E 00 6F .WORD SCREEN+#*SW + 15 2120 5F .BYTE $5F + 15 2121 80 6F .WORD SCREEN+#*SW + 15 2123 5F .BYTE $5F + 15 2124 00 70 .WORD SCREEN+#*SW + 15 2126 5F .BYTE $5F + 15 2127 80 70 .WORD SCREEN+#*SW + 15 2129 5F .BYTE $5F + 15 212A 00 71 .WORD SCREEN+#*SW + 15 212C 5F .BYTE $5F + 15 212D 80 71 .WORD SCREEN+#*SW + 15 212F 5F .BYTE $5F + 15 2130 00 72 .WORD SCREEN+#*SW + 15 2132 5F .BYTE $5F + 15 2133 80 72 .WORD SCREEN+#*SW + 15 2135 5F .BYTE $5F + 15 2136 00 73 .WORD SCREEN+#*SW + 15 2138 5F .BYTE $5F + 15 2139 80 73 .WORD SCREEN+#*SW + 15 213B 5F .BYTE $5F + 15 213C 00 74 .WORD SCREEN+#*SW + 15 213E 5F .BYTE $5F + 15 213F 80 74 .WORD SCREEN+#*SW + 15 2141 5F .BYTE $5F + 15 2142 00 75 .WORD SCREEN+#*SW + 15 2144 5F .BYTE $5F + 15 2145 80 75 .WORD SCREEN+#*SW + 15 2147 5F .BYTE $5F + 15 2148 00 76 .WORD SCREEN+#*SW + 15 214A 5F .BYTE $5F + 15 214B 80 76 .WORD SCREEN+#*SW + 15 214D 5F .BYTE $5F + 15 214E 00 77 .WORD SCREEN+#*SW + 15 2150 5F .BYTE $5F + 15 2151 80 77 .WORD SCREEN+#*SW + 15 2153 5F .BYTE $5F + 15 2154 00 78 .WORD SCREEN+#*SW + 15 2156 5F .BYTE $5F + 15 2157 80 78 .WORD SCREEN+#*SW + 15 2159 5F .BYTE $5F + 15 215A 00 79 .WORD SCREEN+#*SW + 15 215C 5F .BYTE $5F + 15 215D 80 79 .WORD SCREEN+#*SW + 15 215F 5F .BYTE $5F + 15 2160 00 7A .WORD SCREEN+#*SW + 15 2162 5F .BYTE $5F + 15 2163 80 7A .WORD SCREEN+#*SW + 15 2165 5F .BYTE $5F + 15 2166 00 7B .WORD SCREEN+#*SW + 15 2168 5F .BYTE $5F + 15 2169 80 7B .WORD SCREEN+#*SW + 15 216B 5F .BYTE $5F + 15 216C 00 7C .WORD SCREEN+#*SW + 15 216E 5F .BYTE $5F + 15 216F 80 7C .WORD SCREEN+#*SW + 15 2171 5F .BYTE $5F + 15 2172 00 7D .WORD SCREEN+#*SW + 15 2174 5F .BYTE $5F + 15 2175 80 7D .WORD SCREEN+#*SW + 15 2177 5F .BYTE $5F + 15 2178 00 7E .WORD SCREEN+#*SW + 15 217A 5F .BYTE $5F + 15 217B 80 7E .WORD SCREEN+#*SW + 15 217D 5F .BYTE $5F + 15 217E 00 7F .WORD SCREEN+#*SW + 15 2180 5F .BYTE $5F + 15 2181 80 7F .WORD SCREEN+#*SW +Source: C:\jac\wudsn\Workspace\no_internet\ni.asm + 18 2183 41 .byte $41 + 19 2184 00 20 .word DL + 20 2186 start + 21 2186 A9 23 8D 2F 02 mva #%00100011 DMACTLS + 22 218B A9 00 8D 30 02 A9 + mwa #dl DLPTRS + 23 2195 A9 0C 8D 20 25 mva #12 move_scr.hscr_state ;hscroll initialisation + 24 219A 8D 04 D4 sta HSCROL + 25 + 26 219D A9 00 8D C5 02 mva #0 COLPF1S + 27 21A2 A9 0F 8D C8 02 mva #$0F COLBAKS + 28 21A7 A9 0F 8D C6 02 mva #$0f COLPF2S + 29 + 30 + 31 21AC 20 FA 23 jsr sprites_init + 32 21AF pause 1 +Macro: PAUSE [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] + 3 21AF A2 01 ldx #1 + 4 21B1 loop wait +Macro: WAIT [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] + 2 21B1 AD 0B D4 LDA VCOUNT + 3 21B4 8D 0A D4 STA WSYNC + 4 21B7 8D 0A D4 STA WSYNC + 5 21BA 8D 0A D4 STA WSYNC + 6 21BD CD 0B D4 @ CMP VCOUNT + 7 21C0 D0 FB BNE @- +Source: C:\jac\wudsn\Workspace\no_internet\ni.asm + 5 21C2 CA dex + 6 21C3 D0 EC bne loop +Source: C:\jac\wudsn\Workspace\no_internet\ni.asm + 33 21C5 20 89 23 jsr ground_init + 34 + 35 21C8 A2 14 ldx #20 + 36 21CA A0 00 ldy #0 + 37 21CC 20 AA 23 jsr cactus + 38 21CF A2 1E ldx #30 + 39 21D1 A0 01 ldy #1 + 40 21D3 20 AA 23 jsr cactus + 41 21D6 A2 28 ldx #40 + 42 21D8 A0 02 ldy #2 + 43 21DA 20 AA 23 jsr cactus + 44 + 45 21DD A2 00 xx ldx #0 ; anim phaze + 46 21DF A0 36 yy ldy #54 + 47 21E1 20 32 24 jsr dino_pm + 48 21E4 EE DE 21 AD DE 21 inc:lda xx+1 + 49 21EA C9 03 cmp #3 + 50 21EC D0 05 sne + 51 21EE A9 00 8D DE 21 mva #0 xx+1 + 52 21F3 key +Macro: KEY [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] + 3 21F3 48 PHA + 4 21F4 AD 0F D2 ?CK1 LDA SKSTAT + 5 21F7 29 04 AND #$04 + 6 21F9 F0 F9 BEQ ?CK1 + 7 21FB AD 0F D2 ?CK LDA SKSTAT + 8 21FE 29 04 AND #$04 + 9 2200 D0 F9 BNE ?CK + 10 2202 68 PLA +Source: C:\jac\wudsn\Workspace\no_internet\ni.asm + 53 2203 20 04 25 jsr move_scr + 54 2206 4C DD 21 jmp xx + 55 + 56 + 57 2209 llp + 58 2209 A9 00 8D 51 22 mva #0 ntmp + 59 220E lp + 60 220E AE 51 22 ldx ntmp + 61 2211 A0 62 ldy #98 + 62 2213 20 52 22 jsr dino + 63 2216 key +Macro: KEY [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] + 3 2216 48 PHA + 4 2217 AD 0F D2 ?CK1 LDA SKSTAT + 5 221A 29 04 AND #$04 + 6 221C F0 F9 BEQ ?CK1 + 7 221E AD 0F D2 ?CK LDA SKSTAT + 8 2221 29 04 AND #$04 + 9 2223 D0 F9 BNE ?CK + 10 2225 68 PLA +Source: C:\jac\wudsn\Workspace\no_internet\ni.asm + 64 2226 20 D5 22 jsr dino_clear + 65 2229 key +Macro: KEY [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] + 3 2229 48 PHA + 4 222A AD 0F D2 ?CK1 LDA SKSTAT + 5 222D 29 04 AND #$04 + 6 222F F0 F9 BEQ ?CK1 + 7 2231 AD 0F D2 ?CK LDA SKSTAT + 8 2234 29 04 AND #$04 + 9 2236 D0 F9 BNE ?CK + 10 2238 68 PLA +Source: C:\jac\wudsn\Workspace\no_internet\ni.asm + 66 2239 EE 51 22 AD 51 22 inc:lda ntmp + 67 223F C9 03 cmp #3 + 68 2241 D0 CB bne lp + 69 2243 4C 09 22 jmp llp + 70 + 71 + 72 2246 halt 03 +Macro: HALT [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] + 1 2246 ?stop + 3 2246 AD 0A D2 lda RANDOM + 4 2249 29 03 and #03 + 5 224B 8D 1A D0 sta COLBAK + 7 224E 4C 46 22 jmp ?stop +Source: C:\jac\wudsn\Workspace\no_internet\ni.asm + 73 + 74 02E0-02E1> 86 21 run start + 75 2251-2ACB> 00 ntmp .by 0 + 76 + 77 2252 icl 'procs.asm' +Source: C:\jac\wudsn\Workspace\no_internet\procs.asm + 1 ; @com.wudsn.ide.asm.mainsourcefile=ni.asm + 2 + 3 2252 .proc dino ; dino to the screen + 4 ; uses: AXY tmp0 tmp1 tmp2 tmp3 + 5 ; Y - ypos in lines + 6 ; X - dino phase (0,1,..) + 7 + 8 = 0080 _dino = tmp ; _underscore means pointer here and else + 9 = 0084 _mask = tmp1 ; local vars for reusing zero page variables + 10 = 0086 _scr = tmp2 + 11 = 0088 _back = tmp3 + 12 2252 8C 25 27 sty dino_save_y ;save for clearing + 13 ; get line address offset + 14 2255 B9 5C 27 lda scr_addrs_l,y + 15 2258 85 86 sta _scr + 16 225A B9 DC 27 lda scr_addrs_h,y + 17 225D 85 87 sta _scr+1 + 18 ; add x position (hardcoded, dino does not move) + 19 225F 18 A5 86 69 0A 85 + adw _scr #10 + 20 ;was: mwa #screen+10+96*sw scr_ ;10 = xpos, 96 == ypos on the screen + 21 + 22 226A BD D1 26 lda dino_tab_l,x + 23 226D 85 80 sta _dino + 24 226F BD D4 26 lda dino_tab_h,x + 25 2272 85 81 sta _dino+1 + 26 + 27 2274 BD D7 26 lda dino_mask_tab_l,x + 28 2277 85 84 sta _mask + 29 2279 BD DA 26 lda dino_mask_tab_h,x + 30 227C 85 85 sta _mask+1 + 31 + 32 227E A9 89 85 84 A9 26 + mwa #dino_mask2 _mask + 33 2286 A9 DD 85 88 A9 26 + mwa #dino_back _back + 34 228E A2 18 ldx #24 + 35 2290 loop1 + 36 2290 A0 00 ldy #0 + 37 2292 dn1 + 38 2292 B1 86 lda (_scr),y ; get screen contents + 39 2294 91 88 sta (_back),y ; save background for sprite removal + 40 2296 B1 84 lda (_mask),y ; mask + 41 2298 49 FF eor #$ff ; inverse, 'cause mads does not inverse OK with '*' + 42 229A 31 86 and (_scr),y ; get screen contents + 43 229C 11 80 ora (_dino),y + 44 229E 91 86 sta (_scr),y + 45 22A0 C8 iny + 46 22A1 C0 03 cpy #3 + 47 22A3 D0 ED bne dn1 + 48 22A5 18 A5 80 69 03 85 + adw _dino #3 + 49 22B0 18 A5 84 69 03 85 + adw _mask #3 + 50 22BB 18 A5 88 69 03 85 + adw _back #3 + 51 22C6 18 A5 86 69 80 85 + adw _scr #sw + 52 22D1 CA dex + 53 22D2 D0 BC bne loop1 + 54 22D4 60 rts + 55 .endp + 56 ;---------- + 57 22D5 .proc dino_clear ; remove old dino + 58 ; uses: AXY tmp2 tmp3 + 59 = 0086 _scr = tmp2 + 60 = 0088 _back = tmp3 + 61 22D5 AC 25 27 ldy dino_save_y ;ypos + 62 ; get line address offset + 63 22D8 B9 5C 27 lda scr_addrs_l,y + 64 22DB 85 86 sta _scr + 65 22DD B9 DC 27 lda scr_addrs_h,y + 66 22E0 85 87 sta _scr+1 + 67 ; add x position (hardcoded, dino does not move) + 68 22E2 18 A5 86 69 0A 85 + adw _scr #10 + 69 ;mwa #screen+10+96*sw scr_ ;10 = xpos, 96 == ypos on the screen + 70 + 71 22ED A9 DD 85 88 A9 26 + mwa #dino_back _back + 72 22F5 A2 18 ldx #24 + 73 22F7 loop1 + 74 22F7 A0 00 ldy #0 + 75 22F9 dn1 + 76 22F9 B1 88 lda (_back),y ; give back background for sprite removal + 77 22FB 91 86 sta (_scr),y + 78 22FD C8 iny + 79 22FE C0 03 cpy #3 + 80 2300 D0 F7 bne dn1 + 81 2302 18 A5 88 69 03 85 + adw _back #3 + 82 230D 18 A5 86 69 80 85 + adw _scr #sw + 83 2318 CA dex + 84 2319 D0 DC bne loop1 + 85 231B 60 rts + 86 .endp + 87 ;---------- + 88 231C .proc ground ; ground breaking, i.e. drawing + 89 ; uses: AXY tmp1 tmp2 + 90 ; X: x on screen in words (2 bytes) + 91 ; Y: ground tile number (0 - plain ground) + 92 = 0084 _gnd = tmp1 + 93 = 0086 _scr = tmp2 + 94 + 95 231C B9 56 27 lda gnd_tab_l,y + 96 231F 85 84 sta _gnd + 97 2321 B9 59 27 lda gnd_tab_h,y + 98 2324 85 85 sta _gnd+1 + 99 2326 A9 00 85 86 A9 78 + mwa #screen+112*sw _scr ;112 is ypos of ground level + 100 232E 8A txa + 101 232F 0A asl ;add X to xpos on screen + 102 2330 18 clc + 103 2331 65 86 adc _scr + 104 2333 85 86 sta _scr + 105 2335 90 02 scc + 106 2337 E6 87 inc _scr+1 + 107 + 108 2339 A2 08 ldx #8 ; tile height in bytes + 109 233B loop1 + 110 233B A0 00 ldy #0 + 111 233D @ + 112 233D B1 84 lda (_gnd),y + 113 233F 91 86 sta (_scr),y + 114 2341 C8 iny + 115 2342 C0 02 cpy #2 ; tile width in bytes + 116 2344 D0 F7 bne @- + 117 2346 18 A5 84 69 02 85 + adw _gnd #2 + 118 2351 18 A5 86 69 80 85 + adw _scr #sw ;next screen line + 119 235C CA dex + 120 235D D0 DC bne loop1 + 121 ; add some debris below + 122 + 123 235F A2 06 ldx #6 ; debris height + 124 2361 loop2 + 125 2361 A0 01 ldy #1 + 126 2363 @ + 127 2363 AD 0A D2 lda RANDOM + 128 2366 2D 0A D2 2D 0A D2 + :5 AND RANDOM + 129 2375 91 86 sta (_scr),y + 130 2377 88 dey + 131 2378 10 E9 bpl @- + 132 237A 18 A5 86 69 80 85 + adw _scr #sw ;next screen line + 133 2385 CA dex + 134 2386 10 D9 bpl loop2 + 135 + 136 2388 60 rts + 137 .endp + 138 2389 .proc ground_init ;draws first 48 segments of a ground + 139 2389 A9 00 85 80 mva #0 tmp + 140 238D ground_loop + 141 238D A5 80 lda tmp + 142 238F AA tax + 143 2390 randomize 0 2 3 +Macro: RANDOMIZE [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] + 4 2390 ?rand + 5 2390 AD 0A D2 lda random + 7 2393 29 03 and #3 + 9 2395 C9 00 cmp #0 ;floor + 10 2397 90 F7 bcc ?rand + 11 2399 C9 03 cmp #2+1 ;ceiling + 12 239B B0 F3 bcs ?rand +Source: C:\jac\wudsn\Workspace\no_internet\procs.asm + 144 239D A8 tay + 145 239E 20 1C 23 jsr ground + 146 23A1 E6 80 inc tmp + 147 23A3 A5 80 lda tmp + 148 23A5 C9 18 cmp #24 ; screen width in wide mode /2 + 149 23A7 D0 E4 bne ground_loop + 150 23A9 60 rts + 151 .endp + 152 ;---------- + 153 23AA .proc cactus ; drawing cactii + 154 ; uses: AXY tmp1 tmp2 + 155 ; X: x on screen in bytes + 156 ; Y: cactus number + 157 ; draws from bottom up, utilising the fact that .bmp is saved this way + 158 ; updt.: was not able to load .bmp files for unknown reason, so the pics are flipped with WUDSN script + 159 + 160 = 0084 _cact = tmp1 + 161 = 0086 _scr = tmp2 + 162 + 163 23AA B9 C6 2A lda cact_tab_l,y + 164 23AD 85 84 sta _cact + 165 23AF B9 C9 2A lda cact_tab_h,y + 166 23B2 85 85 sta _cact+1 + 167 23B4 A9 00 85 86 A9 7D + mwa #screen+122*sw _scr ;112 is ypos of bottom of the cactii + 168 23BC 8A txa + 169 23BD 18 clc + 170 23BE 65 86 adc _scr + 171 23C0 85 86 sta _scr + 172 23C2 90 02 bcc no_inc + 173 23C4 E6 87 inc _scr+1 + 174 23C6 no_inc + 175 + 176 + 177 23C6 B9 C0 2A lda cact_widths,y + 178 23C9 8D F9 23 sta cact_w ; width in bytes + 179 + 180 23CC B9 C3 2A lda cact_heights,y + 181 23CF AA tax + 182 23D0 loop + 183 23D0 A0 00 ldy #0 + 184 23D2 @ + 185 23D2 B1 86 lda (_scr),y + 186 23D4 11 84 ora (_cact),y + 187 23D6 91 86 sta (_scr),y + 188 23D8 C8 iny + 189 23D9 CC F9 23 cpy cact_w + 190 23DC D0 F4 bne @- + 191 ;adw _cact cact_w ;!!!DOES NOT WORK :((((( + 192 23DE 18 clc + 193 23DF AD F9 23 lda cact_w + 194 23E2 65 84 adc _cact + 195 23E4 85 84 sta _cact + 196 23E6 90 02 scc + 197 23E8 E6 85 inc _cact+1 + 198 + 199 23EA 38 A5 86 E9 80 85 + sbw _scr #sw + 200 23F5 CA dex + 201 23F6 D0 D8 bne loop + 202 23F8 60 rts + 203 23F9 00 cact_w .by 0 + 204 .endp + 205 ;---------- + 206 + 207 23FA .proc sprites_init + 208 ;setting up P/M graphics + 209 23FA A9 90 lda #>pmgraph + 210 23FC 8D 07 D4 sta pmbase + 211 23FF AD 2F 02 lda dmactls + 212 2402 09 0C ora #%00001100 ; Players and Missiles single lined + 213 2404 8D 2F 02 sta dmactls + 214 2407 A9 03 lda #$03 ; P/M on + 215 2409 8D 1D D0 sta pmcntl + 216 240C A9 00 lda #$00 + 217 240E 8D 0C D0 sta sizem ; there will be only M0, double width + 218 2411 8D 08 D0 sta sizep0 ; P0-P3 widths + 219 2414 8D 09 D0 sta sizep0+1 + 220 2417 8D 0A D0 sta sizep0+2 + 221 241A 8D 0B D0 sta sizep0+3 + 222 241D A9 11 lda #$11 ; P/M priorities (bit 4 joins missiles), bit 0 - players on top + 223 241F 8D 6F 02 sta gtictls + 224 /* + 225 ; temporary colours of sprites + 226 mva #$52 COLPM0 + 227 mva #$34 COLPM1 + 228 mva #$76 COLPM2 + 229 mva #$90 COLPM3 + 230 mva #$B0 COLPF3S + 231 */ + 231 + 232 = 002A dx = 42 + 233 2422 A9 2A 8D 00 D0 mva #dx HPOSP0 + 234 2427 A9 32 8D 01 D0 mva #dx+8 HPOSP1 + 235 242C A9 3A 8D 02 D0 MVA #dx+8*2 HPOSP2 + 236 + 237 2431 60 rts + 238 .endp + 239 + 240 2432 .proc dino_pm + 241 ; uses: AXY tmp tmp1 tmp2 tmp3 + 242 ; X: dino animation phase + 243 ; Y: Y position of dino + 244 + 245 = 0084 _dino = tmp1 ; _underscore means pointer here and else + 246 = 0086 _dino_sav = tmp2 ; local vars for reusing zero page variables + 247 = 0088 _spr = tmp3 + 248 ;tmp = tmp + 249 + 250 2432 AD E1 24 8D E2 24 mva dino_save_pm_y dino_save_pm_y_prev + 251 2438 8C E1 24 sty dino_save_pm_y ;save for clearing + 252 + 253 + 254 243B BD D1 26 lda dino_tab_l,x + 255 ;sta _dino + 256 243E 85 86 sta _dino_sav + 257 2440 BD D4 26 lda dino_tab_h,x + 258 ;sta _dino+1 + 259 2443 85 87 sta _dino_sav+1 + 260 + 261 + 262 2445 A9 00 8D E0 24 mva #0 counter + 263 + 264 244A loop0 + 265 ; sprite address calc + 266 244A A9 00 85 88 A9 92 + mwa #(pmgraph+$200) _spr ;1st sprite starts at PMBASE + $200 + 267 ;counter *$80 + 268 2452 A9 80 85 80 A9 FF + mwa #-$80 tmp ;so first add gives "0" + 269 245A AC E0 24 ldy counter + 270 245D @ + 271 245D 18 A5 80 69 80 85 + adw tmp #$80 ;tmp = counter*$80 - calc addr of the sprite to put gfx + 272 2468 88 dey + 273 2469 10 F2 bpl @- + 274 + 275 246B 18 A5 88 65 80 85 + adw _spr tmp + 276 2478 A5 88 85 80 A5 89 + mwa _spr tmp ; save address - it will be used in clearing and then drawing + 277 + 278 2480 AD E2 24 lda dino_save_pm_y_prev ;clearing old sprite, same way as drawing a new one + 279 2483 18 clc ;add ypos to the sprite address + 280 2484 65 88 adc _spr + 281 2486 85 88 sta _spr + 282 ;scc + 283 ;inc _spr+1 ;not necessary, sprites are not crossing pages + 284 + 285 2488 A0 00 ldy #0 ;delete old sprite here + 286 248A 98 tya + 287 248B A2 18 ldx #24 ;dino height + 288 248D @ + 289 248D 91 88 sta (_spr),y + 290 248F C8 iny + 291 2490 CA dex + 292 2491 D0 FA bne @- + 293 + 294 + 295 + 296 ;-------------------------- + 297 2493 A5 80 85 88 A5 81 + mwa tmp _spr + 298 249B AD E1 24 lda dino_save_pm_y ;drawing sprite at a new position + 299 249E 18 clc ;add ypos to the sprite address + 300 249F 65 88 adc _spr + 301 24A1 85 88 sta _spr + 302 ;scc + 303 ;inc _spr+1 ;not necessary, sprites are not crossing pages + 304 + 305 + 306 24A3 18 clc ;beginning of the next column of dino to the sprite + 307 24A4 A5 86 lda _dino_sav ;0- first column, 1 - 2nd, 2 - 3rd + 308 24A6 6D E0 24 adc counter + 309 24A9 85 84 sta _dino + 310 ;bcc @+ ;needs to be removed as both bytes must be copied + 311 24AB A5 87 lda _dino_sav+1 ;original address + 312 24AD 69 00 adc #0 + 313 24AF 85 85 sta _dino+1 + 314 ;@ + 315 + 316 24B1 A0 00 ldy #0 + 317 + 318 24B3 A2 18 ldx #24 ;dino height + 319 24B5 @ + 320 24B5 B1 84 lda (_dino),y + 321 24B7 91 88 sta (_spr),y + 322 24B9 18 A5 84 69 03 85 + adw _dino #3 ;+3 ==> next line in dino + 323 24C4 18 A5 88 69 01 85 + adw _spr #1 + 324 24CF CA dex + 325 24D0 D0 E3 bne @- + 326 + 327 + 328 + 329 24D2 EE E0 24 AD E0 24 inc:lda counter + 330 24D8 C9 03 cmp #3 + 331 24DA F0 03 4C 4A 24 jne loop0 + 332 + 333 + 334 + 335 24DF 60 rts + 336 24E0 00 counter .by 0 + 337 24E1 00 dino_save_pm_y .by 0 + 338 24E2 00 dino_save_pm_y_prev .by 0 + 339 + 340 .endp + 341 + 342 24E3 .proc move_dl ;screen window one byte right + 343 ;uses: AXY + 344 + 345 24E3 A9 04 8D F0 24 A9 + mwa #dl_addrs+1 incr+1 ;self mod + 346 24ED A2 80 ldx #sh + 347 24EF EE FF FF incr inc $ffff + 348 24F2 18 AD F0 24 69 03 + adw incr+1 #3 + 349 2500 CA dex + 350 2501 D0 EC bne incr + 351 2503 60 rts + 352 .endp + 353 + 354 2504 .proc move_scr ;screen window one step (1/4 th of byte) right + 355 2504 CE 20 25 AD 20 25 dec:lda hscr_state + 356 250A 8D 04 D4 sta HSCROL + 357 250D C9 04 cmp #4 + 358 250F D0 0E bne @+ + 359 2511 A9 0C 8D 20 25 mva #12 hscr_state + 360 2516 8D 04 D4 sta HSCROL + 361 2519 20 E3 24 jsr move_dl + 362 251C 20 E3 24 jsr move_dl + 363 251F @ + 364 251F 60 rts + 365 2520 00 hscr_state .by 0 + 366 .endp + 78 2521 icl 'artwork.asm' +Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm + 1 ; @com.wudsn.ide.asm.mainsourcefile=ni.asm + 2 ;------------------------------------------------------------- + 3 ;24x24 pix = 3x3 chars (3x24 bytes) + 4 .rept 3, # + 5 DINO:1 + 6 INS 'art/dino:1.data' + 7 .ENDR + 7 .endr +Source: REPT + 5 2521 DINO0 + 5 2521 00 00 00 00 03 FC + INS 'art/dino0.data' + 5 2569 DINO1 + 5 2569 00 00 00 00 03 FC + INS 'art/dino1.data' + 5 25B1 DINO2 + 5 25B1 00 00 00 00 03 FC + INS 'art/dino2.data' +Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm + 8 + 9 .rept 3, # + 10 DINO_MASK:1 + 11 INS 'art/dino_mask:1.data' + 12 .ENDR + 12 .endr +Source: REPT + 10 25F9 DINO_MASK0 + 10 25F9 FF F8 01 FF F0 00 + INS 'art/dino_mask0.data' + 10 2641 DINO_MASK1 + 10 2641 FF F8 01 FF F0 00 + INS 'art/dino_mask1.data' + 10 2689 DINO_MASK2 + 10 2689 00 07 FE 00 0F FF + INS 'art/dino_mask2.data' +Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm + 13 + 14 26D1 dino_tab_l + 15 .rept 3, # + 16 .BY DINO:1 + 21 .ENDR + 21 .endr +Source: REPT + 20 26D4 25 .BY >DINO0 + 20 26D5 25 .BY >DINO1 + 20 26D6 25 .BY >DINO2 +Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm + 22 + 23 26D7 dino_mask_tab_l + 24 .rept 3, # + 25 .BY DINO_MASK:1 + 30 .ENDR + 30 .endr +Source: REPT + 29 26DA 25 .BY >DINO_MASK0 + 29 26DB 26 .BY >DINO_MASK1 + 29 26DC 26 .BY >DINO_MASK2 +Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm + 31 + 32 26DD dino_back ; background save for dino sprite + 33 26DD 00 00 00 00 00 00 + :3*24 .by 0 + 34 2725 00 dino_save_y .by 0 + 35 + 36 ;------------------------------ + 37 ; ground pictures, 8x16 px = 2x1 chars (2x8 bytes) + 38 .rept 3, # + 39 GND_:1 + 40 INS 'art/gnd_:1.data' + 41 .ENDR + 41 .endr +Source: REPT + 39 2726 GND_0 + 39 2726 00 00 00 00 00 00 + INS 'art/gnd_0.data' + 39 2736 GND_1 + 39 2736 03 F0 06 18 1C 0C + INS 'art/gnd_1.data' + 39 2746 GND_2 + 39 2746 00 00 00 00 00 00 + INS 'art/gnd_2.data' +Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm + 42 2756 gnd_tab_l + 43 .rept 3, # + 44 .BY GND_:1 + 49 .ENDR + 49 .endr +Source: REPT + 48 2759 27 .BY >GND_0 + 48 275A 27 .BY >GND_1 + 48 275B 27 .BY >GND_2 +Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm + 50 275C scr_addrs_l + 51 275C 00 80 00 80 00 80 + :sh .by <(screen+#*sw) + 52 27DC scr_addrs_h + 53 27DC 40 40 41 41 42 42 + :sh .by >(screen+#*sw) + 54 ;------------------------------ + 55 ; cacti pictures, height and width variable + 56 ; cactX.data is flipped vertically + 57 = 0003 cacti = 3 + 58 + 59 .rept cacti, # + 60 CACT:1 + 61 INS 'art/cact:1.data' + 62 .ENDR + 62 .endr +Source: REPT + 60 285C CACT0 + 60 285C 00 00 00 00 03 E0 + INS 'art/cact0.data' + 60 28E8 CACT1 + 60 28E8 00 00 00 00 00 7F + INS 'art/cact1.data' + 60 29A8 CACT2 + 60 29A8 00 00 00 00 00 00 + INS 'art/cact2.data' +Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm + 63 + 64 2AC0 cact_widths ; widths of cactii in bytes + 65 2AC0 04 04 08 .by 4, 4, 8 + 66 2AC3 cact_heights ; heights of cactii in lines + 67 2AC3 23 30 23 .by 35,48,35 + 68 2AC6 cact_tab_l + 69 .rept cacti, # + 70 .BY CACT:1 + 75 .ENDR + 75 .endr +Source: REPT + 74 2AC9 28 .BY >CACT0 + 74 2ACA 28 .BY >CACT1 + 74 2ACB 29 .BY >CACT2 +Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm + 76 diff --git a/ni.xex b/ni.xex new file mode 100644 index 0000000000000000000000000000000000000000..389d5c58449c04b16da5382432fb12dd7fbc329d GIT binary patch literal 2780 zcmc&zU2GFq7C!c52?W#xX& z1fNJA$F4dm^r;V(YFVrLk&0xgEhTApHCtu1KcdLcRoP12$ZS?>(v3VlV~2*6 zB9-n+J9ExGckbN#-S2+qT+<|1n|okj0JI*w9@GGC0Brzo0Brhrx$IJ>VWt02}}v0UrS!1s?_Vf_p(ha1eA1d<=9Pd>nKFd;-)5?gO0!p9J-T z`#}R>QRx);6zDYgG$;fPfzE)>fX;%?g3f`@fzE@^g9gEapbOv&po`#(piAIOpds)O zXc#;Ux(vPy3WLK9xvg_sAZL7IucYW(g+S1D> zwX%8p{qjlUKNH5+uDB=p%LKWudy>y5Y*tvEuv>u=uee_JPTj3c->n>1j9&=g-O8qP z`DbfNa}L=e$u+koi6)qjiUX^ zXl-<7?f2}_N}v0aT6(RjW~{45jgH-^QAZuAXs}F;Ua@~Udh?IfD&L%}R!46Bxmu0f z{9CoE>TxxqTk&%>CNZ9LBNisz?D*O_m`m$a%k{S(? zswODu5Zz-xCTEQ8xqw+atnUUJux;5oD9(^jm{ItwwJ zt(#^!bEptma#1%uYGx!Kb39@PcT literal 0 HcmV?d00001 diff --git a/procs.asm b/procs.asm new file mode 100644 index 0000000..62c4850 --- /dev/null +++ b/procs.asm @@ -0,0 +1,366 @@ +; @com.wudsn.ide.asm.mainsourcefile=ni.asm + +.proc dino ; dino to the screen + ; uses: AXY tmp0 tmp1 tmp2 tmp3 + ; Y - ypos in lines + ; X - dino phase (0,1,..) + + _dino = tmp ; _underscore means pointer here and else + _mask = tmp1 ; local vars for reusing zero page variables + _scr = tmp2 + _back = tmp3 + sty dino_save_y ;save for clearing + ; get line address offset + lda scr_addrs_l,y + sta _scr + lda scr_addrs_h,y + sta _scr+1 + ; add x position (hardcoded, dino does not move) + adw _scr #10 + ;was: mwa #screen+10+96*sw scr_ ;10 = xpos, 96 == ypos on the screen + + lda dino_tab_l,x + sta _dino + lda dino_tab_h,x + sta _dino+1 + + lda dino_mask_tab_l,x + sta _mask + lda dino_mask_tab_h,x + sta _mask+1 + + mwa #dino_mask2 _mask + mwa #dino_back _back + ldx #24 +loop1 + ldy #0 +dn1 + lda (_scr),y ; get screen contents + sta (_back),y ; save background for sprite removal + lda (_mask),y ; mask + eor #$ff ; inverse, 'cause mads does not inverse OK with '*' + and (_scr),y ; get screen contents + ora (_dino),y + sta (_scr),y + iny + cpy #3 + bne dn1 + adw _dino #3 + adw _mask #3 + adw _back #3 + adw _scr #sw + dex + bne loop1 + rts +.endp +;---------- +.proc dino_clear ; remove old dino + ; uses: AXY tmp2 tmp3 + _scr = tmp2 + _back = tmp3 + ldy dino_save_y ;ypos + ; get line address offset + lda scr_addrs_l,y + sta _scr + lda scr_addrs_h,y + sta _scr+1 + ; add x position (hardcoded, dino does not move) + adw _scr #10 + ;mwa #screen+10+96*sw scr_ ;10 = xpos, 96 == ypos on the screen + + mwa #dino_back _back + ldx #24 +loop1 + ldy #0 +dn1 + lda (_back),y ; give back background for sprite removal + sta (_scr),y + iny + cpy #3 + bne dn1 + adw _back #3 + adw _scr #sw + dex + bne loop1 + rts +.endp +;---------- +.proc ground ; ground breaking, i.e. drawing + ; uses: AXY tmp1 tmp2 + ; X: x on screen in words (2 bytes) + ; Y: ground tile number (0 - plain ground) + _gnd = tmp1 + _scr = tmp2 + + lda gnd_tab_l,y + sta _gnd + lda gnd_tab_h,y + sta _gnd+1 + mwa #screen+112*sw _scr ;112 is ypos of ground level + txa + asl ;add X to xpos on screen + clc + adc _scr + sta _scr + scc + inc _scr+1 + + ldx #8 ; tile height in bytes +loop1 + ldy #0 +@ + lda (_gnd),y + sta (_scr),y + iny + cpy #2 ; tile width in bytes + bne @- + adw _gnd #2 + adw _scr #sw ;next screen line + dex + bne loop1 + ; add some debris below + + ldx #6 ; debris height +loop2 + ldy #1 +@ + lda RANDOM +:5 AND RANDOM + sta (_scr),y + dey + bpl @- + adw _scr #sw ;next screen line + dex + bpl loop2 + + rts +.endp +.proc ground_init ;draws first 48 segments of a ground + mva #0 tmp +ground_loop + lda tmp + tax + randomize 0 2 3 + tay + jsr ground + inc tmp + lda tmp + cmp #24 ; screen width in wide mode /2 + bne ground_loop + rts +.endp +;---------- +.proc cactus ; drawing cactii + ; uses: AXY tmp1 tmp2 + ; X: x on screen in bytes + ; Y: cactus number + ; draws from bottom up, utilising the fact that .bmp is saved this way + ; updt.: was not able to load .bmp files for unknown reason, so the pics are flipped with WUDSN script + + _cact = tmp1 + _scr = tmp2 + + lda cact_tab_l,y + sta _cact + lda cact_tab_h,y + sta _cact+1 + mwa #screen+122*sw _scr ;112 is ypos of bottom of the cactii + txa + clc + adc _scr + sta _scr + bcc no_inc + inc _scr+1 +no_inc + + + lda cact_widths,y + sta cact_w ; width in bytes + + lda cact_heights,y + tax +loop + ldy #0 +@ + lda (_scr),y + ora (_cact),y + sta (_scr),y + iny + cpy cact_w + bne @- + ;adw _cact cact_w ;!!!DOES NOT WORK :((((( + clc + lda cact_w + adc _cact + sta _cact + scc + inc _cact+1 + + sbw _scr #sw + dex + bne loop + rts +cact_w .by 0 +.endp +;---------- + +.proc sprites_init +;setting up P/M graphics + lda #>pmgraph + sta pmbase + lda dmactls + ora #%00001100 ; Players and Missiles single lined + sta dmactls + lda #$03 ; P/M on + sta pmcntl + lda #$00 + sta sizem ; there will be only M0, double width + sta sizep0 ; P0-P3 widths + sta sizep0+1 + sta sizep0+2 + sta sizep0+3 + lda #$11 ; P/M priorities (bit 4 joins missiles), bit 0 - players on top + sta gtictls + /* + ; temporary colours of sprites + mva #$52 COLPM0 + mva #$34 COLPM1 + mva #$76 COLPM2 + mva #$90 COLPM3 + mva #$B0 COLPF3S + */ + dx = 42 + mva #dx HPOSP0 + mva #dx+8 HPOSP1 + MVA #dx+8*2 HPOSP2 + + rts +.endp + +.proc dino_pm + ; uses: AXY tmp tmp1 tmp2 tmp3 + ; X: dino animation phase + ; Y: Y position of dino + + _dino = tmp1 ; _underscore means pointer here and else + _dino_sav = tmp2 ; local vars for reusing zero page variables + _spr = tmp3 + ;tmp = tmp + + mva dino_save_pm_y dino_save_pm_y_prev + sty dino_save_pm_y ;save for clearing + + + lda dino_tab_l,x + ;sta _dino + sta _dino_sav + lda dino_tab_h,x + ;sta _dino+1 + sta _dino_sav+1 + + + mva #0 counter + +loop0 + ; sprite address calc + mwa #(pmgraph+$200) _spr ;1st sprite starts at PMBASE + $200 + ;counter *$80 + mwa #-$80 tmp ;so first add gives "0" + ldy counter +@ + adw tmp #$80 ;tmp = counter*$80 - calc addr of the sprite to put gfx + dey + bpl @- + + adw _spr tmp + mwa _spr tmp ; save address - it will be used in clearing and then drawing + + lda dino_save_pm_y_prev ;clearing old sprite, same way as drawing a new one + clc ;add ypos to the sprite address + adc _spr + sta _spr + ;scc + ;inc _spr+1 ;not necessary, sprites are not crossing pages + + ldy #0 ;delete old sprite here + tya + ldx #24 ;dino height +@ + sta (_spr),y + iny + dex + bne @- + + + + ;-------------------------- + mwa tmp _spr + lda dino_save_pm_y ;drawing sprite at a new position + clc ;add ypos to the sprite address + adc _spr + sta _spr + ;scc + ;inc _spr+1 ;not necessary, sprites are not crossing pages + + + clc ;beginning of the next column of dino to the sprite + lda _dino_sav ;0- first column, 1 - 2nd, 2 - 3rd + adc counter + sta _dino + ;bcc @+ ;needs to be removed as both bytes must be copied + lda _dino_sav+1 ;original address + adc #0 + sta _dino+1 +;@ + + ldy #0 + + ldx #24 ;dino height +@ + lda (_dino),y + sta (_spr),y + adw _dino #3 ;+3 ==> next line in dino + adw _spr #1 + dex + bne @- + + + + inc:lda counter + cmp #3 + jne loop0 + + + + rts +counter .by 0 +dino_save_pm_y .by 0 +dino_save_pm_y_prev .by 0 + +.endp + +.proc move_dl ;screen window one byte right + ;uses: AXY + + mwa #dl_addrs+1 incr+1 ;self mod + ldx #sh +incr inc $ffff + adw incr+1 #3 + dex + bne incr + rts +.endp + +.proc move_scr ;screen window one step (1/4 th of byte) right + dec:lda hscr_state + sta HSCROL + cmp #4 + bne @+ + mva #12 hscr_state + sta HSCROL + jsr move_dl + jsr move_dl +@ + rts +hscr_state .by 0 +.endp \ No newline at end of file