filemode = true
bare = false
logallrefupdates = true
-[remote "x4"]
- url = ssh://sparky4@4ch.mooo.com:26/var/www/16/16.git
- fetch = +refs/heads/*:refs/remotes/x4/*
+[remote "origin"]
+ url = https://github.com/joncampbell123/16.git
+ fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
-[remote "origin"]
- url = git@github.com:sparky4/16.git
- fetch = +refs/heads/*:refs/remotes/origin/*
-[remote "sf"]
- url = ssh://sparky4q@git.code.sf.net/p/project16/code
- fetch = +refs/heads/*:refs/remotes/sf/*
-[remote "jp"]
- url = ssh://sparky4@git.pf.osdn.jp:/gitroot/s/sp/sparky4/project16.git
- fetch = +refs/heads/*:refs/remotes/jp/*
-[remote "bb"]
- url = git@bitbucket.org:sparky4/16.git
- fetch = +refs/heads/*:refs/remotes/bb/*
+[remote "upstream"]
+ url = https://github.com/sparky4/16.git
+ fetch = +refs/heads/*:refs/remotes/upstream/*
+[submodule "src/lib/doslib"]
+ url = https://github.com/joncampbell123/doslib.git
+[submodule "src/lib/jsmn"]
+ url = https://github.com/zserge/jsmn.git
OFLAGS=-obmiler -out -oh -ei -zp8 -fpi87 -onac -ol+ -ok####x
FLAGS=$(CFLAGS) $(OFLAGS) $(DFLAGS) $(ZFLAGS)
+PCX2VRL=$(DOSLIBDIR)/hw/vga/pcx2vrl
DOSLIBEXMMOBJ = himemsys.$(OBJ) emm.$(OBJ)
VGMSNDOBJ = vgmSnd.$(OBJ) 16_snd.$(OBJ)
!include $(DOSLIBDIR)/extdep.mak
-all: $(EXEC)
+all: $(EXEC) datatest
+
+cute.vrl: data/cute.pcx $(PCX2VRL)
+ $(PCX2VRL) -i data/cute.pcx -o cute.vrl -p cute.pal -tc 254
+ # you can then test this against TESUTO.EXE by typing: TESUTO CUTE.VRL CUTE.PAL
+
+datatest: cute.vrl .symbolic
+
+# doslib PCX to VRL converter native host binary
+$(PCX2VRL): $(DOSLIBDIR)/hw/vga/pcx2vrl.c
+ cd $(DOSLIBDIR)/hw/vga && make pcx2vrl
#$(16LIBOBJS) => 16.lib bug....
# @wlink @tmp.cmd
wcl $(FLAGS) $(WCLQ) tesuto.$(OBJ) $(DOSLIBLIBS) 16_head.$(OBJ)
tesuto.$(OBJ): $(SRC)tesuto.c
- wcl $(FLAGS) $(WCLQ) -c $(SRC)tesuto.c
+ wcl $(FLAGS) $(DOSLIB_CINCLUDE) $(WCLQ) -c $(SRC)tesuto.c
#tesuto.exe: tesuto.$(OBJ)
# wcl $(WCLQ) -mh -d2 tesuto.$(OBJ)
#tesuto.$(OBJ): $(SRC)tesuto.c
# library deps 16-bit huge
dl_vga.lib:
- cd $(DOSLIBDIR)/hw/vga/dos86h && ./make.sh
+ cd $(DOSLIBDIR)/hw/vga && ./make.sh
+ cp $(DOSLIBDIR)/hw/vga/dos86h/vga.lib dl_vga.lib
dl_cpu.lib:
- cd $(DOSLIBDIR)/hw/cpu/dos86h && ./make.sh
+ cd $(DOSLIBDIR)/hw/cpu && ./make.sh
+ cp $(DOSLIBDIR)/hw/cpu/dos86h/cpu.lib dl_cpu.lib
dl_dos.lib:
- cd $(DOSLIBDIR)/hw/dos/dos86h && ./make.sh
+ cd $(DOSLIBDIR)/hw/dos && ./make.sh
+ cp $(DOSLIBDIR)/hw/dos/dos86h/dos.lib dl_dos.lib
modex16.$(OBJ): $(SRCLIB)modex16.h $(SRCLIB)modex16.c
wcl $(FLAGS) -c $(SRCLIB)modex16.c
@wlib -n $(WLIBQ) 16.lib
@wlib -n $(WLIBQ) gfx.lib
@wlib -n $(WLIBQ) vgmsnd.lib
- @wlib -n $(WLIBQ) dl_cpu.lib
- @wlib -n $(WLIBQ) dl_dos.lib
- @wlib -n $(WLIBQ) dl_vga.lib
+ @$(REMOVECOMMAND) dl_cpu.lib
+ @$(REMOVECOMMAND) dl_dos.lib
+ @$(REMOVECOMMAND) dl_vga.lib
@$(REMOVECOMMAND) *.16
@$(REMOVECOMMAND) *.16W
@$(REMOVECOMMAND) *.16B
#include "src/tesuto.h"\r
-/*\r
-#include <stdio.h>\r
-#include <conio.h> // this is where Open Watcom hides the outp() etc. functions\r
-#include <ctype.h>\r
-#include <stdlib.h>\r
-#include <unistd.h>\r
-#include <assert.h>\r
-#include <fcntl.h>\r
-#include <math.h>\r
-#include <dos.h>\r
-*/\r
-\r
-#pragma pack(push,1)\r
-struct vrl_header {\r
- uint8_t vrl_sig[4]; // +0x00 "VRL1"\r
- uint8_t fmt_sig[4]; // +0x04 "VGAX"\r
- uint16_t height; // +0x08 Sprite height\r
- uint16_t width; // +0x0A Sprite width\r
- int16_t hotspot_x; // +0x0C Hotspot offset (X) for programmer's reference\r
- int16_t hotspot_y; // +0x0E Hotspot offset (Y) for programmer's reference\r
-}; // =0x10\r
-#pragma pack(pop)\r
\r
static unsigned char palette[768];\r
\r
-void draw_vrl_modex(unsigned int x,unsigned int y,struct vrl_header *hdr,unsigned char *data,unsigned int datasz) {\r
- unsigned int vram_offset = (y * vga_stride) + (x >> 2);\r
- unsigned char *fence = data + datasz;\r
- unsigned char vga_plane = (x & 3);\r
- unsigned char run,skip,b;\r
- unsigned char far *draw;\r
-\r
- while (data < fence) {\r
- /* start of another vertical strip */\r
- draw = vga_graphics_ram + vram_offset;\r
- vga_write_sequencer(0x02/*map mask*/,1 << vga_plane);\r
-\r
- while (data < fence) {\r
- run = *data++;\r
- if (run == 0xFF) break;\r
- skip = *data++;\r
- draw += skip * vga_stride;\r
- if (run & 0x80) {\r
- b = *data++;\r
- while (run > 0x80) {\r
- *draw = b;\r
- draw += vga_stride;\r
- run--;\r
- }\r
- }\r
- else {\r
- while (run > 0) {\r
- *draw = *data++;\r
- draw += vga_stride;\r
- run--;\r
- }\r
- }\r
- }\r
-\r
- /* end of a vertical strip. next line? */\r
- if ((++vga_plane) == 4) {\r
- vram_offset++;\r
- vga_plane = 0;\r
- }\r
- }\r
-\r
- vga_write_sequencer(0x02/*map mask*/,0xF);\r
-}\r
-\r
int main(int argc,char **argv) {\r
- struct vrl_header *vrl_header;\r
+ struct vrl1_vgax_header *vrl_header;\r
+ vrl1_vgax_offset_t *vrl_lineoffs;\r
unsigned char *buffer;\r
unsigned int bufsz;\r
int fd;\r
}\r
{\r
unsigned long sz = lseek(fd,0,SEEK_END);\r
- if (sz < sizeof(vrl_header)) return 1;\r
+ if (sz < sizeof(*vrl_header)) return 1;\r
if (sz >= 65535UL) return 1;\r
\r
bufsz = (unsigned int)sz;\r
lseek(fd,0,SEEK_SET);\r
if ((unsigned int)read(fd,buffer,bufsz) < bufsz) return 1;\r
\r
- vrl_header = (struct vrl_header*)buffer;\r
+ vrl_header = (struct vrl1_vgax_header*)buffer;\r
if (memcmp(vrl_header->vrl_sig,"VRL1",4) || memcmp(vrl_header->fmt_sig,"VGAX",4)) return 1;\r
if (vrl_header->width == 0 || vrl_header->height == 0) return 1;\r
}\r
for (i=0;i < 256;i++) vga_palette_write(palette[(i*3)+0]>>2,palette[(i*3)+1]>>2,palette[(i*3)+2]>>2);\r
}\r
\r
- draw_vrl_modex(0,0,vrl_header,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
+ /* preprocess the sprite to generate line offsets */\r
+ vrl_lineoffs = vrl1_vgax_genlineoffsets(vrl_header,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
+ if (vrl_lineoffs == NULL) return 1;\r
+\r
+ draw_vrl1_vgax_modex(0,0,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
while (getch() != 13);\r
\r
{\r
unsigned int i;\r
\r
for (i=1;i < 320;i++)\r
- draw_vrl_modex(i,0,vrl_header,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
+ draw_vrl1_vgax_modex(i,0,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
}\r
while (getch() != 13);\r
\r
unsigned int i;\r
\r
for (i=1;i < 200;i++)\r
- draw_vrl_modex(i,i,vrl_header,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
+ draw_vrl1_vgax_modex(i,i,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
+ }\r
+ while (getch() != 13);\r
+\r
+ {\r
+ unsigned int i;\r
+\r
+ for (i=(2 << 6)/*200%*/;i >= (1 << 4)/*25%*/;i--)\r
+ draw_vrl1_vgax_modexstretch(0,0,i,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
+ }\r
+ while (getch() != 13);\r
+ {\r
+ unsigned int i;\r
+\r
+ for (i=(2 << 6)/*200%*/;i >= (1 << 4)/*25%*/;i--)\r
+ draw_vrl1_vgax_modexystretch(0,0,i,i,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
}\r
while (getch() != 13);\r
\r
int10_setmode(3);\r
+ free(vrl_lineoffs);\r
buffer = NULL;\r
free(buffer);\r
bufsz = 0;\r
return 0;\r
}\r
+\r