#! /bin/bash
-wmake -h clean
-wmake -h
-wmake -h comq
+. ./dld.sh
+./cleanup.sh
+./buildall.sh
+#cd ../../../
filemode = true
bare = false
logallrefupdates = true
-[remote "origin"]
- url = https://github.com/sparky4/16
- fetch = +refs/heads/*:refs/remotes/origin/*
+[remote "x4"]
+ url = ssh://sparky4@4ch.mooo.com:26/var/www/16/16.git
+ fetch = +refs/heads/*:refs/remotes/x4/*
[branch "master"]
remote = origin
merge = refs/heads/master
-[submodule "src/lib/doslib"]
- url = https://github.com/joncampbell123/doslib.git
-[submodule "src/lib/jsmn"]
- url = https://github.com/zserge/jsmn.git
+[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/*
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) 16_timer.$(OBJ)
-GFXLIBOBJS = modex16.$(OBJ) bitmap.$(OBJ) planar.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16render.$(OBJ) 16planar.$(OBJ)
+GFXLIBOBJS = modex16.$(OBJ) bitmap.$(OBJ) planar.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16render.$(OBJ) 16planar.$(OBJ) $(DOSLIBLIBS)
DOSLIBLIBS=$(DOSLIBDIR)$(DIRSEP)hw$(DIRSEP)cpu$(DIRSEP)dos86h$(DIRSEP)cpu.lib $(DOSLIBDIR)$(DIRSEP)hw$(DIRSEP)dos$(DIRSEP)dos86h$(DIRSEP)dos.lib $(DOSLIBDIR)$(DIRSEP)hw$(DIRSEP)vga$(DIRSEP)dos86h$(DIRSEP)vga.lib
#
clean: .symbolic
@$(REMOVECOMMAND) $(EXEC)
+ @$(REMOVECOMMAND) /var/www/$(EXEC)*
@$(REMOVECOMMAND) *.$(OBJ)
@$(REMOVECOMMAND) 16.lib
@$(REMOVECOMMAND) gfx.lib
/*modexPalSave(gpal);\r
modexSavePalFile("data/g.pal", gpal);*/\r
printf("wwww loop wwww\n");\r
- VGAmodeX(1, &gvar);\r
+ VGAmodeX(1, 1, &gvar);\r
modexPalBlack(); //so player will not see loadings~\r
IN_Startup();\r
IN_Default(0,&player,ctrl_Joystick);\r
case 2: cpus = "386 or newer"; break;\r
default: cpus = "internal error"; break;\r
}\r
- VGAmodeX(0, &gvar);\r
+ VGAmodeX(0, 1, &gvar);\r
printf("Project 16 16.exe. This is supposed to be the actual finished game executable!\n");\r
printf("version %s\n", VERSION);\r
printf("detected CPU type: %s\n", cpus);\r
xdir=1;
ydir=1;
-#ifdef MXLIB
- VGAmodeX(vgamodex_mode, &gvar); // TODO: Suggestion: Instead of magic numbers for the first param, might I suggest defining an enum or some #define constants that are easier to remember? --J.C.
-#else
-# error REMOVED // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.
+ VGAmodeX(vgamodex_mode, 1, &gvar); // TODO: Suggestion: Instead of magic numbers for the first param, might I suggest defining an enum or some #define constants that are easier to remember? --J.C.
+ // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.
// we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C.
-#endif
+
bakapee.xx = rand()&0%gvar.video.page[0].width;
bakapee.yy = rand()&0%gvar.video.page[0].height;
bakapee.gq = 0;
{
int c;
-# ifndef MXLIB
-# error REMOVED // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.
+ // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.
// we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C.
-# else
- VGAmodeX(0, &gvar);
-# endif
+ VGAmodeX(0, 0, &gvar);
// user imput switch
- fprintf(stderr, "xx=%d yy=%d tile=%d\n", bakapee.xx, bakapee.yy, bakapee.tile);
- printf("Enter 1, 2, 3, 4, or 6 to run a screensaver, or enter 0 to quit.\n");
+ //fprintf(stderr, "xx=%d yy=%d tile=%d\n", bakapee.xx, bakapee.yy, bakapee.tile);
+ printf("Tiled mode is ");
+ switch (bakapee.tile)
+ {
+ case 0:
+ printf("off.\n");
+ break;
+ case 1:
+ printf("on.\n");
+ break;
+ }
+ printf("Enter 1, 2, 3, 4, 5, 6, 8, or 9 to run a screensaver, or enter 0 to quit.\n");
c = getch();
switch (c) {
}
key=0;
break;
+ case '8':
+ c+=8;
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
+ case '9':
key = c - '0';
-# ifdef MXLIB
gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);
gvar.video.page[0].width += (TILEWH*2);
gvar.video.page[0].height += (TILEWH*2);
- VGAmodeX(vgamodex_mode, &gvar);
-# else
-# error REMOVED // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.
+ VGAmodeX(vgamodex_mode, 0, &gvar);
+ // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.
// we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C.
-# endif
modexShowPage(&gvar.video.page[0]);
break;
default:
}
#else // !defined(BOINK)
// FIXME: Does not compile. Do you want to remove this?
+// TODO: This is a testing sextion for textrendering and panning for project 16 --sparky4
while(1)
{ // conditions of screen saver
while(!kbhit())
}
// VGAmodeX(0, &gvar);
#endif // defined(BOINK)
- printf("bakapi ver. 1.04.13.04\nis made by sparky4\81i\81\86\83Ö\81\85\81j feel free to use it ^^\nLicence: GPL v3\n");
+ printf("bakapi ver. 1.04.16.04\nis made by sparky4\81i\81\86\83Ö\81\85\81j feel free to use it ^^\nLicence: GPL v3\n");
+ printf("compiled on 2016/04/04\n");
}
//pee!
// static byte *rosa;\r
static word chx, chy, colpee;\r
textInit();\r
- VGAmodeX(1, &gvar);\r
+ VGAmodeX(1, 1, &gvar);\r
/* setup camera and screen~ */\r
gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);\r
//gvar.video.page[0].width += (16*2);\r
// modexprintbig(&gvar.video.page[0], 0, 0, 1, colpee, 0, "IBM");\r
// modexprint(0, 0, 1, 0, colpee, ROSE);\r
getch();\r
- VGAmodeX(0, &gvar);\r
+ VGAmodeX(0, 1, &gvar);\r
// rosa=malloc(sizeof(ROSE));\r
// (*rosa)=(byte)ROSE;\r
printf("\n%s\n", rose);\r
// setvideo() - This function Manages the video modes //\r
// //\r
/////////////////////////////////////////////////////////////////////////////\r
-void VGAmodeX(sword vq, global_game_variables_t *gv)\r
+void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv)\r
{\r
union REGS in, out;\r
\r
//int86(0x10, &in, &out);\r
gv->video.old_mode = vgaGetMode();//out.h.al;\r
// enter mode\r
- modexEnter(vq, gv);\r
+ modexEnter(vq, cmem, gv);\r
break;\r
}\r
}\r
}\r
\r
/* -========================= Entry Points ==========================- */\r
-void\r
-modexEnter(sword vq, global_game_variables_t *gv)\r
+void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv)\r
{\r
word i;\r
dword far*ptr=(dword far*)VGA; /* used for faster screen clearing */\r
int CRTParmCount;\r
/* common mode X initiation stuff~ */\r
- modexsetBaseXMode(gv->video.page);\r
+ modexsetBaseXMode();\r
\r
switch(vq)\r
{\r
case 1:\r
- CRTParmCount = sizeof(ModeX_320x240regs) / sizeof(ModeX_320x240regs[0]);\r
+ //CRTParmCount = sizeof(ModeX_320x240regs) / sizeof(ModeX_320x240regs[0]);\r
/* width and height */\r
- gv->video.page[0].sw=320;\r
- gv->video.page[0].sh=240;\r
+ gv->video.page[0].sw=vga_state.vga_width = 320; // VGA lib currently does not update this\r
+ gv->video.page[0].sh=vga_state.vga_height = 240; // VGA lib currently does not update this\r
\r
/* send the CRTParms */\r
- for(i=0; i<CRTParmCount; i++) {\r
+ /*for(i=0; i<CRTParmCount; i++) {\r
outpw(CRTC_INDEX, ModeX_320x240regs[i]);\r
- }\r
-\r
- /* clear video memory */\r
- outpw(SC_INDEX, 0x0f02);\r
- for(i=0; i<0x8000; i++) {\r
- ptr[i] = 0x0000;\r
+ }*/\r
+ {\r
+ struct vga_mode_params cm;\r
+ vga_read_crtc_mode(&cm);\r
+\r
+// 0x5f00, /* Horizontal total */\r
+// 0x4f01, /* horizontal display enable end */\r
+// 0x5002, /* Start horizontal blanking */\r
+// 0x8203, /* End horizontal blanking */\r
+// 0x5404, /* Start horizontal retrace */\r
+// 0x8005, /* End horizontal retrace */\r
+// 0x0d06, /* vertical total */\r
+// 0x3e07, /* overflow (bit 8 of vertical counts) */\r
+// 0x4109, /* cell height (2 to double-scan */\r
+// 0xea10, /* v sync start */\r
+// 0xac11, /* v sync end and protect cr0-cr7 */\r
+// 0xdf12, /* vertical displayed */\r
+// 0x2813, /* offset/logical width */\r
+// 0x0014, /* turn off dword mode */\r
+// 0xe715, /* v blank start */\r
+// 0x0616, /* v blank end */\r
+// 0xe317 /* turn on byte mode */\r
+\r
+ // 320x240 mode 60Hz\r
+ cm.horizontal_total=0x5f; /* CRTC[0] -5 */\r
+ cm.horizontal_display_end=0x4f; /* CRTC[1] -1 */\r
+ cm.horizontal_blank_start=0x50; /* CRTC[2] */\r
+ cm.horizontal_blank_end=0x82; /* CRTC[3] bit 0-4 & CRTC[5] bit 7 */\r
+ cm.horizontal_start_retrace=0x54;/* CRTC[4] */\r
+ cm.horizontal_end_retrace=0x80; /* CRTC[5] bit 0-4 */\r
+ //cm.horizontal_start_delay_after_total=0x3e; /* CRTC[3] bit 5-6 */\r
+ //cm.horizontal_start_delay_after_retrace=0x41; /* CRTC[5] bit 5-6 */\r
+ cm.vertical_total = 525;\r
+ cm.vertical_start_retrace = 0x1EA;\r
+ cm.vertical_end_retrace = 0x1EC;\r
+ cm.vertical_display_end = 480;\r
+ cm.vertical_blank_start = 489;\r
+ cm.vertical_blank_end = 517;\r
+\r
+ vga_write_crtc_mode(&cm,0);\r
}\r
break;\r
case 2:\r
for(i=0; i<CRTParmCount; i++) {\r
outpw(CRTC_INDEX, ModeX_160x120regs[i]);\r
}\r
-\r
- /* clear video memory */\r
- outpw(SC_INDEX, 0x0f02);\r
- for(i=0; i<0x8000; i++) {\r
- ptr[i] = 0x0000;\r
- }\r
break;\r
case 3:\r
CRTParmCount = sizeof(ModeX_320x200regs) / sizeof(ModeX_320x200regs[0]);\r
for(i=0; i<CRTParmCount; i++) {\r
outpw(CRTC_INDEX, ModeX_320x200regs[i]);\r
}\r
-\r
- /* clear video memory */\r
- outpw(SC_INDEX, 0x0f02);\r
- for(i=0; i<0x8000; i++) {\r
- ptr[i] = 0x0000;\r
- }\r
break;\r
case 4:\r
CRTParmCount = sizeof(ModeX_192x144regs) / sizeof(ModeX_192x144regs[0]);\r
for(i=0; i<CRTParmCount; i++) {\r
outpw(CRTC_INDEX, ModeX_192x144regs[i]);\r
}\r
-\r
- /* clear video memory */\r
- outpw(SC_INDEX, 0x0f02);\r
- for(i=0; i<0x8000; i++) {\r
- ptr[i] = 0x0000;\r
- }\r
break;\r
case 5:\r
CRTParmCount = sizeof(ModeX_256x192regs) / sizeof(ModeX_256x192regs[0]);\r
for(i=0; i<CRTParmCount; i++) {\r
outpw(CRTC_INDEX, ModeX_256x192regs[i]);\r
}\r
+ break;\r
+ }\r
\r
- /* clear video memory */\r
- outpw(SC_INDEX, 0x0f02);\r
- for(i=0; i<0x8000; i++) {\r
- ptr[i] = 0x0000;\r
- }\r
+ /* clear video memory */\r
+ switch (cmem)\r
+ {\r
+ case 1:\r
+ /* clear video memory */\r
+ outpw(SC_INDEX, 0x0f02);\r
+ for(i=0; i<0x8000; i++) {\r
+ ptr[i] = 0x0000;\r
+ }\r
break;\r
}\r
gv->video.page[0].tilesw = gv->video.page[0].sw/TILEWH;\r
\r
void\r
modexLeave() {\r
- /* TODO restore original mode and palette */\r
- vgaSetMode(TEXT_MODE);\r
+ /* TODO restore original mode and palette */\r
+ vgaSetMode(TEXT_MODE);\r
}\r
\r
// setBaseXMode() does the initialization to make the VGA ready to\r
// involves enabling writes to index 0 to 7 of the CRT controller (port\r
// 0x3D4), by clearing the most significant bit (bit 7) of index 0x11.\r
void\r
-modexsetBaseXMode(page_t *page)\r
+modexsetBaseXMode()\r
{\r
- word temp;\r
/* TODO save current video mode and palette */\r
vgaSetMode(VGA_256_COLOR_MODE);\r
\r
+ vga_enable_256color_modex();\r
+\r
/* disable chain4 mode */\r
- outpw(SC_INDEX, 0x0604);\r
+ //outpw(SC_INDEX, 0x0604);\r
\r
/* synchronous reset while setting Misc Output */\r
- outpw(SC_INDEX, 0x0100);\r
+ //outpw(SC_INDEX, 0x0100);\r
\r
/* select 25 MHz dot clock & 60 Hz scanning rate */\r
outp(MISC_OUTPUT, 0xe3);\r
\r
/* undo reset (restart sequencer) */\r
- outpw(SC_INDEX, 0x0300);\r
+ //outpw(SC_INDEX, 0x0300);\r
\r
/* reprogram the CRT controller */\r
outp(CRTC_INDEX, 0x11); /* VSync End reg contains register write prot */\r
// outp(CRTC_INDEX, 0x11);\r
outp(CRTC_DATA, 0x7f); /* get current write protect on varios regs */\r
// outp(CRTC_DATA, temp); /* get current write protect on varios regs */\r
+ update_state_from_vga();\r
}\r
\r
page_t\r
#include "src/lib/modex16/256x192.h"
#include "src/lib/modex16/192x144_.h"
#include "src/lib/modex16/160x120.h"
-extern byte gfxtest;
+
+#include <hw/cpu/cpu.h>
+#include <hw/dos/dos.h>
+#include <hw/vga/vga.h>
+#include <hw/vga/vrl.h>
+
+//TODO dos lib vga implementation ^^
+//#define DOSLIBVGA
static struct pcxHeader {
byte id;
/* -============================ Functions =============================- */
/* mode switching, page, and plane functions */
-void VGAmodeX(sword vq, global_game_variables_t *gv);
-void modexEnter(sword vq, global_game_variables_t *gv);
+void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv);
+void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv);
long vgaGetMode();
void modexLeave();
-void modexsetBaseXMode(page_t *page);
+void modexsetBaseXMode();
page_t modexDefaultPage(page_t *p);
page_t modexNextPage(page_t *p);
page_t modexNextPageFlexibleSize(page_t *p, word x, word y);
/* -======================= Constants & Vars ==========================- */
extern byte far* VGA; /* The VGA Memory */
-//extern int old_mode;
#define SCREEN_SEG 0xa000
#define VIDEO_INT 0x10
#define SET_MODE 0x00
if(argv[1]) bakapee = argv[1];\r
else bakapee = "data/default.pal";\r
\r
- VGAmodeX(1, &gvar);\r
+ VGAmodeX(1, 1, &gvar);\r
\r
pal = modexNewPal();\r
modexPalSave(pal);\r
\r
modexSavePalFile(bakapee, pal);\r
\r
- VGAmodeX(0, &gvar);\r
+ VGAmodeX(0, 1, &gvar);\r
\r
}\r
if(argv[1]) bakapee = argv[1];\r
else bakapee = "data/default.pal";\r
// modexPalSave(pal);\r
- VGAmodeX(1, &gvar);\r
+ VGAmodeX(1, 1, &gvar);\r
gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);\r
modexPalBlack();\r
\r
modexFadeOn(1, pal);\r
pdump(&gvar.video.page[0]);\r
getch();\r
- modexLeave();//VGAmodeX(0, &gvar);\r
+ VGAmodeX(0, 0, &gvar);\r
modexPalUpdate1(pal);\r
/*for(i=0;i<768;i++)\r
{\r
bmp = bitmapLoadPcx("data/koishi^^.pcx");\r
// bmp = bitmapLoadPcx("16/PCX_LIB/chikyuu.pcx");\r
p = planar_buf_from_bitmap(&bmp);\r
- VGAmodeX(1, &gvar);\r
+ VGAmodeX(1, 1, &gvar);\r
gvar.video.page[0]=modexDefaultPage(&gvar.video.page[0]);\r
\r
/* fix up the palette and everything */\r
{\r
//DrawPBuf(&gvar.video.page[0], 0, 0, p, 0);\r
}\r
- VGAmodeX(0, &gvar);\r
+ VGAmodeX(0, 1, &gvar);\r
/*printf("\nmain=%Fp\n\n", &i);\r
printf("bmp.data=%Fp\n", bmp.data);\r
printf("*bmp.data=%Fp\n", *(bmp.data));\r
bmp = bitmapLoadPcx("data/koishi^^.pcx");\r
// bmp = bitmapLoadPcx("16/PCX_LIB/chikyuu.pcx");\r
p = planar_buf_from_bitmap(&bmp);\r
- VGAmodeX(1, &gvar);\r
+ VGAmodeX(1, 1, &gvar);\r
gvar.video.page[0]=modexDefaultPage(&gvar.video.page[0]);\r
gvar.video.page[0].sw+=32;\r
gvar.video.page[0].sh+=32;\r
{\r
//DrawPBuf(&gvar.video.page[0], 0, 0, p, 0);\r
}\r
- VGAmodeX(0, &gvar);\r
+ VGAmodeX(0, 1, &gvar);\r
/*printf("\nmain=%Fp\n\n", &i);\r
printf("bmp.data=%Fp\n", bmp.data);\r
printf("*bmp.data=%Fp\n", *(bmp.data));\r
//getch();\r
\r
textInit();\r
- VGAmodeX(baka, &gvar);\r
+ VGAmodeX(baka, 1, &gvar);\r
gvar.video.page[0]=modexDefaultPage(&gvar.video.page[0]);\r
\r
//fix up the palette and everything\r
while(!kbhit())\r
{\r
}\r
- VGAmodeX(0, &gvar);\r
+ VGAmodeX(0, 1, &gvar);\r
\r
//print out the contents of each plane\r
for(plane=0; plane < 4; plane++) {\r
#endif
textInit();
- VGAmodeX(bakapee, &gvar);
+ VGAmodeX(bakapee, 1, &gvar);
// printf("%dx%d\n", gvar.video.page[0].sw, gvar.video.page[0].sh);
#ifdef FADE
modexPalBlack(); //reset the palette~
//TSR
if(IN_KeyDown(87)) //f11
{
- VGAmodeX(0, &gvar);
+ VGAmodeX(0, 0, &gvar);
IN_Shutdown();
__asm
{
modexSavePalFile("data/g.pal", gpal);
modexFadeOff(4, gpal);
#endif
- VGAmodeX(0, &gvar);
+ VGAmodeX(0, 1, &gvar);
#endif
IN_Shutdown();
printf("Project 16 scroll.exe. This is just a test file!\n");
modexFadeOff(1, pal);\r
modexPalBlack();\r
\r
- VGAmodeX(bakapee, &gvar);\r
+ VGAmodeX(bakapee, 1, &gvar);\r
modexPalBlack();\r
\r
IN_Startup();\r
/* fade back to text mode */\r
modexFadeOff(1, pal2);\r
modexPalBlack();\r
- VGAmodeX(0, &gvar);\r
+ VGAmodeX(0, 1, &gvar);\r
IN_Shutdown();\r
printf("Project 16 test.exe. This is just a test file!\n");\r
printf("version %s\n", VERSION);\r