]> 4ch.mooo.com Git - 16.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorJonathan Campbell <jonathan@castus.tv>
Thu, 21 Apr 2016 14:27:33 +0000 (07:27 -0700)
committerJonathan Campbell <jonathan@castus.tv>
Thu, 21 Apr 2016 14:27:33 +0000 (07:27 -0700)
21 files changed:
.gitignore
16/v2/source/MAPED/MIKMOD.LIB [deleted file]
16/x/MODEX.LIB [deleted file]
16/x/modex.lib [deleted file]
16/x_/MODEX.LIB [deleted file]
16/x_/modex.lib [deleted file]
makefile
src/16.c
src/16.h
src/fontgfx.c
src/lib/16_timer.c
src/lib/16text.c
src/lib/doslib
src/lib/modex16.c
src/lib/modex16.h
src/lib/modex16/16render.c
src/lib/modex16/16render.h
src/lib/scroll16.c
src/lib/scroll16.h
src/scroll.c
ud.sh

index aa3c9906a6f90b711312ea0625ce7f37d24dbe18..61aa5c76ea68220b1a1e6c6276876c39da186b2f 100755 (executable)
@@ -17,8 +17,8 @@ makefile~
 README~\r
 TODO~\r
 LICENCE~\r
-*.map\r
-#*.MAP\r
+*.mah\r
+*.MAH\r
 !modex.lib\r
 img\r
 !.git/config\r
