]> 4ch.mooo.com Git - 16.git/commitdiff
major far fork made~ scroll.exe partially working... wwww
authorsparky4 <sparky4@cock.li>
Thu, 11 Jun 2015 17:31:11 +0000 (12:31 -0500)
committersparky4 <sparky4@cock.li>
Thu, 11 Jun 2015 17:31:11 +0000 (12:31 -0500)
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

20 files changed:
Project 16.bfproject
data/g.pal
emmtest.exe
emsdump.exe
fmemtest.exe
makefile
maptest.exe
maptest0.exe
pcxtest.exe
scroll.exe
src/lib/bitmap.c
src/lib/fmapread.c [new file with mode: 0644]
src/lib/fmapread.h [new file with mode: 0644]
src/lib/jsmn/farjsmn.c [moved from src/lib/jsmn/jsmnfar.c with 99% similarity]
src/lib/jsmn/farjsmn.h [moved from src/lib/jsmn/jsmnfar.h with 96% similarity]
src/lib/mapread.c
src/lib/mapread.h
src/scroll.c
test.exe
test2.exe

index 4e486aca813e8009f8463c34a0d4bdebbffd0f06..f2a56894fe682072feffb7c0fc8c8412f877294c 100644 (file)
@@ -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
index 4804f78369817afbfeaf6320e4d8b867120b722f..a234f82cf8f66fa49d1057244aa661141c14cf8d 100644 (file)
Binary files a/data/g.pal and b/data/g.pal differ
index 508418b4b2e7d3ce94796c4b4954b519fd320197..1afe9df7ab0f53fa981d5d4e8988f04372d9ba45 100644 (file)
Binary files a/emmtest.exe and b/emmtest.exe differ
index 4bd4a3d57f5fffa49626baac64f89ee5c03f8773..a35510593f5b7c7279961fc7f57e2b9f07345468 100644 (file)
Binary files a/emsdump.exe and b/emsdump.exe differ
index b50e3f3d706dc23a200e80d34cc19e5400c1f032..3ab91cb024c769a7d435d2b0df2f326274c674b6 100644 (file)
Binary files a/fmemtest.exe and b/fmemtest.exe differ
index 556b3f869048f9740d2d830239895c7d74b01837..c1219398d00d131675e9b10d48f4606dd9edf438 100644 (file)
--- a/makefile
+++ b/makefile
@@ -1,7 +1,8 @@
 #-zk0u = translate kanji to unicode... wwww\r
 #-zk0 = kanji support~\r
 #-zkl = current codepage\r
-\r
+
+MFLAGS=-mh\r
 CFLAGS=-zkl -wo -x## -mc# -zdp# -zp16 -zq\r
 OFLAGS=-ot -ox -ob -oh -or# -om -ol -ol+\r
 FLAGS=-0 -d2 $(OFLAGS) $(CFLAGS)\r
@@ -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\r
        wcl $(FLAGS) maptest.obj mapread.obj jsmn.obj modex16.obj bitmap.obj lib_head.obj\r
 
-maptest0.exe: maptest0.obj mapread.obj jsmn.obj modex16.obj bitmap.obj lib_head.obj\r
-       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\r
+       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\r
-       wcl $(FLAGS) -c $(SRC)maptest0.c
+maptest0.obj: $(SRC)maptest0.c# $(SRCLIB)modex16.h\r
+       wcl $(FLAGS) $(MFLAGS) -c $(SRC)maptest0.c
 
 emmtest.obj: $(SRC)emmtest.c\r
-       wcl $(FLAGS) -c $(SRC)emmtest.c\r
+       wcl $(FLAGS) $(MFLAGS) -c $(SRC)emmtest.c\r
 
 emsdump.obj: $(SRC)emsdump.c\r
-       wcl $(FLAGS) -c $(SRC)emsdump.c
+       wcl $(FLAGS) $(MFLAGS) -c $(SRC)emsdump.c
 
 fmemtest.obj: $(SRC)fmemtest.c\r
-       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\r
 \r
 mapread.obj: $(SRCLIB)mapread.h $(SRCLIB)mapread.c\r
-       wcl $(FLAGS) -c $(SRCLIB)mapread.c\r
+       wcl $(FLAGS) -c $(SRCLIB)mapread.c
+
+fmapread.obj: $(SRCLIB)fmapread.h $(SRCLIB)fmapread.c\r
+       wcl $(FLAGS) $(MFLAGS) -c $(SRCLIB)fmapread.c\r
 \r
 lib_head.obj: $(SRCLIB)lib_head.h $(SRCLIB)lib_head.c\r
        wcl $(FLAGS) -c $(SRCLIB)lib_head.c\r
@@ -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\r
-       wcl $(FLAGS) -c $(JSMNLIB)farjsmn.c\r
+       wcl $(FLAGS) $(MFLAGS) -c $(JSMNLIB)farjsmn.c\r
 
 memory.obj: $(EXMMLIB)memory.h $(EXMMLIB)memory.c\r
-       wcl $(FLAGS) -c $(EXMMLIB)memory.c
+       wcl $(FLAGS) $(MFLAGS) -c $(EXMMLIB)memory.c
 
 #
 #other~
