]> 4ch.mooo.com Git - plz.git/commitdiff
cd ..cd ..
authorsparky4 <sparky4@cock.li>
Wed, 3 Aug 2016 16:11:29 +0000 (11:11 -0500)
committersparky4 <sparky4@cock.li>
Wed, 3 Aug 2016 16:11:29 +0000 (11:11 -0500)
22 files changed:
plz.o
plzpart-gl/vga.c [moved from plzpart/vga.c with 97% similarity]
plzpart/Makefile
plzpart/asmyt.c
plzpart/asmyt.h [new file with mode: 0755]
plzpart/common.h
plzpart/copper.c
plzpart/copper.h [new file with mode: 0755]
plzpart/main.c
plzpart/opengl.c [deleted file]
plzpart/opengl.h [deleted file]
plzpart/plz.c
plzpart/plz.h [new file with mode: 0755]
plzpart/plzfill.c
plzpart/plzpart.c [new file with mode: 0755]
plzpart/plzpart.exe [new file with mode: 0755]
plzpart/plzpart.h [new file with mode: 0755]
plzpart/ptau.pre
plzpart/tweak.c
plzpart/tweak.h
plzpart/types.h [new file with mode: 0755]
plzpart/vect.c

diff --git a/plz.o b/plz.o
index 0e39801dfb938a4a2c3679d8adebaca0fbad1f47..2227ec0440b87fc8069076f22efc6ade78f6e8c2 100755 (executable)
Binary files a/plz.o and b/plz.o differ
similarity index 97%
rename from plzpart/vga.c
rename to plzpart-gl/vga.c
index 28b91b664c041db7f8bbebc5e0e472d12d4c1476..f817e25448e0d516cd3346198edc9cffe23e6e95 100755 (executable)
@@ -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);
index ab5b059f311bcf3bdc41b2daa9b2201dc0dd9009..e70bb5bb235f860ed4f0edcf16bf5ad30ff0355f 100755 (executable)
+#
+#      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
index 041eb79b46fd370301044c3940c95a8965c526be..d8447479a20927cf9c9ae4603dbfb9997d9c9827 100755 (executable)
@@ -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 (executable)
index 0000000..2f6065a
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef _ASMYT_H_\r
+#define _ASMYT_H_\r
+#include "types.h"\r
+word anSelfModifyOffsets_ReadWord(word nOffset);\r
+void anSelfModifyOffsets_WriteWord(word nOffset, word nValue);\r
+int plzline(int y, int vseg);\r
+int setplzparas(int c1, int c2, int c3, int c4);\r
+word set_plzstart(word start);\r
+inline word lsini16_GetOffset()\r
+{\r
+       return 16384 + (8192 * 2);\r
+}\r
+\r
+inline word lsini4_GetOffset()\r
+{\r
+       return 16384;\r
+}\r
+#endif\r
index 7603c7eae0197405b0971c1281d596aa2d4048a9..1ddb500816219431c6919f74304c8e040827941f 100755 (executable)
@@ -1,21 +1,30 @@
-
+#ifndef _C_H_
+#define _C_H_
+#include <stdio.h>
 #include <stdint.h>