diff --git a/16/v2/source/MAPED/MIKMOD.LIB b/16/v2/source/MAPED/MIKMOD.LIB
deleted file mode 100755 (executable)
index 0f55de9..0000000
Binary files a/16/v2/source/MAPED/MIKMOD.LIB and /dev/null differ
diff --git a/16/x/MODEX.LIB b/16/x/MODEX.LIB
deleted file mode 100755 (executable)
index 1e7d573..0000000
Binary files a/16/x/MODEX.LIB and /dev/null differ
diff --git a/16/x/modex.lib b/16/x/modex.lib
deleted file mode 100755 (executable)
index 1e7d573..0000000
Binary files a/16/x/modex.lib and /dev/null differ
diff --git a/16/x_/MODEX.LIB b/16/x_/MODEX.LIB
deleted file mode 100755 (executable)
index 0e11c5c..0000000
Binary files a/16/x_/MODEX.LIB and /dev/null differ
diff --git a/16/x_/modex.lib b/16/x_/modex.lib
deleted file mode 100755 (executable)
index 0e11c5c..0000000
Binary files a/16/x_/modex.lib and /dev/null differ
index 57a260fb8e3d1cd63930164c5a096deda99bbfde..ee23f2f2b259485d174bfedc98c6c2c93ba9e4d9 100755 (executable)
--- a/makefile
+++ b/makefile
@@ -82,7 +82,8 @@ DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(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 $(DOSLIBDIR)$(DIRSEP)hw$(DIRSEP)vga$(DIRSEP)dos86h$(DIRSEP)vgatty.lib
+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
+#$(DOSLIBDIR)$(DIRSEP)hw$(DIRSEP)vga$(DIRSEP)dos86h$(DIRSEP)vgatty.lib
 
 TESTEXEC = exmmtest.exe test.exe pcxtest.exe pcxtest2.exe test2.exe palettec.exe maptest.exe fmemtest.exe fonttest.exe fontgfx.exe scroll.exe vgmtest.exe inputest.exe palettel.exe planrpcx.exe
 # tsthimem.exe
@@ -96,23 +97,23 @@ all: $(EXEC) joytest.exe vrs
 #game and bakapi executables
 #
 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
+       wcl $(FLAGS) $(16FLAGS) 16.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib -fm=16.mah
 
 bakapi.exe: bakapi.$(OBJ) gfx.lib $(DOSLIBLIBS)
-       wcl $(FLAGS) $(BAKAPIFLAGS) bakapi.$(OBJ) gfx.lib $(DOSLIBLIBS) -fm=bakapi.map
+       wcl $(FLAGS) $(BAKAPIFLAGS) bakapi.$(OBJ) gfx.lib $(DOSLIBLIBS) -fm=bakapi.mah
 #modex.lib
 #
 #Test Executables!
 #
 scroll.exe: scroll.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib
-       wcl $(FLAGS) scroll.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib -fm=scroll.map
+       wcl $(FLAGS) scroll.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib -fm=scroll.mah
 scroll.$(OBJ): $(SRC)scroll.c
        wcl $(FLAGS) -c $(SRC)scroll.c
 
 
 # NOTE: dos86h = 16-bit huge memory model. memory model must match!
 tesuto.exe: tesuto.$(OBJ) $(DOSLIBLIBS) 16_head.$(OBJ) gfx.lib
-#      %write tmp.cmd option quiet option map=tesuto.map $(DOSLIB_LDFLAGS_DOS16H) file tesuto.obj name tesuto.exe
+#      %write tmp.cmd option quiet option map=tesuto.mah $(DOSLIB_LDFLAGS_DOS16H) file tesuto.obj name tesuto.exe
 #      %write tmp.cmd library $(DOSLIBDIR)$(DIRSEP)hw$(DIRSEP)cpu$(DIRSEP)dos86h$(DIRSEP)cpu.lib
 #      %write tmp.cmd library $(DOSLIBDIR)$(DIRSEP)hw$(DIRSEP)dos$(DIRSEP)dos86h$(DIRSEP)dos.lib
 #      @wlink @tmp.cmd
@@ -121,22 +122,22 @@ tesuto.$(OBJ): $(SRC)tesuto.c
        wcl $(FLAGS) $(WCLQ) -c $(SRC)tesuto.c
 
 test.exe: test.$(OBJ) gfx.lib 16_in.$(OBJ) 16_head.$(OBJ)
-       wcl $(FLAGS) test.$(OBJ) gfx.lib 16_in.$(OBJ) 16_head.$(OBJ) -fm=test.map
+       wcl $(FLAGS) test.$(OBJ) gfx.lib 16_in.$(OBJ) 16_head.$(OBJ) -fm=test.mah
 
 test2.exe: test2.$(OBJ) gfx.lib
-       wcl $(FLAGS) test2.$(OBJ) gfx.lib -fm=test2.map
+       wcl $(FLAGS) test2.$(OBJ) gfx.lib -fm=test2.mah
 
 fonttest.exe: fonttest.$(OBJ) $(16LIBOBJS) gfx.lib
-       wcl $(FLAGS) fonttest.$(OBJ) $(16LIBOBJS) gfx.lib -fm=fonttest.map
+       wcl $(FLAGS) fonttest.$(OBJ) $(16LIBOBJS) gfx.lib -fm=fonttest.mah
 
 #fonttes0.exe: fonttes0.$(OBJ) $(16LIBOBJS)
 #      wcl $(FLAGS) fonttes0.$(OBJ) $(16LIBOBJS)
 
 fontgfx.exe: fontgfx.$(OBJ) $(16LIBOBJS) gfx.lib $(DOSLIBLIBS)
-       wcl $(FLAGS) fontgfx.$(OBJ) $(16LIBOBJS) gfx.lib $(DOSLIBLIBS) -fm=fontgfx.map
+       wcl $(FLAGS) fontgfx.$(OBJ) $(16LIBOBJS) gfx.lib $(DOSLIBLIBS) -fm=fontgfx.mah
 
 inputest.exe: inputest.$(OBJ) $(16LIBOBJS)
-       wcl $(FLAGS) inputest.$(OBJ) $(16LIBOBJS) -fm=inputest.map
+       wcl $(FLAGS) inputest.$(OBJ) $(16LIBOBJS) -fm=inputest.mah
 
 #sountest.exe: sountest.$(OBJ) $(16LIBOBJS)
 #      wcl $(FLAGS) sountest.$(OBJ) $(16LIBOBJS)
@@ -145,7 +146,7 @@ inputest.exe: inputest.$(OBJ) $(16LIBOBJS)
 #      wcl $(FLAGS) miditest.$(OBJ) $(16LIBOBJS) $(DOSLIBEXMMOBJ) midi.$(OBJ)
 
 tsthimem.exe: tsthimem.$(OBJ) $(16LIBOBJS) $(DOSLIBEXMMOBJ)
-       wcl $(FLAGS) tsthimem.$(OBJ) $(16LIBOBJS) $(DOSLIBEXMMOBJ) -fm=tsthimem.map
+       wcl $(FLAGS) tsthimem.$(OBJ) $(16LIBOBJS) $(DOSLIBEXMMOBJ) -fm=tsthimem.mah
 
 #testemm.exe: testemm.$(OBJ) $(16LIBOBJS) $(DOSLIBEXMMOBJ)
 #      wcl $(FLAGS) testemm.$(OBJ) $(16LIBOBJS) $(DOSLIBEXMMOBJ)
@@ -154,22 +155,22 @@ tsthimem.exe: tsthimem.$(OBJ) $(16LIBOBJS) $(DOSLIBEXMMOBJ)
 #      wcl $(FLAGS) testemm0.$(OBJ) $(16LIBOBJS) $(DOSLIBEXMMOBJ)
 
 pcxtest.exe: pcxtest.$(OBJ) gfx.lib
-       wcl $(FLAGS) pcxtest.$(OBJ) gfx.lib -fm=pcxtest.map
+       wcl $(FLAGS) pcxtest.$(OBJ) gfx.lib -fm=pcxtest.mah
 
 palettec.exe: palettec.$(OBJ) gfx.lib #$(16LIBOBJS)
-       wcl $(FLAGS) palettec.$(OBJ) gfx.lib -fm=palettec.map #$(16LIBOBJS)
+       wcl $(FLAGS) palettec.$(OBJ) gfx.lib -fm=palettec.mah #$(16LIBOBJS)
 
 palettel.exe: palettel.$(OBJ) gfx.lib #$(16LIBOBJS)
-       wcl $(FLAGS) palettel.$(OBJ) gfx.lib -fm=palettel.map #$(16LIBOBJS)
+       wcl $(FLAGS) palettel.$(OBJ) gfx.lib -fm=palettel.mah #$(16LIBOBJS)
 
 pcxtest2.exe: pcxtest2.$(OBJ) gfx.lib
-       wcl $(FLAGS) pcxtest2.$(OBJ) gfx.lib -fm=pcxtest2.map
+       wcl $(FLAGS) pcxtest2.$(OBJ) gfx.lib -fm=pcxtest2.mah
 
 planrpcx.exe: planrpcx.$(OBJ) gfx.lib
-       wcl $(FLAGS) planrpcx.$(OBJ) gfx.lib -fm=planrpcx.map
+       wcl $(FLAGS) planrpcx.$(OBJ) gfx.lib -fm=planrpcx.mah
 
 maptest.exe: maptest.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib
-       wcl $(FLAGS) maptest.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib -fm=maptest.map
+       wcl $(FLAGS) maptest.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib -fm=maptest.mah
 
 #maptest0.exe: maptest0.$(OBJ) fmapread.$(OBJ) farjsmn.$(OBJ)
 #      wcl $(FLAGS) $(MFLAGS) maptest0.$(OBJ) fmapread.$(OBJ) farjsmn.$(OBJ)
@@ -181,14 +182,14 @@ maptest.exe: maptest.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) $(16LIBOBJS) gfx.lib
 #      wcl $(FLAGS) $(MFLAGS) emsdump.$(OBJ) memory.$(OBJ)
 
 fmemtest.exe: fmemtest.$(OBJ) $(16LIBOBJS)
