From: sparky4 Date: Thu, 11 Jun 2015 17:31:11 +0000 (-0500) Subject: major far fork made~ scroll.exe partially working... wwww X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=3aa2d573c4dace5af78bf8f8f21e46ca36334803;p=16.git major far fork made~ scroll.exe partially working... wwww modified: Project 16.bfproject modified: data/g.pal modified: emmtest.exe modified: emsdump.exe modified: fmemtest.exe modified: makefile modified: maptest.exe modified: maptest0.exe modified: pcxtest.exe modified: scroll.exe modified: src/lib/bitmap.c new file: src/lib/fmapread.c new file: src/lib/fmapread.h renamed: src/lib/jsmn/jsmnfar.c -> src/lib/jsmn/farjsmn.c renamed: src/lib/jsmn/jsmnfar.h -> src/lib/jsmn/farjsmn.h modified: src/lib/mapread.c modified: src/lib/mapread.h modified: src/scroll.c modified: test.exe modified: test2.exe --- diff --git a/Project 16.bfproject b/Project 16.bfproject index 4e486aca..f2a56894 100644 --- a/Project 16.bfproject +++ b/Project 16.bfproject @@ -17,15 +17,19 @@ openfiles: /dos/z/16/src/lib/bitmap.c:0:0:0: openfiles: /dos/z/16/src/lib/bitmap.h:453:0:0: openfiles: /dos/z/16/src/lib/dos_kb.c:0:0:0: openfiles: /dos/z/16/src/lib/dos_kb.h:0:0:0: -openfiles: /dos/z/16/src/lib/modex16.c:444:0:0: -openfiles: /dos/z/16/src/lib/modex16.h:0:0:0: -openfiles: /dos/z/16/src/lib/mapread.c:4790:4435:0: -openfiles: /dos/z/16/src/lib/mapread.h:285:0:0: -openfiles: /dos/z/16/src/lib/exmm/memory.c:496:0:0: +openfiles: /dos/z/16/src/lib/modex16.c:148:0:0: +openfiles: /dos/z/16/src/lib/modex16.h:445:0:0: +openfiles: /dos/z/16/src/lib/mapread.c:2673:1807:1: +openfiles: /dos/z/16/src/lib/mapread.h:584:0:0: +openfiles: /dos/z/16/src/lib/fmapread.c:863:0:0: +openfiles: /dos/z/16/src/lib/fmapread.h:519:0:0: +openfiles: /dos/z/16/src/lib/exmm/memory.c:308:99:0: openfiles: /dos/z/16/src/lib/exmm/memory.h:0:0:0: openfiles: /dos/z/16/src/lib/exmm/emmsize.h:0:0:0: openfiles: /dos/z/16/src/lib/exmm/emmret.h:0:0:0: -openfiles: /dos/z/16/makefile:3079:248:1: +openfiles: /dos/z/16/src/lib/jsmn/farjsmn.c:85:0:0: +openfiles: /dos/z/16/src/lib/jsmn/farjsmn.h:1693:0:0: +openfiles: /dos/z/16/makefile:1505:1021:0: openfiles: /dos/z/16/src/lib/types.h:165:0:0: snr_recursion_level: 0 convertcolumn_horizontally: 0 @@ -38,10 +42,10 @@ view_left_panel: 0 default_mime_type: text/plain e2c.convert_xml: 1 c2e.convert_iso: 0 -opendir: file:///dos/z/16/src/lib +opendir: file:///dos/z/16/src/lib/jsmn wrap_text_default: 0 bookmarks_filename_mode: 1 -ssearch_text: fprintf +ssearch_text: huge snr_casesens: 0 view_blocks: 1 name: Project 16 @@ -86,21 +90,25 @@ recent_files: file:///dos/z/16/src/lib/planar.h recent_files: file:///dos/z/16/src/lib/PLANAR.C recent_files: file:///dos/z/16/src/lib/dos_kb.c recent_files: file:///dos/z/16/src/lib/dos_kb.h -recent_files: file:///dos/z/16/src/lib/mapread.h recent_files: file:///dos/z/16/src/lib/bitmap.c recent_files: file:///dos/z/16/src/lib/bitmap.h recent_files: file:///dos/z/16/src/lib/modex16.h recent_files: file:///dos/z/16/src/lib/modex16.c recent_files: file:///dos/z/16/src/lib/jsmn/jsmn.c -recent_files: file:///dos/z/16/src/lib/mapread.c recent_files: file:///dos/z/16/src/lib/jsmn/jsmn.h recent_files: file:///dos/z/16/src/lib/exmm/emmsize.h recent_files: file:///dos/z/16/src/lib/exmm/emmret.h recent_files: file:///dos/z/16/src/lib/exmm/memory.h recent_files: file:///dos/z/16/src/lib/types.h recent_files: file:///dos/z/16/src/lib/exmm/memory.c +recent_files: file:///dos/z/16/src/lib/mapread.c +recent_files: file:///dos/z/16/src/lib/mapread.h +recent_files: file:///dos/z/16/src/lib/fmapread.c +recent_files: file:///dos/z/16/src/lib/fmapread.h +recent_files: file:///dos/z/16/src/lib/jsmn/farjsmn.c +recent_files: file:///dos/z/16/src/lib/jsmn/farjsmn.h snr_replacetype: 0 -savedir: file:///dos/z/16/src/lib/jsmn +savedir: file:///dos/z/16/src/lib spell_check_default: 1 spell_insert_entities: 0 last_filefilter: @@ -110,8 +118,6 @@ snr_escape_chars: 0 htmlbar_view: 0 spell_lang: en ssearch_dotmatchall: 0 -searchlist: alloc( -searchlist: alloc ( searchlist: parse( searchlist: i searchlist: parser->toknext @@ -125,6 +131,8 @@ searchlist: rhuge searchlist: huge searchlist: ++++ searchlist: fprintf +searchlist: far +searchlist: huge autocomplete: 1 outputb_show_all_output: 0 bookmarks_show_mode: 0 diff --git a/data/g.pal b/data/g.pal index 4804f783..a234f82c 100644 Binary files a/data/g.pal and b/data/g.pal differ diff --git a/emmtest.exe b/emmtest.exe index 508418b4..1afe9df7 100644 Binary files a/emmtest.exe and b/emmtest.exe differ diff --git a/emsdump.exe b/emsdump.exe index 4bd4a3d5..a3551059 100644 Binary files a/emsdump.exe and b/emsdump.exe differ diff --git a/fmemtest.exe b/fmemtest.exe index b50e3f3d..3ab91cb0 100644 Binary files a/fmemtest.exe and b/fmemtest.exe differ diff --git a/makefile b/makefile index 556b3f86..c1219398 100644 --- a/makefile +++ b/makefile @@ -1,7 +1,8 @@ #-zk0u = translate kanji to unicode... wwww #-zk0 = kanji support~ #-zkl = current codepage - + +MFLAGS=-mh CFLAGS=-zkl -wo -x## -mc# -zdp# -zp16 -zq OFLAGS=-ot -ox -ob -oh -or# -om -ol -ol+ FLAGS=-0 -d2 $(OFLAGS) $(CFLAGS) @@ -33,17 +34,17 @@ pcxtest.exe: pcxtest.obj modex16.obj bitmap.obj lib_head.obj maptest.exe: maptest.obj mapread.obj jsmn.obj modex16.obj bitmap.obj lib_head.obj wcl $(FLAGS) maptest.obj mapread.obj jsmn.obj modex16.obj bitmap.obj lib_head.obj -maptest0.exe: maptest0.obj mapread.obj jsmn.obj modex16.obj bitmap.obj lib_head.obj - wcl $(FLAGS) maptest0.obj mapread.obj jsmn.obj modex16.obj bitmap.obj lib_head.obj +maptest0.exe: maptest0.obj fmapread.obj farjsmn.obj# modex16.obj bitmap.obj lib_head.obj + wcl $(FLAGS) $(MFLAGS) maptest0.obj fmapread.obj farjsmn.obj# modex16.obj bitmap.obj lib_head.obj emmtest.exe: emmtest.obj memory.obj - wcl $(FLAGS) emmtest.obj memory.obj + wcl $(FLAGS) $(MFLAGS) emmtest.obj memory.obj emsdump.exe: emsdump.obj memory.obj - wcl $(FLAGS) emsdump.obj memory.obj + wcl $(FLAGS) $(MFLAGS) emsdump.obj memory.obj fmemtest.exe: fmemtest.obj# memory.obj - wcl $(FLAGS) fmemtest.obj# memory.obj + wcl $(FLAGS) $(MFLAGS) fmemtest.obj# memory.obj # #executable's objects @@ -60,17 +61,17 @@ pcxtest.obj: $(SRC)pcxtest.c $(SRCLIB)modex16.h maptest.obj: $(SRC)maptest.c $(SRCLIB)modex16.h wcl $(FLAGS) -c $(SRC)maptest.c -maptest0.obj: $(SRC)maptest0.c $(SRCLIB)modex16.h - wcl $(FLAGS) -c $(SRC)maptest0.c +maptest0.obj: $(SRC)maptest0.c# $(SRCLIB)modex16.h + wcl $(FLAGS) $(MFLAGS) -c $(SRC)maptest0.c emmtest.obj: $(SRC)emmtest.c - wcl $(FLAGS) -c $(SRC)emmtest.c + wcl $(FLAGS) $(MFLAGS) -c $(SRC)emmtest.c emsdump.obj: $(SRC)emsdump.c - wcl $(FLAGS) -c $(SRC)emsdump.c + wcl $(FLAGS) $(MFLAGS) -c $(SRC)emsdump.c fmemtest.obj: $(SRC)fmemtest.c - wcl $(FLAGS) -c $(SRC)fmemtest.c + wcl $(FLAGS) $(MFLAGS) -c $(SRC)fmemtest.c # #non executable objects libraries @@ -88,7 +89,10 @@ planar.obj: $(SRCLIB)planar.h $(SRCLIB)planar.c wcl $(FLAGS) -c $(SRCLIB)planar.c mapread.obj: $(SRCLIB)mapread.h $(SRCLIB)mapread.c - wcl $(FLAGS) -c $(SRCLIB)mapread.c + wcl $(FLAGS) -c $(SRCLIB)mapread.c + +fmapread.obj: $(SRCLIB)fmapread.h $(SRCLIB)fmapread.c + wcl $(FLAGS) $(MFLAGS) -c $(SRCLIB)fmapread.c lib_head.obj: $(SRCLIB)lib_head.h $(SRCLIB)lib_head.c wcl $(FLAGS) -c $(SRCLIB)lib_head.c @@ -97,10 +101,10 @@ jsmn.obj: $(JSMNLIB)jsmn.h $(JSMNLIB)jsmn.c wcl $(FLAGS) -c $(JSMNLIB)jsmn.c farjsmn.obj: $(JSMNLIB)farjsmn.h $(JSMNLIB)farjsmn.c - wcl $(FLAGS) -c $(JSMNLIB)farjsmn.c + wcl $(FLAGS) $(MFLAGS) -c $(JSMNLIB)farjsmn.c memory.obj: $(EXMMLIB)memory.h $(EXMMLIB)memory.c - wcl $(FLAGS) -c $(EXMMLIB)memory.c + wcl $(FLAGS) $(MFLAGS) -c $(EXMMLIB)memory.c # #other~ diff --git a/maptest.exe b/maptest.exe index 27a07474..5728c642 100644 Binary files a/maptest.exe and b/maptest.exe differ diff --git a/maptest0.exe b/maptest0.exe index 4b0b2f57..4be39cc8 100644 Binary files a/maptest0.exe and b/maptest0.exe differ diff --git a/pcxtest.exe b/pcxtest.exe index 29b668ff..914bbd46 100644 Binary files a/pcxtest.exe and b/pcxtest.exe differ diff --git a/scroll.exe b/scroll.exe index 35007278..fbaf3acd 100644 Binary files a/scroll.exe and b/scroll.exe differ diff --git a/src/lib/bitmap.c b/src/lib/bitmap.c index 864878d8..c34e13d0 100644 --- a/src/lib/bitmap.c +++ b/src/lib/bitmap.c @@ -75,7 +75,7 @@ bitmapLoadPcx(char *filename) { FILE *file; bitmap_t result; dword bufSize; - dword index; + int index; byte count, val; /* open the PCX file for reading */ diff --git a/src/lib/fmapread.c b/src/lib/fmapread.c new file mode 100644 index 00000000..2b7eb0b7 --- /dev/null +++ b/src/lib/fmapread.c @@ -0,0 +1,225 @@ +#include "src/lib/fmapread.h" + +int jsoneq(const char huge *json, jsmntok_t huge *tok, const char huge *s) { + if (tok->type == JSMN_STRING && (int)_fstrlen(s) == tok->end - tok->start && + _fstrncmp((char const *)json + tok->start, s, tok->end - tok->start) == 0) { + return 0; + } + return -1; +} + +//this function is quite messy ^^; sorry! it is a quick and dirty fix~ +word dump(const char huge *js, jsmntok_t huge *t, size_t count, word indent, char *js_sv, map_t *map, dword q) { + dword i; + word j; +//++++ bitmap_t bp; + #ifdef DEBUG_JS + if(indent==0) + { + fprintf(stdout, "%s\n", js); + fprintf(stdout, "\n"); + } + #endif + #ifdef DEBUG_DUMPVARS + fprintf(stdout, "t->size=[%d] ", t->size); + fprintf(stdout, "q=[%d] ", q); + fprintf(stdout, "indent= [%d] ", indent); + fprintf(stdout, "js_sv= [%s]\n", js_sv); + #endif + if (count == 0) { + return 0; + } + /* We may want to do strtol() here to get numeric value */ +//0000fprintf(stderr, "t->type=%d\n", t->type); + if (t->type == JSMN_PRIMITIVE) { + if(_fstrstr(js_sv, "data")) + { + /* + here we should recursivly call dump again here to skip over the array until we get the facking width of the map. + so we can initiate the map which allocates the facking map->tiles->data->data properly and THEN we can return + here to read the data.... That is my design for this... wwww + + FUCK well i am stuck.... wwww + */ + map->data[q] = (byte)atoi((const char *)js+t->start); + #ifdef DEBUG_MAPDATA + fprintf(stdout, "%d[%d]", q, map->data[q]); + #endif + } + else + if(_fstrstr(js_sv, "height")) + { + map->height = atoi((const char *)js+t->start); + #ifdef DEBUG_MAPVAR + fprintf(stdout, "indent= [%d] ", indent); + fprintf(stdout, "h:[%d]\n", map->height); + #endif + }else if(_fstrstr(js_sv, "width")) + { + map->width = atoi((const char *)js+t->start); + #ifdef DEBUG_MAPVAR + fprintf(stdout, "indent= [%d] ", indent); + fprintf(stdout, "w:[%d]\n", map->width); + #endif + } + return 1; + /* We may use strndup() to fetch string value */ + } else if (t->type == JSMN_STRING) { + if(jsoneq(js, t, "data") == 0) + { +// fprintf(stdout, "[[[[%d|%d]]]]\n", &(t+1)->size, (t+1)->size); +// fprintf(stdout, "\n%.*s[xx[%d|%d]xx]\n", (t+1)->end - (t+1)->start, js+(t+1)->start, &(t+1)->size, (t+1)->size); + map->data = halloc(sizeof(byte) * (t+1)->size, sizeof(byte)); + //map->data = malloc(sizeof(byte) * (t+1)->size); + map->tiles = /*_f*/malloc(sizeof(tiles_t)); + //map->tiles->data = malloc(sizeof(bitmap_t)); + //fix this to be far~ +//++++ bp = bitmapLoadPcx("data/ed.pcx"); +//++++ map->tiles->data = &bp; + //map->tiles->data->data = malloc((16/**2*/)*16); + //map->tiles->data->width = (16/**2*/); + //map->tiles->data->height= 16; + map->tiles->tileHeight = 16; + map->tiles->tileWidth = 16; + map->tiles->rows = 1; + map->tiles->cols = 1; + _fstrcpy(js_sv, "data");//strdup(js+t->start);//, t->end - t->start); + } + else + if (jsoneq(js, t, "height") == 0 && indent<=1) + { + _fstrcpy(js_sv, "height");//strdup(js+t->start);//, t->end - t->start); + }else + if(jsoneq(js, t, "width") == 0 && indent<=1) + { + _fstrcpy(js_sv, "width");//strdup(js+t->start);//, t->end - t->start); + }else _fstrcpy(js_sv, "\0"); + return 1; + } else if (t->type == JSMN_OBJECT) { + //fprintf(stdout, "\n"); + j = 0; + for (i = 0; i < t->size; i++) { + //for (k = 0; k < indent; k++) fprintf(stdout, "\t"); + j += dump(js, t+1+j, count-j, indent+1, js_sv, map, i); + //fprintf(stdout, ": "); + j += dump(js, t+1+j, count-j, indent+1, js_sv, map, i); + //fprintf(stdout, "\n"); + } + return j+1; + } else if (t->type == JSMN_ARRAY) { + j = 0; + //fprintf(stdout, "==\n"); + for (i = 0; i < t->size; i++) { + //for (k = 0; k < indent-1; k++) fprintf(stdout, "\t"); + //fprintf(stdout, "\t-"); + j += dump(js, t+1+j, count-j, indent+1, js_sv, map, i); + //fprintf(stdout, "==\n"); + } + return j+1; + } + return 0; +} + +int loadmap(char *mn, map_t *map) +{ + int r; + static word incr=0; + int eof_expected = 0; + char huge *js = NULL; + size_t jslen = 0; + char buf[BUFSIZ]; + char huge *buff = &buf; + static char js_ss[16]; + + jsmn_parser p; + jsmntok_t huge *tok; + size_t tokcount = 2; + + FILE *fh = fopen(mn, "r"); + + /* Prepare parser */ + jsmn_init(&p); + + /* Allocate some tokens as a start */ +//0000fprintf(stderr, "tok malloc\n"); + tok = _fmalloc(sizeof(*tok) * tokcount); + if (tok == NULL) { + fprintf(stderr, "malloc(): errno=%d\n", errno); + return 3; + } + + for (;;) { + /* Read another chunk */ +//0000fprintf(stderr, "read\n"); + r = fread(buf, 1, sizeof(buf), fh); + if (r < 0) { + fprintf(stderr, "fread(): %d, errno=%d\n", r, errno); + return 1; + } + if (r == 0) { + if (eof_expected != 0) { + return 0; + } else { + fprintf(stderr, "fread(): unexpected EOF\n"); + return 2; + } + } +//0000fprintf(stdout, "r= [%d] BUFSIZ=%d\n", r, BUFSIZ); +//0000fprintf(stderr, "js alloc~\n"); + js = _frealloc(js, jslen + r + 1); + if (js == NULL) { + fprintf(stderr, "*js=%Fp\n", *js); + fprintf(stderr, "realloc(): errno = %d\n", errno); + return 3; + } + _fstrncpy(js + jslen, &(*buff), r); + jslen = jslen + r; + +again: +//0000fprintf(stdout, " parse~ tok=%zu jslen=%zu r=%d _memavl()=%u BUFSIZ=%d~\n", tokcount, jslen, r, _memavl(), BUFSIZ); +//0000fprintf(stdout, "p=[%u] [%u] [%d]\n", p.pos, p.toknext, p.toksuper); +/* + I think it crashes on the line below when it tries to parse the data of huge maps... wwww this is a jsmn problem wwww +*/ +//++++ + r = jsmn_parse(&p, js, jslen, tok, tokcount); +//0000fprintf(stdout, "r= [%d]\n", r); + if (r < 0) { + if (r == JSMN_ERROR_NOMEM) { + tokcount = tokcount * 2; +//0000fprintf(stderr, "tok realloc~ %zu\n", tokcount); + tok = _frealloc(tok, sizeof(*tok) * tokcount); + if (tok == NULL) { + fprintf(stderr, "realloc(): errno=%d\n", errno); + return 3; + } + goto again; + } + } else { + //printf("js=%Fp\n", (js)); + //printf("*js=%Fp\n", (*(js))); + //printf("&*js=%s\n", &(*(js))); + //printf("&buf=[%Fp]\n", &buf); + //printf("&buf_seg=[%x]\n", FP_SEG(&buf)); + //printf("&buf_off=[%x]\n", FP_OFF(&buf)); + //printf("&buf_fp=[%Fp]\n", MK_FP(FP_SEG(&buf), FP_OFF(&buf))); + //printf("buf=[\n%s\n]\n", buf); + //printf("buff=[%Fp]\n", buff); + //printf("(*buff)=[%Fp]\n", (*buff)); + //printf("&(*buff)=[\n%s\n]\n", &(*buff)); + #ifdef DEBUG_DUMPVARS + fprintf(stdout, "running dump~\n"); + #endif +//++++ + dump(js, tok, p.toknext, incr, &js_ss, map, 0); + eof_expected = 1; + } + } + + _ffree(js); + _ffree(buff); + _ffree(tok); + fclose(fh); + + return 0; +} diff --git a/src/lib/fmapread.h b/src/lib/fmapread.h new file mode 100644 index 00000000..a373780d --- /dev/null +++ b/src/lib/fmapread.h @@ -0,0 +1,38 @@ +#ifndef _LIBFMAPREAD_H_ +#define _LIBFMAPREAD_H_ +#include //huge wwww +#include //huge wwww +#include +#include +#include + +#include "src/lib/jsmn/farjsmn.h" +//++++#include "src/lib/modex16.h" +//++++#include "src/lib/lib_head.h" +#include "src/lib/types.h" + +//#define DEBUG_MAPDATA +//#define DEBUG_MAPVAR +//#define DEBUG_DUMPVARS +//#define DEBUG_JS + +typedef struct { +//++++ bitmap_t *data; + word tileHeight; + word tileWidth; + unsigned int rows; + unsigned int cols; +} tiles_t; + +typedef struct { + byte huge *data; + tiles_t *tiles; + int width; //this has to be signed! + int height; //this has to be signed! +} map_t; + +int jsoneq(const char huge *json, jsmntok_t huge *tok, const char huge *s); +word dump(const char huge *js, jsmntok_t huge *t, size_t count, word indent, char *js_sv, map_t *map, dword q); +int loadmap(char *mn, map_t *map); + +#endif/*_LIBFMAPREAD_H_*/ diff --git a/src/lib/jsmn/jsmnfar.c b/src/lib/jsmn/farjsmn.c similarity index 99% rename from src/lib/jsmn/jsmnfar.c rename to src/lib/jsmn/farjsmn.c index d79f9a5d..fda4db11 100644 --- a/src/lib/jsmn/jsmnfar.c +++ b/src/lib/jsmn/farjsmn.c @@ -1,7 +1,7 @@ #include #include //fprintf for noisy debugging wwww -#include "jsmn.h" +#include "farjsmn.h" /** * Allocates a fresh unused token from the token pull. diff --git a/src/lib/jsmn/jsmnfar.h b/src/lib/jsmn/farjsmn.h similarity index 96% rename from src/lib/jsmn/jsmnfar.h rename to src/lib/jsmn/farjsmn.h index fe27ed0d..dd7dcaf0 100644 --- a/src/lib/jsmn/jsmnfar.h +++ b/src/lib/jsmn/farjsmn.h @@ -1,5 +1,5 @@ -#ifndef __JSMN_H_ -#define __JSMN_H_ +#ifndef __FARJSMN_H_ +#define __FARJSMN_H_ #include @@ -74,4 +74,4 @@ jsmnerr_t jsmn_parse(jsmn_parser huge *parser, const char huge *js, size_t len, } #endif -#endif /* __JSMN_H_ */ +#endif /* __FARJSMN_H_ */ diff --git a/src/lib/mapread.c b/src/lib/mapread.c index cd8dea77..e3f40b44 100644 --- a/src/lib/mapread.c +++ b/src/lib/mapread.c @@ -1,16 +1,16 @@ #include "src/lib/mapread.h" -int jsoneq(const char huge *json, jsmntok_t huge *tok, const char huge *s) { - if (tok->type == JSMN_STRING && (int)_fstrlen(s) == tok->end - tok->start && - _fstrncmp((char const *)json + tok->start, s, tok->end - tok->start) == 0) { +int jsoneq(const char *json, jsmntok_t *tok, const char *s) { + if (tok->type == JSMN_STRING && (int) strlen(s) == tok->end - tok->start && + strncmp(json + tok->start, s, tok->end - tok->start) == 0) { return 0; } return -1; } //this function is quite messy ^^; sorry! it is a quick and dirty fix~ -word dump(const char huge *js, jsmntok_t huge *t, size_t count, word indent, char *js_sv, map_t *map, unsigned long q) { - unsigned long i; +word dump(const char *js, jsmntok_t *t, size_t count, word indent, char *js_sv, map_t *map, dword q) { + dword i; word j;//, k; bitmap_t bp; #ifdef DEBUG_JS @@ -32,7 +32,7 @@ word dump(const char huge *js, jsmntok_t huge *t, size_t count, word indent, cha /* We may want to do strtol() here to get numeric value */ //0000fprintf(stderr, "t->type=%d\n", t->type); if (t->type == JSMN_PRIMITIVE) { - if(_fstrstr(js_sv, "data")) + if(strstr(js_sv, "data")) { /* here we should recursivly call dump again here to skip over the array until we get the facking width of the map. @@ -41,25 +41,22 @@ word dump(const char huge *js, jsmntok_t huge *t, size_t count, word indent, cha FUCK well i am stuck.... wwww */ -//---- map->data[q] = (byte)strtol(js+t->start, (char **)t->end, 10); - map->data[q] = (byte)atoi((const char *)js+t->start); + map->data[q] = (byte)atoi(js+t->start); #ifdef DEBUG_MAPDATA fprintf(stdout, "%d[%d]", q, map->data[q]); #endif } else - if(_fstrstr(js_sv, "height")) + if(strstr(js_sv, "height")) { -//---- map->height = (unsigned int)strtol(js+t->start, (char **)js+t->end, 10); - map->height = atoi((const char *)js+t->start); + map->height = atoi(js+t->start); #ifdef DEBUG_MAPVAR fprintf(stdout, "indent= [%d] ", indent); fprintf(stdout, "h:[%d]\n", map->height); #endif - }else if(_fstrstr(js_sv, "width")) + }else if(strstr(js_sv, "width")) { -//---- map->width = (unsigned int)strtol(js+t->start, (char **)js+t->end, 10); - map->width = atoi((const char *)js+t->start); + map->width = atoi(js+t->start); #ifdef DEBUG_MAPVAR fprintf(stdout, "indent= [%d] ", indent); fprintf(stdout, "w:[%d]\n", map->width); @@ -72,13 +69,12 @@ word dump(const char huge *js, jsmntok_t huge *t, size_t count, word indent, cha { // fprintf(stdout, "[[[[%d|%d]]]]\n", &(t+1)->size, (t+1)->size); // fprintf(stdout, "\n%.*s[xx[%d|%d]xx]\n", (t+1)->end - (t+1)->start, js+(t+1)->start, &(t+1)->size, (t+1)->size); - map->data = halloc(sizeof(byte) * (t+1)->size, sizeof(byte)); - //map->data = malloc(sizeof(byte) * (t+1)->size); - map->tiles = /*_f*/malloc(sizeof(tiles_t)); + map->data = malloc(sizeof(byte) * (t+1)->size); + map->tiles = malloc(sizeof(tiles_t)); //map->tiles->data = malloc(sizeof(bitmap_t)); //fix this to be far~ -//++++ bp = bitmapLoadPcx("data/ed.pcx"); -//++++ map->tiles->data = &bp; + bp = bitmapLoadPcx("data/ed.pcx"); + map->tiles->data = &bp; //map->tiles->data->data = malloc((16/**2*/)*16); //map->tiles->data->width = (16/**2*/); //map->tiles->data->height= 16; @@ -86,17 +82,17 @@ word dump(const char huge *js, jsmntok_t huge *t, size_t count, word indent, cha map->tiles->tileWidth = 16; map->tiles->rows = 1; map->tiles->cols = 1; - _fstrcpy(js_sv, "data");//strdup(js+t->start);//, t->end - t->start); + strcpy(js_sv, "data");//strdup(js+t->start);//, t->end - t->start); } else if (jsoneq(js, t, "height") == 0 && indent<=1) { - _fstrcpy(js_sv, "height");//strdup(js+t->start);//, t->end - t->start); + strcpy(js_sv, "height");//strdup(js+t->start);//, t->end - t->start); }else if(jsoneq(js, t, "width") == 0 && indent<=1) { - _fstrcpy(js_sv, "width");//strdup(js+t->start);//, t->end - t->start); - }else _fstrcpy(js_sv, "\0"); + strcpy(js_sv, "width");//strdup(js+t->start);//, t->end - t->start); + }else strcpy(js_sv, "\0"); return 1; } else if (t->type == JSMN_OBJECT) { //fprintf(stdout, "\n"); @@ -128,14 +124,14 @@ int loadmap(char *mn, map_t *map) int r; static word incr=0; int eof_expected = 0; - char huge *js = NULL; + char *js = NULL; size_t jslen = 0; char buf[BUFSIZ]; - char huge *buff = &buf; +//---- char *buff = &buf; static char js_ss[16]; jsmn_parser p; - jsmntok_t huge *tok; + jsmntok_t *tok; size_t tokcount = 2; FILE *fh = fopen(mn, "r"); @@ -145,7 +141,7 @@ int loadmap(char *mn, map_t *map) /* Allocate some tokens as a start */ //0000fprintf(stderr, "tok malloc\n"); - tok = _fmalloc(sizeof(*tok) * tokcount); + tok = malloc(sizeof(*tok) * tokcount); if (tok == NULL) { fprintf(stderr, "malloc(): errno=%d\n", errno); return 3; @@ -169,13 +165,13 @@ int loadmap(char *mn, map_t *map) } //0000fprintf(stdout, "r= [%d] BUFSIZ=%d\n", r, BUFSIZ); //0000fprintf(stderr, "js alloc~\n"); - js = _frealloc(js, jslen + r + 1); + js = realloc(js, jslen + r + 1); if (js == NULL) { fprintf(stderr, "*js=%Fp\n", *js); fprintf(stderr, "realloc(): errno = %d\n", errno); return 3; } - _fstrncpy(js + jslen, &(*buff), r); + strncpy(js + jslen, buf, r); jslen = jslen + r; again: @@ -184,14 +180,13 @@ again: /* I think it crashes on the line below when it tries to parse the data of huge maps... wwww this is a jsmn problem wwww */ -//++++ r = jsmn_parse(&p, js, jslen, tok, tokcount); //0000fprintf(stdout, "r= [%d]\n", r); if (r < 0) { if (r == JSMN_ERROR_NOMEM) { tokcount = tokcount * 2; //0000fprintf(stderr, "tok realloc~ %zu\n", tokcount); - tok = _frealloc(tok, sizeof(*tok) * tokcount); + tok = realloc(tok, sizeof(*tok) * tokcount); if (tok == NULL) { fprintf(stderr, "realloc(): errno=%d\n", errno); return 3; @@ -213,15 +208,13 @@ again: #ifdef DEBUG_DUMPVARS fprintf(stdout, "running dump~\n"); #endif -//++++ dump(js, tok, p.toknext, incr, &js_ss, map, 0); eof_expected = 1; } } - _ffree(js); - _ffree(buff); - _ffree(tok); + free(js); + free(tok); fclose(fh); return 0; diff --git a/src/lib/mapread.h b/src/lib/mapread.h index e607cf9b..c15e535c 100644 --- a/src/lib/mapread.h +++ b/src/lib/mapread.h @@ -24,14 +24,14 @@ typedef struct { } tiles_t; typedef struct { - byte huge *data; + byte *data; tiles_t *tiles; int width; //this has to be signed! int height; //this has to be signed! } map_t; -int jsoneq(const char huge *json, jsmntok_t huge *tok, const char huge *s); -word dump(const char huge *js, jsmntok_t huge *t, size_t count, word indent, char *js_sv, map_t *map, unsigned long q); +int jsoneq(const char *json, jsmntok_t *tok, const char *s); +word dump(const char *js, jsmntok_t *t, size_t count, word indent, char *js_sv, map_t *map, dword q); int loadmap(char *mn, map_t *map); #endif/*_LIBMAPREAD_H_*/ diff --git a/src/scroll.c b/src/scroll.c index ceee8644..06b77bdf 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -72,7 +72,7 @@ void main() { map_view_t mv, mv2, mv3; map_view_t *bg, *spri, *mask;//, *tmp; byte *dpal, *gpal; - byte huge *ptr; + byte *ptr; byte *mappalptr; actor_t player; //actor_t npc0; diff --git a/test.exe b/test.exe index 18da51ec..c0d8f3b6 100644 Binary files a/test.exe and b/test.exe differ diff --git a/test2.exe b/test2.exe index 19d9b64d..0a106997 100644 Binary files a/test2.exe and b/test2.exe differ