-
+#include <stdlib.h>
+#include <conio.h>
+#include <string.h>
+#include <math.h>
+#include <dos.h>
+#include <io.h>
+#include <fcntl.h>
+#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
index 836fa7e5885a7d35efa455d7d3ca08c184fbb71e..9cb3c394f9d614239f1ed4759cbee8ab7f9fdd9a 100755 (executable)
-/*
- * 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"\r
+\r
+int far cop_drop;\r
+int far cop_plz;\r
+int far cop_start;\r
+char far * cop_fadepal;\r
+char fadepal[768];\r
+char far *cop_pal;\r
+\r
+word dtau[66];\r
+\r
+int init_copper()\r
+{\r
+       word ccc;\r
+       for (ccc = 0; ccc < 65; ccc++)\r
+       {\r
+               dtau[ccc] = floor(ccc * ccc / 4 * 43 / 128 + 60);\r
+       }\r
+       return 0;\r
+}\r
+\r
+int close_copper()\r
+{\r
+__asm{\r
+       mov             bx,7\r
+       mov             ax,0\r
+       mov             cx,0\r
+       mov             dx,0\r
+       int             0fcH\r
+       mov             bx,7\r
+       mov             ax,1\r
+       mov             cx,0\r
+       mov             dx,0\r
+       int             0fcH\r
+       mov             bx,7\r
+       mov             ax,2\r
+       mov             cx,0\r
+       mov             dx,0\r
+       int             0fcH\r
+}\r
+       return 0;\r
+}\r
diff --git a/plzpart/copper.h b/plzpart/copper.h
new file mode 100755 (executable)
index 0000000..13a745e
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef _COPPER_H_\r
+#define _COPPER_H_\r
+#include <math.h>\r
+#include "types.h"\r
+\r
+int init_copper();\r
+int close_copper();\r
+#endif\r
index 5bf875e5e852fc317bcf0c1a2b12699de7f63ebe..b9d97095748e49a46f42abe04aeadbdac87d6294 100755 (executable)
@@ -1,22 +1,21 @@
-#include <stdio.h>\r
-#include "../dis/dis.h"\r
-#include "graphics.h"\r
-#include "opengl.h"\r
+//#include "../dis/dis.h"\r
+//#include "graphics.h"\r
+//#include "opengl.h"\r
 #include "common.h"\r
 \r
 extern void plz();\r
 extern void vect();\r
 \r
 int main(int argc, char **argv)  {\r
-       int a = adjust_framerate();\r
-       dis_partstart();\r
+//     int a = adjust_framerate();\r
+//     dis_partstart();\r
 \r
-       if (init_graphics("Plzpart", argc, argv) < 0) {\r
-               fprintf(stderr, "Can't init graphics\n");\r
-               return -1;\r
-       };\r
+//     if (init_graphics("Plzpart", argc, argv) < 0) {\r
+//             fprintf(stderr, "Can't init graphics\n");\r
+//             return -1;\r
+//     };\r
 \r
-       init_opengl();\r
+//     init_opengl();\r
        init_copper();\r
        initvect();\r
        plz();\r
diff --git a/plzpart/opengl.c b/plzpart/opengl.c
deleted file mode 100755 (executable)
index f8eca9b..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GLES2/gl2.h>
-#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 (executable)
index 1ee399c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-int init_opengl(void);
-void clear_screen(void);
-void draw_bg(void);
index 085fa8d39f52273405b244e6347ab32b8bda58dd..e6a2b9cd222022f7ac1de5f324b4fb74e5d5cf0c 100755 (executable)
@@ -1,17 +1,12 @@
 #include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
 #include <math.h>\r
-//#include <conio.h>\r
-//#include <dos.h>\r
-#include "tweak.h"\r
-#include "../dis/dis.h"\r
-#include "opengl.h"\r
-#include "graphics.h"\r
-#include "common.h"\r
+#include <conio.h>\r
+#include <dos.h>\r
+#include "plz.h"\r
+//#include "tweak.h"\r
 \r
-#define DO_TABLES\r
-#define DPII (3.1415926535*2.0)\r
+//#define DO_TABLES\r
+//#define DPII (3.1415926535*2.0)\r
 \r
 #define LINELEN 41\r
 #define MAXY 280\r
 #define SINMASK 4095\r
 #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;\r
 \r
-extern int init_copper();\r
-extern int close_copper();\r
-extern int far frame_count;\r
+// extern int init_copper();\r
+// extern int close_copper();\r
+//extern int far frame_count;\r
+int far frame_count;\r
 extern int far cop_drop;\r
 extern int far cop_plz;\r
 extern int far cop_start;\r
-extern char far * far cop_fadepal;\r
-extern char far fadepal[768];\r
-extern  far char * far cop_pal;\r
-extern  far int do_pal;\r
-\r
-extern int plzline(int y, int vseg);\r
-extern int setplzparas(int c1, int c2, int c3, int c4);\r
-extern int set_plzstart(int y);\r
-//extern char far psini[16384];\r
-//extern int far lsini4[8192];\r
-//extern int far lsini16[8192];\r
-\r
-unsigned char *psini;\r
-short *lsini4;\r
-short *lsini16;\r
+extern char far * cop_fadepal;\r
+extern char fadepal[768];\r
+extern char far *cop_pal;\r
+extern int  do_pal;\r
+\r
+//extern int plzline(int y, int vseg);\r
+//extern int setplzparas(int c1, int c2, int c3, int c4);\r
+//extern int set_plzstart(int y);\r
+extern char far psini[16384];\r
+extern int far lsini4[8192];\r
+extern int far lsini16[8192];\r
 \r
 //int (* vmem)[LINELEN]=MK_FP(0x0a000,0);\r
 //char psini[16384]=\r
@@ -48,12 +40,10 @@ short *lsini16;
 //char lsini[16384]=\r
 //#include "lsini.pre"\r
 \r
-void init_plz(void);\r
-\r
 char   ptau[256]=\r
 #include "ptau.pre"\r
 \r
-int16_t        pals[6][768];\r
+int    pals[6][768];\r
 int    curpal=0;\r
 int    timetable[10]={64*6*2-45,64*6*4-45,64*6*5-45,64*6*6-45,64*6*7+90,0};\r
 int    ttptr=0;\r
@@ -71,35 +61,28 @@ int inittable[10][8]={{1000,2000,3000,4000,3500,2300,3900,3670},
                          {1000,2000,3000,4000,3500,2300,3900,3670},\r
                          {1000,2000,3000,4000,3500,2300,3900,3670}};\r
 \r
-int fixme_dis_getmframe()\r
-{\r
-        static int s_nResult = 0;\r
-        s_nResult++;\r
-        return s_nResult;\r
-}\r
-\r
 void plz(){\r
-       register int /*x,*/y;\r
-       //int   *ptr;\r
+       register int x,y;\r
+       int     *ptr;\r
        long    tim=0,count=0;\r