-       wcl $(FLAGS) fmemtest.$(OBJ) $(16LIBOBJS) -fm=fmemtest.map
+       wcl $(FLAGS) fmemtest.$(OBJ) $(16LIBOBJS) -fm=fmemtest.mah
 
 exmmtest.exe: exmmtest.$(OBJ) $(16LIBOBJS)
-       wcl $(FLAGS) exmmtest.$(OBJ) -fm=exmmtest.map $(16LIBOBJS)
+       wcl $(FLAGS) exmmtest.$(OBJ) -fm=exmmtest.mah $(16LIBOBJS)
 
 vgmtest.exe: vgmtest.$(OBJ) vgmsnd.lib $(16LIBOBJS)
-       wcl $(FLAGS) vgmtest.$(OBJ) vgmsnd.lib -fm=vgmtest.map $(16LIBOBJS)
-       #====wcl -mc vgmtest.$(OBJ) $(VGMSNDOBJ) -fm=vgmtest.map
+       wcl $(FLAGS) vgmtest.$(OBJ) vgmsnd.lib -fm=vgmtest.mah $(16LIBOBJS)
+       #====wcl -mc vgmtest.$(OBJ) $(VGMSNDOBJ) -fm=vgmtest.mah
 
 
 #
@@ -435,8 +436,8 @@ clean: .symbolic
 #      @$(REMOVECOMMAND) *.smp
        @$(REMOVECOMMAND) *.SMP
        @$(REMOVECOMMAND) *.hed
