From fb900d77df687bfa549995e15a762017c381e552 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Mon, 31 Oct 2016 11:42:41 -0500 Subject: [PATCH] ==== OK i removed all warnings wwww --- .makefile.kate-swp | Bin 72 -> 0 bytes makefile | 240 ++++++++++---------- scroll.exe | Bin 0 -> 75475 bytes src/lib/16_ca.c | 10 +- src/lib/16_in.c | 4 +- src/lib/16_map.c | 4 +- src/lib/16_mm.c | 22 +- src/lib/16_pm.c | 20 +- src/lib/16_tail.c | 6 +- src/lib/16_vl.c | 541 +++++++++++++++++++++++--------------------- src/lib/16_vl.h | 2 +- src/lib/16_vrs.c | 15 +- src/lib/16render.c | 45 +--- src/lib/16render.h | 1 - src/lib/16text.c | 4 +- src/lib/scroll16.c | 17 +- src/lib/scroll16.h | 2 + src/lib/wcpu/wcpu.c | 2 +- src/zcroll.c | 1 + wbuild.sh | 8 +- 20 files changed, 470 insertions(+), 474 deletions(-) delete mode 100755 .makefile.kate-swp create mode 100755 scroll.exe diff --git a/.makefile.kate-swp b/.makefile.kate-swp deleted file mode 100755 index d00c921e9440fe5631e32036e0d27526bb881b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmZQzU=Z?7EJ;-eE>A2_aLdd|RWQ;sU|?VnNGf`ee($4n>%{+8_XKgx{}Aj66wL)< YX&~lT$W1ILN=;1BQ_=8u^3rq#025yoIRF3v diff --git a/makefile b/makefile index 7eacf644..3a190a4f 100755 --- a/makefile +++ b/makefile @@ -4,23 +4,23 @@ # # Possible optimizations for 8088 class processors # -# -oa Relax alias checking -# -ob Try to generate straight line code +# -oaRelax alias checking +# -obTry to generate straight line code # -oe - expand user functions inline (-oe=20 is default, adds lots of code) -# -oh Enable repeated optimizations -# -oi generate certain lib funcs inline -# -oi+ Set max inline depth (C++ only, use -oi for C) -# -ok Flowing of register save into function flow graph -# -ol loop optimizations -# -ol+ loop optimizations plus unrolling -# -or Reorder for pipelined (486+ procs); not sure if good to use -# -os Favor space over time -# -ot Favor time over space -# -ei Allocate an "int" for all enum types -# -zp2 Allow compiler to add padding to structs -# -zpw Use with above; make sure you are warning free! -# -0 8088/8086 class code generation -# -s disable stack overflow checking +# -ohEnable repeated optimizations +# -oigenerate certain lib funcs inline +# -oi+Set max inline depth (C++ only, use -oi for C) +# -okFlowing of register save into function flow graph +# -olloop optimizations +# -ol+loop optimizations plus unrolling +# -orReorder for pipelined (486+ procs); not sure if good to use +# -osFavor space over time +# -otFavor time over space +# -eiAllocate an "int" for all enum types +# -zp2Allow compiler to add padding to structs +# -zpwUse with above; make sure you are warning free! +# -0 8088/8086 class code generation +# -s disable stack overflow checking # -zk0u translate kanji to unicode... wwww # -zk0 kanji support~ @@ -107,7 +107,7 @@ LIBFLAGS=$(WLIBQ) -b -n # VGMSNDOBJ = vgmSnd.$(OBJ) 16_snd.$(OBJ) GFXLIBOBJS = 16_vl.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16render.$(OBJ) 16_vrs.$(OBJ) 16_sprit.$(OBJ) -OLDGFXLIBOBJS=bitmap.$(OBJ) +OLDLIBOBJS=bitmap.$(OBJ) mapread.$(OBJ) 16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_in.$(OBJ) 16_head.$(OBJ) 16_dbg.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) wcpu.$(OBJ) 16_timer.$(OBJ) 16_map.$(OBJ) jsmn.$(OBJ) #16planar.$(OBJ) planar.$(OBJ) DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ) @@ -155,31 +155,31 @@ DOSLIBLIBS += $(DOSLIB_8250)/dos86h/8250.lib # List of executables to build # TESTEXEC = & - tesuto.exe & - 0.exe & - scroll.exe & - zcroll.exe & - exmmtest.exe & - vrstest.exe + tesuto.exe & + 0.exe & + zcroll.exe & + exmmtest.exe & + vrstest.exe TESTEXEC2 = & - vgmtest.exe & - inputest.exe & - maptest.exe & - fmemtest.exe & - fonttest.exe & - fontgfx.exe & - test.exe & - test0.exe & - pcxtest.exe & - pcxtest2.exe + scroll.exe & + vgmtest.exe & + inputest.exe & + maptest.exe & + fmemtest.exe & + fonttest.exe & + fontgfx.exe & + test.exe & + test0.exe & + pcxtest.exe & + pcxtest2.exe UTILEXEC = & - palettel.exe & - palettec.exe + palettel.exe & + palettec.exe EXEC = & - 16.exe & - bakapi.exe & - $(UTILEXEC) & - $(TESTEXEC) + 16.exe & + bakapi.exe & + $(UTILEXEC) & + $(TESTEXEC) all: $(EXEC) joytest.exe testexec: $(EXEC) joytest.exe $(TESTEXEC2) @@ -187,70 +187,70 @@ testexec: $(EXEC) joytest.exe $(TESTEXEC2) # # game and bakapi executables # -16.exe: 16.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) -bakapi.exe: bakapi.$(OBJ) gfx.lib $(DOSLIBLIBS) +16.exe: 16.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) +bakapi.exe: bakapi.$(OBJ) gfx.lib $(DOSLIBLIBS) # # Test Executables! # -scroll.exe: scroll.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) $(OLDGFXLIBOBJS) -scroll.$(OBJ): $(SRC)/scroll.c -zcroll.exe: zcroll.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) -zcroll.$(OBJ): $(SRC)/zcroll.c -tesuto.exe: tesuto.$(OBJ) 16_head.$(OBJ) gfx.lib $(DOSLIBLIBS) -tesuto.$(OBJ): $(SRC)/tesuto.c -0.exe: 0.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) -0.$(OBJ): $(SRC)/0.c -test.exe: test.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) -#test2.exe: test2.$(OBJ) gfx.lib $(DOSLIBLIBS) -test0.exe: test0.$(OBJ) -fonttest.exe: fonttest.$(OBJ) gfx.lib -#fonttes0.exe: fonttes0.$(OBJ) $(16LIB) -fontgfx.exe: fontgfx.$(OBJ) gfx.lib $(DOSLIBLIBS) -inputest.exe: inputest.$(OBJ) $(16LIB) $(DOSLIBLIBS) -#sountest.exe: sountest.$(OBJ) $(16LIB) -pcxtest.exe: pcxtest.$(OBJ) gfx.lib $(DOSLIBLIBS) $(OLDGFXLIBOBJS) -vrstest.exe: vrstest.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) -#vgacamm.exe: vgacamm.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) -palettec.exe: palettec.$(OBJ) gfx.lib $(DOSLIBLIBS) -palettel.exe: palettel.$(OBJ) gfx.lib $(DOSLIBLIBS) -pcxtest2.exe: pcxtest2.$(OBJ) gfx.lib $(DOSLIBLIBS) $(OLDGFXLIBOBJS) -#planrpcx.exe: planrpcx.$(OBJ) gfx.lib -maptest.exe: maptest.$(OBJ) 16_map.$(OBJ) 16_head.$(OBJ) gfx.lib $(DOSLIBLIBS) -fmemtest.exe: fmemtest.$(OBJ) -exmmtest.exe: exmmtest.$(OBJ) $(16LIB) $(DOSLIBLIBS) -vgmtest.exe: vgmtest.$(OBJ) vgmsnd.lib $(16LIB) $(DOSLIBLIBS) +scroll.exe: scroll.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) $(OLDLIBOBJS) +scroll.$(OBJ): $(SRC)/scroll.c +zcroll.exe: zcroll.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) +zcroll.$(OBJ): $(SRC)/zcroll.c +tesuto.exe: tesuto.$(OBJ) 16_head.$(OBJ) gfx.lib $(DOSLIBLIBS) +tesuto.$(OBJ): $(SRC)/tesuto.c +0.exe: 0.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) +0.$(OBJ): $(SRC)/0.c +test.exe: test.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) +#test2.exe: test2.$(OBJ) gfx.lib $(DOSLIBLIBS) +test0.exe: test0.$(OBJ) +fonttest.exe: fonttest.$(OBJ) gfx.lib +#fonttes0.exe: fonttes0.$(OBJ) $(16LIB) +fontgfx.exe: fontgfx.$(OBJ) gfx.lib $(DOSLIBLIBS) +inputest.exe: inputest.$(OBJ) $(16LIB) $(DOSLIBLIBS) +#sountest.exe: sountest.$(OBJ) $(16LIB) +pcxtest.exe: pcxtest.$(OBJ) gfx.lib $(DOSLIBLIBS) $(OLDLIBOBJS) +vrstest.exe: vrstest.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) +#vgacamm.exe: vgacamm.$(OBJ) $(16LIB) gfx.lib $(DOSLIBLIBS) +palettec.exe: palettec.$(OBJ) gfx.lib $(DOSLIBLIBS) +palettel.exe: palettel.$(OBJ) gfx.lib $(DOSLIBLIBS) +pcxtest2.exe: pcxtest2.$(OBJ) gfx.lib $(DOSLIBLIBS) $(OLDLIBOBJS) +#planrpcx.exe: planrpcx.$(OBJ) gfx.lib +maptest.exe: maptest.$(OBJ) 16_map.$(OBJ) 16_head.$(OBJ) gfx.lib $(DOSLIBLIBS) +fmemtest.exe: fmemtest.$(OBJ) +exmmtest.exe: exmmtest.$(OBJ) $(16LIB) $(DOSLIBLIBS) +vgmtest.exe: vgmtest.$(OBJ) vgmsnd.lib $(16LIB) $(DOSLIBLIBS) # # executable's objects # -16.$(OBJ): $(SRC)/16.c $(SRC)/16.h -bakapi.$(OBJ): $(SRC)/bakapi.c $(SRC)/bakapi.h -test.$(OBJ): $(SRC)/test.c $(SRCLIB)/16_vl.h -#test2.$(OBJ): $(SRC)/test2.c $(SRCLIB)/16_vl.h -test0.$(OBJ): $(SRC)/test0.c -pcxtest.$(OBJ): $(SRC)/pcxtest.c $(SRCLIB)/16_vl.h -vrstest.$(OBJ): $(SRC)/vrstest.c $(SRCLIB)/16_vl.h -#vgacamm.$(OBJ): $(SRC)/vgacamm.c $(SRCLIB)/16_vl.h +16.$(OBJ): $(SRC)/16.c $(SRC)/16.h +bakapi.$(OBJ): $(SRC)/bakapi.c $(SRC)/bakapi.h +test.$(OBJ): $(SRC)/test.c $(SRCLIB)/16_vl.h +#test2.$(OBJ): $(SRC)/test2.c $(SRCLIB)/16_vl.h +test0.$(OBJ): $(SRC)/test0.c +pcxtest.$(OBJ):$(SRC)/pcxtest.c $(SRCLIB)/16_vl.h +vrstest.$(OBJ):$(SRC)/vrstest.c $(SRCLIB)/16_vl.h +#vgacamm.$(OBJ):$(SRC)/vgacamm.c $(SRCLIB)/16_vl.h #planrpcx.$(OBJ): $(SRC)/planrpcx.c $(SRCLIB)/16_vl.h -pcxtest2.$(OBJ): $(SRC)/pcxtest2.c $(SRCLIB)/16_vl.h -palettec.$(OBJ): $(SRC)/palettec.c -palettel.$(OBJ): $(SRC)/palettel.c -maptest.$(OBJ): $(SRC)/maptest.c $(SRCLIB)/16_vl.h -#emmtest.$(OBJ): $(SRC)/emmtest.c -#emsdump.$(OBJ): $(SRC)/emsdump.c -fmemtest.$(OBJ): $(SRC)/fmemtest.c -fonttest.$(OBJ): $(SRC)/fonttest.c +pcxtest2.$(OBJ):$(SRC)/pcxtest2.c $(SRCLIB)/16_vl.h +palettec.$(OBJ):$(SRC)/palettec.c +palettel.$(OBJ):$(SRC)/palettel.c +maptest.$(OBJ):$(SRC)/maptest.c $(SRCLIB)/16_vl.h +#emmtest.$(OBJ):$(SRC)/emmtest.c +#emsdump.$(OBJ):$(SRC)/emsdump.c +fmemtest.$(OBJ):$(SRC)/fmemtest.c +fonttest.$(OBJ):$(SRC)/fonttest.c #fonttes0.$(OBJ): $(SRC)/fonttes0.c -fontgfx.$(OBJ): $(SRC)/fontgfx.c -inputest.$(OBJ): $(SRC)/inputest.c +fontgfx.$(OBJ):$(SRC)/fontgfx.c +inputest.$(OBJ):$(SRC)/inputest.c #sountest.$(OBJ): $(SRC)/sountest.c #miditest.$(OBJ): $(SRC)/miditest.c -#testemm.$(OBJ): $(SRC)/testemm.c +#testemm.$(OBJ):$(SRC)/testemm.c #testemm0.$(OBJ): $(SRC)/testemm0.c #tsthimem.$(OBJ): $(SRC)/tsthimem.c -exmmtest.$(OBJ): $(SRC)/exmmtest.c -vgmtest.$(OBJ): $(SRC)/vgmtest.c +exmmtest.$(OBJ):$(SRC)/exmmtest.c +vgmtest.$(OBJ):$(SRC)/vgmtest.c # # non executable objects libraries @@ -280,36 +280,36 @@ joytest.exe: cd $(DOSLIB_JOYSTICK:$(to_os_path)) && $(DOSLIBMAKE) && cd $(BUILD_ROOT) $(COPYCOMMAND) $(DOSLIB_JOYSTICK:$(to_os_path))$(DIRSEP)dos86h$(DIRSEP)test.exe joytest.exe -16_vl.$(OBJ): $(SRCLIB)/16_vl.c $(SRCLIB)/16_vl.h -bakapee.$(OBJ): $(SRCLIB)/bakapee.c $(SRCLIB)/bakapee.h -16render.$(OBJ): $(SRCLIB)/16render.c $(SRCLIB)/16render.h -16planar.$(OBJ): $(MODEXLIB16)/16planar.c $(MODEXLIB16)/16planar.h -16_vrs.$(OBJ): $(SRCLIB)/16_vrs.c $(SRCLIB)/16_vrs.h $(DOSLIBLIBS) -16_sprit.$(OBJ): $(SRCLIB)/16_sprit.c $(SRCLIB)/16_sprit.h -bitmap.$(OBJ): $(SRCLIB)/bitmap.c $(SRCLIB)/bitmap.h -planar.$(OBJ): $(SRCLIB)/planar.c $(SRCLIB)/planar.h -scroll16.$(OBJ): $(SRCLIB)/scroll16.c $(SRCLIB)/scroll16.h -16text.$(OBJ): $(SRCLIB)/16text.c -mapread.$(OBJ): $(SRCLIB)/mapread.c $(SRCLIB)/mapread.h -16_map.$(OBJ): $(SRCLIB)/16_map.c $(SRCLIB)/16_map.h -16_timer.$(OBJ): $(SRCLIB)/16_timer.c $(SRCLIB)/16_timer.h -16_in.$(OBJ): $(SRCLIB)/16_in.c $(SRCLIB)/16_in.h -16_mm.$(OBJ): $(SRCLIB)/16_mm.c $(SRCLIB)/16_mm.h -16_pm.$(OBJ): $(SRCLIB)/16_pm.c $(SRCLIB)/16_pm.h -16_ca.$(OBJ): $(SRCLIB)/16_ca.c $(SRCLIB)/16_ca.h -16_dbg.$(OBJ): $(SRCLIB)/16_dbg.c $(SRCLIB)/16_dbg.h -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 -jsmn.$(OBJ): $(JSMNLIB)/jsmn.c $(JSMNLIB)/jsmn.h -kitten.$(OBJ): $(NYANLIB)/kitten.c $(NYANLIB)/kitten.h -vgmSnd.$(OBJ): $(VGMSNDLIB)/vgmSnd.c $(VGMSNDLIB)/vgmSnd.h -wcpu.$(OBJ): $(WCPULIB)/wcpu.c $(WCPULIB)/wcpu.h -#memory.$(OBJ): $(EXMMLIB)/memory.c $(EXMMLIB)/memory.h -c_utils.$(OBJ): $(MODEXLIB)/c_utils.asm -modex.$(OBJ): $(MODEXLIB)/modex.asm +16_vl.$(OBJ):$(SRCLIB)/16_vl.c $(SRCLIB)/16_vl.h +bakapee.$(OBJ):$(SRCLIB)/bakapee.c $(SRCLIB)/bakapee.h +16render.$(OBJ):$(SRCLIB)/16render.c $(SRCLIB)/16render.h +16planar.$(OBJ):$(MODEXLIB16)/16planar.c $(MODEXLIB16)/16planar.h +16_vrs.$(OBJ): $(SRCLIB)/16_vrs.c $(SRCLIB)/16_vrs.h $(DOSLIBLIBS) +16_sprit.$(OBJ):$(SRCLIB)/16_sprit.c $(SRCLIB)/16_sprit.h +bitmap.$(OBJ): $(SRCLIB)/bitmap.c $(SRCLIB)/bitmap.h +planar.$(OBJ): $(SRCLIB)/planar.c $(SRCLIB)/planar.h +scroll16.$(OBJ):$(SRCLIB)/scroll16.c $(SRCLIB)/scroll16.h +16text.$(OBJ): $(SRCLIB)/16text.c +mapread.$(OBJ):$(SRCLIB)/mapread.c $(SRCLIB)/mapread.h +16_map.$(OBJ):$(SRCLIB)/16_map.c $(SRCLIB)/16_map.h +16_timer.$(OBJ):$(SRCLIB)/16_timer.c $(SRCLIB)/16_timer.h +16_in.$(OBJ): $(SRCLIB)/16_in.c $(SRCLIB)/16_in.h +16_mm.$(OBJ): $(SRCLIB)/16_mm.c $(SRCLIB)/16_mm.h +16_pm.$(OBJ): $(SRCLIB)/16_pm.c $(SRCLIB)/16_pm.h +16_ca.$(OBJ): $(SRCLIB)/16_ca.c $(SRCLIB)/16_ca.h +16_dbg.$(OBJ): $(SRCLIB)/16_dbg.c $(SRCLIB)/16_dbg.h +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 +jsmn.$(OBJ): $(JSMNLIB)/jsmn.c $(JSMNLIB)/jsmn.h +kitten.$(OBJ): $(NYANLIB)/kitten.c $(NYANLIB)/kitten.h +vgmSnd.$(OBJ): $(VGMSNDLIB)/vgmSnd.c $(VGMSNDLIB)/vgmSnd.h +wcpu.$(OBJ): $(WCPULIB)/wcpu.c $(WCPULIB)/wcpu.h +#memory.$(OBJ):$(EXMMLIB)/memory.c $(EXMMLIB)/memory.h +c_utils.$(OBJ):$(MODEXLIB)/c_utils.asm +modex.$(OBJ): $(MODEXLIB)/modex.asm # #other~ @@ -376,7 +376,7 @@ getwww: .symbolic *x4get.bat $(EXEC) vomitchan: .symbolic - @$(DUMP) *.err + @if exist *.err $(DUMP) *.err ## ## External library management~ ^^ diff --git a/scroll.exe b/scroll.exe new file mode 100755 index 0000000000000000000000000000000000000000..f715e3a9f1fd3146843d92a4d8184d1bd12ae908 GIT binary patch literal 75475 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 literal 0 HcmV?d00001 diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index 74fb0f67..bf89531f 100755 --- a/src/lib/16_ca.c +++ b/src/lib/16_ca.c @@ -223,7 +223,7 @@ void CAL_GetGrChunkLength (int chunk) boolean CA_FarRead(int handle, byte huge *dest, dword length, global_game_variables_t *gvar) { - boolean flag; + boolean flag=0; //dword fat=0; //word segm=0; if(gvar->pm.emm.EMSVer<0x40) @@ -295,7 +295,7 @@ End: boolean CA_FarWrite(int handle, byte huge *source, dword length, global_game_variables_t *gvar) { - boolean flag; + boolean flag=0; //dword fat=0; //word segm=0; if(gvar->pm.emm.EMSVer<0x40) @@ -398,7 +398,7 @@ boolean CA_ReadFile(char *filename, memptr *ptr, global_game_variables_t *gvar) boolean CA_WriteFile (char *filename, void far *ptr, long length, global_game_variables_t *gvar) { int handle; - sdword size; + //sdword size; //long size; handle = open(filename,O_CREAT | O_BINARY | O_WRONLY, @@ -1102,8 +1102,8 @@ dinorm: void CAL_SetupMapFile (global_game_variables_t *gvar) { - int handle; - long length; +// int handle; +// long length; // // load maphead.ext (offsets and tileinfo for map file) diff --git a/src/lib/16_in.c b/src/lib/16_in.c index 0851baa9..72dcadf5 100755 --- a/src/lib/16_in.c +++ b/src/lib/16_in.c @@ -751,7 +751,7 @@ IN_SetKeyHook(void (*hook)()) void IN_ClearKeysDown() { - int i; + //int i; inpu.LastScan = sc_None; inpu.LastASCII = key_None; @@ -821,7 +821,9 @@ void near IN_ReadControl(int pn,player_t *player) { boolean realdelta; +#if DEMO0 byte dbyte; +#endif word buttons; int dx,dy; Motion mx,my; diff --git a/src/lib/16_map.c b/src/lib/16_map.c index 24ded39c..1afb7bc8 100755 --- a/src/lib/16_map.c +++ b/src/lib/16_map.c @@ -33,9 +33,9 @@ int jsoneq(const char *json, jsmntok_t *tok, const char *s) { } void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) { - int i, j, k, indent, inner_end; + int i, j, k, indent=0, inner_end; bitmap_t bp; - char *s; + //char *s; i = 0; while(imm.mmhead->next; @@ -1175,8 +1175,8 @@ void MM_SortMem(global_game_variables_t *gvar) { //huge mmblocktype huge *scan,huge *last,huge *next; mmblocktype far *scan,far *last,far *next; - unsigned start,length,source,dest,oldborder; - int playing; + unsigned start,length,source,dest;//++++,oldborder; + //++++int playing; // // lock down a currently playing sound @@ -1286,18 +1286,18 @@ void MM_ShowMemory(global_game_variables_t *gvar) { //huge mmblocktype huge *scan; mmblocktype far *scan; - word temp; + //word temp; sdword end,owner; //word chx,chy; word w; //dword wwww; - byte scratch[160],scratch0[4096],scratch1[160],str[16]; + byte scratch[160],scratch0[4096],str[16];//[[[[scratch1[160], //byte d = '#'; -//**** VW_SetDefaultColors(); -//**** VW_SetLineWidth(40); +//[[[[ VW_SetDefaultColors(); +//[[[[ VW_SetLineWidth(40); //++++mh temp = bufferofs; //++++mh bufferofs = 0; -//**** VW_SetScreen (0,0); +//[[[[ VW_SetScreen (0,0); scan = gvar->mm.mmhead; end = -1; diff --git a/src/lib/16_pm.c b/src/lib/16_pm.c index ac61e20d..7ecab1eb 100755 --- a/src/lib/16_pm.c +++ b/src/lib/16_pm.c @@ -104,9 +104,9 @@ static char *ParmStrings[] = {"nomain","noems","noxms",nil}; byte PML_MapEMS(word logical, byte physical, global_game_variables_t *gvar) { - byte err, str[160]; + byte err=0, str[160]; unsigned EMShandle; - int i; + //int i; boolean errorflag=false; EMShandle=gvar->pm.emm.EMSHandle; @@ -161,12 +161,12 @@ PML_StartupEMS(global_game_variables_t *gvar) { int i; //long size; - byte err, str[64]; + byte err=0, str[64]; boolean errorflag=false; static char emmname[] = "EMMXXXX0"; //fix by andrius4669 unsigned int EMSVer = 0; - unsigned totalEMSpages,freeEMSpages,EMSPageFrame,EMSHandle,EMSAvail; + unsigned totalEMSpages,freeEMSpages,EMSPageFrame,EMSHandle=0,EMSAvail=0; totalEMSpages = freeEMSpages = EMSPageFrame = 0; gvar->pm.emm.EMSPresent = false; // Assume that we'll fail gvar->pm.emm.EMSAvail = 0; @@ -319,7 +319,7 @@ void PML_ShutdownEMS(global_game_variables_t *gvar) { word EMSHandle; - byte err,str[64]; + byte err=0, str[64]; boolean errorflag=false; EMSHandle=gvar->pm.emm.EMSHandle; @@ -747,7 +747,7 @@ PM_CheckMainMem(global_game_variables_t *gvar) void PML_StartupMainMem(global_game_variables_t *gvar) { - int i,n; + int i;//,n; memptr *p; gvar->pm.mm.MainPagesAvail = 0; @@ -1305,15 +1305,15 @@ PM_SetPageLock(int pagenum,PMLockType lock, global_game_variables_t *gvar) void PM_Preload(boolean (*update)(word current,word total), global_game_variables_t *gvar) { - int i,j, + int i,//j, page,oogypage; word current,total, - totalnonxms,totalxms, + //totalnonxms,totalxms, mainfree,maintotal, - emsfree,emstotal, + //emstotal,emsfree, xmsfree,xmstotal; memptr addr; - PageListStruct far *p; + PageListStruct __far *p; mainfree = (gvar->pm.mm.MainPagesAvail - gvar->pm.MainPagesUsed) + (gvar->pm.emm.EMSPagesAvail - gvar->pm.EMSPagesUsed); xmsfree = (gvar->pm.xmm.XMSPagesAvail - gvar->pm.XMSPagesUsed); diff --git a/src/lib/16_tail.c b/src/lib/16_tail.c index f63dddc1..b2acec13 100755 --- a/src/lib/16_tail.c +++ b/src/lib/16_tail.c @@ -76,7 +76,7 @@ void Startup16(global_game_variables_t *gvar) CA_Startup(gvar); #ifdef __WATCOMC__ start_timer(gvar); - + #endif } @@ -155,8 +155,8 @@ void DebugMemory_(global_game_variables_t *gvar, boolean q) void Quit (char *error) { - unsigned finscreen; - memptr screen; + //unsigned finscreen; + memptr screen=0; union REGS in, out; //ClearMemory (); diff --git a/src/lib/16_vl.c b/src/lib/16_vl.c index 503cad06..0c8c5571 100755 --- a/src/lib/16_vl.c +++ b/src/lib/16_vl.c @@ -78,7 +78,7 @@ vgaSetMode(byte mode) byte/*FIXME: why long? "long" is 32-bit datatype, VGA modes are 8-bit numbers. */ vgaGetMode() { - return int10_getmode(); + return int10_getmode(); } /* -========================= Entry Points ==========================- */ @@ -86,7 +86,7 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv) { word i; struct vga_mode_params cm; - int CRTParmCount; + //int CRTParmCount; vgaSetMode(VGA_256_COLOR_MODE); vga_enable_256color_modex(); @@ -116,8 +116,8 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv) cm.word_mode = 0; cm.dword_mode = 0; // 320x240 mode 60Hz - cm.horizontal_total=0x5f + 5; /* CRTC[0] -5 */ - cm.horizontal_display_end=0x4f + 1; /* CRTC[1] -1 */ + cm.horizontal_total=0x5f + 5; /* CRTC[0] -5 */ + cm.horizontal_display_end=0x4f + 1; /* CRTC[1] -1 */ cm.horizontal_blank_start=0x50 + 1; /* CRTC[2] */ // cm.horizontal_blank_end=0x82 + 1; /* CRTC[3] bit 0-4 & CRTC[5] bit 7 *///skewing ^^; cm.horizontal_start_retrace=0x54;/* CRTC[4] */ @@ -155,7 +155,7 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv) { case 1: { /* clear video memory */ - dword far*ptr=(dword far*)vga_state.vga_graphics_ram;//VGA; /* used for faster screen clearing */ + dword far*ptr=(dword far*)vga_state.vga_graphics_ram;//VGA; /* used for faster screen clearing */ vga_write_sequencer(2/*map mask register*/,0xf/*all 4 planes*/); for(i = 0;i < 0x4000; i++) ptr[i] = 0x0000; // 0x4000 x dword = 64KB } @@ -179,14 +179,14 @@ modexLeave() { page_t modexDefaultPage(page_t *p) { - page_t page; + page_t page; - /* default page values */ + /* default page values */ //page.data = VGA; //page.data = (byte far *)(vga_state.vga_graphics_ram); page.data = (vga_state.vga_graphics_ram); - page.dx = 0; - page.dy = 0; + page.dx = 0; + page.dy = 0; page.sw = p->sw; page.sh = p->sh; page.width = p->sw+TILEWHD; @@ -202,7 +202,7 @@ modexDefaultPage(page_t *p) page.pi=page.width*4; page.id = 0; - return page; + return page; } /* returns the next page in contiguous memory @@ -210,15 +210,15 @@ modexDefaultPage(page_t *p) */ page_t modexNextPage(page_t *p) { - page_t result; + page_t result; - result.data = p->data + (p->pagesize); - result.dx = 0; - result.dy = 0; + result.data = p->data + (p->pagesize); + result.dx = 0; + result.dy = 0; result.sw = p->sw; result.sh = p->sh; - result.width = p->width; - result.height = p->height; + result.width = p->width; + result.height = p->height; result.tw = p->tw; result.th = p->th; result.tilesw = p->tilesw; @@ -296,78 +296,78 @@ void modexHiganbanaPageSetup(video_t *video) void modexShowPage(page_t *page) { - word high_address; - word low_address; - word offset; - byte crtcOffset; - - /* calculate offset */ - offset = (word) page->data; - offset += page->dy * (page->width >> 2 ); - offset += page->dx >> 2; - - /* calculate crtcOffset according to virtual width */ - crtcOffset = page->width >> 3; - - high_address = HIGH_ADDRESS | (offset & 0xff00); - low_address = LOW_ADDRESS | (offset << 8); - - /* wait for appropriate timing and then program CRTC */ - //while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE)); - outpw(CRTC_INDEX, high_address); - outpw(CRTC_INDEX, low_address); - outp(CRTC_INDEX, 0x13); - outp(CRTC_DATA, crtcOffset); - - /* wait for one retrace */ - //while (!(inp(INPUT_STATUS_1) & VRETRACE)); - - /* do PEL panning here */ - outp(AC_INDEX, 0x33); - outp(AC_INDEX, (page->dx & 0x03) << 1); + word high_address; + word low_address; + word offset; + byte crtcOffset; + + /* calculate offset */ + offset = (word) page->data; + offset += page->dy * (page->width >> 2 ); + offset += page->dx >> 2; + + /* calculate crtcOffset according to virtual width */ + crtcOffset = page->width >> 3; + + high_address = HIGH_ADDRESS | (offset & 0xff00); + low_address = LOW_ADDRESS | (offset << 8); + + /* wait for appropriate timing and then program CRTC */ + //while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE)); + outpw(CRTC_INDEX, high_address); + outpw(CRTC_INDEX, low_address); + outp(CRTC_INDEX, 0x13); + outp(CRTC_DATA, crtcOffset); + + /* wait for one retrace */ + //while (!(inp(INPUT_STATUS_1) & VRETRACE)); + + /* do PEL panning here */ + outp(AC_INDEX, 0x33); + outp(AC_INDEX, (page->dx & 0x03) << 1); } void modexPanPage(page_t *page, int dx, int dy) { - page->dx = dx; - page->dy = dy; + page->dx = dx; + page->dy = dy; } void modexSelectPlane(byte plane) { - outp(SC_INDEX, MAP_MASK); /* select plane */ - outp(SC_DATA, plane); + outp(SC_INDEX, MAP_MASK); /* select plane */ + outp(SC_DATA, plane); } void modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) { - word pageOff = (word) page->data; - word xoff=x/4; /* xoffset that begins each row */ - word scanCount=w/4; /* number of iterations per row (excluding right clip)*/ - word poffset = pageOff + y*(page->stridew) + xoff; /* starting offset */ - word nextRow = page->stridew-scanCount-1; /* loc of next row */ - byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ - byte rclip[] = {0x00, 0x01, 0x03, 0x07}; - byte left = lclip[x&0x03]; - byte right = rclip[(x+w)&0x03]; - - /* handle the case which requires an extra group */ - if((x & 0x03) && !((x+w) & 0x03)) { - right=0x0f; - } + word pageOff = (word) page->data; + word xoff=x/4; /* xoffset that begins each row */ + word scanCount=w/4; /* number of iterations per row (excluding right clip)*/ + word poffset = pageOff + y*(page->stridew) + xoff; /* starting offset */ + word nextRow = page->stridew-scanCount-1; /* loc of next row */ + byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ + byte rclip[] = {0x00, 0x01, 0x03, 0x07}; + byte left = lclip[x&0x03]; + byte right = rclip[(x+w)&0x03]; + + /* handle the case which requires an extra group */ + if((x & 0x03) && !((x+w) & 0x03)) { + right=0x0f; + } //printf("modexClearRegion(x=%u, y=%u, w=%u, h=%u, left=%u, right=%u)\n", x, y, w, h, left, right); - __asm { - PUSHF - PUSH ES - PUSH AX - PUSH BX - PUSH CX - PUSH DX - PUSH SI - PUSH DI - MOV AX, SCREEN_SEG ; go to the VGA memory + __asm { + PUSHF + PUSH ES + PUSH AX + PUSH BX + PUSH CX + PUSH DX + PUSH SI + PUSH DI + MOV AX, SCREEN_SEG ; go to the VGA memory MOV ES, AX MOV DI, poffset ; go to the first pixel MOV DX, SC_INDEX ; point to the map mask @@ -376,39 +376,39 @@ modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) { INC DX MOV AL, color ; get ready to write colors SCAN_START: - MOV CX, scanCount ; count the line - MOV BL, AL ; remember color - MOV AL, left ; do the left clip - OUT DX, AL ; set the left clip - MOV AL, BL ; restore color + MOV CX, scanCount ; count the line + MOV BL, AL ; remember color + MOV AL, left ; do the left clip + OUT DX, AL ; set the left clip + MOV AL, BL ; restore color STOSB ; write the color DEC CX - JZ SCAN_DONE ; handle 1 group stuff + JZ SCAN_DONE ; handle 1 group stuff ;-- write the main body of the scanline - MOV BL, AL ; remember color - MOV AL, 0x0f ; write to all pixels + MOV BL, AL ; remember color + MOV AL, 0x0f ; write to all pixels OUT DX, AL - MOV AL, BL ; restore color - REP STOSB ; write the color + MOV AL, BL ; restore color + REP STOSB ; write the color SCAN_DONE: - MOV BL, AL ; remeber color + MOV BL, AL ; remeber color MOV AL, right - OUT DX, AL ; do the right clip - MOV AL, BL ; restore color + OUT DX, AL ; do the right clip + MOV AL, BL ; restore color STOSB ; write pixel ADD DI, nextRow ; go to the next row DEC h JNZ SCAN_START - POP DI - POP SI - POP DX - POP CX - POP BX - POP AX - POP ES - POPF - } + POP DI + POP SI + POP DX + POP CX + POP BX + POP AX + POP ES + POPF + } } /* moved to src/lib/modex16/16render.c */ @@ -419,19 +419,19 @@ modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) { */ void modexCopyPageRegion(page_t *dest, page_t *src, - word sx, word sy, - word dx, word dy, - word width, word height) + word sx, word sy, + word dx, word dy, + word width, word height) { - word doffset = (word)dest->data + dy*(dest->stridew) + dx/4; - word soffset = (word)src->data + sy*(src->stridew) + sx/4; - word scans = vga_state.vga_stride; //++++0000 the quick and dirty fix of the major issue with p16 video display wwww - word nextSrcRow = src->stridew - scans - 1; - word nextDestRow = dest->stridew - scans - 1; - byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ - byte rclip[] = {0x00, 0x01, 0x03, 0x07}; - byte left = lclip[sx&0x03]; - byte right = rclip[(sx+width)&0x03]; + word doffset = (word)dest->data + dy*(dest->stridew) + dx/4; + word soffset = (word)src->data + sy*(src->stridew) + sx/4; + word scans = vga_state.vga_stride; //++++0000 the quick and dirty fix of the major issue with p16 video display wwww + word nextSrcRow = src->stridew - scans - 1; + word nextDestRow = dest->stridew - scans - 1; + byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ + byte rclip[] = {0x00, 0x01, 0x03, 0x07}; + byte left = lclip[sx&0x03]; + byte right = rclip[(sx+width)&0x03]; /* handle the case which requires an extra group */ if((sx & 0x03) && !((sx+width) & 0x03)) { @@ -440,18 +440,18 @@ modexCopyPageRegion(page_t *dest, page_t *src, // printf("modexCopyPageRegion(src->stridew=%u, dest->stridew=%u, sx=%u, sy=%u, dx=%u, dy=%u, width=%u, height=%u, left=%u, right=%u)\n", src->stridew, dest->stridew, sx, sy, dx, dy, width, height, left, right); - __asm { - PUSHF - PUSH ES - PUSH AX - PUSH BX - PUSH CX - PUSH DX - PUSH SI - PUSH DI - - MOV AX, SCREEN_SEG ; work in the vga space - MOV ES, AX ; + __asm { + PUSHF + PUSH ES + PUSH AX + PUSH BX + PUSH CX + PUSH DX + PUSH SI + PUSH DI + + MOV AX, SCREEN_SEG ; work in the vga space + MOV ES, AX ; MOV DI, doffset ; MOV SI, soffset ; @@ -460,9 +460,9 @@ modexCopyPageRegion(page_t *dest, page_t *src, OUT DX, AX MOV AX, SC_INDEX ; point to the mask register - MOV DX, AX ; + MOV DX, AX ; MOV AL, MAP_MASK ; - OUT DX, AL ; + OUT DX, AL ; INC DX ; ROW_START: @@ -471,183 +471,183 @@ modexCopyPageRegion(page_t *dest, page_t *src, MOV DS, AX MOV CX, scans ; the number of latches - MOV AL, left ; do the left column - OUT DX, AL ; + MOV AL, left ; do the left column + OUT DX, AL ; MOVSB ; DEC CX ; - MOV AL, 0fh ; do the inner columns + MOV AL, 0fh ; do the inner columns OUT DX, AL - REP MOVSB ; copy the pixels + REP MOVSB ; copy the pixels MOV AL, right ; do the right column OUT DX, AL MOVSB POP DS - MOV AX, SI ; go the start of the next row - ADD AX, nextSrcRow ; - MOV SI, AX ; - MOV AX, DI ; - ADD AX, nextDestRow ; - MOV DI, AX ; + MOV AX, SI ; go the start of the next row + ADD AX, nextSrcRow ; + MOV SI, AX ; + MOV AX, DI ; + ADD AX, nextDestRow ; + MOV DI, AX ; - DEC height ; do the rest of the actions + DEC height ; do the rest of the actions JNZ ROW_START ; - MOV DX, GC_INDEX+1 ; go back to CPU data - MOV AL, 0ffh ; none from latches - OUT DX, AL ; - - POP DI - POP SI - POP DX - POP CX - POP BX - POP AX - POP ES - POPF - } + MOV DX, GC_INDEX+1 ; go back to CPU data + MOV AL, 0ffh ; none from latches + OUT DX, AL ; + + POP DI + POP SI + POP DX + POP CX + POP BX + POP AX + POP ES + POPF + } } /* fade and flash */ void modexFadeOn(word fade, byte *palette) { - fadePalette(-fade, 64, 64/fade+1, palette); + fadePalette(-fade, 64, 64/fade+1, palette); } void modexFadeOff(word fade, byte *palette) { - fadePalette(fade, 0, 64/fade+1, palette); + fadePalette(fade, 0, 64/fade+1, palette); } void modexFlashOn(word fade, byte *palette) { - fadePalette(fade, -64, 64/fade+1, palette); + fadePalette(fade, -64, 64/fade+1, palette); } void modexFlashOff(word fade, byte *palette) { - fadePalette(-fade, 0, 64/fade+1, palette); + fadePalette(-fade, 0, 64/fade+1, palette); } static void fadePalette(sbyte fade, sbyte start, word iter, byte *palette) { - word i; - byte dim = start; + word i; + byte dim = start; - /* handle the case where we just update */ - if(iter == 0) { + /* handle the case where we just update */ + if(iter == 0) { modexPalUpdate1(palette); return; - } + } - while(iter > 0) { /* FadeLoop */ + while(iter > 0) { /* FadeLoop */ for(i=0; i 127) { + tmppal[i] = palette[i] - dim; + if(tmppal[i] > 127) { tmppal[i] = 0; - } else if(tmppal[i] > 63) { + } else if(tmppal[i] > 63) { tmppal[i] = 63; - } + } } modexPalUpdate1(tmppal); iter--; dim += fade; - } + } } /* save and load */ void modexPalSave(byte *palette) { - int i; + int i; - outp(PAL_READ_REG, 0); /* start at palette entry 0 */ - for(i=0; i0 && (*i)>=(qp) && (*i)<((qp)+3)) { //printf("qp=%d\n", qp); - //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); + //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); printf(" %d's color=%d\n", (*i), (a[qp])-(bmp->offset*3)+qp); //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; } @@ -711,7 +711,7 @@ modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqoffset) } } //if(qp>0) printf("qp=%d\n", qp); - //if(qp>0) printf(" (*i)=%d\n", (*i)/3); + //if(qp>0) printf(" (*i)=%d\n", (*i)/3); } //modexWaitBorder(); /* waits one retrace -- less flicker */ vga_wait_for_vsync(); @@ -728,7 +728,7 @@ modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqoffset) else if(qp>0 && (*i)>=(qp) && (*i)<((qp)+3)) { //printf("qp=%d\n", qp); - //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); + //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); printf(" %d's color=%d\n", (*i), (a[qp]-(bmp->offset*3)+qp)); //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; } @@ -740,7 +740,7 @@ modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqoffset) printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp); } } } - //printf(" (*i)=%d\n", (*i)/3); + //printf(" (*i)=%d\n", (*i)/3); } printf("\nqqqqqqqq\n\n"); @@ -760,7 +760,7 @@ printf("\nqqqqqqqq\n\n"); aqpee: while(aq<=aa) { -// printf("a[%02d]=(%d)\n", aq, a[aq]); +// printf("a[%02d]=(%d)\n", aq, a[aq]); if(a[aq]==-1) aq++; else { aqoffset++; break; } } @@ -788,12 +788,12 @@ aqpee: //printf("%02d", bmp->data[lq]); //printf("\n%02d\n", bmp->offset); printf("aq=%02d ", aq); - printf("a[aq]=%02d ", a[aq]); + printf("a[aq]=%02d ", a[aq]); printf("a[aq]+aqpp=%02d ", a[aq]+aqpp); printf("a[aq]-aqpp=%02d\n", a[aq]-aqpp); //bmp->data[lq]=((bmp->data[lq]+bmp->offset)-a[aq]); //++++ bmp->data[lq]=a[aq]-aqpp; -// printf("_%d ", bmp->data[lq]); +// printf("_%d ", bmp->data[lq]); //if(lq > 0 && lq%bmp->width==0) printf("\n"); } else if(bmp->data[lq]+bmp->offset < ((*i)/3)-aqpp) @@ -810,8 +810,8 @@ aqpee: //if(lq > 0 && lq%bmp->width==0) printf("\n"); } -//printf(" aq=%02d\n", aq); -//printf(" aa=%02d\n", aa); +//printf(" aq=%02d\n", aq); +//printf(" aa=%02d\n", aa); //update the palette~ modexPalUpdate(bmp, &pp, aq, aqoffset); @@ -878,23 +878,23 @@ void modexchkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i/* modexPalSave(pal); //printf("q: %02d\n", (*q)); printf("chkcolor start~\n"); - printf("1 (*z): %d\n", (*z)/3); - printf("1 (*i): %d\n", (*i)/3); -// printf("1 offset of color in palette (*q): %d\n", (*q)/3); + printf("1 (*z): %d\n", (*z)/3); + printf("1 (*i): %d\n", (*i)/3); +// printf("1 offset of color in palette (*q): %d\n", (*q)/3); printf("wwwwwwwwwwwwwwww\n"); //check palette for dups for(; (*z)width >> 2; + } + + m1 >>= 1; + m2 >>= 1; + if ((++plane) == 4) { + addr++; + plane = 0; + } + } +} + void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str) { word s, o, w; word x_draw = x; - word addr = (word) romFontsData.l; + //word addr = (word) romFontsData.l; word addrq = (page->width/4) * y + (x / 4) + ((word)page->data); word addrr = addrq; byte c; @@ -1068,14 +1105,14 @@ void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, c } //load the letter 'A' __asm { - PUSHF - PUSH ES - PUSH AX - PUSH BX - PUSH CX - PUSH DX - PUSH SI - PUSH DI + PUSHF + PUSH ES + PUSH AX + PUSH BX + PUSH CX + PUSH DX + PUSH SI + PUSH DI MOV DI, addr MOV SI, o @@ -1092,14 +1129,14 @@ void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, c DEC CX JNZ L1 - POP DI - POP SI - POP DX - POP CX - POP BX - POP AX - POP ES - POPF + POP DI + POP SI + POP DX + POP CX + POP BX + POP AX + POP ES + POPF } for(i=0; ibuffer = buffer; // Calculate vrl offsets - + // Count sprites vrl_id_iter = (uint16_t huge *)(buffer + vrs_cont->vrs_hdr->offset_table[VRS_HEADER_OFFSET_SPRITE_ID_LIST]); while(vrl_id_iter[num_of_vrl]){ @@ -101,7 +94,7 @@ int get_vrl_by_id(struct vrs_container /*huge*/ *vrs_cont, uint16_t id, struct v } // Get id list from .vrs blob (base + offset) - ids = (uint16_t huge*)(vrs_cont->buffer + + ids = (uint16_t huge*)(vrs_cont->buffer + vrs_cont->vrs_hdr->offset_table[VRS_HEADER_OFFSET_SPRITE_ID_LIST]); // Loop through the id list until we found the right one or hit the end of the list diff --git a/src/lib/16render.c b/src/lib/16render.c index 091775b7..4118f17e 100755 --- a/src/lib/16render.c +++ b/src/lib/16render.c @@ -151,7 +151,7 @@ modexDrawBmpRegion(page_t *page, int x, int y, word scanCount = width/4 + (width%4 ? 1 :0); word nextPageRow = page->width/4 - scanCount; word nextBmpRow = (word) bmp->width - width; - word rowCounter; + word rowCounter=0; byte planeCounter = 4; __asm { @@ -218,7 +218,7 @@ modexDrawSpriteRegion(page_t *page, int x, int y, word scanCount = width/4 + (width%4 ? 1 :0); word nextPageRow = page->width/4 - scanCount; word nextBmpRow = (word) bmp->width - width; - word rowCounter; + word rowCounter=0; byte planeCounter = 4; __asm { @@ -297,7 +297,7 @@ modexDrawBmpPBufRegion(page_t *page, int x, int y, word scanCount = width/4 + (width%4 ? 1 :0); word nextPageRow = page->width/4 - scanCount; word nextBmpRow = (word) bmp->width - width; - word rowCounter; + word rowCounter=0; byte planeCounter = 4; __asm { @@ -375,7 +375,7 @@ modexDrawSpritePBufRegion(page_t *page, int x, int y, word scanCount = width/4 + (width%4 ? 1 :0); word nextPageRow = page->width/4 - scanCount; word nextBmpRow = (word) bmp->width - width; - word rowCounter; + word rowCounter=0; byte planeCounter = 4; __asm { @@ -434,40 +434,3 @@ modexDrawSpritePBufRegion(page_t *page, int x, int y, JNZ PLANE_LOOP ; do all 4 planes } } - -void modexDrawChar(page_t *page, int x/*for planar selection only*/, word t, word col, word bgcol, word addr) -{ - /* vertical drawing routine by joncampbell123. - * - * optimize for VGA mode X planar memory to minimize the number of times we do I/O write to map mask register. - * so, we enumerate over columns (not rows!) to draw every 4th pixel. bit masks are used because of the font bitmap. - * - * 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. */ - word rows = romFonts[t].charSize; - word drawaddr; - word colm, row; - byte fontbyte; - byte plane; - byte m1,m2; - - plane = x & 3; - m1 = 0x80; // left half - m2 = 0x08; // right half - for (colm=0;colm < 4;colm++) { - drawaddr = addr; - modexSelectPlane(PLANE(plane)); - for (row=0;row < rows;row++) { - fontbyte = romFontsData.l[row]; - vga_state.vga_graphics_ram[drawaddr ] = (fontbyte & m1) ? col : bgcol; - vga_state.vga_graphics_ram[drawaddr+1] = (fontbyte & m2) ? col : bgcol; - drawaddr += page->width >> 2; - } - - m1 >>= 1; - m2 >>= 1; - if ((++plane) == 4) { - addr++; - plane = 0; - } - } -} diff --git a/src/lib/16render.h b/src/lib/16render.h index de842416..32cb7e0f 100755 --- a/src/lib/16render.h +++ b/src/lib/16render.h @@ -36,6 +36,5 @@ 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); void modexDrawSpritePBuf(page_t *page, int x, int y, planar_buf_t *bmp); void modexDrawSpritePBufRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, planar_buf_t *bmp); -void modexDrawChar(page_t *page, int x/*for planar selection only*/, word t, word col, word bgcol, word addr); #endif diff --git a/src/lib/16text.c b/src/lib/16text.c index 7f725992..0f946510 100755 --- a/src/lib/16text.c +++ b/src/lib/16text.c @@ -27,8 +27,8 @@ font_t romFonts[4]; fontdata_t romFontsData; static void getRomFontAddr(char fontNum, int index) { - word fontSeg; - word fontOff; + word fontSeg=0; + word fontOff=0; __asm { PUSH AX diff --git a/src/lib/scroll16.c b/src/lib/scroll16.c index 6f1c450e..cb014fd0 100755 --- a/src/lib/scroll16.c +++ b/src/lib/scroll16.c @@ -362,7 +362,7 @@ initMap(map_t *map) { void near mapScrollRight(map_view_t *mv, player_t *player, word id, word plid) { - word x, y; /* coordinate for drawing */ + word x;//, y; /* coordinate for drawing */ /* increment the pixel position and update the page */ mv[id].page->dx += player[plid].speed; @@ -392,7 +392,7 @@ void near mapScrollRight(map_view_t *mv, player_t *player, word id, word plid) void near mapScrollLeft(map_view_t *mv, player_t *player, word id, word plid) { - word x, y; /* coordinate for drawing */ + word x;//,y; /* coordinate for drawing */ /* decrement the pixel position and update the page */ mv[id].page->dx -= player[plid].speed; @@ -422,7 +422,7 @@ void near mapScrollLeft(map_view_t *mv, player_t *player, word id, word plid) void near mapScrollUp(map_view_t *mv, player_t *player, word id, word plid) { - word x, y; /* coordinate for drawing */ + word y;//x, /* coordinate for drawing */ /* decrement the pixel position and update the page */ mv[id].page->dy -= player[plid].speed; @@ -451,7 +451,7 @@ void near mapScrollUp(map_view_t *mv, player_t *player, word id, word plid) void near mapScrollDown(map_view_t *mv, player_t *player, word id, word plid) { - word x, y; /* coordinate for drawing */ + word y;//x, /* coordinate for drawing */ /* increment the pixel position and update the page */ mv[id].page->dy += player[plid].speed; @@ -594,7 +594,7 @@ sword chkmap(map_t *map, word q) //TODO: player position here void mapGoTo(map_view_t *mv, int tx, int ty) { - int px, py; + int py;//px, unsigned int i; /* set up the coordinates */ @@ -634,8 +634,7 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y) { word rx; word ry; - word textx=0; - word texty=0; + //word textx=0, texty=0; //if(i==0) i=2; if(i==0) { @@ -761,8 +760,8 @@ void shinku(global_game_variables_t *gv) { word x = (0) + gv->video.page[/*!*/(gv->video.p)].dx; // follow the screen word y = (0) + gv->video.page[/*!*/(gv->video.p)].dy; // follow the screen - word w = 64, h = 8, col = 7, bgcol = 0, type = 1; - byte o,o2,i; + word col = 7, bgcol = 0, type = 1;//w = 64, h = 8, + //byte o,o2,i; //modexCopyPageRegion(pip[1].page, pip[2].page, 16, 16, 16, 16, (14*8)+4, 8+4); /* block copy to visible RAM from offscreen */ // vga_setup_wm1_block_copy(); diff --git a/src/lib/scroll16.h b/src/lib/scroll16.h index 534f5c23..7cd0e941 100755 --- a/src/lib/scroll16.h +++ b/src/lib/scroll16.h @@ -42,6 +42,8 @@ #define SPRITE //#define TILERENDER +extern void modexDrawSpriteRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp); + //modexDrawSpritePBufRegion //modexDrawBmpPBufRegion #define PBUFSFUN modexDrawSpriteRegion diff --git a/src/lib/wcpu/wcpu.c b/src/lib/wcpu/wcpu.c index 8a0be98c..92b91919 100755 --- a/src/lib/wcpu/wcpu.c +++ b/src/lib/wcpu/wcpu.c @@ -25,7 +25,7 @@ byte detectcpu() { - byte cputype; + byte cputype=0; __asm { PUSHF ; we gonna modify flags, so back them up diff --git a/src/zcroll.c b/src/zcroll.c index caa94c23..d2786c16 100755 --- a/src/zcroll.c +++ b/src/zcroll.c @@ -23,6 +23,7 @@ #include "src/lib/scroll16.h" #include "src/lib/16_timer.h" #include "src/lib/wcpu/wcpu.h" +#include "src/lib/16render.h" //word far *clock= (word far*) 0x046C; /* 18.2hz clock */ //bitmap_t *p; diff --git a/wbuild.sh b/wbuild.sh index af9d4da0..67df5751 100755 --- a/wbuild.sh +++ b/wbuild.sh @@ -2,12 +2,12 @@ wmake -h clean wmake -h wmake -h comp -if [[ -f *.err ]] -then - echo dumping *.err +#if [[ -f *.err ]] +#then +# echo dumping *.err #cat *.err wmake vomitchan -fi +#fi #if [ -f 16_head.o ] #then # rm *.o -- 2.39.5