-       //int   ch=0,sync=2;\r
+       int     ch=0,sync=2;\r
 \r
-       while(dis_musplus()<0 && !dis_exit());\r
-       dis_setmframe(0);\r
+       //while(dis_musplus()<0 && !dis_exit());\r
+       //dis_setmframe(0);\r
 \r
        init_plz();\r
        cop_drop=128;\r
-       cop_fadepal=(char *)pals[curpal++];\r
+       cop_fadepal=(char far *)pals[curpal++];\r
 \r
        frame_count=0;\r
-       while(!dis_exit())\r
+       while(!kbhit())\r
                {\r
                tim+=frame_count; frame_count=0; count++;\r
-               if(fixme_dis_getmframe()>timetable[ttptr])\r
-                       {\r
+               //if(dis_getmframe()>timetable[ttptr])\r
+               //      {\r
                        memset(fadepal,0,768);\r
                        cop_drop=1;\r
-                       cop_fadepal=(char *)pals[curpal++];\r
+                       cop_fadepal=(char far *)pals[curpal++];\r
                        ttptr++;\r
                        il1=inittable[ttptr][0];\r
                        il2=inittable[ttptr][1];\r
@@ -109,40 +92,37 @@ void plz(){
                        ik2=inittable[ttptr][5];\r
                        ik3=inittable[ttptr][6];\r
                        ik4=inittable[ttptr][7];\r
-                       }\r
+               //      }\r
                if(curpal==5 && cop_drop>64) break;\r
 \r
-               // [nk] VGA: select bit planes 0,2 (?)\r
-               //asm   mov dx, 3c4h\r
-               //asm   mov ax, 0a02h\r
-               //asm   out dx, ax\r
-\r
-               vga_select_bitplanes_02();\r
+               __asm\r
+               {\r
+                       mov dx, 3c4h\r
+                       mov ax, 0a02h\r
+                       out dx, ax\r
+               }\r
 \r
                setplzparas(k1,k2,k3,k4);\r
                for(y=0;y<MAXY;y+=2)\r
-                       plzline(y,y*6+YADD*6);\r
+                       plzline(y,0x0a000+y*6+YADD*6);\r
                setplzparas(l1,l2,l3,l4);\r
                for(y=1;y<MAXY;y+=2)\r
-                       plzline(y,y*6+YADD*6);\r
+                       plzline(y,0x0a000+y*6+YADD*6);\r
 \r
-               // [nk] VGA: select bit planes 1,3 (?)\r
-               //asm   mov dx, 3c4h\r
-               //asm   mov ax, 0502h\r
-               //asm   out dx, ax\r
 \r
-               vga_select_bitplanes_13();\r
+               __asm\r
+               {\r
+                       mov dx, 3c4h\r
+                       mov ax, 0502h\r
+                       out dx, ax\r
+               }\r
 \r
                setplzparas(k1,k2,k3,k4);\r
                for(y=1;y<MAXY;y+=2)\r
-                       plzline(y,y*6+YADD*6);\r
+                       plzline(y,0x0a000+y*6+YADD*6);\r
                setplzparas(l1,l2,l3,l4);\r
                for(y=0;y<MAXY;y+=2)\r
-                       plzline(y,y*6+YADD*6);\r
-\r
-               vga_show_framebuffer();\r
-               draw_bg();\r
-               swap_buffers();\r
+                       plzline(y,0x0a000+y*6+YADD*6);\r
                }\r
        cop_drop=0; frame_count=0; //while(frame_count==0);\r
        set_plzstart(500);\r
@@ -151,14 +131,17 @@ void plz(){
 \r
 void init_plz()\r
        {\r
-       int     a/*,b,c,z*/;\r
-       int16_t *pptr=(int16_t *)pals;\r
+       int     a,b,c,z;\r
+       int     *pptr=pals;\r
 \r
-       psini = malloc(16384 + 2 * 8192 + 2 * 8192);\r
-       lsini4 = (short *)psini + 8192;\r
-       lsini16 = lsini4 + 8192;\r
-       \r
 #ifdef DO_TABLES\r
+       {\r
+       FILE    *f1,*f2,*f3,*f4;\r
+       f1=fopen("lsini4.inc","wb");\r
+       f2=fopen("lsini16.inc","wb");\r
+       f3=fopen("psini.inc","wb");\r
+       f4=fopen("ptau.inc","wb");\r
+\r
        for(a=0;a<1024*16;a++)\r
                {\r
                if(a<1024*8)\r
@@ -167,14 +150,36 @@ void init_plz()
                        lsini16[a]=(sin(a*DPII/4096)*55+sin(a*DPII/4096*4)*5+sin(a*DPII/4096*17)*3+64)*16;\r
                        }\r
                psini[a]=sin(a*DPII/4096)*55+sin(a*DPII/4096*6)*5+sin(a*DPII/4096*21)*4+64;\r
-       }\r
+               if((a&15)==0)\r
+                       {\r
+                       if(a<1024*8)\r
+                               {\r
+                               fprintf(f1,"\ndw        %4d",lsini4[a]);\r
+                               fprintf(f2,"\ndw        %4d",lsini16[a]);\r
+                               }\r
+                       fprintf(f3,"\ndb        %4d",psini[a]);\r
+                       }\r
+               else    {\r
+                       if(a<1024*8)\r
+                               {\r
+                               fprintf(f1,",%4d",lsini4[a]);\r
+                               fprintf(f2,",%4d",lsini16[a]);\r
+                               }\r
+                       fprintf(f3,",%4d",psini[a]);\r
+                       }\r
+               }\r
 \r
+       fprintf(f4,"{\n%d",ptau[0]=0);\r
        for(a=1;a<=128;a++)\r
-       {\r
-               ptau[a]=cos(a*DPII/128+3.1415926535)*31+32;\r
+               {\r
+               fprintf(f4,",%3d",ptau[a]=cos(a*DPII/128+3.1415926535)*31+32);\r
+               if(!(a&15)) fputc('\n',f4);\r
+               }\r
+       fputc('}',f4); fputc(';',f4);\r
+\r
+       fclose(f1); fclose(f2); fclose(f3); fclose(f4);\r
        }\r
 #endif\r
-\r
        tw_opengraph2();\r
        cop_start=96*(682-400);\r
        set_plzstart(60);\r
@@ -215,7 +220,7 @@ void init_plz()
        for(a=0;a<106;a++)*pptr++=0,*pptr++=0,*pptr++=0;\r
        for(a=0;a<75;a++) *pptr++=ptau[a*64/75]*8/10,*pptr++=ptau[a*64/75]*9/10,*pptr++=ptau[a*64/75];\r
 \r
-       pptr=&pals[0][0];\r
+       pptr=pals;\r
        for(a=0;a<768;a++,pptr++) *pptr=(*pptr-63)*2;\r
        for(a=768;a<768*5;a++,pptr++) *pptr*=8;\r
        }\r
diff --git a/plzpart/plz.h b/plzpart/plz.h
new file mode 100755 (executable)
index 0000000..beca7cd
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef _PLZ_H_\r
+#define _PLZ_H_\r
+#include "common.h"\r
+#include "asmyt.h"\r
+#include "copper.h"\r
+#include "tweak.h"\r
+#include "types.h"\r
+extern int setplzparas();\r
+extern int plzline();\r
+extern int init_copper();\r
+extern int close_copper();\r
+\r
+// extern void tw_opengraph2();\r
+//extern int\r
+// extern void tw_setrgbpalette();\r
+\r
+void init_plz();\r
+void plz();\r
+#endif\r
index aebac037305d743115d759ea18a988789709c9b6..78fdf3903a3ac2c6d56c04880b2434c7221c3876 100755 (executable)
@@ -1,7 +1,3 @@
-#include <stdio.h>\r
-//#include <conio.h>\r
-//#include <dos.h>\r
-#include <math.h>\r
 #include "tweak.h"\r
 \r
 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);\r