-       @$(REMOVECOMMAND) *.MAP
-       @$(REMOVECOMMAND) *.map
+       @$(REMOVECOMMAND) *.MAH
+       @$(REMOVECOMMAND) *.mah
        @$(REMOVECOMMAND) *.err
        #@cd $(DOSLIB)
        #@./buildall.sh clean
@@ -497,6 +498,7 @@ reinitlibs: .symbolic
        @wmake -h initlibs
 
 initlibs: .symbolic
+       @cp git_con.fig .git/config
        @cp git_modu.les .gitmodules
        @cd $(SRCLIB)
        @git clone https://github.com/joncampbell123/doslib.git
index 27c17a58c57641cb14d8324a26b040567f53b8d0..990a21150efd3f2bad5d6e792cf596cac4c206c0 100755 (executable)
--- a/src/16.c
+++ b/src/16.c
@@ -55,26 +55,28 @@ main(int argc, char *argv[])
 \r
        //screen = modexDefaultPage();\r
        engi_stat = ENGI_RUN;\r
-       //textInit();\r
+       textInit();\r
 \r
        /* save the palette */\r
        dpal = modexNewPal();\r
        modexPalSave(dpal);\r
-       modexFadeOff(4, dpal);\r
+//     modexFadeOff(4, dpal);\r
        //printf("pal load\n");\r
        //gpal = modexNewPal();\r
        /*modexPalSave(gpal);\r
        modexSavePalFile("data/g.pal", gpal);*/\r
-       printf("wwww loop wwww\n");\r
+//0000 printf("wwww loop wwww\n");\r
        VGAmodeX(1, 1, &gvar);\r
-       modexPalBlack();        //so player will not see loadings~\r
+//     modexPalBlack();        //so player will not see loadings~\r
        IN_Startup();\r
        IN_Default(0,&player,ctrl_Joystick);\r
        //modexprint(&screen, 32, 32, 1, 2, 0, "a", 1);\r
+       start_timer(&gvar);\r
        while(ENGI_EXIT != engi_stat)\r
        {\r
                IN_ReadControl(0,&player);\r
                if(IN_KeyDown(sc_Escape)) engi_stat = ENGI_EXIT;\r
+               shinku(&gvar);\r
        }\r
        switch(detectcpu())\r
        {\r
@@ -88,5 +90,5 @@ main(int argc, char *argv[])
        printf("version %s\n", VERSION);\r
        printf("detected CPU type: %s\n", cpus);\r
        IN_Shutdown();\r
-       modexFadeOn(4, dpal);\r
+//     modexFadeOn(4, dpal);\r
 }\r
index b12b1a7dacdc4d6b0bc08636fbb19a2aea11f674..bb8703268897cccf9658b78ba48f9120fef51deb 100755 (executable)
--- a/src/16.h
+++ b/src/16.h
@@ -27,7 +27,9 @@
 #include "src/lib/16_in.h"\r
 #include "src/lib/modex16.h"\r
 #include "src/lib/wcpu/wcpu.h"\r
