From: sparky4 Date: Wed, 25 Mar 2015 05:18:36 +0000 (-0500) Subject: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1wwww... X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=7cce89d92d1cad302190a9de1f3f1d0780655c29;p=16.git !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1wwww I can read map data and render the map (sort of) modified: maptest.exe modified: scroll.exe modified: src/lib/bitmap.h modified: src/lib/mapread.c modified: src/lib/mapread.h modified: src/scroll.c --- diff --git a/maptest.exe b/maptest.exe index 7b54d139..fc112955 100644 Binary files a/maptest.exe and b/maptest.exe differ diff --git a/scroll.exe b/scroll.exe index c77a390c..df07e17a 100644 Binary files a/scroll.exe and b/scroll.exe differ diff --git a/src/lib/bitmap.h b/src/lib/bitmap.h index c11a5d6f..2eefe41b 100644 --- a/src/lib/bitmap.h +++ b/src/lib/bitmap.h @@ -5,7 +5,7 @@ #define BITMAP_H #include "src\lib\types.h" typedef struct { - byte *data; + byte *data; word width; word height; byte *palette; diff --git a/src/lib/mapread.c b/src/lib/mapread.c index cd4f5c30..eee0fd00 100644 --- a/src/lib/mapread.c +++ b/src/lib/mapread.c @@ -16,7 +16,6 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * } /* We may want to do strtol() here to get numeric value */ if (t->type == JSMN_PRIMITIVE) { - //if(w) if(js_sv == "data") { /* @@ -26,11 +25,8 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * FUCK well i am stuck.... wwww */ - //bgdata[q] = strtol(js+t->start, (char **)js+t->end, 10); - //if(strtol(js+t->start, (char **)js+t->end, 10)==0){ /*printf("%d\n", sizeof(map->tiles->data->data));*/ fprintf(stderr, "\nFACK! %d\n", errno); exit(-1); } - //printf("%.*s", (t-1)->end - (t-1)->start, js+(t-1)->start); - map->tiles->data->data[q] = (byte)strtol(js+t->start, &(char *)t->end, 0); - printf("[%d]", map->tiles->data->data[q]); + map->data[q] = (byte)strtol(js+t->start, &(char *)t->end, 10); +// printf("%d[%d]", q, map->data[q]); } else if(js_sv == "height") @@ -40,37 +36,29 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * //printf("h:[%d]\n", map->height); }else if(js_sv == "width") { - //map->width = (int)malloc(sizeof(int)); 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(w) if(jsoneq(js, t, "data") == 0 ) { // printf("[[[[%d|%d]]]]\n", &(t+1)->size, (t+1)->size); - printf("\n%.*s[xx[%d|%d]xx]\n", (t+1)->end - (t+1)->start, js+(t+1)->start, &(t+1)->size, (t+1)->size); +// printf("\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 = malloc(sizeof(byte) * (t+1)->size); map->tiles = malloc(sizeof(tiles_t)); map->tiles->data = malloc(sizeof(bitmap_t)); - map->tiles->data->width = (16*2); - map->tiles->data->height= 16; - map->tiles->data->data = malloc((16*2)*16); + map->tiles->data->data = malloc((16/**2*/)*16); 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) { js_sv="height";//strdup(js+t->start);//, t->end - t->start); - //printf("%s\n", js_sv); }else if (jsoneq(js, t, "width") == 0 && indent==1) { js_sv="width";//strdup(js+t->start);//, t->end - t->start); - //printf("%s\n", js_sv); }else js_sv=NULL; return 1; } else if (t->type == JSMN_OBJECT) { @@ -88,7 +76,6 @@ static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char * j = 0; //printf("==\n"); for (i = 0; i < t->size; i++) { - //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/*, &t->size*/); @@ -145,13 +132,10 @@ static int loadmap(char *mn, map_t *map/*, word w*/) return 3; } strncpy(js + jslen, buf, r); -// printf("%s\n\n", js); jslen = jslen + r; again: - //printf("================================================================================%s================================================================================", js); r = jsmn_parse(&p, js, jslen, tok, tokcount); - //printf("================================================================================%s================================================================================", js); if (r < 0) { if (r == JSMN_ERROR_NOMEM) { tokcount = tokcount * 2; @@ -163,8 +147,6 @@ again: goto again; } } else { - //printf("================================================================================%s================================================================================", js); - //js_sv=malloc(sizeof(char)*10); dump(js, tok, p.toknext, 0, map, 0); eof_expected = 1; } diff --git a/src/lib/mapread.h b/src/lib/mapread.h index 7200172c..623bf545 100644 --- a/src/lib/mapread.h +++ b/src/lib/mapread.h @@ -8,7 +8,6 @@ #include "src/lib/modex16.h" static char *js_sv; -//static long int bgdata[4096]; typedef struct { bitmap_t *data; @@ -26,7 +25,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 *w*/); +static int dump(const char *js, jsmntok_t *t, size_t count, int indent, map_t *map, int q); static int loadmap(char *mn, map_t *map/*, word w*/); #endif/*_LIBMAPREAD_H_*/ diff --git a/src/scroll.c b/src/scroll.c index 506288db..315ea9f0 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -118,10 +118,9 @@ void main() { }*/ /* create the map */ - 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("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 //if(isEMS()) printf("%d tesuto\n", coretotalEMS()); - //++++ initMap(&map); mv.map = ↦ mv2.map = ↦ @@ -130,11 +129,10 @@ void main() { /* draw the tiles */ ptr = map.data; /* data */ -//++++ ptmp = bitmapLoadPcx("ptmp.pcx"); // load sprite + ptmp = bitmapLoadPcx("ptmp.pcx"); // load sprite //npctmp = bitmapLoadPcx("ptmp1.pcx"); // load sprite -printf("\nwwww\n"); /* create the planar buffer */ -//++++ p = planar_buf_from_bitmap(&ptmp); + p = planar_buf_from_bitmap(&ptmp); /*if(isEMS()) { @@ -553,7 +551,8 @@ printf("\nwwww\n"); printf("player.triggy: %d\n", player.triggery); printf("player.hp: %d\n", player.hp); printf("player.q: %d\n", player.q); - printf("player.d: %d\n", player.d); + printf("player.d: %d\n", player.d); + printf("%d\n", map.data[0]); 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"); @@ -604,9 +603,9 @@ allocMap(int w, int h) { void initMap(map_t *map) { /* just a place holder to fill out an alternating pattern */ - int x, y; - int i; - int tile = 1; + int x, y, xx, yy; + int i, q; +// int tile = 1; //if(!isEMS() || !checkEMS()) // map->tiles = malloc(sizeof(tiles_t)); //else @@ -617,8 +616,8 @@ initMap(map_t *map) { // map->tiles->data = malloc(sizeof(bitmap_t)); //else // map->tiles->data = (bitmap_t *)alloc_emem(sizeof(bitmap_t)); -// map->tiles->data->width = (TILEWH*2); -// map->tiles->data->height= TILEWH; + map->tiles->data->width = (TILEWH/**2*/); + map->tiles->data->height= TILEWH; //if(!isEMS() || !checkEMS()) // map->tiles->data->data = malloc((TILEWH*2)*TILEWH); //else @@ -626,28 +625,41 @@ initMap(map_t *map) { map->tiles->tileHeight = TILEWH; map->tiles->tileWidth =TILEWH; map->tiles->rows = 1; - map->tiles->cols = 2; + map->tiles->cols = 1;//2; - /*i=0; - for(y=0; ytiles->data->data[i] = 28;//0x24; - else - map->tiles->data->data[i] = 0;//0x34; + /*q=0; + //for(y=0; yheight; y++) { + //for(x=0; xwidth; x++) { + i=0; + for(yy=0; yytiles->data->data[i+1] = map->data[q];//28;//0x24; +// printf("[%d]", map->tiles->data->data[i]); + //}else{ + //map->tiles->data->data[i] = map->data[q];//0;//0x34; + //printf("]%d[==[%d]", i, map->tiles->data->data[i]); + //} i++; - } - }*/ + } +// printf("\n"); + } +// printf("[%d]", map->data[q]); + q++; +// } + //printf("\n\n"); +// }*/ - i=0; + /*i=0; for(y=0; yheight; y++) { - for(x=0; xwidth; x++) { - map->data[i] = tile; - tile = tile ? 0 : 1; + for(x=0; xwidth; x++) { +// map->data[i]=255; + printf("[%d]", map->data[i]); + //tile = tile ? 0 : 1; i++; } - tile = tile ? 0 : 1; - } + //tile = tile ? 0 : 1; + }*/ }