From 56bb29bded61d906400612e14b81f2d5f34b7600 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Tue, 31 Mar 2015 11:05:55 -0500 Subject: [PATCH] added memory usage display~ modified: makefile modified: scroll.exe modified: src/lib/lib_head.c modified: src/lib/lib_head.h modified: src/lib/mapread.h modified: src/scroll.c --- makefile | 9 +++-- scroll.exe | Bin 64853 -> 67248 bytes src/lib/lib_head.c | 81 +++++++++++++++++++++++++++++++++++++++++++-- src/lib/lib_head.h | 3 ++ src/lib/mapread.h | 3 +- src/scroll.c | 24 ++++++++++---- 6 files changed, 106 insertions(+), 14 deletions(-) diff --git a/makefile b/makefile index 2a53a385..7fbfcac6 100644 --- a/makefile +++ b/makefile @@ -3,8 +3,8 @@ SRC=src\ SRCLIB=$(SRC)lib\ all: test.exe pcxtest.exe test2.exe scroll.exe -scroll.exe: scroll.obj modex16.obj dos_kb.obj bitmap.obj mapread.obj jsmn.obj - wcl $(FLAGS) scroll.obj modex16.obj dos_kb.obj bitmap.obj mapread.obj jsmn.obj# 16\lib\x\modex.lib +scroll.exe: scroll.obj modex16.obj dos_kb.obj bitmap.obj mapread.obj jsmn.obj lib_head.obj + wcl $(FLAGS) scroll.obj modex16.obj dos_kb.obj bitmap.obj mapread.obj jsmn.obj lib_head.obj# 16/lib/x/modex.lib scroll.obj: $(SRC)scroll.c wcl $(FLAGS) -c $(SRC)scroll.c test.exe: test.obj modex16.obj bitmap.obj @@ -43,8 +43,11 @@ bitmap.obj: $(SRCLIB)bitmap.h $(SRCLIB)bitmap.c planar.obj: $(SRCLIB)planar.h $(SRCLIB)planar.c wcl $(FLAGS) -c $(SRCLIB)planar.c -mapread.obj: $(SRCLIB)mapread.h $(SRCLIB)mapread.c jsmn.obj +mapread.obj: $(SRCLIB)mapread.h $(SRCLIB)mapread.c jsmn.obj lib_head.obj wcl $(FLAGS) -c $(SRCLIB)mapread.c + +lib_head.obj: $(SRCLIB)lib_head.h $(SRCLIB)lib_head.c + wcl $(FLAGS) -c $(SRCLIB)lib_head.c jsmn.obj: $(SRCLIB)jsmn\jsmn.h $(SRCLIB)jsmn\jsmn.c wcl $(FLAGS) -c $(SRCLIB)jsmn\jsmn.c diff --git a/scroll.exe b/scroll.exe index d0231e0ba4650999b89572f2f208219ab98dc502..a77f82a99be7ce42d33ce01f840955a7b829ef3c 100644 GIT binary patch delta 23571 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 delta 21907 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 clock()) && !kbhit()) ; -} /* End of wait */ \ No newline at end of file +} /* End of wait */ + +void* AllocateLargestFreeBlock(size_t* Size) +{ + size_t s0, s1; + void* p; + + s0 = ~(size_t)0 ^ (~(size_t)0 >> 1); + + while (s0 && (p = malloc(s0)) == NULL) + s0 >>= 1; + + if (p) + free(p); + + s1 = s0 >> 1; + + while (s1) + { + if ((p = malloc(s0 + s1)) != NULL) + { + s0 += s1; + free(p); + } + s1 >>= 1; + } + + while (s0 && (p = malloc(s0)) == NULL) + s0 ^= s0 & -s0; + + *Size = s0; + return p; +} + +size_t GetFreeSize(void) +{ + size_t total = 0; + void* pFirst = NULL; + void* pLast = NULL; + + for (;;) + { + size_t largest; + void* p = AllocateLargestFreeBlock(&largest); + + if (largest < sizeof(void*)) + { + if (p != NULL) + free(p); + break; + } + + *(void**)p = NULL; + + total += largest; + + if (pFirst == NULL) + pFirst = p; + + if (pLast != NULL) + *(void**)pLast = p; + + pLast = p; + } + + while (pFirst != NULL) + { + void* p = *(void**)pFirst; + free(pFirst); + pFirst = p; + } + + return total; +} diff --git a/src/lib/lib_head.h b/src/lib/lib_head.h index dcd85470..34fcb3a0 100644 --- a/src/lib/lib_head.h +++ b/src/lib/lib_head.h @@ -4,6 +4,7 @@ #include #include // just for wait #include // just for wait +#include #include "src/lib/types.h" /* Control codes for all keys on the keyboard */ @@ -103,6 +104,8 @@ //typedef unsigned short syte; void wait(clock_t wait); +void* AllocateLargestFreeBlock(size_t* Size); +size_t GetFreeSize(void); /* THIS FUNCTION CONVERTS A POINTER TO AN INTEL LONG */ //int long ptr2long(char *p); diff --git a/src/lib/mapread.h b/src/lib/mapread.h index b82369a3..8b1b3e0a 100644 --- a/src/lib/mapread.h +++ b/src/lib/mapread.h @@ -1,11 +1,10 @@ #ifndef _LIBMAPREAD_H_ #define _LIBMAPREAD_H_ -#include -#include #include #include #include "src/lib/jsmn/jsmn.h" #include "src/lib/modex16.h" +#include "src/lib/lib_head.h" static char *js_sv; diff --git a/src/scroll.c b/src/scroll.c index 6f535659..97053184 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -1,8 +1,8 @@ -#include "src\lib\dos_kb.h" -#include "src\lib\mapread.c" +#include "src/lib/dos_kb.h" +#include "src/lib/mapread.c" //#include "16\lib\x\modex.h" -#include "src\lib\wtest\wtest.c" -#include "src\lib\planar.c" +#include "src/lib/wtest/wtest.c" +#include "src/lib/planar.c" //====#include "src\lib\ems.c" //word far *clock= (word far*) 0x046C; /* 18.2hz clock */ @@ -73,7 +73,8 @@ void animatePlayer(map_view_t *src, map_view_t *dest, /*map_view_t *top, */sword #define TRIGGX 10 #define TRIGGY 9 -void main() { +void main() { + size_t oldfreemem=GetFreeSize(); long emmhandle; long emsavail; char teststr[80]; @@ -120,6 +121,7 @@ void main() { }*/ /* create the map */ + printf("Total used @ before map load: %zu\n", oldfreemem-GetFreeSize()); loadmap("data/test.map", &map); //---- map = allocMap(map.width,map.height); //20x15 is the resolution of the screen you can make maps smaller than 20x15 but the null space needs to be drawn properly //if(isEMS()) printf("%d tesuto\n", coretotalEMS()); @@ -132,10 +134,14 @@ void main() { ptr = map.data; mappalptr = map.tiles->data->palette; /* data */ + printf("Total used @ before image loading: %zu\n", oldfreemem-GetFreeSize()); ptmp = bitmapLoadPcx("data/ptmp.pcx"); // load sprite //npctmp = bitmapLoadPcx("ptmp1.pcx"); // load sprite + /* create the planar buffer */ + printf("Total used @ before planar buffer creation: %zu\n", oldfreemem-GetFreeSize()); p = planar_buf_from_bitmap(&ptmp); + printf("Total used @ after planar buffer creation: %zu\n", oldfreemem-GetFreeSize()); /*if(isEMS()) { @@ -176,6 +182,7 @@ void main() { setkb(1); modexEnter(); modexPalBlack(); //reset the palette~ + printf("Total used @ before palette initiation: %zu\n", oldfreemem-GetFreeSize()); ptmp.offset=(paloffset/3); modexPalUpdate(&ptmp, &paloffset, 0, 0); //printf(" %d\n", sizeof(ptmp.data)); @@ -236,6 +243,9 @@ void main() { //----modexClearRegion(spri->page, 5*16, 5*16, 16, 16, 255); //----modexClearRegion(bg->page, 5*16, 5*16, 16, 16, 255); modexShowPage(spri->page); + //printf("Total free: %zu\n", GetFreeSize()); + //printf("Total free: %zu\n", GetFreeSize()); + printf("Total used @ before loop: %zu\n", oldfreemem-GetFreeSize()); modexFadeOn(4, gpal); while(!keyp(1) && player.hp>0) { @@ -567,6 +577,8 @@ void main() { printf("player.q: %d\n", player.q); printf("player.d: %d\n", player.d); printf("palette offset: %d\n", paloffset/3); + printf("Total used: %zu\n", oldfreemem-GetFreeSize()); + printf("Total free: %zu\n", GetFreeSize()); printf("temporary player sprite 0: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=45556867\n"); printf("temporary player sprite 1: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=44606385\n"); printf("\n"); @@ -866,7 +878,7 @@ void pdump(map_view_t *pee) palcol++; } } -} +} void animatePlayer(map_view_t *src, map_view_t *dest, /*map_view_t *top, */sword d, short scrolloffsetswitch, int x, int y, int ls, int lp, bitmap_t *bmp) -- 2.39.5