-#include "src/lib/planar.h"\r
+//#include "src/lib/planar.h"\r
+#include "src/lib/scroll16.h"\r
+#include "src/lib/16_timer.h"\r
 \r
 typedef enum {\r
        ENGI_EXIT,\r
index 50427a3ad8af9075a7b5924beb3e27b221f8b34d..90e6a8692063a4fb843dd93790f401a8e419eb0f 100755 (executable)
 #include <hw/cpu/cpu.h>\r
 #include <hw/dos/dos.h>\r
 #include <hw/vga/vga.h>\r
-#include <hw/vga/vgatty.h>\r
 \r
 global_game_variables_t gvar;\r
 \r
 void main(int argc, char near *argv[])\r
 {\r
-       struct vga_mode_params cm;\r
        //JMOJI\r
        static byte e;\r
        //word ri;\r
@@ -96,7 +94,6 @@ IIIIIII  BBBBBBBBB    MMMM    M    MMMM\n\
        gvar.video.page[0].width += (16*2);\r
        gvar.video.page[0].height += (16*2);\r
        modexShowPage(&gvar.video.page[0]);\r
-       vga_read_crtc_mode(&cm);\r
        // NTS: We're in Mode-X now. printf() is useless. Do not use printf(). Or INT 10h text printing. Or DOS console output.\r
        //modexprint(16, 16, 1, 15, "wwww");\r
        //getch();\r
@@ -119,11 +116,13 @@ IIIIIII  BBBBBBBBB    MMMM    M    MMMM\n\
                }\r
                sprintf(pee, "%zc", e);\r
                modexprint(&gvar.video.page[0], chx, chy, 1, 0, colpee, &e);\r
-               chx+=9;\r
+               chx+=8;\r
                colpee++;\r
                if(colpee>=32+24) colpee=32;\r
        }\r
        getch();\r
+       modexprint(&gvar.video.page[0], gvar.video.page[0].width - (8*16)/*HACK: The rose ASCII is too wide for 320x240 so offset it to make sure the petals are visible*/, 8, 1, 45, 0, &rose);\r
+       getch();\r
        //modexprint(100, 100, 1, 47, 0, "wwww");\r
 //     modexprint(0, 0, 1, 0, colpee, &rose);\r
 //++++ modexprint(&gvar.video.page[0], 0, 0, 0, 0, colpee, &ibmlogo);\r
@@ -136,6 +135,4 @@ IIIIIII  BBBBBBBBB    MMMM    M    MMMM\n\
        printf("\n%s\n", rose);\r
        //printf("\nh=%d\n", '8');\r
 //     printf("\n%c\n", e);\r
-       printf("cm.offset=%d\n", cm.offset);\r
-       printf("vga_state.vga_stride=%d\n", vga_state.vga_stride);\r
 }\r
index c8416c79f822c08735e52cd15ade0026e4b7677e..0b5cf41684b797817425046634d7bd0cac2bde2b 100755 (executable)
@@ -29,7 +29,7 @@ clock_t start_timer(global_game_variables_t *gv)
        gv->kurokku.clock_start = *clockw;\r
        gv->kurokku.clock = clockw;\r
        gv->kurokku.frames_per_second = 60;\r
