OSDN Git Service

p16 is being worked on a bunch by me wwww [16_ca needs huge amounts of work and I...
authorsparky4 <sparky4@cock.li>
Fri, 7 Apr 2017 15:30:40 +0000 (10:30 -0500)
committersparky4 <sparky4@cock.li>
Fri, 7 Apr 2017 15:30:40 +0000 (10:30 -0500)
makefile
src/bakapi.c
src/lib/16_sd.c [moved from src/lib/16_snd.c with 95% similarity]
src/lib/16_sd.h [moved from src/lib/16_snd.h with 92% similarity]
src/lib/16_tail.c
src/lib/16_vl.c
src/lib/16_vl.h
src/sountest.c
src/vgmtest.c

index 58c4aa7..9173830 100755 (executable)
--- 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
index cc61dcc..452bc71 100755 (executable)
@@ -28,6 +28,7 @@
 static bakapee_t bakapee;\r
 word key,d,xpos,ypos,xdir,ydir;\r
 sword vgamodex_mode = 1; // 320x240 default\r
+void TL_VidInit(global_game_variables_t *gvar){}\r
 //int ch=0x0;\r
 \r
 void\r
similarity index 95%
rename from src/lib/16_snd.c
rename to src/lib/16_sd.c
index e814c14..63e17e5 100755 (executable)
@@ -20,7 +20,7 @@
  *\r
  */\r
 \r
-#include "src/lib/16_snd.h"\r
+#include "src/lib/16_sd.h"\r
 \r
 void opl2out(word reg, word data)\r
 {\r
similarity index 92%
rename from src/lib/16_snd.h
rename to src/lib/16_sd.h
index 1d274ea..a2cb96c 100755 (executable)
  *\r
  */\r
 \r
-#ifndef __16_SND_H_\r
-#define __16_SND_H_\r
+#ifndef __16_SD_H_\r
+#define __16_SD_H_\r
 \r
 #include "src/lib/16_head.h"\r
+#include <hw/8254/8254.h>              /* 8254 timer */\r
+#include <hw/adlib/adlib.h>\r
 \r
 #define MIN_REGISTER                   0x01\r
 #define MAX_REGISTER                   0xF5\r
index 2e045c5..f7d5a71 100755 (executable)
@@ -509,7 +509,7 @@ void ClearMemory (global_game_variables_t *gvar)
 #ifdef __16_PM__\r
        PM_UnlockMainMem(gvar);\r
 #endif\r
-       //snd\r
+       //sd\r
        MM_SortMem (gvar);\r
 }\r
 \r
index 22149c0..9177646 100755 (executable)
@@ -55,6 +55,8 @@ void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv)
                default: // init the video\r
                        if(gv->video.VL_Started)\r
                                return;\r
+                       if(!gv->video.VL_Initiated)\r
+                               TL_VidInit(gv);\r
                        // get old video mode\r
                        //in.h.ah = 0xf;\r
                        //int86(0x10, &in, &out);\r
@@ -412,7 +414,7 @@ modexPanPage(page_t *page, int dx, int dy) {
 \r
 void\r
 modexSelectPlane(byte plane) {\r
-       outp(SC_INDEX, MAP_MASK);         /* select plane */\r
+       outp(SC_INDEX, SC_MAPMASK);       /* select plane */\r
        outp(SC_DATA,  plane);\r
 }\r
 \r
@@ -448,7 +450,7 @@ modexClearRegion(page_t *page, int x, int y, int w, int h, byte color)
                MOV ES, AX\r
                MOV DI, poffset  ; go to the first pixel\r
                MOV DX, SC_INDEX        ; point to the map mask\r
-               MOV AL, MAP_MASK\r
+               MOV AL, SC_MAPMASK\r
                OUT DX, AL\r
                INC DX\r
                MOV AL, color      ; get ready to write colors\r
@@ -537,7 +539,7 @@ modexCopyPageRegion(page_t *dest, page_t *src,
 \r
                MOV AX, SC_INDEX        ; point to the mask register\r
                MOV DX, AX                ;\r
-               MOV AL, MAP_MASK        ;\r
+               MOV AL, SC_MAPMASK      ;\r
                OUT DX, AL                ;\r
                INC DX            ;\r
 \r
index ba1d377..962593c 100755 (executable)
@@ -130,7 +130,7 @@ extern byte far*  VGA;  /* The VGA Memory */
 #define ATR_INDEX                      AC_INDEX\r
 #define ATR_OVERSCAN           17\r
 #define DISPLAY_ENABLE         0x01\r
-#define MAP_MASK               0x02\r
+//#define MAP_MASK             0x02\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
@@ -164,8 +164,8 @@ void VGAREADMAP(byte x);
 void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv);\r
 void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv);\r
 byte vgaGetMode();\r