diff --git a/plzpart/plzpart.c b/plzpart/plzpart.c
new file mode 100755 (executable)
index 0000000..0f79e63
--- /dev/null
@@ -0,0 +1,13 @@
+//#include "..\dis\dis.h"\r
+#include "plzpart.h"\r
+\r
+//extern vect();\r
+\r
+void main()  {\r
+//     dis_partstart();\r
+       init_copper();\r
+//     initvect();\r
+       plz();\r
+//     vect();\r
+       close_copper();\r
+       }\r
diff --git a/plzpart/plzpart.exe b/plzpart/plzpart.exe
new file mode 100755 (executable)
index 0000000..153da22
Binary files /dev/null and b/plzpart/plzpart.exe differ
diff --git a/plzpart/plzpart.h b/plzpart/plzpart.h
new file mode 100755 (executable)
index 0000000..09eda26
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef _PLZPART_H_\r
+#define _PLZPART_H_\r
+#include "asmyt.h"\r
+#include "tweak.h"\r
+#include "copper.h"\r
+#include "plz.h"\r
+\r
+#endif\r
index b49950628c6d4c32c9ab147d7e84cee984cae597..daf5b1d7d6d14c91112a453ef690bdf078731ad8 100755 (executable)
@@ -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
+};
index de1808e2c8f45a79c7971b51f6b304802a38d518..1bf6fad37113c1dd9194b8b181224d049c9da320 100755 (executable)
@@ -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"\r
+\r
+void tw_opengraph2()\r
+{\r
+__asm{\r
+       mov     dx, 03c4h\r
+       mov     ax, 0604h\r
+       out     dx, ax                  ; chain4 off\r
+\r
+       mov     ax, 0f02h\r
+       out     dx, ax\r
+       mov     dx, 0a000h\r
+       mov     es, dx\r
+       xor     di, di\r
+       xor     ax, ax\r
+       mov     cx, 8000h\r
+       rep     stosw                   ; clear vmem\r
+\r
+       mov     dx, 03d4h\r
+       mov     ax, 0014h\r
+       out     dx, ax                  ; crtc long off\r
+\r
+       mov     ax, 0e317h\r
+       out     dx, ax                  ; crtc byte on\r
+\r
+       mov     ax, 0009h\r
+       out     dx, ax                  ; 400\r
+\r
+       mov     ax, 3013h\r
+       out     dx, ax                  ; 384 wide\r
+}\r
+}\r
+\r
+void tw_setrgbpalette(int a, int r, int g, int b)\r
+{\r
+       int i;\r
+//     modexWaitBorder();\r
+       outp(PAL_WRITE_REG, a);  /* start at the beginning of palette */\r
+//     for(i=0; i<PAL_SIZE/2; i++)\r
+//     {\r
+               outp(PAL_DATA_REG, r);\r
+               outp(PAL_DATA_REG, g);\r
+               outp(PAL_DATA_REG, b);\r
+//     }\r
+//     modexWaitBorder();        /* waits one retrace -- less flicker */\r
+//     for(; i<PAL_SIZE; i++)\r
+//     {\r
+//             outp(PAL_DATA_REG, p[(i)]);\r
+//     }\r
+}\r
index 5722bf1077f48bb58cc74f607353f92b00ed55e9..acc28d69ca183ca7ef18360ded89f1979096144c 100755 (executable)
@@ -1,17 +1,14 @@
-#define far\r
-#define MK_FP(x,y) ((void *)x)\r
-#define FP_SEG(x) (x)\r
+#ifndef _TWEAK_H_\r
+#define _TWEAK_H_\r
+#include "common.h"\r
 \r