-       gv->pee = _nmalloc(sizeof(byte)*2);\r
+       gv->pee = _nmalloc(sizeof(byte)*16);\r
        //turn this off if XT\r
        switch(detectcpu())\r
        {\r
index 95b307ef972ea4dd817de28b719cae089459360f..81b71d98cc40594656ef25aed90a63cdca353779 100755 (executable)
@@ -31,6 +31,8 @@ static void getRomFontAddr(char fontNum, int index) {
     word fontOff;\r
 \r
     __asm {\r
+               PUSH AX\r
+               PUSH BX\r
                PUSH BP\r
                MOV AX, 0x1130          ;I can haz font info plz?\r
                MOV BH, fontNum         ;  where ur fontNum\r
@@ -40,6 +42,8 @@ static void getRomFontAddr(char fontNum, int index) {
                POP BP                  ;u can haz ur frame back!\r
                MOV fontSeg, AX         ;Storage\r
                MOV fontOff, BX         ;Storage\r
+               POP BX\r
+               POP AX\r
     }\r
     romFonts[index].seg = fontSeg;\r
     romFonts[index].off = fontOff;\r
index 9990f0adb22b4fed2598c8733172d131d1a412f2..ef2fcb68ef3c2f9ab023bd455acf488fda73c6eb 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 9990f0adb22b4fed2598c8733172d131d1a412f2
+Subproject commit ef2fcb68ef3c2f9ab023bd455acf488fda73c6eb
index cab1376675720d225ca62f6d01f1204c020a5ce4..5db7bf481849910a90551b4725f801c7600daa38 100755 (executable)
@@ -95,6 +95,9 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv)
                        /* width and height */\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
+                       /* virtual width and height. match screen, at first */\r
+                       gv->video.page[0].height = gv->video.page[0].sh;\r
+                       gv->video.page[0].width = gv->video.page[0].sw;\r
 \r
                        // mode X BYTE mode\r
                        cm.word_mode = 0;\r
@@ -880,8 +883,10 @@ byte modexgetPixel(page_t *page, int x, int y)
 void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str)\r
 {\r
        word s, o, w;\r
+       word x_draw = x;\r
        word addr = (word) romFontsData.l;\r
        word addrq = (page->width/4) * y + (x / 4) + ((word)page->data);\r
+       word addrr = addrq;\r
        byte c;\r
 \r
        s=romFonts[t].seg;\r
@@ -892,36 +897,23 @@ void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, cons
        for(; *str != '\0'; str++)\r
        {\r
        c = (*str);\r
-       if((c=='\n'/* || c=="\\r
-"*/) || romFontsData.chw\r
->=page->width)\r
+       if(c=='\n')\r
        {\r
-               romFontsData.chw=0;\r
-               y+=romFonts[t].charSize;\r
+               x = x_draw;\r
+               romFontsData.chw = 0;\r
+               addrq += (page->width / 4) * 8;\r
+               addrr = addrq;\r
+               y += 8;\r
                continue;\r
        }\r
-       //load the letter 'A'\r
-       __asm {\r
-               MOV DI, addr\r
-               MOV SI, o\r
-               MOV ES, s\r
-               SUB AH, AH\r
-               MOV AL, c       ; the letter\r
-               MOV CX, w\r
-               MUL CX\r
-               ADD SI, AX      ;the address of charcter\r
-       L1:     MOV AX, ES:SI\r
-               MOV DS:DI, AX\r
-               INC SI\r
-               INC DI\r
-               DEC CX\r
-               JNZ L1\r
-       }\r
-//TODO: OPTIMIZE THIS!!!!\r
-               modexDrawCharPBuf(page, x/*for mode X planar use*/, y/*redunant, remove*/, t, col, bgcol, addrq);\r
-               addrq += 2; /* move 8 pixels over (2 x 4 planar pixels per byte) */\r
 \r
-               //if(!q) getch();\r
+       // load the character into romFontsData.l\r
+       // no need for inline assembly!\r
+       // NTS: It might even be faster to just let the modexDrawChar point directly at ROM font than to copy per char! --J.C.\r
+               _fmemcpy(romFontsData.l,MK_FP(s,o+(w*c))/*ROM font location*/,w/*char size*/);\r
+               modexDrawChar(page, x_draw/*for mode X planar use*/, t, col, bgcol, addrr);\r
+               x_draw += 8; /* track X for edge of screen */\r
+               addrr += 2; /* move 8 pixels over (2 x 4 planar pixels per byte) */\r
        }\r
 }\r
 \r
@@ -1030,7 +1022,7 @@ void modexcls(page_t *page, byte color, byte *Where)
        _fmemset(Where, color, page->width*(page->height)/4);\r
 }\r
 \r
-/*void\r
+void\r
 modexWaitBorder() {\r
     while(inp(INPUT_STATUS_1)  & 8)  {\r
        // spin\r
@@ -1039,7 +1031,7 @@ modexWaitBorder() {
     while(!(inp(INPUT_STATUS_1)  & 8))  {\r
        // spin\r
     }\r
-}*/\r
+}\r
 \r
 void bios_cls() {\r
        VGA_ALPHA_PTR ap;\r
index f85eb055a2de9b60b47e8d9a0c7faecc4248a4ce..98551f485f65b924ec5b0748e9ab0be71b5deb46 100755 (executable)
@@ -180,7 +180,7 @@ void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, cons
 void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str);
 void modexpdump(page_t *pee);
 void modexcls(page_t *page, byte color, byte *Where);