+extern void TL_VidInit(global_game_variables_t *gvar);\r
 void modexLeave();\r
-void VL_SetLineWidth (unsigned width, ofs_t *ofs);\r
 void modexsetBaseXMode();\r
 page_t modexDefaultPage(page_t *p);\r
 page_t modexNextPage(page_t *p);\r
@@ -249,6 +249,7 @@ void modexWaitBorder();
 void modexWaitBorder_start();\r
 void modexWaitBorder_end();\r
 void VL_WaitVBL(word num);\r
+void VL_SetLineWidth (unsigned width, ofs_t *ofs);\r
 void VL_PrintmodexmemInfo(video_t *v);\r
 \r
 #endif\r
index c8353ef..d15a546 100755 (executable)
@@ -23,9 +23,9 @@
 #include <stdio.h>\r
 \r
 #include "src/lib/16_in.h"\r
-//#include "src/lib/16_snd.h"\r
-#include "src/lib/doslib/adlib.h"\r
-#include "src/lib/doslib/8254.h"               /* 8254 timer */\r
+#include "src/lib/16_sd.h"\r
+//#include <hw/8254/8254.h>            /* 8254 timer */\r
+//#include <hw/adlib/adlib.h>\r
 \r
 static unsigned int musical_scale[18] = {\r
        0x1B0,                  /* E */\r
@@ -53,6 +53,8 @@ void main(int argc, char near *argv[])
 {\r
        static global_game_variables_t gvar;\r
        word i;\r
+       boolean                 done;\r
+       ScanCode                scan;\r
 //     static FMInstrument testInst =\r
 //{\r
 //0x00, 0x01,  /* modulator frequency multiple... 0x20 */\r
@@ -63,12 +65,12 @@ void main(int argc, char near *argv[])
 //0x36,                                /* feedback algorithm and strength 0xC0 */\r
 //};\r
 \r
-       IN_Startup();\r
+       IN_Startup(&gvar);\r
        //FMReset();\r
        //FMSetVoice(0, &testInst);\r
        if(!init_adlib())\r
        {\r
-               Quit(gvar, "Cannot init library");\r
+               Quit(&gvar, "Cannot init library");\r
        }\r
 \r
        if (adlib_fm_voices > 9)\r
@@ -114,23 +116,32 @@ void main(int argc, char near *argv[])
        adlib_apply_all();\r
 \r
        printf("press Z!  to noise\npress ESC to quit");\r
-       printf("p");\r
-       while(!IN_qb(1))\r
+       printf("\np");\r
+       for (done = false;!done;)\r
        {\r
-               if(IN_qb(44))\r
-               {\r
-                       printf("e");\r
-                       adlib_fm[0].mod.key_on = 1;\r
-                       //FMKeyOn(0, 0x106, 4);\r
-               }\r
-               else\r
+               while (!(scan = gvar.in.inst->LastScan))\r
+               {}\r
+//                     SD_Poll();\r
+\r
+               IN_ClearKey(scan);\r
+               switch (scan)\r
                {\r
-                       adlib_fm[0].mod.key_on = 0;\r
-                       //FMKeyOff(0);\r
+                       case sc_Escape:\r
+                               done = true;\r
+                       break;\r
+                       case sc_Z:\r
+                               adlib_fm[0].mod.key_on = 1;\r
+                               //FMKeyOn(0, 0x106, 4);\r
+                       break;\r
+                       default:\r
+                               adlib_fm[0].mod.key_on = 0;\r
+                               //FMKeyOff(0);\r
+                       break;\r
                }\r
+               if(adlib_fm[0].mod.key_on) printf("e");\r
                adlib_update_groupA0(0,&adlib_fm[0]);\r
        }\r
        printf("!\n");\r
        shutdown_adlib();\r
-       IN_Shutdown();\r
+       IN_Shutdown(&gvar);\r
 }\r
index b2b1b04..ee9e09f 100755 (executable)
@@ -24,7 +24,7 @@
  */\r
 \r
 #include "src/lib/vgmsnd/vgmSnd.h"\r
-#include "src/lib/16_snd.h"\r
+#include "src/lib/16_sd.h"\r
 //#include "src/lib/doslib/adlib.h"\r
 #include "src/lib/16_in.h"\r
 \r