From: sparky4 Date: Fri, 7 Apr 2017 15:30:40 +0000 (-0500) Subject: p16 is being worked on a bunch by me wwww [16_ca needs huge amounts of work and I... X-Git-Url: http://git.osdn.net/view?p=proj16%2F16.git;a=commitdiff_plain;h=946dfbe9b29be3a3b180c37e0b414a938e867dc6 p16 is being worked on a bunch by me wwww [16_ca needs huge amounts of work and I should remember what needs to be done soon][OpenVGMFile needs to be ported to 16_snd.c]going to port rest of code to borland c some time so we can use the core components of id engine here [going to add 16_us.c eventually but the debug system and CA_ PM_ and MM_ usage is priority now]older zcroll renamed to xcroll][zcroll is now the pre menu game loop system with PROPER data usage with CAMMPM] MM_ShowMemory is quite buggy on real machines. i need to debug it and fix added a struct printer[gvar.mm is FUCKING HUGE 14402 bytes FAT\!]sountest.exe readded --- diff --git a/makefile b/makefile index 58c4aa71..91738308 100755 --- a/makefile +++ b/makefile @@ -88,6 +88,8 @@ DOSLIB_CPU=$(DOSLIBDIR)/hw/cpu DOSLIB_DOS=$(DOSLIBDIR)/hw/dos DOSLIB_VGA=$(DOSLIBDIR)/hw/vga DOSLIB_8250=$(DOSLIBDIR)/hw/8250 +DOSLIB_8254=$(DOSLIBDIR)/hw/8254 +DOSLIB_ADLIB=$(DOSLIBDIR)/hw/adlib DOSLIB_JOYSTICK=$(DOSLIBDIR)/hw/joystick DOSLIB_MEMMODE=dos86$(MEMORYMODE) @@ -132,7 +134,7 @@ LIBFLAGS=$(WLIBQ) -b -n # # objects # -VGMSNDOBJ = vgmSnd.$(OBJ) 16_snd.$(OBJ) +VGMSNDOBJ = vgmSnd.$(OBJ) 16_sd.$(OBJ) #OLDLIBOBJS=bitmap.$(OBJ) 16render.$(OBJ) GFXLIBOBJS = 16_vl.$(OBJ) 16_vl_1.$(OBJ) 16_vlpal.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16_vrs.$(OBJ) 16_spri.$(OBJ) $(OLDLIBOBJS) 16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_head.$(OBJ) 16_enti.$(OBJ) 16_dbg.$(OBJ) 16_in.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) 16_wcpu.$(OBJ) 16_timer.$(OBJ) jsmn.$(OBJ) 16_map.$(OBJ) 16text.$(OBJ) @@ -144,7 +146,7 @@ DOSLIBOBJ += 8250.$(OBJ) # # libraries # -DOSLIBLIBS = $(DOSLIB_CPU)/$(DOSLIB_MEMMODE)/cpu.lib $(DOSLIB_DOS)/$(DOSLIB_MEMMODE)/dos.lib $(DOSLIB_VGA)/$(DOSLIB_MEMMODE)/vga.lib +DOSLIBLIBS = $(DOSLIB_CPU)/$(DOSLIB_MEMMODE)/cpu.lib $(DOSLIB_DOS)/$(DOSLIB_MEMMODE)/dos.lib $(DOSLIB_VGA)/$(DOSLIB_MEMMODE)/vga.lib $(DOSLIB_8254)/$(DOSLIB_MEMMODE)/8254.lib $(DOSLIB_ADLIB)/$(DOSLIB_MEMMODE)/adlib.lib !ifeq DEBUGSERIAL 1 DOSLIBLIBS += $(DOSLIB_8250)/$(DOSLIB_MEMMODE)/8250.lib !endif @@ -158,7 +160,7 @@ DOSLIB=doslib.lib .asm : $(MODEXLIB);$(UTIL) -.lib : .;$(DOSLIB_CPU)/$(DOSLIB_MEMMODE);$(DOSLIB_DOS)/$(DOSLIB_MEMMODE);$(DOSLIB_VGA)/$(DOSLIB_MEMMODE);$(DOSLIB_8250)/$(DOSLIB_MEMMODE) +.lib : .;$(DOSLIB_CPU)/$(DOSLIB_MEMMODE);$(DOSLIB_DOS)/$(DOSLIB_MEMMODE);$(DOSLIB_VGA)/$(DOSLIB_MEMMODE);$(DOSLIB_8250)/$(DOSLIB_MEMMODE);$(DOSLIB_8254)/$(DOSLIB_MEMMODE);$(DOSLIB_ADLIB)/$(DOSLIB_MEMMODE) .$(OBJ) : . @@ -190,6 +192,7 @@ TESTEXEC = & vidtest.exe & exmmtest.exe & vgmtest.exe & + sountest.exe & xcroll.exe & inputest.exe & vrstest.exe & @@ -267,7 +270,7 @@ fonttest.exe: fonttest.$(OBJ) gfx.lib fontgfx.exe: fontgfx.$(OBJ) gfx.lib $(DOSLIB) inputest.exe: inputest.$(OBJ) $(16LIB) $(DOSLIB) gfx.lib #inntest.exe: inntest.$(OBJ) $(16LIBNOINOBJS) 16_in_1.$(OBJ) $(DOSLIB) gfx.lib -#sountest.exe: sountest.$(OBJ) $(16LIB) +sountest.exe: sountest.$(OBJ) $(16LIB) $(DOSLIB) gfx.lib pcxtest.exe: pcxtest.$(OBJ) gfx.lib $(DOSLIB) $(16LIB) vrstest.exe: vrstest.$(OBJ) $(16LIB) gfx.lib $(DOSLIB) #vgacamm.exe: vgacamm.$(OBJ) $(16LIB) gfx.lib $(DOSLIB) @@ -311,7 +314,7 @@ fonttest.$(OBJ):$(SRC)/fonttest.c fontgfx.$(OBJ):$(SRC)/fontgfx.c inputest.$(OBJ):$(SRC)/inputest.c #inntest.$(OBJ):$(SRC)/inntest.c -#sountest.$(OBJ): $(SRC)/sountest.c +sountest.$(OBJ): $(SRC)/sountest.c #miditest.$(OBJ): $(SRC)/miditest.c #testemm.$(OBJ):$(SRC)/testemm.c #testemm0.$(OBJ): $(SRC)/testemm0.c @@ -345,6 +348,10 @@ $(DOSLIB_VGA)/$(DOSLIB_MEMMODE)/vga.lib: cd $(DOSLIB_VGA:$(to_os_path)) && $(DOSLIBMAKE) $(DOSLIB_MEMMODE) && cd $(BUILD_ROOT) $(DOSLIB_8250)/$(DOSLIB_MEMMODE)/8250.lib: cd $(DOSLIB_8250:$(to_os_path)) && $(DOSLIBMAKE) $(DOSLIB_MEMMODE) && cd $(BUILD_ROOT) +$(DOSLIB_8254)/$(DOSLIB_MEMMODE)/8254.lib: + cd $(DOSLIB_8254:$(to_os_path)) && $(DOSLIBMAKE) $(DOSLIB_MEMMODE) && cd $(BUILD_ROOT) +$(DOSLIB_ADLIB)/$(DOSLIB_MEMMODE)/adlib.lib: + cd $(DOSLIB_ADLIB:$(to_os_path)) && $(DOSLIBMAKE) $(DOSLIB_MEMMODE) && cd $(BUILD_ROOT) joytest.exe: cd $(DOSLIB_JOYSTICK:$(to_os_path)) && $(DOSLIBMAKE) $(DOSLIB_MEMMODE) && cd $(BUILD_ROOT) @@ -378,7 +385,7 @@ midi.$(OBJ): $(SRCLIB)/midi.c $(SRCLIB)/midi.h 16_head.$(OBJ):$(SRCLIB)/16_head.c $(SRCLIB)/16_head.h 16_tail.$(OBJ):$(SRCLIB)/16_tail.c $(SRCLIB)/16_tail.h 16_hc.$(OBJ): $(SRCLIB)/16_hc.c $(SRCLIB)/16_hc.h -16_snd.$(OBJ): $(SRCLIB)/16_snd.c $(SRCLIB)/16_snd.h +16_sd.$(OBJ): $(SRCLIB)/16_sd.c $(SRCLIB)/16_sd.h jsmn.$(OBJ): $(JSMNLIB)/jsmn.c $(JSMNLIB)/jsmn.h kitten.$(OBJ): $(NYANLIB)/kitten.c $(NYANLIB)/kitten.h vgmSnd.$(OBJ): $(VGMSNDLIB)/vgmSnd.c $(VGMSNDLIB)/vgmSnd.h diff --git a/src/bakapi.c b/src/bakapi.c index cc61dcc8..452bc717 100755 --- a/src/bakapi.c +++ b/src/bakapi.c @@ -28,6 +28,7 @@ static bakapee_t bakapee; word key,d,xpos,ypos,xdir,ydir; sword vgamodex_mode = 1; // 320x240 default +void TL_VidInit(global_game_variables_t *gvar){} //int ch=0x0; void diff --git a/src/lib/16_snd.c b/src/lib/16_sd.c similarity index 95% rename from src/lib/16_snd.c rename to src/lib/16_sd.c index e814c148..63e17e5c 100755 --- a/src/lib/16_snd.c +++ b/src/lib/16_sd.c @@ -20,7 +20,7 @@ * */ -#include "src/lib/16_snd.h" +#include "src/lib/16_sd.h" void opl2out(word reg, word data) { diff --git a/src/lib/16_snd.h b/src/lib/16_sd.h similarity index 92% rename from src/lib/16_snd.h rename to src/lib/16_sd.h index 1d274eab..a2cb96c4 100755 --- a/src/lib/16_snd.h +++ b/src/lib/16_sd.h @@ -20,10 +20,12 @@ * */ -#ifndef __16_SND_H_ -#define __16_SND_H_ +#ifndef __16_SD_H_ +#define __16_SD_H_ #include "src/lib/16_head.h" +#include /* 8254 timer */ +#include #define MIN_REGISTER 0x01 #define MAX_REGISTER 0xF5 diff --git a/src/lib/16_tail.c b/src/lib/16_tail.c index 2e045c58..f7d5a71a 100755 --- a/src/lib/16_tail.c +++ b/src/lib/16_tail.c @@ -509,7 +509,7 @@ void ClearMemory (global_game_variables_t *gvar) #ifdef __16_PM__ PM_UnlockMainMem(gvar); #endif - //snd + //sd MM_SortMem (gvar); } diff --git a/src/lib/16_vl.c b/src/lib/16_vl.c index 22149c06..91776466 100755 --- a/src/lib/16_vl.c +++ b/src/lib/16_vl.c @@ -55,6 +55,8 @@ void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv) default: // init the video if(gv->video.VL_Started) return; + if(!gv->video.VL_Initiated) + TL_VidInit(gv); // get old video mode //in.h.ah = 0xf; //int86(0x10, &in, &out); @@ -412,7 +414,7 @@ modexPanPage(page_t *page, int dx, int dy) { void modexSelectPlane(byte plane) { - outp(SC_INDEX, MAP_MASK); /* select plane */ + outp(SC_INDEX, SC_MAPMASK); /* select plane */ outp(SC_DATA, plane); } @@ -448,7 +450,7 @@ modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) MOV ES, AX MOV DI, poffset ; go to the first pixel MOV DX, SC_INDEX ; point to the map mask - MOV AL, MAP_MASK + MOV AL, SC_MAPMASK OUT DX, AL INC DX MOV AL, color ; get ready to write colors @@ -537,7 +539,7 @@ modexCopyPageRegion(page_t *dest, page_t *src, MOV AX, SC_INDEX ; point to the mask register MOV DX, AX ; - MOV AL, MAP_MASK ; + MOV AL, SC_MAPMASK ; OUT DX, AL ; INC DX ; diff --git a/src/lib/16_vl.h b/src/lib/16_vl.h index ba1d377c..962593c7 100755 --- a/src/lib/16_vl.h +++ b/src/lib/16_vl.h @@ -130,7 +130,7 @@ extern byte far* VGA; /* The VGA Memory */ #define ATR_INDEX AC_INDEX #define ATR_OVERSCAN 17 #define DISPLAY_ENABLE 0x01 -#define MAP_MASK 0x02 +//#define MAP_MASK 0x02 #define PAL_READ_REG 0x03C7 /* Color register, read address */ #define PAL_WRITE_REG 0x03C8 /* Color register, write address */ #define PAL_DATA_REG 0x03C9 /* Color register, data port */ @@ -164,8 +164,8 @@ void VGAREADMAP(byte x); void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv); void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv); byte vgaGetMode(); +extern void TL_VidInit(global_game_variables_t *gvar); void modexLeave(); -void VL_SetLineWidth (unsigned width, ofs_t *ofs); void modexsetBaseXMode(); page_t modexDefaultPage(page_t *p); page_t modexNextPage(page_t *p); @@ -249,6 +249,7 @@ void modexWaitBorder(); void modexWaitBorder_start(); void modexWaitBorder_end(); void VL_WaitVBL(word num); +void VL_SetLineWidth (unsigned width, ofs_t *ofs); void VL_PrintmodexmemInfo(video_t *v); #endif diff --git a/src/sountest.c b/src/sountest.c index c8353ef0..d15a5462 100755 --- a/src/sountest.c +++ b/src/sountest.c @@ -23,9 +23,9 @@ #include #include "src/lib/16_in.h" -//#include "src/lib/16_snd.h" -#include "src/lib/doslib/adlib.h" -#include "src/lib/doslib/8254.h" /* 8254 timer */ +#include "src/lib/16_sd.h" +//#include /* 8254 timer */ +//#include static unsigned int musical_scale[18] = { 0x1B0, /* E */ @@ -53,6 +53,8 @@ void main(int argc, char near *argv[]) { static global_game_variables_t gvar; word i; + boolean done; + ScanCode scan; // static FMInstrument testInst = //{ //0x00, 0x01, /* modulator frequency multiple... 0x20 */ @@ -63,12 +65,12 @@ void main(int argc, char near *argv[]) //0x36, /* feedback algorithm and strength 0xC0 */ //}; - IN_Startup(); + IN_Startup(&gvar); //FMReset(); //FMSetVoice(0, &testInst); if(!init_adlib()) { - Quit(gvar, "Cannot init library"); + Quit(&gvar, "Cannot init library"); } if (adlib_fm_voices > 9) @@ -114,23 +116,32 @@ void main(int argc, char near *argv[]) adlib_apply_all(); printf("press Z! to noise\npress ESC to quit"); - printf("p"); - while(!IN_qb(1)) + printf("\np"); + for (done = false;!done;) { - if(IN_qb(44)) - { - printf("e"); - adlib_fm[0].mod.key_on = 1; - //FMKeyOn(0, 0x106, 4); - } - else + while (!(scan = gvar.in.inst->LastScan)) + {} +// SD_Poll(); + + IN_ClearKey(scan); + switch (scan) { - adlib_fm[0].mod.key_on = 0; - //FMKeyOff(0); + case sc_Escape: + done = true; + break; + case sc_Z: + adlib_fm[0].mod.key_on = 1; + //FMKeyOn(0, 0x106, 4); + break; + default: + adlib_fm[0].mod.key_on = 0; + //FMKeyOff(0); + break; } + if(adlib_fm[0].mod.key_on) printf("e"); adlib_update_groupA0(0,&adlib_fm[0]); } printf("!\n"); shutdown_adlib(); - IN_Shutdown(); + IN_Shutdown(&gvar); } diff --git a/src/vgmtest.c b/src/vgmtest.c index b2b1b040..ee9e09fe 100755 --- a/src/vgmtest.c +++ b/src/vgmtest.c @@ -24,7 +24,7 @@ */ #include "src/lib/vgmsnd/vgmSnd.h" -#include "src/lib/16_snd.h" +#include "src/lib/16_sd.h" //#include "src/lib/doslib/adlib.h" #include "src/lib/16_in.h"