-//void modexWaitBorder();
+void modexWaitBorder();
 void bios_cls();
 
 #endif
index 8e6fa43624cd41be40f3b0b7fbd4ffbdb7809f53..77598fa55ee14c9616bfbdff3d5b206b29719459 100755 (executable)
@@ -435,14 +435,15 @@ modexDrawSpritePBufRegion(page_t *page, int x, int y,
     }\r
 }\r
 \r
-void modexDrawCharPBuf(page_t *page, int x/*for planar selection only*/, int y/*redundant, remove*/, word t, word col, word bgcol, word addr)\r
+void modexDrawChar(page_t *page, int x/*for planar selection only*/, word t, word col, word bgcol, word addr)\r
 {\r
        /* vertical drawing routine by joncampbell123.\r
         *\r
         * optimize for VGA mode X planar memory to minimize the number of times we do I/O write to map mask register.\r
         * so, we enumerate over columns (not rows!) to draw every 4th pixel. bit masks are used because of the font bitmap.\r
-        * \r
+        *\r
         * NTS: addr defines what VGA memory address we use, "x" is redundant except to specify which of the 4 pixels we select in the map mask register. */\r
+       word rows = romFonts[t].charSize;\r
        word drawaddr;\r
        word colm, row;\r
        byte fontbyte;\r
@@ -455,7 +456,7 @@ void modexDrawCharPBuf(page_t *page, int x/*for planar selection only*/, int y/*
        for (colm=0;colm < 4;colm++) {\r
                drawaddr = addr;\r
                modexSelectPlane(PLANE(plane));\r
-               for (row=0;row < 8;row++) {\r
+               for (row=0;row < rows;row++) {\r
                        fontbyte = romFontsData.l[row];\r
                        vga_state.vga_graphics_ram[drawaddr  ] = (fontbyte & m1) ? col : bgcol;\r
                        vga_state.vga_graphics_ram[drawaddr+1] = (fontbyte & m2) ? col : bgcol;\r
index abf8f1f585099b23dc9ed699f21a47f84d642b49..f45fd76d95e272c196ff8377dfa0ff4dad5b46be 100755 (executable)
@@ -36,6 +36,6 @@ void modexDrawBmpPBuf(page_t *page, int x, int y, planar_buf_t *bmp); /*pbuf ver
 void modexDrawBmpPBufRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, planar_buf_t *bmp);\r
 void modexDrawSpritePBuf(page_t *page, int x, int y, planar_buf_t *bmp);\r
 void modexDrawSpritePBufRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, planar_buf_t *bmp);\r
-void modexDrawCharPBuf(page_t *page, int x, int y, word t, word col, word bgcol, word addr);\r
+void modexDrawChar(page_t *page, int x/*for planar selection only*/, word t, word col, word bgcol, word addr);\r
 \r
 #endif\r
index e9a9fc1536f0476ae5ba04ea98fd78b47db60745..1780d960d4b6c338383c30f9f69dbdf063e88990 100755 (executable)
@@ -586,22 +586,26 @@ void mapDrawWCol(map_view_t *mv, int tx, int ty, word x)
        //setkb(0);
 }*/
 
+unsigned char shinku_fps_indicator_page = 0;
+
 /*     sync    */
