From 07346f616e3fe792fd34aba5e80afaddb8cf47e7 Mon Sep 17 00:00:00 2001
From: sparky4 <sparky4@cock.li>
Date: Sun, 3 Apr 2016 13:32:31 -0500
Subject: [PATCH] bakapi.exe has tile support switch wwww

---
 makefile          |  4 +-
 src/bakapi.c      | 95 +++++++++++++++++++++++++++++++++++++++++------
 src/lib/16_in.c   |  2 +-
 src/lib/16_in.h   |  2 +-
 src/lib/bakapee.h |  5 ++-
 5 files changed, 92 insertions(+), 16 deletions(-)

diff --git a/makefile b/makefile
index 8d94ab0f..3de9313e 100755
--- a/makefile
+++ b/makefile
@@ -95,8 +95,8 @@ all: $(EXEC)  joytest.exe
 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
 
-bakapi.exe: bakapi.$(OBJ) gfx.lib# modex.lib
-	wcl $(FLAGS) $(BAKAPIFLAGS) bakapi.$(OBJ) gfx.lib -fm=bakapi.map
+bakapi.exe: bakapi.$(OBJ) gfx.lib $(DOSLIBLIBS)
+	wcl $(FLAGS) $(BAKAPIFLAGS) bakapi.$(OBJ) gfx.lib $(DOSLIBLIBS) -fm=bakapi.map
 #modex.lib
 #
 #Test Executables!
diff --git a/src/bakapi.c b/src/bakapi.c
index eccaa355..28faa99d 100755
--- a/src/bakapi.c
+++ b/src/bakapi.c
@@ -44,7 +44,35 @@ main(int argc, char *argvar[])
 #ifdef MXLIB
 	VGAmodeX(1, &gvar);
 #else
-	mxSetMode(3);
+		probe_dos();
+	if (!probe_vga()) {
+		printf("VGA probe failed\n");
+		return 1;
+	}
+	int10_setmode(19);
+	update_state_from_vga();
+	vga_enable_256color_modex(); // VGA mode X
+	vga_state.vga_width = 320; // VGA lib currently does not update this
+	vga_state.vga_height = 240; // VGA lib currently does not update this
+
+//#if 1 // 320x240 test mode: this is how Project 16 is using our code, enable for test case
+	{
+		struct vga_mode_params cm;
+
+		vga_read_crtc_mode(&cm);
+
+		// 320x240 mode 60Hz
+		cm.vertical_total = 525;
+		cm.vertical_start_retrace = 0x1EA;
+		cm.vertical_end_retrace = 0x1EC;
+		cm.vertical_display_end = 480;
+		cm.vertical_blank_start = 489;
+		cm.vertical_blank_end = 517;
+
+		vga_write_crtc_mode(&cm,0);
+	}
+	vga_state.vga_height = 240; // VGA lib currently does not update this
+//#endif
 #endif
 	bakapee.xx = rand()&0%gvar.video.page[0].width;
 	bakapee.yy = rand()&0%gvar.video.page[0].height;
@@ -78,13 +106,13 @@ main(int argc, char *argvar[])
 		}
 		else
 		{
-			#ifndef MXLIB
-			mxChangeMode(0);
+#ifndef MXLIB
+			int10_setmode(3);
 #else
 			VGAmodeX(0, &gvar);
 #endif
 			// user imput switch
-			fprintf(stderr, "xx=%d	yy=%d\n", bakapee.xx, bakapee.yy);
+			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", getch());  // prompt the user
 			//scanf("%d", &key);
 			if(scanf("%d", &key) != 1)
@@ -93,16 +121,61 @@ main(int argc, char *argvar[])
 			}
 			getch();
 			//if(key==3){xx=yy=0;} // crazy screen saver wwww
-			if(key==0){ d=0; }else{
-				gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);
-				gvar.video.page[0].width += (TILEWH*2);
-				gvar.video.page[0].height += (TILEWH*2);
+			switch (key)
+			{
+				case 0:
+					d=0;
+				break;
+				case 65536:
+					switch (bakapee.tile)
+					{
+						case 0:
+							bakapee.tile=1;
+						break;
+						case 1:
+							bakapee.tile=0;
+						break;
+					}
+					d=2;
+				default:
 #ifdef MXLIB
-				VGAmodeX(1, &gvar);
+					gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);
+					gvar.video.page[0].width += (TILEWH*2);
+					gvar.video.page[0].height += (TILEWH*2);
+					VGAmodeX(1, &gvar);
 #else
-				mxChangeMode(3);
+						probe_dos();
+	if (!probe_vga()) {
+		printf("VGA probe failed\n");
+		return 1;
+	}
+	int10_setmode(19);
+	update_state_from_vga();
+	vga_enable_256color_modex(); // VGA mode X
+	vga_state.vga_width = 320; // VGA lib currently does not update this
+	vga_state.vga_height = 240; // VGA lib currently does not update this
+
+//#if 1 // 320x240 test mode: this is how Project 16 is using our code, enable for test case
+	{
+		struct vga_mode_params cm;
+
+		vga_read_crtc_mode(&cm);
+
+		// 320x240 mode 60Hz
+		cm.vertical_total = 525;
+		cm.vertical_start_retrace = 0x1EA;
+		cm.vertical_end_retrace = 0x1EC;
+		cm.vertical_display_end = 480;
+		cm.vertical_blank_start = 489;
+		cm.vertical_blank_end = 517;
+
+		vga_write_crtc_mode(&cm,0);
+	}
+	vga_state.vga_height = 240; // VGA lib currently does not update this
+//#endif
 #endif
-				modexShowPage(&gvar.video.page[0]);
+					modexShowPage(&gvar.video.page[0]);
+				break;
 			}
 		}
 	}
diff --git a/src/lib/16_in.c b/src/lib/16_in.c
index 1863e2ad..66c98dd6 100755
--- a/src/lib/16_in.c
+++ b/src/lib/16_in.c
@@ -38,7 +38,7 @@
 
 #include "src/lib/16_in.h"
 
-byte testkeyin=0,testcontrolnoisy=0,testctrltype=0;
+boolean testkeyin=0,testcontrolnoisy=0,testctrltype=0;
 
 /*
 =============================================================================
diff --git a/src/lib/16_in.h b/src/lib/16_in.h
index ec9b56a2..0990a550 100755
--- a/src/lib/16_in.h
+++ b/src/lib/16_in.h
@@ -42,7 +42,7 @@
 //#define TESTCONTROLNOISY
 #endif
 
-extern byte testkeyin,testcontrolnoisy,testctrltype;
+extern boolean testkeyin,testcontrolnoisy,testctrltype;
 
 //if else for gfxtesting and direction
 //player[pn].d == 2 ||
diff --git a/src/lib/bakapee.h b/src/lib/bakapee.h
index c7f35266..e06c0b8f 100755
--- a/src/lib/bakapee.h
+++ b/src/lib/bakapee.h
@@ -25,8 +25,11 @@
 
 #include "src/lib/16_head.h"
 #include "src/lib/modex16.h"
+#include <hw/cpu/cpu.h>
+#include <hw/dos/dos.h>
+#include <hw/vga/vga.h>
 //#include "src/lib/modex/modex.h"
-#include "16/x/modex.h"
+//#include "16/x/modex.h"
 
 #define TILEWH 16
 #define QUADWH			TILEWH/2
-- 
2.39.5