-extern void tw_opengraph();\r
-extern void tw_opengraph2();\r
-extern void tw_closegraph();\r
-extern void tw_putpixel(int x, int y, int color);\r
-extern int  tw_getpixel(int x, int y);\r
-extern void tw_setpalette(void far *pal);\r
-extern void tw_setpalarea(void far *pal,int start,int cnt);\r
-extern void tw_setrgbpalette(int pal, int r, int g, int b);\r
-extern void tw_setstart(int start);\r
-extern void tw_pictovmem(void far *pic, int to, int len);\r
-extern void tw_crlscr();\r
+void tw_opengraph2();\r
+//void tw_setrgbpalette(byte *p);\r
+void tw_setrgbpalette(int a, int r, int g, int b);\r
 \r
-extern int far scr_seg;\r
+#define PAL_READ_REG                   0x03C7   /* Color register, read address */\r
+#define PAL_WRITE_REG             0x03C8   /* Color register, write address */\r
+#define PAL_DATA_REG                   0x03C9   /* Color register, data port */\r
+#define PAL_SIZE                               (256 * 3)\r
+\r
+#endif\r
diff --git a/plzpart/types.h b/plzpart/types.h
new file mode 100755 (executable)
index 0000000..bb09ff1
--- /dev/null
@@ -0,0 +1,42 @@
+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669\r
+ *\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Project 16 is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
+ */\r
+/*\r
+ * Just some handy typedefs that make it easier to think about the low\r
+ * level code\r
+ */\r
+\r
+#ifndef _TYPE_H_\r
+#define _TYPE_H_\r
+\r
+typedef unsigned char byte;\r
+typedef unsigned short word;\r
+typedef unsigned long  dword;\r
+typedef signed char sbyte;\r
+typedef signed short sword;\r
+typedef signed long sdword;\r
+\r
+typedef unsigned int iword;\r
+typedef signed int siword;\r
+\r
+typedef        enum    {false,true}    boolean;\r
+\r
+#endif/*_TYPE_H_*/\r
index 5a581f44b99332eca1883389f229b77468ba3f5d..690605db2f2c3ff991dddc828f414bc1a65c5ddd 100755 (executable)
@@ -1,11 +1,6 @@
-#include <stdio.h>\r
-//#include <conio.h>\r
-//#include <dos.h>\r
-#include <math.h>\r
-//#include <io.h>\r
-#include <fcntl.h>\r
+#include "common.h"\r
 #include "tweak.h"\r
-#include "../dis/dis.h"\r
+//#include "../dis/dis.h"\r
 \r
 #define SX sinit[kx]\r
 #define SY sinit[ky]\r