-void shinku(map_view_t *pip, global_game_variables_t *gv)
+void shinku(global_game_variables_t *gv)
 {
-       //float t;
        //modexCopyPageRegion(pip[1].page, pip[2].page, 16, 16, 16, 16, (14*8)+4, 8+4);
        if(elapsed_timer(gv) >= (1.0 / gv->kurokku.frames_per_second))
        {
-               word x = (16);
-               word y = (8+16);
-               word col = 15;
+               word x = (16) + gv->video.page[shinku_fps_indicator_page].dx; // follow the screen
+               word y = (16) + gv->video.page[shinku_fps_indicator_page].dy; // follow the screen
+               word col = 7;
                word bgcol = 0;
-               word type = 1;
+               word type = 0;
+
                //t=(((*(gv->clock))-gv->clock_start) /18.2);
                sprintf(gv->pee, "%f fps", (double)gv->kurokku.tiku/ticktock(gv));
-               printf("%s", gv->pee);
-               //modexprint(pip[1].page, 16, 16, 1, 15, 0, gv->pee);
+//             printf("%s\n", gv->pee);
+               //FIXME PLEASE!!
+               modexprint(&(gv->video.page[shinku_fps_indicator_page]), x, y, type, col, bgcol, gv->pee);
+//++++ modexprint(&(gv->video.page[0]), x, y, type, col, bgcol, gv->pee);
                //(gv->clock_start)=*(gv->clock);
                gv->kurokku.tiku=0;
        }
@@ -615,8 +619,8 @@ void shinku(map_view_t *pip, global_game_variables_t *gv)
                break;
                case 1:
                        //turn this off if XT
-                       //modexWaitBorder();
-                       vga_wait_for_vsync();
+                       modexWaitBorder();
+                       //vga_wait_for_vsync();
                        gv->kurokku.frames_per_second=60;
                break;
        }
index 77065af9f8ac4512bc2cd0f2f3ccb855611461c7..d3711b5e52cdb60ab566aabb47bdbd58b243cf60 100755 (executable)
@@ -37,7 +37,6 @@
 #include <hw/dos/dos.h>
 #include <hw/vga/vga.h>
 #include <hw/vga/vrl.h>
-#include <hw/vga/vgatty.h>
 
 //#define SPRITE
 //#define TILERENDER
@@ -79,7 +78,9 @@ void near mapDrawCol(map_view_t *mv, int tx, int ty, word x, player_t *p, word p
 void mapDrawWRow(map_view_t *mv, int tx, int ty, word y);
 void mapDrawWCol(map_view_t *mv, int tx, int ty, word x);
 //void qclean();
-void shinku(map_view_t *pip, global_game_variables_t *gv);
+void shinku(global_game_variables_t *gv);
 void near animatePlayer(map_view_t *pip, player_t *player, word playnum, sword scrollswitch);
 
+extern unsigned char shinku_fps_indicator_page;
+
 #endif /*__SCROLL16_H_*/
index b1b9d5ae9875e0aaccf3893c59b583d4abaf9a01..d13d7d01b30b272ff2e210b3d9d4e74679ed4271 100755 (executable)
@@ -134,7 +134,7 @@ void main(int argc, char *argv[])
        modexFadeOff(4, dpal);
 #endif
 
-       //textInit();
+       textInit();
        VGAmodeX(bakapee, 1, &gvar);
 //     printf("%dx%d\n", gvar.video.page[0].sw, gvar.video.page[0].sh);
 #ifdef FADE
@@ -194,6 +194,7 @@ void main(int argc, char *argv[])
 #endif
 
        modexShowPage(mv[1].page);
+       shinku_fps_indicator_page = 1; // we're on page 1 now, shinku(). follow along please or it will not be visible.
        //modexClearRegion(mv[2].page, 0, 0, mv[2].page->width, mv[2].page->height, 1);
 #ifdef MODEX
 #ifdef FADE
@@ -202,7 +203,7 @@ void main(int argc, char *argv[])
 #endif
        while(!IN_KeyDown(sc_Escape) && player[0].hp>0)
        {
-               shinku(mv, &gvar);
+               shinku(&gvar);
                IN_ReadControl(0,&player);
        //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square
        //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction
diff --git a/ud.sh b/ud.sh
index dd8c64f349f14507c40ea29deb576856393ad24b..e286903363af2d7ef098aa99d2657093a8447cb9 100755 (executable)
--- a/ud.sh
+++ b/ud.sh
@@ -1,2 +1,6 @@
+rm pcx2vrl
+rm pcxsscut
+rm vrl2vrs
+rm vrsdump
 git pull
 wmake -h uplibs