X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_mm.c;h=d587df206dc3f31fb18e8482fea485dafeb446a1;hb=6021fc3f27b895d382fbd30488ead35657e39196;hp=e83003b7198587c2016a45c112b96bfc832dd9c8;hpb=f0a0d93f0e20155883544ebdd1cc15e3cf4e1e59;p=16.git diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index e83003b7..d587df20 100755 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -1,5 +1,5 @@ /* Project 16 Source Code~ - * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover + * Copyright (C) 2012-2018 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover * * This file is part of Project 16. * @@ -1263,10 +1263,9 @@ void MM_SortMem (global_game_variables_t *gvar) SD_StopSound();*/ -#ifdef __WATCOMC__ + oldborder = gvar->video.bordercolor; gvar->video.bordercolor = VL_modexPalOverscan(gvar->video.palette, 4); -#endif if (beforesort) beforesort(); @@ -1344,10 +1343,10 @@ void MM_SortMem (global_game_variables_t *gvar) extern char global_temp_status_text[512]; extern char global_temp_status_text2[512]; #endif -#ifdef __WATCOMC__ +//#ifdef __WATCOMC__ //#define MMSMPANVID #define MMSMSCANINFO -#endif +//#endif /* ===================== @@ -1361,14 +1360,14 @@ extern char global_temp_status_text2[512]; void MM_ShowMemory (global_game_variables_t *gvar) { mmblocktype far *scan; - unsigned color,temp,x,y ,w,width; + unsigned color,temp,x,y ,q,w/*,width*/,sw; sdword end,owner; byte scratch[160],scratch0[4096],str[16]; #ifdef MMSMSCANINFO mmshowmemoryinfo_t scaninfo[MAXBLOCKS]; byte scratch1[4]; - unsigned xpos,ypos, oldq,q,maxq; - boolean done,restarted; + unsigned /*xpos,ypos, */oldq,maxq; + boolean done,restarted,mmsmscaninfoxyposinew; ScanCode scancode; #endif @@ -1379,15 +1378,15 @@ void MM_ShowMemory (global_game_variables_t *gvar) temp = BDOFSCONV gvar->video.BOFS; gvar->video.BOFS = gvar->video.DOFS; #ifdef MMSMSCANINFO - oldq = 0; restarted = false; + oldq = 0; restarted = false; mmsmscaninfoxyposinew = false; reset: - q = 0; #endif scan = gvar->mm.mmhead; - end = -1; w = 0; + end = -1; w = 0; q = 0; - width = gvar->video.page[0].width; + //width = gvar->video.page[0].width; + sw = gvar->video.page[0].sw; CA_OpenDebug (gvar); while (scan) @@ -1419,20 +1418,20 @@ reset: Quit (gvar, "MM_ShowMemory: Memory block order currupted!"); } end = scan->length-1; - y = scan->start/width; - x = scan->start%width; + y = gvar->video.page[0].dx+(scan->start/sw); + x = gvar->video.page[0].dy+(scan->start%sw); #if 0 //def MMSMSCANINFO if(restarted){ y += gvar->video.page[0].dy; x += gvar->video.page[0].dx; } -//#if 0 +#if 0 else{ scaninfo[q].y = y; scaninfo[q].x = x; } -//#endif +#endif #endif VW_Hlin(x,x+end,y,color,gvar); VL_Plot(x,y,5,gvar); @@ -1478,7 +1477,10 @@ reset: #endif strcat(scratch0, AARESET); //strcat(scratch0,"\n"); - strcat(scratch,"Seg:"); + strcat(scratch,"Block:"); + ultoa (q,str,10); + strcat (scratch,str); + strcat(scratch,"\tSeg:"); ultoa (scan->start,str,16); strcat (scratch,str); // strcat(scratch, AABLACK); strcat(scratch,"\t"); strcat(scratch, AARESET); @@ -1498,21 +1500,21 @@ reset: //0000fprintf(stdout, "[%u]\n", q); scan = scan->next; -#ifdef MMSMSCANINFO q++; -#endif -//0000if(q==1 && gvar->video.VL_Started && color!=6) IN_Ack(gvar); + +//0000if(gvar->video.VL_Started && color!=6) IN_Ack(gvar); } CA_CloseDebug (gvar); -#if 0 -//def MMSMPANVID +#ifdef MMSMPANVID { int dx,dy,odx,ody; odx = gvar->video.page[0].dx; ody = gvar->video.page[0].dy; dx = dy = 0; + + while (!(scancode = gvar->in.inst->LastScan)){} while(!gvar->in.inst->Keyboard[sc_Escape] && !gvar->in.inst->Keyboard[sc_Space]) { if(gvar->in.inst->Keyboard[sc_UpArrow]) @@ -1545,15 +1547,16 @@ reset: } #endif #ifdef MMSMSCANINFO -//#define MMSMSCANINFOXYPOSNEW -//{ - maxq = q; + if (gvar->video.VL_Started) IN_Ack(gvar); + maxq = q-1; if(restarted) q = oldq; else q = 0; restarted = false; - IN_Ack(gvar); -// VL_ClearVideo (8); + while (!(scancode = gvar->in.inst->LastScan)){} +// IN_ClearKey(scancode); +// IN_Ack(gvar); + for (done = false;!done;) { if(scaninfo[q].scan->attributes & PURGEBITS) @@ -1573,16 +1576,23 @@ reset: //printf("%s", AARED); } end = scaninfo[q].scan->length-1; -//modexprint(page, x, y, t, tlsw, color, bgcolor, vidsw, const byte *str); -#define MMSMPRINTMEMINFO modexprint(&(gvar->video.page[0]), xpos, ypos, 1, 1, color, 8, gvar->video.VL_Started, global_temp_status_text); ypos+=8; + + gvar->video.print.t=1; + gvar->video.print.tlsw=1; + gvar->video.print.color=color; + gvar->video.print.bgcolor=8; +#define MMSMPRINTMEMINFO VL_print(global_temp_status_text, 0, gvar); gvar->video.print.y+=8; +//modexprint(&(gvar->video.page[0]), xpos, ypos, 1, 1, color, 8, gvar->video.VL_Started, global_temp_status_text); #ifdef __WATCOMC__ if(gvar->video.VL_Started) { VL_ShowPage(&gvar->video.page[0], 1, 0); - modexClearRegion(&gvar->video.page[0], 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 8); + modexClearRegion(&gvar->video.page[0], gvar->video.page[0].dx, gvar->video.page[0].dy, gvar->video.page[0].sw, gvar->video.page[0].sh, 8); }else #endif + { clrscr(); + } sprintf(global_temp_status_text, "block #%04u", q); MMSMPRINTMEMINFO // sprintf(global_temp_status_text, "%Fp", scaninfo[q].scan->useptr); MMSMPRINTMEMINFO sprintf(global_temp_status_text, "start: %04x", (unsigned)scaninfo[q].scan->start); MMSMPRINTMEMINFO @@ -1591,20 +1601,21 @@ reset: if (scaninfo[q].scan->next && scaninfo[q].scan->next->start > end+1) { sprintf(global_temp_status_text, "free: %05u", (unsigned)(scaninfo[q].scan->next->start-scaninfo[q].scan->start)); MMSMPRINTMEMINFO - }else ypos+=8; + }else /*ypos*/gvar->video.print.y+=8; if(gvar->video.VL_Started) { - y = scaninfo[q].scan->start/width; - x = scaninfo[q].scan->start%width; -#ifndef MMSMSCANINFOXYPOSNEW - y = ypos; - x = xpos; -#else - //y = scaninfo[q].y; - //x = scaninfo[q].x; - y += gvar->video.page[0].dy; - x += gvar->video.page[0].dx; -#endif + y = scaninfo[q].scan->start/sw; + x = scaninfo[q].scan->start%sw; + if(!mmsmscaninfoxyposinew) + { + y = gvar->video.print.y;//ypos; + x = gvar->video.print.x;//xpos; + }else{ + //y = scaninfo[q].y; + //x = scaninfo[q].x; + y += gvar->video.page[0].dy; + x += gvar->video.page[0].dx; + } VW_Hlin(x,x+end,y,color,gvar); VL_Plot(x,y,5,gvar); } @@ -1612,7 +1623,6 @@ reset: { printf("%s", scratch1); printf("%s", AAGREY); printf("_"); -// if(scaninfo[q].scan->length<64000) for(w=(scaninfo[q].scan->start)/80;w<=end/80;w++) { //strcat(scratch1, "+"); @@ -1638,8 +1648,8 @@ reset: if(gvar->video.VL_Started) { //if (scan->next && scan->next->start > end+1) free - xpos = gvar->video.page[0].dx; - ypos = gvar->video.page[0].dy;//(gvar->video.page[0].sh-(32));//8*4 + /*xpos*/gvar->video.print.x = gvar->video.page[0].dx; + /*ypos*/gvar->video.print.y = gvar->video.page[0].dy; } else { @@ -1654,6 +1664,11 @@ reset: IN_ClearKey(scancode); switch (scancode) { + case sc_Enter: + if(!mmsmscaninfoxyposinew) mmsmscaninfoxyposinew = true; + else mmsmscaninfoxyposinew = false; + //mmsmscaninfoxyposinew!=mmsmscaninfoxyposinew; + break; case sc_LeftArrow: if(q>0) q--; else q = maxq; @@ -1663,29 +1678,26 @@ reset: else q = 0; break; case sc_UpArrow: - if(q>10) q-=10; + if(q>9) q-=10; else q = maxq; break; case sc_DownArrow: - if(qmm.mmhead; -// x = gvar->video.page[0].dx; -// y = gvar->video.page[0].dy;//(gvar->video.page[0].sh-(32));//8*4 oldq = q; restarted = true; - modexClearRegion(&gvar->video.page[0], 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 8); +#ifdef __WATCOMC__ + if(gvar->video.VL_Started) modexClearRegion(&gvar->video.page[0], gvar->video.page[0].dx, gvar->video.page[0].dy, gvar->video.page[0].sw, gvar->video.page[0].sh, 8); +#endif goto reset; - break; + case sc_Escape: done = true; break; } } -//} -// MM_ShowMemoryDetail (x, y, w, q, end, &scaninfo, gvar); #else if(gvar->video.VL_Started) IN_Ack(gvar); #endif @@ -1693,135 +1705,9 @@ reset: gvar->video.BOFS = (byte __far *)temp; } -#if 0 -//def MMSMSCANINFO -void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword end, mmshowmemoryinfo_t *scaninfo, global_game_variables_t *gvar) - { - byte scratch1[4]; - unsigned maxq = q; - boolean done; - ScanCode scancode; - int xpos,ypos; - word ccolor = 3; - IN_Ack(gvar); -// VL_ClearVideo (8); - for (q = 0,done = false;!done;) - { - if(scaninfo[q].scan->attributes & PURGEBITS) - { - ccolor = 6; // dark purple = purgable - strcpy(scratch1, AAMAGENTA); // dark purple = purgable - //printf("%s", AAMAGENTA); - }else{ - ccolor = 2; // medium blue = non purgable - strcpy(scratch1, AABLUE); // medium blue = non purgable - //printf("%s", AABLUE); - } - if(scaninfo[q].scan->attributes & LOCKBIT) - { - ccolor = 1; // red = locked - strcpy(scratch1, AARED); // red = locked - //printf("%s", AARED); - } - end = scaninfo[q].scan->length-1; -//modexprint(page, x, y, t, tlsw, color, bgcolor, vidsw, const byte *str); -#define MMSMPRINTMEMINFO modexprint(&(gvar->video.page[0]), xpos, ypos, 1, 1, ccolor, 8, gvar->video.VL_Started, global_temp_status_text); ypos+=8; -#ifdef __WATCOMC__ - if(gvar->video.VL_Started) - { - VL_ShowPage(&gvar->video.page[0], 1, 0); - modexClearRegion(&gvar->video.page[0], 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 8); - }else -#endif - clrscr(); - sprintf(global_temp_status_text, "block #%04u", q); MMSMPRINTMEMINFO -// sprintf(global_temp_status_text, "%Fp", scaninfo[q].scan->useptr); MMSMPRINTMEMINFO - sprintf(global_temp_status_text, "start: %04x", (unsigned)scaninfo[q].scan->start); MMSMPRINTMEMINFO - sprintf(global_temp_status_text, "useptr: %04x", (unsigned)scaninfo[q].scan->useptr); MMSMPRINTMEMINFO - sprintf(global_temp_status_text, "size: %05u", (unsigned)scaninfo[q].scan->length); MMSMPRINTMEMINFO - if (scaninfo[q].scan->next && scaninfo[q].scan->next->start > end+1) - { - sprintf(global_temp_status_text, "free: %05u", (unsigned)(scaninfo[q].scan->next->start-scaninfo[q].scan->start)); MMSMPRINTMEMINFO - } - if(gvar->video.VL_Started) - { - y = ypos;//scaninfo[q].scan->start/width; - x = xpos;//scaninfo[q].scan->start%width; - VW_Hlin(x,x+end,y,ccolor,gvar); - VL_Plot(x,y,5,gvar); - } - else - { - printf("%s", scratch1); - printf("%s", AAGREY); printf("_"); - if(scaninfo[q].scan->length<64000) - for(w=(scaninfo[q].scan->start)/80;w<=end/80;w++) - { - //strcat(scratch1, "+"); - printf("+"); - } - } - - - if (scaninfo[q].scan->next && scaninfo[q].scan->next->start > end+1) if(!gvar->video.VL_Started) - { - //strcat(scratch1, AARESET); - printf("%s", AARESET); - //strcat(scratch1,AAGREEN); - printf("%s", AAGREEN); - for(w=(end+1)/80;w<=((scaninfo[q].scan->next->start-scaninfo[q].scan->start)/80);w++) - { - //strcat(scratch1,"0"); - printf("0"); - } - }else VW_Hlin(x+end+1,x+(scaninfo[q].scan->next->start-scaninfo[q].scan->start),y,3,gvar); // black = free//now green - - - if(gvar->video.VL_Started) - { - //if (scan->next && scan->next->start > end+1) free - xpos = gvar->video.page[0].dx; - ypos = gvar->video.page[0].dy;//(gvar->video.page[0].sh-(32));//8*4 - } - else - { - //printf("%s\n", scratch1); - printf("%s", AARESET); - printf("\n"); - } -//0000printf("%s", AABLACK); fprintf(stdout, "q=%u maxq=%u\n", q, maxq); printf("%s", AARESET); -//fprintf(stdout, ""); //this is a HAX to make it decrement and increment properly when it is at 0 and qmax - while (!(scancode = gvar->in.inst->LastScan)){} - - IN_ClearKey(scancode); - switch (scancode) - { - case sc_LeftArrow: - if(q>0) q--; - else q = maxq; - break; - case sc_RightArrow: - if(q10) q-=10; - else q = maxq; - break; - case sc_DownArrow: - if(q