From 47de84fccfcf27e3cf83004b74eee1215284c5df Mon Sep 17 00:00:00 2001 From: sparky4 Date: Mon, 23 Mar 2015 17:16:16 -0500 Subject: [PATCH] modified: makefile modified: scroll.exe modified: src/lib/mapread.c modified: src/lib/mapread.h modified: src/scroll.c --- makefile | 18 ++++++++++++------ scroll.exe | Bin 59382 -> 60641 bytes src/lib/mapread.c | 34 ++++++++++++++++++++++------------ src/lib/mapread.h | 11 ++++++----- src/scroll.c | 5 +++-- 5 files changed, 43 insertions(+), 25 deletions(-) diff --git a/makefile b/makefile index ebc15e33..61708a58 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 - wcl $(FLAGS) scroll.obj modex16.obj dos_kb.obj bitmap.obj 16\lib\x\modex.lib +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.obj: $(SRC)scroll.c wcl $(FLAGS) -c $(SRC)scroll.c test.exe: test.obj modex16.obj bitmap.obj @@ -29,14 +29,20 @@ modex16.obj: $(SRCLIB)modex16.h $(SRCLIB)modex16.c wcl $(FLAGS) -c $(SRCLIB)modex16.c dos_kb.obj: $(SRCLIB)dos_kb.h $(SRCLIB)dos_kb.c - wcl $(FLAGS) -c $(SRCLIB)dos_kb.c - + wcl $(FLAGS) -c $(SRCLIB)dos_kb.c + bitmap.obj: $(SRCLIB)bitmap.h $(SRCLIB)bitmap.c wcl $(FLAGS) -c $(SRCLIB)bitmap.c planar.obj: $(SRCLIB)planar.h $(SRCLIB)planar.c - wcl $(FLAGS) -c $(SRCLIB)planar.c - + wcl $(FLAGS) -c $(SRCLIB)planar.c + +mapread.obj: $(SRCLIB)mapread.h $(SRCLIB)mapread.c jsmn.obj + wcl $(FLAGS) -c $(SRCLIB)mapread.c + +jsmn.obj: $(SRCLIB)jsmn\jsmn.h $(SRCLIB)jsmn\jsmn.c + wcl $(FLAGS) -c $(SRCLIB)jsmn\jsmn.c + clean: del *.obj # del *.exe diff --git a/scroll.exe b/scroll.exe index 77635411312695818a70f232c19cd71fa124856f..6442f4df2175ad56f35961eaaae2300249702911 100644 GIT binary patch delta 22334 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