index 27a07474d1c31719ce99607ba97cb34da527e9e7..5728c64220e9779779789b7931c2613fc9eb05e5 100644 (file)
Binary files a/maptest.exe and b/maptest.exe differ
index 4b0b2f57f5ab865c26df959643ed5a7e9f7e4db7..4be39cc844b73d7de2b0eceac9e624d9f6885763 100644 (file)
Binary files a/maptest0.exe and b/maptest0.exe differ
index 29b668ff08b66073c2fad2e1c1e3c498581c2303..914bbd46d2796617188f51a3c8675b69ed4bc603 100644 (file)
Binary files a/pcxtest.exe and b/pcxtest.exe differ
index 350072781918ec30bbb173790ace5889b10e0c8a..fbaf3acd7627aafe82f5dca18266227de04219bf 100644 (file)
Binary files a/scroll.exe and b/scroll.exe differ
index 864878d8b3776016d3d6d62ee9713534d16f85b7..c34e13d04bb83383d0e814e5c5e19f5f241db68c 100644 (file)
@@ -75,7 +75,7 @@ bitmapLoadPcx(char *filename) {
     FILE *file;\r
     bitmap_t result;\r
     dword bufSize;\r
-    dword index;\r
+    int index;\r
     byte count, val;
 \r
     /* open the PCX file for reading */\r
diff --git a/src/lib/fmapread.c b/src/lib/fmapread.c
new file mode 100644 (file)
index 0000000..2b7eb0b
--- /dev/null
@@ -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*/);\r
+                       //map->tiles->data->height= 16;\r
+                       map->tiles->tileHeight = 16;\r
+                       map->tiles->tileWidth = 16;\r
+                       map->tiles->rows = 1;\r
+                       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 (file)
index 0000000..a373780
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _LIBFMAPREAD_H_
+#define _LIBFMAPREAD_H_
+#include <stdlib.h>    //huge wwww
+#include <stdio.h>             //huge wwww
+#include <string.h>
+#include <errno.h>
+#include <alloc.h>
+
+#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 {\r
+//++++ bitmap_t *data;
+       word tileHeight;\r
+       word tileWidth;\r
+       unsigned int rows;\r
+       unsigned int cols;\r
+} tiles_t;\r
+\r
+typedef struct {\r
+       byte huge *data;\r
+       tiles_t *tiles;\r
+       int width;      //this has to be signed!\r
+       int height;     //this has to be signed!\r
+} 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_*/
similarity index 99%
rename from src/lib/jsmn/jsmnfar.c
rename to src/lib/jsmn/farjsmn.c
index d79f9a5ddb447d96d494d363ca62d7ae7f0b8e3c..fda4db11cdaf89c3c3f2dcf0ab955a031ac75f07 100644 (file)
@@ -1,7 +1,7 @@
 #include <stdlib.h>
 #include <stdio.h>     //fprintf for noisy debugging wwww
 
-#include "jsmn.h"
+#include "farjsmn.h"
 
 /**
  * Allocates a fresh unused token from the token pull.
similarity index 96%
rename from src/lib/jsmn/jsmnfar.h
rename to src/lib/jsmn/farjsmn.h
index fe27ed0d31e6933ea95f3ed2333654a5f43b9dc7..dd7dcaf02a5ed257c7bd20e0385facb783654e40 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef __JSMN_H_
-#define __JSMN_H_
+#ifndef __FARJSMN_H_
+#define __FARJSMN_H_
 
 #include <stddef.h>
 
@@ -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_ */
index cd8dea776ca14e399ac2d6ceda0a6e04e2c31a1f..e3f40b441bbee036658cc132a5a95a89d4a28a17 100644 (file)
@@ -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*/);\r
                        //map->tiles->data->height= 16;\r
@@ -86,17 +82,17 @@ word dump(const char huge *js, jsmntok_t huge *t, size_t count, word indent, cha
                        map->tiles->tileWidth = 16;\r
                        map->tiles->rows = 1;\r
                        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;
index e607cf9b879388233b5c1e9303f086930f499ac3..c15e535c0af0aa71add11c764a756af668857051 100644 (file)
@@ -24,14 +24,14 @@ typedef struct {
 } tiles_t;\r
 \r
 typedef struct {\r
-       byte huge *data;\r
+       byte    *data;\r
        tiles_t *tiles;\r
        int width;      //this has to be signed!\r
        int height;     //this has to be signed!\r
 } 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_*/
index ceee8644a7fcd03b181050fdf85ce34586820f17..06b77bdf7f52115ac90ed9cfccb8e1bded99bdae 100644 (file)
@@ -72,7 +72,7 @@ void main() {
        map_view_t mv, mv2, mv3;\r
        map_view_t *bg, *spri, *mask;//, *tmp;\r
        byte *dpal, *gpal;\r
-       byte huge *ptr;
+       byte *ptr;
        byte *mappalptr;\r
        actor_t player;\r
        //actor_t npc0;\r
index 18da51ec816c7657e9daeecb027bf24a49ba7ac8..c0d8f3b6806cf5688009df0503ada4de7e0a2f5d 100644 (file)
Binary files a/test.exe and b/test.exe differ
index 19d9b64ddcc747cfe98581be68bae8a422dfbd2f..0a106997bc7d91cc53f2f62b8c548411fb4c3218 100644 (file)
Binary files a/test2.exe and b/test2.exe differ