From 6334d91faf284bd06a8f1408281f784bd291c4f6 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Sat, 13 Feb 2016 11:28:17 -0600 Subject: [PATCH] wwwwwwwwww --- 16.map | 223 ++++++++++++++++++++++++++++++++++ asmyt.asm | 118 ++++++++++++++++++ asmyt.err | Bin 0 -> 1476 bytes asmyt.h | 5 + asmyt.o | Bin 55949 -> 0 bytes copper.h | 5 + copper.o | Bin 3241 -> 7619 bytes makefile | 44 +++---- plz.o | Bin 5602 -> 5155 bytes plzpart.c | 4 +- plzpart.h | 7 ++ plzpart.o | Bin 389 -> 543 bytes tweak.asm | 349 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tweak.h | 5 + 14 files changed, 728 insertions(+), 32 deletions(-) create mode 100755 16.map create mode 100755 asmyt.asm create mode 100755 asmyt.err create mode 100755 asmyt.h delete mode 100755 asmyt.o create mode 100755 copper.h create mode 100755 plzpart.h create mode 100755 tweak.asm create mode 100755 tweak.h diff --git a/16.map b/16.map new file mode 100755 index 0000000..43450b1 --- /dev/null +++ b/16.map @@ -0,0 +1,223 @@ +Open Watcom Linker Version 2.0 beta Jan 20 2016 10:21:07 (32-bit) +Copyright (c) 2002-2016 The Open Watcom Contributors. All Rights Reserved. +Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved. +Created on: 16/02/13 11:25:37 +Executable Image: plzpart.exe +creating a DOS executable +Error! E2028: init_copper_ is an undefined reference +Error! E2028: close_copper_ is an undefined reference +Error! E2028: _m1 is an undefined reference +Error! E2028: _m2 is an undefined reference +Error! E2028: _m3 is an undefined reference +Error! E2028: _m4 is an undefined reference +Error! E2028: _n1 is an undefined reference +Error! E2028: _n2 is an undefined reference +Error! E2028: _n3 is an undefined reference +Error! E2028: _n4 is an undefined reference +Error! E2028: setplzparas_ is an undefined reference +Error! E2028: plzline_ is an undefined reference +Error! E2028: tw_opengraph2_ is an undefined reference +Error! E2028: set_plzstart_ is an undefined reference +Error! E2028: tw_setrgbpalette_ is an undefined reference + + + +------------+ + | Groups | + +------------+ + +Group Address Size +===== ======= ==== + +DGROUP 0ed5:0000 0000a650 + + + + +--------------+ + | Segments | + +--------------+ + +Segment Class Group Address Size +======= ===== ===== ======= ==== + +plzpart_TEXT CODE AUTO 0000:0000 00000020 +copper_TEXT CODE AUTO 0000:0020 00000997 +ASMYT_TEXT CODE AUTO 0000:09b8 00000000 +PORO CODE AUTO 009c:0000 0000d4ac +plz_TEXT CODE AUTO 009c:d4b0 00000a0a +_TEXT CODE AUTO 009c:deba 000004c8 +FAR_DATA FAR_DATA AUTO 0ed4:0002 00000000 +_NULL BEGDATA DGROUP 0ed5:0000 00000020 +_AFTERNULL BEGDATA DGROUP 0ed7:0000 00000002 +CONST DATA DGROUP 0ed7:0002 00000000 +CONST2 DATA DGROUP 0ed7:0002 00000000 +_DATA DATA DGROUP 0ed7:0002 00000218 +XIB DATA DGROUP 0ef8:000a 00000000 +XI DATA DGROUP 0ef8:000a 00000006 +XIE DATA DGROUP 0ef9:0000 00000000 +YIB DATA DGROUP 0ef9:0000 00000000 +YI DATA DGROUP 0ef9:0000 00000000 +YIE DATA DGROUP 0ef9:0000 00000000 +STRINGS DATA DGROUP 0ef9:0000 00000000 +DATA DATA DGROUP 0ef9:0000 00000000 +_BSS BSS DGROUP 0ef9:0000 00002406 +STACK STACK DGROUP 113a:0000 00008000 + + + +----------------+ + | Memory Map | + +----------------+ + +* = unreferenced symbol ++ = symbol only referenced locally + +Address Symbol +======= ====== + +Module: plzpart.o(/dos/z/plz/plzpart.c) +0000:0000 main_ +Module: copper.o(/dos/z/plz/copper.asm) +0000:0020 _frame_count +0000:0022 _cop_drop +0000:0024* _cop_pal +0000:0028* _do_pal +0000:002a _cop_start +0000:002c* _cop_scrl +0000:002e* _cop_plz +0000:0030* _close_copper +0000:005b* _init_copper +0000:00fb* _pompota +0000:0129* _moveplz +0000:0203 _fadepal +0000:0803 _cop_fadepal +Module: asmyt.o(ASMYT.ASM) +009c:c000* _plzline +009c:c618* _setplzparas +009c:0000* _psini +009c:4000* _lsini4 +009c:8000* _lsini16 +009c:d48e* _set_plzstart +Module: plz.o(/dos/z/plz/plz.c) +009c:d4b0 plz_ +009c:d74c+ init_plz_ +0ed5:0022+ _ptau +0ed5:0122+ _curpal +0ed5:0124* _timetable +0ed5:0138+ _ttptr +0ed5:013a _l1 +0ed5:013c _l2 +0ed5:013e _l3 +0ed5:0140 _l4 +0ed5:0142 _k1 +0ed5:0144 _k2 +0ed5:0146 _k3 +0ed5:0148 _k4 +0ed5:014a _il1 +0ed5:014c _il2 +0ed5:014e _il3 +0ed5:0150 _il4 +0ed5:0152 _ik1 +0ed5:0154 _ik2 +0ed5:0156 _ik3 +0ed5:0158 _ik4 +0ed5:015a+ _inittable +0ed5:0240+ _pals +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(stk086.asm) +009c:debf __STK +009c:dedf* __STKOVERFLOW_ +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(cstart) +0ed5:0000* __nullarea +0ed5:01fc* __ovlflag +0ed5:01fd* __intno +0ed5:01fe* __ovlvec +009c:defc _cstart_ +009c:dfcf* _Not_Enough_Memory_ +009c:e101 __exit_ +009c:e120 __do_exit_with_msg__ +009c:e17d __GETDS +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(cmodel.asm) +009c:e188 _big_code_ +009c:e188* CodeModelMismatch +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(i4m.asm) +009c:e188 __I4M +009c:e188* __U4M +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(pia.asm) +009c:e1a7 __PIA +009c:e1a0* __PIS +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(kbhit.c) +009c:e1be kbhit_ +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(xmsg.c) +009c:e1d5* __exit_with_msg_ +009c:e1da __fatal_runtime_error_ +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(crwdata) +0ed5:0202 __curbrk +0ed5:020a __STACKLOW +0ed5:020c __STACKTOP +0ed5:020e __cbyte +0ed5:0210 __child +0ed5:0212 __no87 +0ed5:021f ___FPE_handler +0ed5:0204 __psp +0ed5:0213 __get_ovl_stack +0ed5:0217 __restore_ovl_stack +0ed5:021b __close_ovl_file +0ed5:0223 __LpCmdLine +0ed5:0227 __LpPgmName +0ed5:0206 __osmajor +0ed5:0207 __osminor +0ed5:0208 __osmode +0ed5:0209 __HShift +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(cmain086.c) +009c:e1f8 __CMain +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(initrtns.c) +009c:e25e __InitRtns +009c:e25e* __FInitRtns +009c:e2b9 __FiniRtns +009c:e2b9* __FFiniRtns +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(uselfn.c) +0ed5:022c ___uselfn +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(dosseg) +009c:e31e __DOSseg__ +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(enterdb.c) +009c:e31f __EnterWVIDEO_ +0ed5:022e+ ___WD_Present +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(___argc.c) +0ed5:2640 ____Argv +0ed5:2644 ____Argc +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(amblksiz.c) +0ed5:0230 __amblksiz +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(exit.c) +009c:e343+ _null_exit_rtn_ +009c:e343+ __null_int23_exit_ +009c:e344 exit_ +009c:e365+ _exit_ +0ed5:0232+ ___int23_exit +0ed5:0236+ ___FPE_handler_exit +Module: /dos/fdos/watcom2/lib286/dos/clibh.lib(sgdef086) +0ed5:023a __Start_XI +0ed5:0240 __End_XI +0ed5:0240 __Start_YI +0ed5:0240 __End_YI + + + +---------------------------+ + | Unresolved References | + +---------------------------+ + +Undefined Symbol Referenced by +================ ============= + +init_copper_ plzpart.o(/dos/z/plz/plzpart.c) +close_copper_ plzpart.o(/dos/z/plz/plzpart.c) +setplzparas_ plz.o(/dos/z/plz/plz.c) +plzline_ plz.o(/dos/z/plz/plz.c) +tw_opengraph2_ plz.o(/dos/z/plz/plz.c) +set_plzstart_ plz.o(/dos/z/plz/plz.c) +init_copper_ plz.o(/dos/z/plz/plz.c) +tw_setrgbpalette_ plz.o(/dos/z/plz/plz.c) + + + +--------------------+ + | Libraries Used | + +--------------------+ + +/dos/fdos/watcom2/lib286/dos/clibh.lib diff --git a/asmyt.asm b/asmyt.asm new file mode 100755 index 0000000..f1244b0 --- /dev/null +++ b/asmyt.asm @@ -0,0 +1,118 @@ + IDEAL + MODEL huge + +EXTRN C l1:word, C l2:word, C l3:word, C l4:word, C k1:word, C k2:word, C k3:word, C k4:word +EXTRN C m1:word, C m2:word, C m3:word, C m4:word, C n1:word, C n2:word, C n3:word, C n4:word + +SEGMENT poro para private 'CODE' + +ASSUME cs:poro + +PUBLIC C plzline, C setplzparas, C psini, C lsini4, C lsini16 + +LABEL psini BYTE +INCLUDE 'psini.inc' +; db 16384 dup(?) + +LABEL lsini4 WORD +INCLUDE 'lsini4.inc' +; db 16384 dup(?) + +LABEL lsini16 WORD +INCLUDE 'lsini16.inc' +; db 16384 dup(?) + +PROC C plzline + + ARG y1:word, vseg:word + + push ds es si di + + push [vseg] + pop es + push cs + pop ds + mov si, [y1] +; and si, 0fffeh + shl si, 1d + mov di, si + + IRP ccc, <3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12,19,18,17,16,23,22,21,20,27,26,25,24,31,30,29,28,35,34,33,32,39,38,37,36,43,42,41,40,47,46,45,44,51,50,49,48,55,54,53,52,59,58,57,56,63,62,61,60,67,66,65,64,71,70,69,68,75,74,73,72,79,78,77,76,83,82,81,80> + +IF (ccc AND 1) EQ 1 + +lc2_&ccc=$+2 + mov bx, [ds:si+0c200h] +lc1_&ccc=$+2 + mov ah, [ds:ccc*32 + bx + 0c100h] +lc4_&ccc=$+2 + mov bx, [ds:ccc*64 + di + 0c400h] +lc3_&ccc=$+2 + add ah, [ds:bx + di + 0c300h] +ELSE +lc2_&ccc=$+2 + mov bx, [ds:si+0c200h] +lc1_&ccc=$+2 + mov al, [ds:ccc*32 + bx + 0c100h] +lc4_&ccc=$+2 + mov bx, [ds:ccc*64 + di + 0c400h] +lc3_&ccc=$+2 + add al, [ds:bx + di + 0c300h] +ENDIF +IF (ccc AND 3) EQ 2 + shl eax, 16d +ENDIF +IF (ccc AND 3) EQ 0 + mov [es:ccc], eax +ENDIF + ENDM + pop di si es ds + ret +ENDP + +PROC C setplzparas + + ARG c1:word, c2:word, c3:word, c4:word + + IRP ccc, <0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83> + mov ax, [c1] + add ax, OFFSET psini+ccc*8 + mov [word (cs:lc1_&ccc)], ax + mov ax, [c2] + shl ax, 1d + add ax, OFFSET lsini16-ccc*8+80*8 + mov [word (cs:lc2_&ccc)], ax + mov ax, [c3] + add ax, OFFSET psini-ccc*4+80*4 + mov [word (cs:lc3_&ccc)], ax + mov ax, [c4] + shl ax, 1d + add ax, OFFSET lsini4+ccc*32 + mov [word (cs:lc4_&ccc)], ax + ENDM + ret +ENDP + +PUBLIC C set_plzstart + +PROC C set_plzstart + + ARG start:word + + mov dx, 3d4h + mov al, 18h ; linecompare + mov ah, [Byte start] + out dx, ax + mov al, 07h + mov ah, [Byte start+1] + shl ah, 4d + and ah, 10h + or ah, 0fh + out dx, ax ; 8th bit + ret + +ENDP + + +ENDS +END diff --git a/asmyt.err b/asmyt.err new file mode 100755 index 0000000000000000000000000000000000000000..973dacca24b9fef738424e61408f03ba062a2d47 GIT binary patch literal 1476 zcmeH{F;BxV5QUlhD~=78Dsf|{WJ6U4CK%ucSkBQ}a?a7&0s8N85J*lXq?Rytwfwz% zdhcub=|-{7*8Q; z`ih7(wK4`$5x6roF#=P#_9?AXjEF9rOe Xfbl88m8{dh_Ut`$nht>DZygq&rup;> literal 0 HcmV?d00001 diff --git a/asmyt.h b/asmyt.h new file mode 100755 index 0000000..dc4a31f --- /dev/null +++ b/asmyt.h @@ -0,0 +1,5 @@ +#ifndef _ASMYT_H_ +#define _ASMYT_H_ +int plzline(); + +#endif diff --git a/asmyt.o b/asmyt.o deleted file mode 100755 index cccfe42693ea5329f51b6de495657daa404467cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55949 zcmeHw2Y6LQ7ww!LLY0oR&_WR-O$9-@^dd+{K!MOh4@IO2mmYfPNRdcTKvA(Eh$x|m z2&f=Yu?Iy&uwX$zQQq2nW^M@q{e1uboTy+9B;6oZ6O7-XNkmQ{CG)>eSwD(5hjhKbCuMqAr`A=eWY^KB%e~nq&)KMs#zzT}=!L z+paDKhi%sogF?3lRuze1+ttGD4Xhq+Z(xmZdxNWne?PcdrthnVpKovtF);LeL#l@J zhg1va52>DsUqcK~$0z3&!iwsiIB4vk{zLkRG*K(b5x(Qa#BIs>@J){HBl?WQmx(=w z_ZU%lpXe0$HYdJyyYo{#SejR^5c-4 zbRx>eh><;pkDQk-?$>9cjIK2n(B^4dG)jsRzAp+3S5$J6vSGCd&R$mJ=JgwC-N>1g z9s7%7y$t?x@K!P2vW3T6#d*sR*?6l2Z#lxIf_f^X5>VMrTHFh{10^j+M5UDy+0#mk z9BE}l&a|>3S6ZyNA+5Z~m)1xWNNX(e?rS0n?&~TF@9QS!r1ul^(i6mz^!{R5`T(&a zeV|yGK1i%iA1qSRhltelq2lrMM6oe_n0O+6Yf`lEoisaFjW%8JL{biH*d5z7Y7%Wm ziHq{P2K-%`+Neg~yrMR$N1M@NyV|G`ZRQYLlXAj@)2@BJw(ZGeN>XmxZr!fgJP~|=8@vf@3@jn0Sa$oBfU0O7|r%|yA;H4EvDga*gc8%I& zck6m>>$Ri(h4;OXR1o`fV1IXf!RMwg=A~~-Ic4FLKBRg`^^qDNHAHGesWGJ{l$ug% zCR1~r?ha2a{w#&lgIiY~*HWi@WNIZ-Yffz_wWZXKQhQ1rD0QTCFQ-nNI&Eu zjZb+deDZna2j}Cje1sgM^Bj`#klf?6rKqZ(u)?nyehbK>djn9xn0)}*P(C1T`QiXHyU|Ck> zCl}speuT2M34NLR4C;)59E9ZR8hKY=g^;y@@Ea`8rp~RhqqEF4kUqFRhJJ7@4gCoH zGPoWv5VE3;hc812A?K54;C7)OHxblU^r2RR+Yf3=s8yjBhFThKf2bAY7BScYhc>%` zrk0y~{lOi;|NRGdCj7yD3qH7`Y1@`N9oheIUqt;9cT&`OaaYE@BK45mS8}h({bytD zN*gtzUX>E{u)#!q?iDHcwOW%$>Q7}bWFb$aKF3p4-|vN;TywRFKrZCDsrRo}kNg0n zx}5IfbSI}eD%IBMj__3L$`nqZEq$z9YLkJbJX5C6z_+}jEhyXaq%|qsPU$wJTPf9` zR2``rrK(6(DBZ#-j?&FCRaWVyK&tegNfkp=1)a*v6icZbr?N<8D3wMkMJWcUBvJ{a z;z-3P6-By{QV~jpIThkmP^AK4DSwtJjG{L5@!?BpJLEI`YitE<=`-b%DX&a7aLOZ7 zZkckalrxxe{AmhubL!)BDSOI#9(k@CZcwMrt8&5%ox7_qL)qFwUS(3BL7gynAO|72 z`qL|rgpebG7m`a~3QnNUMN54}*Ip8{1y%J;*=aRT9+l0o+bqwXol`WWY@DJvc`CUo zIbq4pGKEnbM<0r%wuYrNuRi4&|H5a;Q2|>4`}(|rOj#kx{F4-<>cgcuX{#x*dyZyaK-cDy;u1Nn8{)#?2v#}RXk;h^Qjn;1p+qfBSmO3aeT03XHsoRIQ`*v>@&woZ)LdF>Q_8YBDK&zn zOLKczrVKTWWy{KDvK%*=^r4ziTIg2w8p{xN`SJl9y73LP!17f5sZO4G5yH?}DyK3f z&ml9xtv>f4+@Wyq!aWUlIXneVhoTSauEG=dV!@A!RMnGn2X=&$v)BqS zeJXXZ)YDQgOx-^@0&ob(Hy}TOoDp&$*qLDWg1wx`yMchJ z@7y^=>v!rDa8<9q62cEyiM$&aGDK@9UTVpf)iR8jX+sOKz%tYKAwpAYD=D|6_WJ+z zZosChJ~E$D;97wH*IyAt-VF@X1x%L{RdBShkGvZQz8UB*U+;y>e)+a9{KWva!b#dj z0{+m84Ovdmjj`TkZ)-$xowTwKRr^{8!gmFjk#__5&4_BD}i&pdh{ zl!EoZp52IAwd=Wzq?QdPIh;1_ZJ#h!m9mx^7=_i#}i92D>;qX!-eGXD|72f{BS zGHw7b2qNzWSioyFAHED%{BrAx*8;pFoT;t+6WK0Rh2ZAwz}@6uN>IFp)`PD|s#Tx>E1qnl)F5KEA4k4txdXJ^D}q4wGp~ePPUPJ{=Ai_UaRYh?fqw19Oa1Ok4~&sTm5Xv@+(6*H zYlRI|)i=ilcLdk2r{Mzu#UK76Ad9U4GxBaA@@^n(rh(G&YC&Um1BnLjW={XOIR&Sv zsxPjlf8^z*{-rmoWnkEVUb%u4F!fIwJ`foPJ(%qa+!@c|XDS3#XN(^)B>Jc@OP&c1QdT3Zv(=21(^R=?*@cvn3idq zuIZWCOoT-+bDFu$JZ4@qpIN{xXcjh$m_^NEW(l*TS;{PJmNmQSIdEfZ-KxR3)w zwv2XGJF7j=0q6+aYjpxT16_dotownkKsT#95O4LcdIG(y-asF#uhkDou=-mAtbxEF zYp^xM8fqm1!>nJZsz)^*ZjG=;S`S#GtOu>p));FnFwPopJ!DO=CR%=Lk~P_yVokNC zS<|fuKv5>sjkL>v`)1Ym4=wwbj~Yy<}~-Ubc2vuUM}F zJFPTpm$lp4W9_wGv-Vl9Tl=jyfCJV+>yY)P^%n59b=W#$y#pMz(ye!a_pJAUW7Y@2 zht@~H$G|7nr@&`G25=ns9QXn_!T8ep(mKib$|9U%d~Hdbwj|D2L40FfiEpjHhAWTM zdxG|ZYx?ZLrOsFQQs();`5Asby%o%tUJK?uxTdf0%H?0XXWwRVzrP829%s}uI<21B z*XkL{=P92pJ!Sd4>B&}FPDlNmih4R3_0^AhI|21~JnAvk<}ucKs_Ne~8;vSH3RQh1s{C-Y0Mrf)MT;;P zEd#X=1JF_=aGTK=tp~Lsy|_K;ftH2Zmu}qFP@8ifw?EVlQG0YRw@uVWQCmfAmTbMK z9i#S4wrsMMqxMd=e7YT!t)gxtb(^W%P~E2LHnvfq-EA0XiyH*m=lX#*yPj&reSvnp zu4?J;QZ4_TfxbZY47#6?y@u>TWN#vS7V2YUZ$tf#?188+qCQFXPSj6Pe?|Qk^qQlCkEXA$m4sXr~qeJk~``MAHOewX^+ z+}syapDeu{@^PrYCa+3+G}@aXPbS=p$=ZLB9>di1$$SsDkw7LOo9Hb4Kx<(%y~q4nzILto+HWJx_V}!}&o= znf*@b@zT=?^*CjIL!XiMGUu%^air!* z)sea*l}BoiR3E9o1*`-~5t1?_g*b=RBB{oitRQEwnw-YUatf==Nvt?0LVJ<|9SFn%%489y068fT5~jc<)_jMK)~##hEk?u<@4hrg6|XV7y_xZtOGm8hec0Mw+qHc-7cpyliYYUNW{CFB)5n=Z)u#XN}Fq zGsaWKCgVxt31g$N-gw-2%vfin8f%S5jTB>zvD#Q=tTa{_4;#ykWyVrtiLuyNWGn<0 z7|F(bW1cbBm}AT~W&tyeBx8m#9hhcJHKrJofk}qnmPMqT4Z zs_HMascYP2+zHe%Y8!U|wTzm;?Z$1!tw0T`L(m&G5z@4zMCH^#5xS8`v%8Sewt$N)YQp8}r%9|Io&ABqov zW5D~sd%(LuI&c(t2RH&8X1p!l7HG7gDD;vnOII3V6&>=%UB8T$m`HHE!`ut#CH zkk}<8(hvq%VyBRJRcO2-Gl3W*nm#1=t#LE(8pcn)}$@gP<8 z8DfU@=Gx6az$mks$hszM_xlEqaNbB3^VC-9%S$zqn6y z5uHURaj)noI*9h7ooFlCh}PmB(NeS!cZ=qt8G>6k5sgJ7(NHuH^+i3vC+dp3#GRs! zs4eagwM0#EySNRwRn!pGMKw_ss3L9=apGp6vbaf90xF6MKzR`hloMrvGC*lj3Wxzp z0wsXrKrx^w<3@3#D8eW#2!$90g+u`%kzWLnPh5$-;;-S#BlVu3{otBDdvK}q6~2^t z{%?MUpHFWE^QG5=S@$Z zN&uAvDiKsNsDzZ}(n6)C9G9T-T$(C!$+`(;j7nM@%3KvLebrD7YoI(*sk|NKvlhx} zZIstLQEuy^{8A~dkMi6Q<+?G-cT<$}<|ywiL`kaZ<2$!R6=;pB&=ysqJ*q}WRFO`o zDqT=z?nl+>hAI?~s?-Zrst>AGKUA^)sA>aIiSWIC!;D)?Djyr`*NTy-Vtb@UkS9?uc}sjXP{kAQ!V{2)$;ES^aZkK(EWt$ zHDnJWdlT8SP#+_E8|rst4@7+t^+~dKqJE0{E9$qX|Dt}3`ZMa+sDGn=?nCbLsPCgb zkov;UxL>6H@pJAgsn4Xo^Cb79)SrIMeJk~`-*A6R{Vw&tXSpw?K3RG@^erXTb_em^jz$&=Yiu+?t4CV6C)d6(oP2Wi zi^AzA*S`crKn%-)(hvqD56VF(lxN9M5#oU)L}iExk`%WcHd1e-;z-Srsv~trDv#72sXkJFLs$ut zA|z!<3ULIhMN*BUSV4|vH93}*<#<+^6IgNjp*=}~PJtGk#;SA%^yy4isSJ-|i054dFfVO&P>vhbcDGH&4Sj~n1O@C|!h z@52Wo;|79na^?GWQ*}|1aRdLBaRc{~17D#}y}(aV^#eaoH3a0>Nc)v_Np}%JBkv&p%<@KtHPLIr@Kgoev*~j2n<+#Ppak zJ%%hYZh(G~m%q=`uhV+W2>#w4{5@R%Dj)o1T>o+}m;cQX1L5N+!p|GbmtG6ayV>_BAP0F9^nw~iZVPgUJN zJ~)6NeBh&YVgA>L4@AZdM8*yLlgAAR{1)ok+3Xy4Zac4Cz%FbTwM*Eg?6P)wyOMpg zUB#|$-)7gc>)3Ve`gS9`seQNI(r#_Hvpd?I?ECC)b`QIk-PcaA2ik+}M0>dXfc>C7 z)*f$9uqWA5>}mE4o8Q3q_RqBE*z@dUd!fD9UTQD5AGTN8tL-)RqxM>Ro&C7I-ri_G zX>YQhwx6*#+t1n0+gt1x?XC7Ud%OLzy~BRRe%0P-r`fyg-S!@Pul<_6&wd@)Z@*z5 z01n!RfH&>8fVb_#z!Bgb;3$v|ybHX?c;9~CJ_dXMe8~97{>c6q_yqVA_zcJZjsu_D zUjQe7FYS}SSN19UYv8nf#{S0s*8a}^-ac#pVE<_UWdCfRvwyMA+ZXJM_HXtj`*-^f zTVTA8<=BYj;yF=Hw3FS*>Ew3uIC-7?PC=)TQ^YCi6n9EGrJOQOStr)1;N0Zg?A+p1 zb*ekJI=4G_ICY%69G}y`Y2-9~-JEx=5$?4*Bb-Ft}o!(AAr@u4E8R`sk zMmnRMG0r$=g5!6lIMbaZXSOrfNp==GOPpoS3TKtG#(C6P=REFgbe?pcb~ZcDJ6oKs z&UR;q^QyDU+2g$C>~{`0hn%;Z!_GTSy7Qj%f%B2`iSwzG;e76#a85d>oYT%3=UeA{ z=dAOi^OJMV`Ng^5Ty%bOE;+wDmmPuj+{C0V3R&a1QEoOM+Rg6faB~8=+}uDO_XZ#@ zkdKkyl_=m|8=9A29Y+@OvaK6nlR(yUG3abL7};_5Xa?mais2z|1f3k@Hwe^>5Cr$@ zFg)^DvLvrgULRc{om*a?yt@3jqJnNAx3GJoThuM)7I#ayCEZePX}649&W&};yA|C^ zZe{moH_ol%R&}epx4O5vHQicnZTC+1F4yPQcN@5k+$L^Qx4GNGy~l0kwsG6J9o&v? zC%21xzuVRA?)GqdxqaNeZh||&9pnynhq}Yu;qFLxl>4AN#vSL5cPF@hcal5Bo$5|^ zXSg%nS?(Nnt~<|7b{Dt{-No(_cd5I~eb`;$u5?$qtKCQ3HExRgsJqrpb=LupxsSW+ zfer3P;0fSK#wK@@`xL#WgrQ)<} zaq<*oVhysg8d+L}jIBThmm{0Ykl7{3^de+^0g&v@$ED20CCzbXNH>~ zE_;eQ8J9l^H(??$0eFZp9=B#3W2~z&2DdB}djD9(q+`bO(G%Dj-PlR6Pd9fe&PO*m ziEr`ju$#O{-Q?wblj#=A8@!HhE!|YQmCv}(y3e^UxG%a}-Iv^#-5u_$ZkoHx-Q&LI zzV7aK54eZiH{G}0BkoZ*-F?qJ=6>LQSnl~yI;6px+mRJ?rHao`>p$(d)EEI z{mK2=J?EZxFSx(Dzqyy(Kitc%fcs^7w&$QE<6l#I*}P~kyO+bu3FPu}dwIMYfV^Hl zAU{w5Cxy+z()Z;7|mTjnkI9`;rME4@|TYTyxI4Uhsn3anK~^|AteyO{p~Kz~L8Zdw9v zokm~pO6c$C1{3H=vOt!|;$VPo`cRx}7%-e~{sYJfJ%G{3*I0fC5AkF0s|PVP>`}}K zc^H`=g?te75aQR~dEfu=*6R31@i%=i7kuK92LJA}91**YMM%C%K%TAw9ojes=WSlJLyv ziA}<@dWfIXXxx>NxJQY&XM=DT6L81-paA#qx_e!{`@GI5+8t2D+n}ho^zQbWc}=`V zUISEwx~LGfQ88}!ZuP38s#NjfP;Dxq`oy9dmGMfUN|iw6DvCy@5Gq@KR61%vWYZxV z4OcZ5hDXhWY$B+6xX8@{Rrhmf41aQe1b#r{c-H+M_zw6M_y#z`IE@CB@O1#E(5U|B z@Rb|HNi^7mFBvCX!WY2jz;PhM{S5dNP5dYB$7t$5M1%hUn*I0D_`i!T;2m@YhtVOt zg^uAMx`+MfCib~|(P8XzccSyy;ciDqven(_H}WUv2e_5rz`;BPNAnBkxbqoY&yV1Oz7JRQ9p{Miw)3WQ(0Rjo9ggZ=XSb8) z>~vmnUWNm^4Q}if=LP3E=UKS5PdiUJo8aO;0Y`T|+}+3E^rkv%;ru@8q`(PZlj za#jK>oQHwsz%pPdumo7lSmY2EG8Q-z$#AG8<~thm9F4hfxFzN|60_li&vs@pW;%o< zU{xE$d3iaIHR2hod@9Dk8p;=$xn2KID_Hv4}{yF z;PiF+IK3bP;vojQI`=~sbb>tS0FltfY2~zpWN7X*bs9Sjo%#?GcR^6pg0Q$10;4K~ zMrEfGL`ONuk5Z5!#he=H(1_OhjLUdn{rNhr*q0Y_k*tPWA_Gn**&4NJRXmuYH`<-@eX!n{>@HOme(DHG1W&0+(BD8%uy9`u*NxL}oei6HnogeBy zkDbfDkE;65^K;nIb`->qZJV~Rf46?KE?VcUbJkDR57zexp>zhJdrl%y&*xSKLh^i! zP&~&F)``OJ96{inHxY8@4Gy-m7lC%t5N78U4zRNg;dQnkxXyDbw2lm{6AY`fRt430 zM1|E^83?Sij6>@z;ov$HUWc%NgX|=8pq=>$wnLbARcHn+=@M(+!b+x*)z!M@02$i#R^_AaYN0#58M!Va)XqSEmjltJOqQoa%^z z6Ni{Ll@Q~moK+eTZHgm?O%cSc$&W}ixe=Wv8s4>InTVYCJH}^S!1%A95mE4ageN(T zz$9NH97zVkkbI2rBkv>Z$Wa6vc?+Qp4kZZj&g*;aD@4g7=~~k5{U@=Au$x;KO}}A33mMv?gbHp!;VlR>@9jp+f0HPTxo{eVcy8Q(>a!r`+DQ~ZAPoWq)1Yt~I-mxH z)W{rEBN$S{#q2)%)xyM#KY=hBe{k>&n#4#`7SCa-Cxu}69#cTS!Gur>xNwq#EF9<1 z3LkSgh4(S>^e85yQm}+Wn6|nfVG#CW+G`r7$L>J5f^7&$@B${{ZpH-NO_;X30TX%G zVRCN@A_uJEhylwm8F&$<2G7St;n|opJcFYGOvaSr2^RA1^`6>kn{h; zXa8S0_g~KbZzWoB1OSQwKv4iF4uC{6%#+Ry zI(2X|^$0bc`dX8z^;GK6$<#ERIvJqp)HI=5PpPI!)ikY|Kyer(9!6A#%+TLatOf!d zM==|8)CL*1fg(3h>;{V5pkp@#qc>3ehVbYOS;ub}Ax311;Sh}CAmcd5NDeZVLw2g_ zJC^knJ%D%)?LfgD2welXA9L2Pg#Mnm-5K$0rDxzl^!d}7?ebB`S?zwzX`g~ioX&IE zX(szTzUhl_o9G6wKmn%t>W^ZU`eQsd{RtHDr%}{t-uV_pAZbH9ZFLNs^#U7oG|A=a?)WPuGo7Q+8=4bo4bq-xG*04q`LJf(G-*Ot)NKFdis{l^o>a&7oNIo5T8j$nUX{I`z zLEkHyB~4LyLho1bZc)@6hwl$fWzKt!=RTf1+}-Gbj)VH}@HF75JQa8vIzGbmOwju&col(; zp$Wv3F_DgVtNP+Pbg-%( z=w2yM6$PoHFjb);s=@ViA0cWjuF! zmGKDXP1CID$JC7JO~%taTbkxdZ-tYx9rL7L!93|*a9o13qz_?^^xHf~`Y7f|zXvDh z1I&{CI5124bDk&tCFV(=;+fKCc&_xfaE@rc^bY{dnf}T68BP<;oc_f)4_she#4PHI zaHxX#4YR6)2=1pf$)*@=5@hE*TO`ZpaE71xOcb5%M?Uip$N|M^BYemB7W23%Y8&B9 z0H-m-`&!UUc^p|FYjk~dg>*J~ee&vPZuqa58~!`b4i|76tt{t<=ZAw?h@;9E55$y@ zH7jyFd5R`q9r5dKhof4@yo+PVH-Z~W(c@d0Z4e2sBckHnhZuSBaEJTAMIHbLdMI4( zk#Nh$AokuwIPg>9(9cBFzIlk{w+L?ka>V{yjhKLIAq&<+9&Cb8covdj3!)EhM>N8n z5EFY4uW&!a#UY4{!-#H}4$<)eM@at^GURhaM?A^V(9a-#;`a!u_#=lrKM&bLlS?ik zAme4U-zK6p+6Wp>GeWXK;81|N91yz*2gIh(o|(g8$5^F+(m)xY zEKrUSYsErNl@A2PuE^m;Z^|Mpb`=#8yE=!%zLi5^%MjSLAkb<Pe{GqhYv)?4MfHb6j7rJX!JlK#=mRaKxeAzE!JP}!v`Yc1|s7I{_W!is!&z0 z^5m(%Iiw≻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 F{vWXF^=AM8 diff --git a/copper.h b/copper.h new file mode 100755 index 0000000..fbe485b --- /dev/null +++ b/copper.h @@ -0,0 +1,5 @@ +#ifndef _COPPER_H_ +#define _COPPER_H_ +init_copper(); +close_copper(); +#endif diff --git a/copper.o b/copper.o index 59b62a5e150668d5f91ce58752526ec02d6dd616..d315cdbee972b7b7e2e7ae5bf4ac068760acd309 100755 GIT binary patch delta 4459 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 delta 34 qcmX?Xy;5?5Jd;=6L`4b4a~rKR*)|vQ{$}1BCF#b*+Qr1cPyztVHVS_L diff --git a/makefile b/makefile index f01a098..bef0889 100755 --- a/makefile +++ b/makefile @@ -50,19 +50,10 @@ TARGET_OS = dos #EXMMTESTDIR=16$(DIRSEP)exmmtest$(DIRSEP) SRC=src$(DIRSEP) SRCLIB=$(SRC)lib$(DIRSEP) -JSMNLIB=$(SRCLIB)jsmn$(DIRSEP) -NYANLIB=$(SRCLIB)nyan$(DIRSEP) -#EXMMLIB=$(SRCLIB)exmm$(DIRSEP) -MODEXLIB=$(SRCLIB)modex16$(DIRSEP) -MODEXLIB_=$(SRCLIB)modex$(DIRSEP) -VGMSNDLIB=$(SRCLIB)vgmsnd$(DIRSEP) -DOSLIB=$(SRCLIB)doslib$(DIRSEP) -WCPULIB=$(SRCLIB)wcpu$(DIRSEP) AFLAGS=-mh -0 -d1 -16FLAGS=-fh=16.hed -BAKAPIFLAGS=-fh=bakapi.hed -SFLAGS=-sg -st -of+ -zu -zdf -zff -zgf -k55808#60000#32768 +PLZFLAGS=-fh=plzpart.hed +SFLAGS=-sg -st -of+ -zu -zdf -zff -zgf -k32768 DFLAGS=-DTARGET_MSDOS=16 -DMSDOS=1 $(SFLAGS) ZFLAGS=-zk0 -zq -zc -zp8# -zm CFLAGS=$(AFLAGS) $(IFLAGS)-lr -l=dos -wo##wwww @@ -70,17 +61,6 @@ OFLAGS=-obmiler -out -oh -ei -zp8 -fpi87 -onac -ol+ -ok####x FLAGS=$(CFLAGS) $(OFLAGS) $(DFLAGS) $(ZFLAGS) -DOSLIBEXMMOBJ = himemsys.$(OBJ) emm.$(OBJ) -VGMSNDOBJ = vgmSnd.$(OBJ) 16_snd.$(OBJ) -DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ) -16LIBOBJS = 16_in.$(OBJ) 16_mm.$(OBJ) wcpu.$(OBJ) 16_head.$(OBJ) 16_ca.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) timer.$(OBJ) -# -#3812intf.$(OBJ) -GFXLIBOBJS = modex16.$(OBJ) bitmap.$(OBJ) planar.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16render.$(OBJ) 16planar.$(OBJ) - -TESTEXEC = exmmtest.exe test.exe pcxtest.exe pcxtest2.exe test2.exe palettec.exe maptest.exe fmemtest.exe fonttest.exe fontgfx.exe scroll.exe vgmtest.exe inputest.exe palettel.exe planrpcx.exe -# tsthimem.exe -#testemm.exe testemm0.exe fonttes0.exe miditest.exe sega.exe sountest.exe EXEC = plzpart.exe all: $(EXEC) @@ -88,25 +68,31 @@ all: $(EXEC) # #game and bakapi executables # -16.exe: 16.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib - wcl $(FLAGS) $(16FLAGS) 16.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib -fm=16.map +plzpart.exe: plzpart.$(OBJ) copper.$(OBJ) asmyt.$(OBJ) tweak.$(OBJ) plz.$(OBJ) + wcl $(FLAGS) $(PLZFLAGS) plzpart.$(OBJ) copper.$(OBJ) asmyt.$(OBJ) tweak.$(OBJ) plz.$(OBJ) -fm=16.map # #executable's objects # -16.$(OBJ): $(SRC)16.h $(SRC)16.c - wcl $(FLAGS) -c $(SRC)16.c +plzpart.$(OBJ): plzpart.h plzpart.c + wcl $(FLAGS) -c plzpart.c # #non executable objects libraries # -16.lib: $(16LIBOBJS)# doslib.lib vgmsnd.lib - wlib -b -q $(16LIBOBJS) $(16LIBOBJS)# doslib.lib vgmsnd.lib +plz.$(OBJ): plz.h plz.c + wcl $(FLAGS) -c plz.c +copper.$(OBJ): copper.h copper.asm + wcl $(AFLAGS) -zcm=tasm -c copper.asm +tweak.$(OBJ): tweak.h tweak.asm + wcl $(AFLAGS) -zcm=tasm -c tweak.asm +asmyt.$(OBJ): asmyt.h asmyt.asm + wcl $(AFLAGS) -zcm=tasm -c asmyt.asm # #other~ # clean: .symbolic @$(REMOVECOMMAND) $(EXEC) - @$(REMOVECOMMAND) *.$(OBJ) + #@$(REMOVECOMMAND) *.$(OBJ) diff --git a/plz.o b/plz.o index 9de156e7b65df1fb5be076aeedd60c4f6c70243f..266fa9a1ca8863be6effb994d1486ac41bc8f5a7 100755 GIT binary patch literal 5155 zcmcIo3s{s@8vg$OpBuw)5fM?;v=q$?G6Q)F0}aNzXwdOeIS(oVa*+pyw4%b;jNh49 z+sx8tSGw4?>GtGWEkXw2B*XUC*0Q^~qmNlju9{D=>gKkw&A#UhAg-i6?X&RAf6jNl z?_A#Z`_6aH|5rs(>3kQJ)4-HS-N&tO)OQN$tYYn z_bS`7LiOp2MOUfvSJn(gue~c5&5i0aLr!_|ea?jZ12u6_`q6J-ALW`2rKP!L3HjrM z_NiAhuF#e`b1D)_%W@<6`p#H(j3(0Eo|&GZOP`fJOPQUOrDQM6GNjMBBlFHBCZKU- zXDrXoe8x!mX0uV2j@9U?>bp#7&kiH$Z_iwumHjbvbBRof6t=@e2GM4FA=ntANEUAB z;Ddk8+m1?RMY8QMkj{a*h6uCKp*rdFU1l-_;1@sH+9wi+SN&HWi6-B2v7)>GO zP)k^NF4^$B!L1e!`@L$yQrZ@-0)QPMbdC)|8Z)GjHR6sp2_v zW=hJfGp0|QI^~w+B%5_|!lVh~$Bm62ebcCsBZkEdi5)yBI%+^>;9QC6B$#I5EfFG2yKoJ&jQ%_561T$i&pmz!7|>&kM9bJ12& z;v_@i>U<1HCP$BcNZnhUmW(^q&+8*;7iT1E=^boY_-UegqS~W)v>J%2P<2fqY9xc& zX>HqS7pCfA^&=R#{VG(VWWz4MvLw}^#!mok%gISbM5VrE|+ZcA(Gm=)V{J z_oMzgGrs9gB7?)}EOnNV*}+}o%voKOi``IAWED@FcqWNwGJh6YDX*@9q$$LrMQRU1sNup6Hb8q8!b@Cuokd-6X9;QqS%reE!emk$!ABCW+4#dsmhxOD zg1-k)#r-KcXzXaQf4R_oMZ@TU^FkKZtMe zD)qAYD_1y?YXp8V!iB;a2dU0_O#PjDR7ll_3f2W^6qA%v=`Zp;PWQQ9Y+JeCul3nTa6r>>vSR} zk%VzLQz*};$7HdP&EJt!c@ArBK;ATvwXI1CVo|ZVyVQT~>`tFh2N#ar9lzC>*rDn; z&&~05gieVaNU!NK22j&=YUiAwDMqLcq*XS6h95gpW}lG)6%Ez^Cf)9tOPa(+W1ky* z5zL?sMdVFjV|)p0jAlhh&f<*Cfp9kz6;NzK{Q)RkT=4{imms_e;YJ=hPbxte91}oX z#_VqCg^Uch)#&yocJvRivDJPSz7AaO+i(rOFj2bfvY+kY*4@%gn8=*}HBn&k**+Yk zReE}SW!U4HL0%mj;~fM<;6S?taF+sZHsobMn8)E3!{9+QRKuVS2Css&{mk$vkAZo} z-2VrEx7yEfGP+#$b3G8ROUGsA+%18{=dMTmR!=Hv2EZ8%yh8zRIPgy5c#|N^g<>5P z1*jK6QOOmLfC%pUoge}S<fa*CE#kWE@iOQgG~M7o>Y(mnKwltXVz`Sh+-K*y!^bV4em3lc6j zaxq28r8HLFND1;Lnj_ywi{<-ijr;&TELYMaay5D6H|aI`xAcbGK#jP8G|30)efbcb zlHaDk%T1K7G*hke4*3-?rRm|{BI)^N$NS&BJYS9U90@6uGW4Wg8E(n z5$ucN&WVL{;^7>AWT(S(eD^MZqw*o&3;90Ch+ywis6T@`&g#cF^m;wE62EWYlCjm; z|K>ca&3^1LzRHzU7>jRS?Rd*o^XVl)r|-Yp5S!#?LtX4TkO|UoQoBQ^0+NY~1av zlPde{T8Y`(rs`a)PI89rpIt%lm1+5{KBM=N(4n$ZXzxj_u2smc;*hAdpR%^i@k}9+ zx5ohya`<%yB5qgqi+%P>kjYklChBoG^bE{}?s2=T zVpz#zBP|Tb;^6cVaQe+amc)@wNBkq^y;*?EW4;>D0bf&@@ep_PaU4EkNdf!C;GBHN zKXfsza&N1>GZm}q{L!oG8F_K{{auXQ8K~Hc6#hT6cFHrJv``=#3q<3AXcC;83)mYu zY#dBp7k*Deu@8+L>XW9*LzuSF5X(1JQ`!~Rk;Vnwbq%R>bBp@nRfv1GFArQ1Ydr~} zx;3qrwatO%sERj$jVn9d{#JYlnA4gr^LtEdI)q-!>cIL+f2;jG5stF+!KtsBGwA#M zN@B-i&&}jj;MGXL#a+Z_1*&AgW%yO0?Rm8ALEFpB_z6FL=ZCbPY&3H~hz^+t9b!(* zUW;rt9AgIX3U;*pq;#}@GoJPlc<7th!7;0y)%Np!kUn(2ISMbe&OoDh-npi+6_ZBn}SE9z0VzkMv!*0w7QA}as-_`0vRd4`h~4Oq7Z z;du)X&_#g01@bSM@uzhbl4P@E)yfrj-LvRD!dXz9E8d4?spl;@MiTF4v7)dI6-Cl8 zQ6!JxMWJ=1C~P;1B5AZJlH(=u25lV|EN$b1Wzxi8nVcZXLTh5MwAq4XQgX0Np2FAD z`+h!6qTSoTnZElw3DJCa7z|byXU9us!xMJGWw}eof9`5wG;K90X-!aCwR*>p=1wbdI$D$I7^5ATI#XxTMq4S{@0{hmfF^z3nS1~L zp7Wo3&iDO~bMLJQBIDurr_`kJ_VI z=RQExgb;xpDwQazHCmnC&){z~1&kXXG;z|D;E>R;@aYk=BBP>X=FFWR7jL#CCM~cg zrz~8wI5jmbZ3#Ql`86#qHFfc#g(=C_1xbk(b9~(VxpQKoqatTT%m@z)4GEqyX=2d$ zaRDZyzrjzh(`wYBs8aEng~@Lih9(BQOyXBuUhJ|lM-o5V)(VHMz**rSI@{JNrz5YFS*=Za76Lbw>~6!_WyHu0 zx8)VsnTgT1&6!tbM_X07i)c&oi||0AxApbw%Isy8b~I^iE|+vR zzKC1ie&C`@?3%6O&*QCUiD>?KU|j!1!k3-M>cR59-@Jn;YAWmxq^gb}D$2n)r&F~u zhiYUiRm%&hR#`%I@=B_g*HV4QI_f9qP(OuILq|UJVw^juzp|4WJ6^`vy*O(z{xHU$ z!1y;X{)ZTU8sp!=`5rahZZH#rjrq!zmtSf}dK8zM`PIU&iTs+xt|h#^#6nu!?L;_B ztgjQ&BwdlNpH-92KXzWf{ddlU^ttpmFSAz~Z`P|Bm(qiF73t@@@lsU1&fDB@vt2z} zhjz3M{b(JA(K?KSJKkwdBeIH`gIF(NJz`i?wjUL`^nYH4w~-GqUKAc@9;{q3OuFW4yH#%>1-ipPw zMs`b=q#L|_-(}U_$H7ANr=tyQ7swMv@|iWG&U~=>IU;N5BxO7(nnowfv2=Mdjr~AVE-oUPs6?y_CKegc@0)#VyO+{ zDqVR_p7yMU;GP7ycG)T%_VPk!o}+wjZ5k<`p^^6+ zVu_I#WANm#J8fh<7zDe{!hDojyUT^ZL>U!p4x35=>Zadpdzq3 zkPW%GtNn_2ygQ2gj@C4@$SMXeH#uv|`~ zmDP}&Ah$#AhODDHE zaP)u`0y!6Q5hMzk@&a@x^jhd|LT{zfRm{N~)b;CohI_|%jy`(-C7%xWS)Z>)A$;Uj zydrk(_5kuhpoN2V$~2%^0A!0GGa)yl%?bSgbmrI==x3-lk~vqWY51sJ+rQoaAH?Y> z*nRTjJcG*|8wyx6AkB~~AhRL20_Ka*4?{l+`6C*=(tVBy7c_kvZGYOZFzS(Lw=cQ9 zVboKIZkl#bwPpIzq z3}}^>C;cd7`eJ3_jOFjd@_i$k^V4`qy4+i&bO$}#L{)Hu6OA#u^eE*95l$q|FfdYmog$B zeew1#D^3Q~;E6yM4P^5m(;%}Tw?I|^<$ma|K}Rh<&eHX^&X-T0FwN*0(^sRD-^=8S z2!atS(N}&jmUw|humNx;08Tidp*ktKxMwwZ7xcq8Pvibw8r{lXRF3K4%n=#%*&lf= zt{F(YvGv~I*5&=Akz_%9Iwm>h0z5_a{ zu-pXKw?O`sM&Dt9oa5)+;}h=iXRxB=1GN7|;E6`VcNV_#!y_kmf3$cfR*x`mZ@!Lb zu()|Pk<~yp6=-51(}9qAwzL;5t4lwlx;lo^V31hl9qW0_fG_veCx_vP3wo*(EpN{_DH zYHH6U4hM?2k&^f#bD=+gv4Bm0WEJ;$=-UybF36*3`vKMMVKr!%|DZYh zXp|5&Lo4~{J#cPj^?tMGef&-GjWyOf^hv%gc*6GTi)PPYxMSdK6&WW6@?LXAWSWSNqP0&k3>m4;P3C43Q)E2UdS3-QV2xyT6*7Lx>Up zI4L-@0jU7qtAP$!%MS(P7nB;Gh&FtN4g7vOuOg;HXVBC8jY9^0LJ9bIbQPD``L7R^ z(Dx&0vcSL0gSoIwB1-D*b{SFfK?eD$z@>0!tr^#4eq&yF&`7 zdv%nrhY*tP#Nyn_61|Mg9nwI_TR^?SNRr9<1qG=^dKnrW5)2XzFCPM>1(2kHw(Dg? zP4qNj&ro1sXJR}*v8BFVg@KWQ!8Nq==?*rASqwmcMs&W3^*yaTN08wRM;PN7-Y}*! zLSf8j#KTycC-5*ZFtX+*X6D5MwM9)42XfhfEDi=91}+9cASuSc%OK5gwMU$RBR;vf p1nBE{2Cn#|%=Gx={FKyq2B8ivZia^WdHJcir55IUCTB3p0suL_VD$h1 delta 147 zcmbQw(#kwRojWyUX@?9$!^^4bTqg#KG9}NSxX*-LL!5z~iBV$W&w2-G21W*k9V`s9 z7=QplyaI7A%n@Wb!xF}LhBJ)m3||=Y8R0ON$rE@O7#LY|6EpMTfl8t#-)59n=U`}< lpPE~0VLrQq3&_k(EXlAi&p6is5>L*_Ov>=@Vq#z@0RY7dDX9Pe diff --git a/tweak.asm b/tweak.asm new file mode 100755 index 0000000..56af677 --- /dev/null +++ b/tweak.asm @@ -0,0 +1,349 @@ + IDEAL + MODEL huge + +CODESEG + +PUBLIC C tw_opengraph, C tw_putpixel, C tw_setpalette, C tw_setstart +PUBLIC C tw_pictovmem, C tw_closegraph, C tw_waitvr, C tw_setrgbpalette +PUBLIC C tw_clrscr, C tw_setpalarea, C tw_getpixel, C tw_opengraph2 + +PUBLIC C scr_seg ; videomuistin alku segmentti + +planetau db 1,2,4,8 +scr_seg dw 0a000h + +; avaa 320x200 tweak tilan, 4 sivua, 4 planea + +PROC tw_opengraph + + mov dx, 03c4h + mov ax, 0f02h + out dx, ax + mov dx, 0a000h + mov es, dx + xor di, di + xor ax, ax + mov cx, 8000h + rep stosw ; clear vmem + + mov dx, 3d4h + mov ax, 0209h + out dx, ax ; 134 y + + mov ax, 5013h + out dx, ax ; 640 wide + ret +ENDP + + +PROC tw_opengraph2 + + mov dx, 03c4h + mov ax, 0604h + out dx, ax ; chain4 off + + mov ax, 0f02h + out dx, ax + mov dx, 0a000h + mov es, dx + xor di, di + xor ax, ax + mov cx, 8000h + rep stosw ; clear vmem + + mov dx, 03d4h + mov ax, 0014h + out dx, ax ; crtc long off + + mov ax, 0e317h + out dx, ax ; crtc byte on + + mov ax, 0009h + out dx, ax ; 400 + + mov ax, 3013h + out dx, ax ; 384 wide + + ret +ENDP + + + +PROC tw_clrscr + + mov dx, 3c4h + mov ax, 0f02h + out dx, ax + mov dx, [cs:scr_seg] + mov es, dx + xor di, di + xor eax, eax + mov cx, 1000h + rep stosd ; clear vmem + + ret +ENDP + +PROC tw_closegraph + + mov ax, 03h + int 10h + + ret +ENDP + +; piirt„„ pisteen ruudulle + +PROC tw_putpixel + + ARG x:word, y:word, color:word + + push bp + mov bp, sp + + mov ax, [cs:scr_seg] + mov es, ax + + mov dx, 03c4h + mov bx, [x] + and bx, 03h + mov ah, [cs:planetau+bx] + mov al, 02h + out dx, ax ; select plane + + mov bx, [x] + shr bx, 2 + mov ax, [y] + shl ax, 4 + add bx, ax + shl ax, 1 + add bx, ax + shl ax, 2 + add bx, ax + + mov cx, [color] + mov [es:bx], cl + + pop bp + ret +ENDP + +PROC tw_getpixel + + ARG x:word, y:word + + push bp + mov bp, sp + + mov ax, [scr_seg] + mov es, ax + + mov dx, 03ceh + mov ax, [x] + and ax, 03h + mov ah, al + mov al, 04h + out dx, ax ; select plane + + mov ax, [y] + shl ax, 4 + mov bx, ax + shl ax, 1 + add bx, ax + shl ax, 2 + add bx, ax + mov ax, [x] + shr ax, 2 + add bx, ax + + xor ax, ax + mov al,[es:bx] + + pop bp + ret +ENDP +; vaihtaa koko paletin + +PROC tw_setpalette + + ARG pal:dword + + push bp + mov bp, sp + push si ds + + lds si,[pal] + cld + mov cx, 300h + mov dx, 03c8h + mov al, 0 + out dx, al + inc dx + + rep outsb + + pop ds si + pop bp + ret +ENDP + +PROC C tw_setpalarea + + ARG pal:dword, start:word, cnt:word + + push si ds + + lds si,[pal] + cld + mov cx, [cnt] + mov ax, cx + add cx, ax + add cx, ax + mov dx, 03c8h + mov ax, [start] + out dx, al + inc dx + + rep outsb + + pop ds si + ret +ENDP + +; asettaa videomuistin alun + +PROC tw_setstart + + ARG start:word + + push bp + mov bp,sp + + mov bx, [start] + mov dx, 03d4h + mov al, 0dh + mov ah, bl + out dx, ax + mov al, 0ch + mov ah, bh + out dx, ax + + pop bp + ret +ENDP + +; kopioi muistista unpacked 1bpl kuvan 4planen kuvaksi videomuistiin +; void tw_pictovmem(char far *pic, unsigned int vstart, unsigned int bytes); + +PROC tw_pictovmem + + ARG pic:dword,to:word,len:word + + push bp + mov bp,sp + push ds es si di + + mov es, [scr_seg] + mov di, [to] + lds si, [pic] + mov cx, [len] + + mov dx,03ceh + mov ax,4005h ; w-mode 0 + out dx,ax + + mov dx, 03c4h + mov al, 02h + mov ah, 1h + out dx, ax + shr cx, 2 +@@l1: + movsb + add si, 3 + loop @@l1 + + + lds si, [pic] + add si, 1d + mov di, [to] + mov cx, [len] + + mov ax, 0202h + out dx, ax + shr cx, 2 +@@l2: + movsb + add si, 3 + loop @@l2 + + + lds si, [pic] + add si, 2d + mov di, [to] + mov cx, [len] + + mov ax, 0402h + out dx, ax + shr cx, 2 +@@l3: + movsb + add si, 3 + loop @@l3 + + + lds si, [pic] + add si, 3d + mov di, [to] + mov cx, [len] + + mov ax, 0802h + out dx, ax + shr cx, 2 +@@l4: + movsb + add si, 3 + loop @@l4 + + pop di si es ds + pop bp + ret +ENDP + +PROC tw_waitvr + + mov dx, 03dah + +@@loop1: + in al, dx + test al, 08h + jnz @@loop1 + +@@loop2: + in al, dx + test al, 08h + jz @@loop2 + + ret +ENDP + + +PROC C tw_setrgbpalette + + ARG pal:word, r:word, g:word, b:word + + mov dx, 3c8h + mov ax, [pal] + out dx, al + + inc dx + mov ax, [r] + out dx, al + mov ax, [g] + out dx, al + mov ax, [b] + out dx, al + + ret +ENDP + +END diff --git a/tweak.h b/tweak.h new file mode 100755 index 0000000..5fe23be --- /dev/null +++ b/tweak.h @@ -0,0 +1,5 @@ +#ifndef _TWEAK_H_ +#define _TWEAK_H_ +void tw_opengraph2(); +void tw_setrgbpalette(); +#endif -- 2.39.5