k 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 BAA|q^ diff --git a/src/lib/mapread.c b/src/lib/mapread.c index 5cd4f1cf..32d06c01 100644 --- a/src/lib/mapread.c +++ b/src/lib/mapread.c @@ -9,13 +9,14 @@ static int jsoneq(const char *json, jsmntok_t *tok, const char *s) { } //this function is quite messy ^^; sorry! it is a quick and dirty fix~ -static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char *js_sv,*/ map_t *map, int q) { +static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char *js_sv,*/ map_t *map, int q/*, word w*/) { int i, j, k; if (count == 0) { return 0; } /* We may want to do strtol() here to get numeric value */ if (t->type == JSMN_PRIMITIVE) { + //if(w) if(js_sv == "data") { //bgdata[q] = (byte)strtol(js+t->start, (char **)js+t->end, 10); @@ -23,24 +24,29 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * map->tiles->data->data[q] = (byte)strtol(js+t->start, (char **)js+t->end, 10); printf("%d[%d]", q, map->tiles->data->data[q]); //printf("%d[%d]", q, bgdata[q]); - }else if(js_sv == "height") + } + else + if(js_sv == "height") { map->height = (int)strtol(js+t->start, (char **)js+t->end, 10); - //printf("h:[%d]\n", map->height); + printf("h:[%d]\n", map->height); }else if(js_sv == "width") { map->width = (int)strtol(js+t->start, (char **)js+t->end, 10); - //printf("w:[%d]\n", map->width); + printf("w:[%d]\n", map->width); } return 1; /* We may use strndup() to fetch string value */ } else if (t->type == JSMN_STRING) { //printf("'%.*s'", t->end - t->start, js+t->start); - if (jsoneq(js, t, "data") == 0) + //if(w) + if(jsoneq(js, t, "data") == 0 ) { js_sv="data";//strdup(js+t->start);//, t->end - t->start); //printf("%s\n", js_sv); - }else if (jsoneq(js, t, "height") == 0 && indent==1) + } + else + if (jsoneq(js, t, "height") == 0 && indent==1) { js_sv="height";//strdup(js+t->start);//, t->end - t->start); //printf("%s\n", js_sv); @@ -55,9 +61,9 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * j = 0; for (i = 0; i < t->size; i++) { //for (k = 0; k < indent; k++) printf("\t"); - j += dump(js, t+1+j, count-j, indent+1, map, i); + j += dump(js, t+1+j, count-j, indent+1, map, i/*, w*/); //printf(": "); - j += dump(js, t+1+j, count-j, indent+1, map, i); + j += dump(js, t+1+j, count-j, indent+1, map, i/*, w*/); //printf("\n"); } return j+1; @@ -68,7 +74,7 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * //if(bgdata==NULL) bgdata=malloc(sizeof(char)*t->size); //for (k = 0; k < indent-1; k++) printf("\t"); //printf("\t-"); - j += dump(js, t+1+j, count-j, indent+1, map, i); + j += dump(js, t+1+j, count-j, indent+1, map, i/*, w*/); //printf("==\n"); } return j+1; @@ -76,7 +82,7 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * return 0; } -int loadmap(char *mn, map_t *map) +static int loadmap(char *mn, map_t *map/*, word w*/) { int r; int eof_expected = 0; @@ -118,7 +124,7 @@ int loadmap(char *mn, map_t *map) js = realloc(js, jslen + r + 1); if (js == NULL) { - fprintf(stderr, "realloc(): errno=%d\n", errno); + fprintf(stderr, "realloc(): errno = %d\n", errno); return 3; } strncpy(js + jslen, buf, r); @@ -137,13 +143,17 @@ again: goto again; } } else { - dump(js, tok, p.toknext, 0, map, 0); + dump(js, tok, p.toknext, 0, map, 0/*, w*/); //fprintf(stdout, "[[[[%d]]]]\n", sizeof(tok)); //printf("[\n%d\n]", jslen); eof_expected = 1; } } + free(js); + free(tok); + fclose(fh); + return 0; } diff --git a/src/lib/mapread.h b/src/lib/mapread.h index 26682626..dbb4bfa3 100644 --- a/src/lib/mapread.h +++ b/src/lib/mapread.h @@ -1,13 +1,14 @@ #ifndef _LIBMAPREAD_H_ #define _LIBMAPREAD_H_ #include +#include #include #include -#include "src/lib/jsmn/jsmn.c" +#include "src/lib/jsmn/jsmn.h" #include "src/lib/modex16.h" -char *js_sv; -byte bgdata[4096]; +static char *js_sv; +//byte bgdata[4096]; typedef struct { bitmap_t *data; @@ -25,7 +26,7 @@ typedef struct { } map_t; static int jsoneq(const char *json, jsmntok_t *tok, const char *s); -static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char *js_sv,*/ map_t *map, int q); -int loadmap(char *mn, map_t *map); +static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char *js_sv,*/ map_t *map, int q/*, word w*/); +static int loadmap(char *mn, map_t *map/*, word w*/); #endif/*_LIBMAPREAD_H_*/ diff --git a/src/scroll.c b/src/scroll.c index f03cda5c..239883f6 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -118,8 +118,9 @@ void main() { }*/ /* create the map */ - 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 + loadmap("data/test.map", &map/*, 0*/); + 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 + //loadmap(NULL, &map, 1); //if(isEMS()) printf("%d tesuto\n", coretotalEMS()); initMap(&map); mv.map = ↦ -- 2.39.5