From 76f1de9c221ab0399316bdd84f2d29bdc0605195 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Wed, 3 Aug 2016 11:11:29 -0500 Subject: [PATCH] cd ..cd .. --- plz.o | Bin 5374 -> 3400 bytes {plzpart => plzpart-gl}/vga.c | 10 +- plzpart/Makefile | 136 +++++++++++++++++-- plzpart/asmyt.c | 30 ++++- plzpart/asmyt.h | 18 +++ plzpart/common.h | 32 +++-- plzpart/copper.c | 246 ++++++---------------------------- plzpart/copper.h | 8 ++ plzpart/main.c | 21 ++- plzpart/opengl.c | 153 --------------------- plzpart/opengl.h | 4 - plzpart/plz.c | 165 ++++++++++++----------- plzpart/plz.h | 19 +++ plzpart/plzfill.c | 4 - plzpart/plzpart.c | 13 ++ plzpart/plzpart.exe | Bin 0 -> 25453 bytes plzpart/plzpart.h | 8 ++ plzpart/ptau.pre | 2 +- plzpart/tweak.c | 65 ++++++--- plzpart/tweak.h | 27 ++-- plzpart/types.h | 42 ++++++ plzpart/vect.c | 9 +- 22 files changed, 483 insertions(+), 529 deletions(-) rename {plzpart => plzpart-gl}/vga.c (97%) create mode 100755 plzpart/asmyt.h create mode 100755 plzpart/copper.h delete mode 100755 plzpart/opengl.c delete mode 100755 plzpart/opengl.h create mode 100755 plzpart/plz.h create mode 100755 plzpart/plzpart.c create mode 100755 plzpart/plzpart.exe create mode 100755 plzpart/plzpart.h create mode 100755 plzpart/types.h diff --git a/plz.o b/plz.o index 0e39801dfb938a4a2c3679d8adebaca0fbad1f47..2227ec0440b87fc8069076f22efc6ade78f6e8c2 100755 GIT binary patch literal 3400 zcma)94NP0t6+X}J`Pmp7^Am_6g#2Mbl40;q14&89A0Zu4S-`nj(kyQ#I5oq7Wjl?! zSt}8y!7FyHfZrQGUh;Y(;{Z@S)V&#@l5rvO4!Rw z(>&Sj^SS*N&mE>3IlDyljN8>=@r*OoU%pj;AYIiLbe*>N{B9GCY(YP?4nWx3w69*+ zx7)d!-_z2SLClW z6|O2SS+j0KY1zi|&08ugl~$YG@z~btnr+)3udUs&V<-L9vFDB*wY86L-&Rw-^)ZLt zX05bTY}s7Cv8;5%y0s<6s|rmk^H=2NWM>)lnYs+EMpO$tuTn9~T*0q&Ae@Egs4LJE z8%C!%fN9mVxZ!r z(|(`Ji&FRufS$2Vx!T-xQ7@hHyE@&tcDgGFVn?e7w*ak_S z*-bMe8Pl_SBepX9J3caCnz(K5^=Z>!UEyKdZL;%5?(Gq6ca(NKvWU6>>#3CO~lFVL?iDZ zns7bQPB!8A2tpzm;Z~xXbfbqcoo#EW;fv!yPQc9S-0nScu*U)!BO{E;RSB!Wfq-_Ocqxl6o0S-=Y{EZUIRmMlp#QwU!eSp zDE|`5UqboUaQ!+d${#oZ2HF6a&Op%RXU#!-3+Ip(JR^1c++9!mT|SRZ!rq`9CI))e zjLP9IK@LjdF8-%mvFY5wAeIH&5sz<}qm}67{!jY8Bi{>`?x(dz`tU0**&s^WNGFaR zeQIJfJJpqkBlEqtRY@V%n>X4=YbhW9tnqj2AoAzP$C0}@Yd9MRE_7#Hg!ef(-v>~2 zGa`hCkAj?u88u=?^Dv_Yn9)MaTqP-*+=;LMe!@>afo*XJ+vEsYGkJ`xm0QW$a2Mgi zA+m1rIkFyGV}1AnSrfiUHiR#eQu#O7D!(V@FXrbkPkbE@s#&?Cju*S#g zVAH+x*v8b4WrhA}jpI6HGhOQQ(oK?ar0J*jWopdYXXB!n7Id2M1DT~B9UHcS%n`G^ z22qCCiD*Pfh*O9&h(3&T0O^Z}5n_(hSK;$i#1A?ASt_7()^ZM8BO$k_s!K_A@5nB-rh$j(85FQM;8|gEM3y2}abz-ikr5@x{ zr9z{NDz&7NOWAYdq8>wG#eQYW2UB<13sH5GjoC&ISc~@kB$=m#mXfpwYD?#+%yRef zqStTda0ST8s5fCm+cC;rNDm^OLeOY?5wy&26Z5}mnHz+JP25v?i@$x&Y<`$1enM-f$cB~Oz`T8DxT_%!!lgvi4q>Z7!S>qq!eGD0k3HtDp(7ZMN z_3&!I^VW1H<`6_>mR z6>#iBYGTAz#E89^5l0Cn9oDss*w!;*FJ;70#<4q+wOpaL%?h=DPoWMAqaD^Nh1zTi zwL28**h>9L-N0%%xICx_PMx^h0en9u0^V}~oP&9Im05hf12{Th#4BH*)8+Nzx2g?4 gL;dvsq08>h(>2wv_Umxi=?Z#kssj_}RRF>N0r*v+Jpcdz literal 5374 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 V{5zVkKF66iVSL_)+Yt25e*>|^b!q?r diff --git a/plzpart/vga.c b/plzpart-gl/vga.c similarity index 97% rename from plzpart/vga.c rename to plzpart-gl/vga.c index 28b91b6..f817e25 100755 --- a/plzpart/vga.c +++ b/plzpart-gl/vga.c @@ -84,17 +84,17 @@ void vga_show_framebuffer() { int x, y; + int nFirstLineIndex = line_compare + 1; + + // Plot the palettised frame buffer. + unsigned int *ptr = fb; + // Clear the screen. memset(image, 0, FRAME_BUFFER_WIDTH * FRAME_BUFFER_HEIGHT * 3); copper1(); copper2(); - int nFirstLineIndex = (line_compare + 1); - - // Plot the palettised frame buffer. - uint8_t *ptr = fb; - for (y = nFirstLineIndex; y < SCREEN_HEIGHT; y++) { for (x = 0; x < SCREEN_WIDTH; x++) { //ASSERT(x + hscroll_offset < FRAME_BUFFER_WIDTH); diff --git a/plzpart/Makefile b/plzpart/Makefile index ab5b059..e70bb5b 100755 --- a/plzpart/Makefile +++ b/plzpart/Makefile @@ -1,21 +1,133 @@ +# +# Higanbana Project makefile +# +# +# Possible optimizations for 8088 class processors +# +# -oa Relax alias checking +# -ob Try to generate straight line code +# -oe - expand user functions inline (-oe=20 is default, adds lots of code) +# -oh Enable repeated optimizations +# -oi generate certain lib funcs inline +# -oi+ Set max inline depth (C++ only, use -oi for C) +# -ok Flowing of register save into function flow graph +# -ol loop optimizations +# -ol+ loop optimizations plus unrolling +# -or Reorder for pipelined (486+ procs); not sure if good to use +# -os Favor space over time +# -ot Favor time over space +# -ei Allocate an "int" for all enum types +# -zp2 Allow compiler to add padding to structs +# -zpw Use with above; make sure you are warning free! +# -0 8088/8086 class code generation +# -s disable stack overflow checking -PLZPART_OBJS = plz.o copper.o asmyt.o tweak.o vect.o vga.o opengl.o \ - plza.o plzfill.o sinit.o spline.o main.o +# -zk0u translate kanji to unicode... wwww +# -zk0 kanji support~ +# -zkl current codepage -PLZPART_PATH = plzpart +#%.C +#192x144 +#wwww will add these +!ifdef __LINUX__ +REMOVECOMMAND=rm -f +COPYCOMMAND=cp -f +DIRSEP=/ +OBJ=o +!else +REMOVECOMMAND=del +COPYCOMMAND=copy /y +DIRSEP=\ +OBJ=obj +!endif +#!ifndef INCLUDE +#IN=..$(DIRSEP)..$(DIRSEP)fdos$(DIRSEP)watcom2$(DIRSEP)h +#IFLAGS=-i=$(IN) +#!endif -PLZPART_PATH_OBJS = $(addprefix $(PLZPART_PATH)/,$(PLZPART_OBJS)) +TARGET_OS = dos -PLZPART_BIN = plzpart +#EXMMTESTDIR=16$(DIRSEP)exmmtest$(DIRSEP) +SRC=src$(DIRSEP) +SRCLIB=$(SRC)lib$(DIRSEP) -OBJS += $(PLZPART_PATH_OBJS) +AFLAGS=-mh -0 -d1 -e=65536 +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 +OFLAGS=-obmiler -out -oh -ei -zp8 -fpi87 -onac -ol+ -ok####x +FLAGS=$(CFLAGS) $(OFLAGS) $(DFLAGS) $(ZFLAGS) -default-plzpart: - $(MAKE) -C .. plzpart-all -plzpart-all: $(PLZPART_PATH)/$(PLZPART_BIN) +EXEC = plzpart.exe +OBJS = copper.$(OBJ) tweak.$(OBJ) plz.$(OBJ) asmyt.$(OBJ) -$(PLZPART_PATH)/$(PLZPART_BIN): $(PLZPART_PATH_OBJS) - $(LD) -o $@ $(LDFLAGS) $(PLZPART_PATH_OBJS) $(LIBS) +all: $(EXEC) -plz.c: tweak.h ptau.pre +# +#game and bakapi executables +# +plzpart.exe: plzpart.$(OBJ) $(OBJS) + wcl $(FLAGS) $(PLZFLAGS) plzpart.$(OBJ) $(OBJS) -fm=plzpart.map + + +# +#executable's objects +# +plzpart.$(OBJ): plzpart.h plzpart.c + wcl $(FLAGS) -c plzpart.c + +# +#non executable objects libraries +# +plz.$(OBJ): plz.h plz.c + wcl $(FLAGS) -c plz.c +tweak.$(OBJ): tweak.h tweak.c + wcl $(FLAGS) -c tweak.c +asmyt.$(OBJ): asmyt.h asmyt.c + wcl $(FLAGS) -c asmyt.c +copper.$(OBJ): copper.h copper.c + wcl $(FLAGS) -c copper.c + + +# +#other~ +# +clean: .symbolic + @$(REMOVECOMMAND) $(EXEC) +# @$(REMOVECOMMAND) *.$(OBJ) + @$(REMOVECOMMAND) *.o + +# +# PLZPART_OBJS = plz.o copper.o asmyt.o tweak.o vect.o vga.o opengl.o \ +# plza.o plzfill.o sinit.o spline.o main.o +# +# PLZPART_PATH = plzpart +# +# PLZPART_PATH_OBJS = $(addprefix $(PLZPART_PATH)/,$(PLZPART_OBJS)) +# +# PLZPART_BIN = plzpart +# +# OBJS += $(PLZPART_PATH_OBJS) +# +# default-plzpart: +# $(MAKE) -C .. plzpart-all +# +# plzpart-all: $(PLZPART_PATH)/$(PLZPART_BIN) +# +# $(PLZPART_PATH)/$(PLZPART_BIN): $(PLZPART_PATH_OBJS) +# $(LD) -o $@ $(LDFLAGS) $(PLZPART_PATH_OBJS) $(LIBS) +# +# plz.c: tweak.h ptau.pre +asmyt.c +copper.c +main.c +plza.c +plz.c +plzfill.c +sinit.c +spline.c +tweak.c +vect.c diff --git a/plzpart/asmyt.c b/plzpart/asmyt.c index 041eb79..d844747 100755 --- a/plzpart/asmyt.c +++ b/plzpart/asmyt.c @@ -28,7 +28,7 @@ int plzline(int y, int vseg) }; uint8_t ah = 0; uint8_t al = 0; - uint32_t eax = 0; + uint16_t eax = 0; int i; for (i = 0; i < 84; i++) { @@ -68,12 +68,15 @@ int plzline(int y, int vseg) if ((ccc & 3) == 2) { eax = (ah << 8) | al; - eax <<= 16; + eax <<= 8; } if ((ccc & 3) == 0) { eax |= (ah << 8) | al; - vga_write32(nVgaYOffset + ccc, eax); +// vga_write32(nVgaYOffset + ccc, eax); + __asm { + mov [es:ccc], ax + } } } @@ -103,9 +106,22 @@ int setplzparas(int c1, int c2, int c3, int c4) return 0; } -int set_plzstart(int y) +word set_plzstart(word start) { - vga_set_line_compare(y); - - return 0; +__asm{ + mov dx, 3d4h + mov al, 18h ; linecompare + mov ah, [Byte PTR start] + out dx, ax + mov al, 07h + mov ah, [Byte PTR start+1] + shl ah, 1d + shl ah, 1d + shl ah, 1d + shl ah, 1d + and ah, 10h + or ah, 0fh + out dx, ax ; 8th bit +} + return start; } diff --git a/plzpart/asmyt.h b/plzpart/asmyt.h new file mode 100755 index 0000000..2f6065a --- /dev/null +++ b/plzpart/asmyt.h @@ -0,0 +1,18 @@ +#ifndef _ASMYT_H_ +#define _ASMYT_H_ +#include "types.h" +word anSelfModifyOffsets_ReadWord(word nOffset); +void anSelfModifyOffsets_WriteWord(word nOffset, word nValue); +int plzline(int y, int vseg); +int setplzparas(int c1, int c2, int c3, int c4); +word set_plzstart(word start); +inline word lsini16_GetOffset() +{ + return 16384 + (8192 * 2); +} + +inline word lsini4_GetOffset() +{ + return 16384; +} +#endif diff --git a/plzpart/common.h b/plzpart/common.h index 7603c7e..1ddb500 100755 --- a/plzpart/common.h +++ b/plzpart/common.h @@ -1,21 +1,30 @@ - +#ifndef _C_H_ +#define _C_H_ +#include #include - +#include +#include +#include +#include +#include +#include +#include +#include "types.h" uint16_t psini_read16(int); uint8_t psini_read8(int); void psini_write16(int, uint16_t); void psini_write8(int, uint8_t); -void vga_select_bitplanes_02(void); -void vga_select_bitplanes_13(void); -void vga_select_bitplanes_0123(void); -void vga_write32(int, int); -void vga_set_line_compare(int); -void vga_set_palette_entry(int, int, int, int); -void vga_show_framebuffer(void); -void vga_set_hscroll_offset(int); -void vga_upload_palette(uint8_t *); +// void vga_select_bitplanes_02(void); +// void vga_select_bitplanes_13(void); +// void vga_select_bitplanes_0123(void); +// void vga_write32(int, int); +// void vga_set_line_compare(int); +// void vga_set_palette_entry(int, int, int, int); +// void vga_show_framebuffer(void); +// void vga_set_hscroll_offset(int); +// void vga_upload_palette(uint8_t *); void initvect(void); @@ -23,3 +32,4 @@ int init_copper(void); int close_copper(void); void copper1(void); void copper2(void); +#endif diff --git a/plzpart/copper.c b/plzpart/copper.c index 836fa7e..9cb3c39 100755 --- a/plzpart/copper.c +++ b/plzpart/copper.c @@ -1,204 +1,42 @@ -/* - * Written by Nick Kovac with minor changes by Claudio Matsuoka - */ - -#include "common.h" - -int frame_count = 0; -int cop_drop = 0; -uint8_t *cop_pal; -int do_pal = 0; -int cop_start = 0; -int cop_scrl = 0; -int cop_plz = 1; - -static int dtau[65]; - -uint8_t fadepal[768 * 2]; -uint8_t *cop_fadepal; - -extern int l1, l2, l3, l4; -extern int k1, k2, k3, k4; -extern int il1, il2, il3, il4; -extern int ik1, ik2, ik3, ik4; -extern int ttptr; - - -void pompota(void); -void moveplz(void); -void do_drop(void); -void initpparas(void); - - -int init_copper() -{ - int ccc; - - for (ccc = 0; ccc < 65; ccc++) { - dtau[ccc] = ccc * ccc / 4 * 43 / 128 + 60; - } - - return 0; -} - -int close_copper() -{ - return 0; -} - -// [nk] just before retrace -void copper1() -{ - // There is also assembly code to set the first pixel of - // display memory here, but it may not be necessary. - - vga_set_hscroll_offset(cop_scrl); -} - -// [nk] in retrace -void copper2() -{ - // [nk] Don't think this is used. - frame_count++; - - if (do_pal != 0) { - do_pal = 0; - vga_upload_palette(cop_pal); - } - - pompota(); - moveplz(); - - if (cop_drop != 0) - { - do_drop(); - } -} - -void pompota() -{ - - // [NK 18/1/2014] Disable this for now, as it looks a bit jittery. - return; - -#if 0 - // [NK] This function toggles the horizontal split point every frame - // [NK] between line 60 and 61, and toggles the horizontal offset between 0 and 4. - // [NK] I think the original intention of this code was to give more variation - // [NK] cheaply, almost like a cheap alpha blend between two plasmas, but - // [NK] it seems to cause a lot of flicker in the port. Perhaps more precise timing is - // [NK] required to give the original effect? In any case I disabled this code - // [NK] temporarily. - - vga_set_line_compare(60); - cop_scrl = 4; - - pompi++; - - if ((pompi & 1) != 0) - { - // [NK 12/1/2014] Moving the starting line up and down each alternate frame - // [NK 12/1/2014] doesn't look good in windowed mode. - // [NK 13/1/2014] Seems to work okay in fullscreen mode though. - vga_set_line_compare(61); - cop_scrl = 0; - } -#endif -} - -void moveplz() -{ - k1 += -3; - k1 &= 4095; - k2 += -2; - k2 &= 4095; - k3 += 1; - k3 &= 4095; - k4 += 2; - k4 &= 4095; - - l1 += -1; - l1 &= 4095; - l2 += -2; - l2 &= 4095; - l3 += 2; - l3 &= 4095; - l4 += 3; - l4 &= 4095; -} - -void do_drop() -{ - cop_drop++; - - if (cop_drop <= 64) { - vga_set_line_compare(dtau[cop_drop]); - } else { - //@@over - - int bShouldFade = 0; - - if (cop_drop >= 256) { - } else if (cop_drop >= 128) { - bShouldFade = 1; - } else if (cop_drop > 96) { - } else /*if (cop_drop > 64) */{ - bShouldFade = 1; - } - - if (bShouldFade) { - cop_pal = fadepal; - do_pal = 1; - - if (cop_drop == 65) { - vga_set_line_compare(400); - initpparas(); - } else { - int i, ccc; - - vga_set_line_compare(60); - - // [NK 9/1/2014] Fade the palette using 8.8 fixed point numbers. - - uint8_t* pcop_fadepal = cop_fadepal; - uint8_t* pfadepal = fadepal; - - for (i = 0; i < (768 / 16); i++) { - for (ccc = 0; ccc < 16; ccc++) { - uint8_t al = pcop_fadepal[ccc*2]; - uint8_t ah = pcop_fadepal[(ccc*2) + 1]; - - uint8_t oldval = pfadepal[ccc + 768]; - pfadepal[ccc + 768] += al; - uint8_t newval = pfadepal[ccc + 768]; - uint8_t carry = 0; - if (newval < oldval) { - carry = 1; - } - - pfadepal[ccc] += ah + carry; - } - - pcop_fadepal += 32; - pfadepal += 16; - } - } - } else { - cop_drop = 0; - } - } -} - -void initpparas() -{ - l1 = il1; - l2 = il2; - l3 = il3; - l4 = il4; - - k1 = ik1; - k2 = ik2; - k3 = ik3; - k4 = ik4; -} - +#include "copper.h" + +int far cop_drop; +int far cop_plz; +int far cop_start; +char far * cop_fadepal; +char fadepal[768]; +char far *cop_pal; + +word dtau[66]; + +int init_copper() +{ + word ccc; + for (ccc = 0; ccc < 65; ccc++) + { + dtau[ccc] = floor(ccc * ccc / 4 * 43 / 128 + 60); + } + return 0; +} + +int close_copper() +{ +__asm{ + mov bx,7 + mov ax,0 + mov cx,0 + mov dx,0 + int 0fcH + mov bx,7 + mov ax,1 + mov cx,0 + mov dx,0 + int 0fcH + mov bx,7 + mov ax,2 + mov cx,0 + mov dx,0 + int 0fcH +} + return 0; +} diff --git a/plzpart/copper.h b/plzpart/copper.h new file mode 100755 index 0000000..13a745e --- /dev/null +++ b/plzpart/copper.h @@ -0,0 +1,8 @@ +#ifndef _COPPER_H_ +#define _COPPER_H_ +#include +#include "types.h" + +int init_copper(); +int close_copper(); +#endif diff --git a/plzpart/main.c b/plzpart/main.c index 5bf875e..b9d9709 100755 --- a/plzpart/main.c +++ b/plzpart/main.c @@ -1,22 +1,21 @@ -#include -#include "../dis/dis.h" -#include "graphics.h" -#include "opengl.h" +//#include "../dis/dis.h" +//#include "graphics.h" +//#include "opengl.h" #include "common.h" extern void plz(); extern void vect(); int main(int argc, char **argv) { - int a = adjust_framerate(); - dis_partstart(); +// int a = adjust_framerate(); +// dis_partstart(); - if (init_graphics("Plzpart", argc, argv) < 0) { - fprintf(stderr, "Can't init graphics\n"); - return -1; - }; +// if (init_graphics("Plzpart", argc, argv) < 0) { +// fprintf(stderr, "Can't init graphics\n"); +// return -1; +// }; - init_opengl(); +// init_opengl(); init_copper(); initvect(); plz(); diff --git a/plzpart/opengl.c b/plzpart/opengl.c deleted file mode 100755 index f8eca9b..0000000 --- a/plzpart/opengl.c +++ /dev/null @@ -1,153 +0,0 @@ -#include -#include -#include -#include -#include -#include "u2gl.h" -#include "opengl.h" - -static int view_width; -static int view_height; - -static struct u2gl_program bg_program; - -float obj[9]; - -float bg_obj[12] = { - 0.0f, 0.0f, 0.0f, - 320.0f, 0.0f, 0.0f, - 0.0f, 200.0f, 0.0f, - 320.0f, 200.0f, 0.0f -}; - -static const char vertex_shader_texture[] = -"uniform mat4 pMatrix;\n" -"uniform mat4 uMatrix;\n" -"attribute vec4 aPosition;\n" -"varying vec3 vPosition;\n" -"attribute vec2 aTexPosition;\n" -"varying vec2 vTexPosition;\n" -"\n" -"void main() {\n" -" mat4 Matrix = pMatrix * uMatrix;\n" -" vec4 position = Matrix * aPosition;\n" -" gl_Position = position;\n" -" vTexPosition = aTexPosition;\n" -" vPosition = vec3(position);\n" -"}\n"; - -static const char fragment_shader_texture[] = -"precision mediump float;\n" -"uniform sampler2D uTexture;\n" -"uniform vec4 uColor;\n" -"varying vec3 vPosition;\n" -"varying vec2 vTexPosition;\n" -"\n" -"void main() {\n" -" gl_FragColor = texture2D(uTexture, vTexPosition);\n" -"}\n"; - - -int uTime_location; -int uPos_location; -int uTexPos_location; -int uRadius_location; -int uLensTex_location; -int uRotTex_location; - -static float tex_coords[] = { - 0.0f, 1.0f, - 1.0f, 1.0f, - 0.0f, 0.0f, - 1.0f, 0.0f -}; - -static float color[256][4]; - -unsigned char *image; - - -#define CC 32 - -void setrgb(int c, int r, int g, int b) -{ - float alpha = 0.5f; - - color[c][0] = (float)r / CC; - color[c][1] = (float)g / CC; - color[c][2] = (float)b / CC; - color[c][3] = alpha; -} - -void getrgb(int c, char *p) -{ - p[0] = color[c][0] * CC; - p[1] = color[c][1] * CC; - p[2] = color[c][2] * CC; -} - -void draw_bg() -{ - //glActiveTexture(GL_TEXTURE0); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 320, 400, GL_RGB, - GL_UNSIGNED_BYTE, image); - glUseProgram(bg_program.program); - u2gl_draw_textured_triangle_strip(&bg_program, bg_obj, 4); -} - -static void init_texture() -{ - GLuint tex[3]; - - u2gl_set_tex_coords(tex_coords); - - glGenTextures(1, tex); - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, tex[0]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - image = calloc(3, 320 * 400); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 320, 400, 0, GL_RGB, - GL_UNSIGNED_BYTE, image); - glGenerateMipmap(GL_TEXTURE_2D); - u2gl_check_error("init_texture 1"); -} - - -int init_opengl() -{ - GLuint v, f; - - view_width = 320; - view_height = 200; - - v = u2gl_compile_vertex_shader(vertex_shader_texture); - f = u2gl_compile_fragment_shader(fragment_shader_texture); - u2gl_create_program(&bg_program, f, v); - u2gl_check_error("create program bg"); - - glDisable(GL_DEPTH_TEST); - glEnable(GL_BLEND); - - //glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glClearColor(.0, .0, .0, 0); - u2gl_check_error("init_opengl"); - - init_texture(); - u2gl_check_error("init_texture"); - - u2gl_projection(0, view_width, 0, view_height, &bg_program); - - return 0; -} - -void clear_screen() -{ - glClear(GL_COLOR_BUFFER_BIT); -} diff --git a/plzpart/opengl.h b/plzpart/opengl.h deleted file mode 100755 index 1ee399c..0000000 --- a/plzpart/opengl.h +++ /dev/null @@ -1,4 +0,0 @@ - -int init_opengl(void); -void clear_screen(void); -void draw_bg(void); diff --git a/plzpart/plz.c b/plzpart/plz.c index 085fa8d..e6a2b9c 100755 --- a/plzpart/plz.c +++ b/plzpart/plz.c @@ -1,17 +1,12 @@ #include -#include -#include #include -//#include -//#include -#include "tweak.h" -#include "../dis/dis.h" -#include "opengl.h" -#include "graphics.h" -#include "common.h" +#include +#include +#include "plz.h" +//#include "tweak.h" -#define DO_TABLES -#define DPII (3.1415926535*2.0) +//#define DO_TABLES +//#define DPII (3.1415926535*2.0) #define LINELEN 41 #define MAXY 280 @@ -20,27 +15,24 @@ #define SINMASK 4095 #define PLZSINI(p1,p2,p3,p4) *ptr++ = (psini[x*32+lsini[y*2+p2]*16+p1] + psini[y*4+lsini[x*64+p4]*4+p3]) + (psini[x*32+16+lsini[y*2+p2]*16+p1] + psini[y*4+lsini[x*64+32+p4]*4+p3])*256; -extern int init_copper(); -extern int close_copper(); -extern int far frame_count; +// extern int init_copper(); +// extern int close_copper(); +//extern int far frame_count; +int far frame_count; extern int far cop_drop; extern int far cop_plz; extern int far cop_start; -extern char far * far cop_fadepal; -extern char far fadepal[768]; -extern far char * far cop_pal; -extern far int do_pal; - -extern int plzline(int y, int vseg); -extern int setplzparas(int c1, int c2, int c3, int c4); -extern int set_plzstart(int y); -//extern char far psini[16384]; -//extern int far lsini4[8192]; -//extern int far lsini16[8192]; - -unsigned char *psini; -short *lsini4; -short *lsini16; +extern char far * cop_fadepal; +extern char fadepal[768]; +extern char far *cop_pal; +extern int do_pal; + +//extern int plzline(int y, int vseg); +//extern int setplzparas(int c1, int c2, int c3, int c4); +//extern int set_plzstart(int y); +extern char far psini[16384]; +extern int far lsini4[8192]; +extern int far lsini16[8192]; //int (* vmem)[LINELEN]=MK_FP(0x0a000,0); //char psini[16384]= @@ -48,12 +40,10 @@ short *lsini16; //char lsini[16384]= //#include "lsini.pre" -void init_plz(void); - char ptau[256]= #include "ptau.pre" -int16_t pals[6][768]; +int pals[6][768]; int curpal=0; int timetable[10]={64*6*2-45,64*6*4-45,64*6*5-45,64*6*6-45,64*6*7+90,0}; int ttptr=0; @@ -71,35 +61,28 @@ int inittable[10][8]={{1000,2000,3000,4000,3500,2300,3900,3670}, {1000,2000,3000,4000,3500,2300,3900,3670}, {1000,2000,3000,4000,3500,2300,3900,3670}}; -int fixme_dis_getmframe() -{ - static int s_nResult = 0; - s_nResult++; - return s_nResult; -} - void plz(){ - register int /*x,*/y; - //int *ptr; + register int x,y; + int *ptr; long tim=0,count=0; - //int ch=0,sync=2; + int ch=0,sync=2; - while(dis_musplus()<0 && !dis_exit()); - dis_setmframe(0); + //while(dis_musplus()<0 && !dis_exit()); + //dis_setmframe(0); init_plz(); cop_drop=128; - cop_fadepal=(char *)pals[curpal++]; + cop_fadepal=(char far *)pals[curpal++]; frame_count=0; - while(!dis_exit()) + while(!kbhit()) { tim+=frame_count; frame_count=0; count++; - if(fixme_dis_getmframe()>timetable[ttptr]) - { + //if(dis_getmframe()>timetable[ttptr]) + // { memset(fadepal,0,768); cop_drop=1; - cop_fadepal=(char *)pals[curpal++]; + cop_fadepal=(char far *)pals[curpal++]; ttptr++; il1=inittable[ttptr][0]; il2=inittable[ttptr][1]; @@ -109,40 +92,37 @@ void plz(){ ik2=inittable[ttptr][5]; ik3=inittable[ttptr][6]; ik4=inittable[ttptr][7]; - } + // } if(curpal==5 && cop_drop>64) break; - // [nk] VGA: select bit planes 0,2 (?) - //asm mov dx, 3c4h - //asm mov ax, 0a02h - //asm out dx, ax - - vga_select_bitplanes_02(); + __asm + { + mov dx, 3c4h + mov ax, 0a02h + out dx, ax + } setplzparas(k1,k2,k3,k4); for(y=0;y -//#include -//#include -#include #include "tweak.h" extern far void do_line(char far *to, int dx, int dy, int cnt, char far *from, long txx1, long txy1, long txx2, long txy2, int dseg); diff --git a/plzpart/plzpart.c b/plzpart/plzpart.c new file mode 100755 index 0000000..0f79e63 --- /dev/null +++ b/plzpart/plzpart.c @@ -0,0 +1,13 @@ +//#include "..\dis\dis.h" +#include "plzpart.h" + +//extern vect(); + +void main() { +// dis_partstart(); + init_copper(); +// initvect(); + plz(); +// vect(); + close_copper(); + } diff --git a/plzpart/plzpart.exe b/plzpart/plzpart.exe new file mode 100755 index 0000000000000000000000000000000000000000..153da2218fd33f974c6ed47e8cd968021c5b3531 GIT binary patch literal 25453 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 X=H&09tH9LlWaFAdik@AmlL`5M0|C0B literal 0 HcmV?d00001 diff --git a/plzpart/plzpart.h b/plzpart/plzpart.h new file mode 100755 index 0000000..09eda26 --- /dev/null +++ b/plzpart/plzpart.h @@ -0,0 +1,8 @@ +#ifndef _PLZPART_H_ +#define _PLZPART_H_ +#include "asmyt.h" +#include "tweak.h" +#include "copper.h" +#include "plz.h" + +#endif diff --git a/plzpart/ptau.pre b/plzpart/ptau.pre index b499506..daf5b1d 100755 --- a/plzpart/ptau.pre +++ b/plzpart/ptau.pre @@ -7,4 +7,4 @@ , 52, 51, 50, 49, 47, 46, 45, 43, 42, 40, 39, 38, 36, 35, 33, 32 , 30, 28, 27, 25, 24, 23, 21, 20, 18, 17, 16, 14, 13, 12, 11, 10 , 9, 8, 7, 6, 5, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1 -}; \ No newline at end of file +}; diff --git a/plzpart/tweak.c b/plzpart/tweak.c index de1808e..1bf6fad 100755 --- a/plzpart/tweak.c +++ b/plzpart/tweak.c @@ -1,15 +1,50 @@ -#include "common.h" -#include "tweak.h" - -void tw_opengraph() -{ -} - -void tw_opengraph2() -{ -} - -void tw_setrgbpalette(int pal, int r, int g, int b) -{ - vga_set_palette_entry(pal, r, g, b); -} +#include "tweak.h" + +void tw_opengraph2() +{ +__asm{ + 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 +} +} + +void tw_setrgbpalette(int a, int r, int g, int b) +{ + int i; +// modexWaitBorder(); + outp(PAL_WRITE_REG, a); /* start at the beginning of palette */ +// for(i=0; i, or + * write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +/* + * Just some handy typedefs that make it easier to think about the low + * level code + */ + +#ifndef _TYPE_H_ +#define _TYPE_H_ + +typedef unsigned char byte; +typedef unsigned short word; +typedef unsigned long dword; +typedef signed char sbyte; +typedef signed short sword; +typedef signed long sdword; + +typedef unsigned int iword; +typedef signed int siword; + +typedef enum {false,true} boolean; + +#endif/*_TYPE_H_*/ diff --git a/plzpart/vect.c b/plzpart/vect.c index 5a581f4..690605d 100755 --- a/plzpart/vect.c +++ b/plzpart/vect.c @@ -1,11 +1,6 @@ -#include -//#include -//#include -#include -//#include -#include +#include "common.h" #include "tweak.h" -#include "../dis/dis.h" +//#include "../dis/dis.h" #define SX sinit[kx] #define SY sinit[ky] -- 2.39.2