]> 4ch.mooo.com Git - 16.git/commitdiff
Map reading cleaned up; scroll16.c temporary excluded from gr.libs in makefile
authoryakui-lover <yakui-lover@yandex.ru>
Tue, 6 Sep 2016 12:44:18 +0000 (13:44 +0100)
committeryakui-lover <yakui-lover@yandex.ru>
Tue, 6 Sep 2016 12:44:18 +0000 (13:44 +0100)
makefile
src/lib/16_map.c
src/lib/16_map.h
src/maptest.c

index d9a1228dd1a2c9c9e0eb75d6c69462b29b0b4dde..7e782770b570109347d69d07c84feb6b5274cd67 100755 (executable)
--- a/makefile
+++ b/makefile
@@ -107,7 +107,7 @@ LIBFLAGS=$(WLIBQ) -b -n
 #
 VGMSNDOBJ = vgmSnd.$(OBJ) 16_snd.$(OBJ)
 16LIBOBJS = 16_in.$(OBJ) 16_mm.$(OBJ) wcpu.$(OBJ) 16_head.$(OBJ) 16_ca.$(OBJ) 16_dbg.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) 16_timer.$(OBJ)
-GFXLIBOBJS = modex16.$(OBJ) bitmap.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16render.$(OBJ) 16_vrs.$(OBJ) 16_sprit.$(OBJ)
+GFXLIBOBJS = modex16.$(OBJ) bitmap.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16render.$(OBJ) 16_vrs.$(OBJ) 16_sprit.$(OBJ) #scroll16.$(OBJ)
 #16planar.$(OBJ) planar.$(OBJ)
 DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ)
 !ifeq DEBUGSERIAL 1
@@ -209,7 +209,7 @@ palettec.exe:     palettec.$(OBJ) gfx.lib $(DOSLIBLIBS)
 palettel.exe:     palettel.$(OBJ) gfx.lib $(DOSLIBLIBS)
 pcxtest2.exe:     pcxtest2.$(OBJ) gfx.lib $(DOSLIBLIBS)
 #planrpcx.exe:    planrpcx.$(OBJ) gfx.lib
-maptest.exe:      maptest.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) gfx.lib $(DOSLIBLIBS)
+maptest.exe:      maptest.$(OBJ) 16_map.$(OBJ) 16_head.$(OBJ) jsmn.$(OBJ) gfx.lib $(DOSLIBLIBS)
 fmemtest.exe:     fmemtest.$(OBJ)
 exmmtest.exe:     exmmtest.$(OBJ) $(16LIB) $(DOSLIBLIBS)
 vgmtest.exe:      vgmtest.$(OBJ) vgmsnd.lib $(16LIB) $(DOSLIBLIBS)
@@ -284,6 +284,7 @@ planar.$(OBJ):    $(SRCLIB)/planar.c $(SRCLIB)/planar.h
 scroll16.$(OBJ):  $(SRCLIB)/scroll16.c $(SRCLIB)/scroll16.h
 16text.$(OBJ):    $(SRCLIB)/16text.c
 mapread.$(OBJ):   $(SRCLIB)/mapread.c $(SRCLIB)/mapread.h
+16_map.$(OBJ):   $(SRCLIB)/16_map.c $(SRCLIB)/16_map.h
 16_timer.$(OBJ):  $(SRCLIB)/16_timer.c $(SRCLIB)/16_timer.h
 16_in.$(OBJ):     $(SRCLIB)/16_in.c $(SRCLIB)/16_in.h
 16_mm.$(OBJ):     $(SRCLIB)/16_mm.c $(SRCLIB)/16_mm.h
index 45c85760a6a95868cda4a652e72302dfb49a56b2..8e2d65b2de75763aabe807e57fd894b08e699be2 100755 (executable)
@@ -35,69 +35,74 @@ int jsoneq(const char *json, jsmntok_t *tok, const char *s) {
 void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) {
        int i, j, k, indent, inner_end;
        bitmap_t bp;
-       #ifdef DEBUG_DUMPVARS
-       fprintf(stderr, "t->size=[%d]   ", t->size);
-       fprintf(stderr, "q=[%d] ", q);
-       fprintf(stderr, "indent= [%d]   ", indent);
-       fprintf(stderr, "js_sv= [%s]\n", js_sv);
-       #endif
-       map->tiles = malloc(sizeof(tiles_t));
-       map->tiles->btdata = malloc(sizeof(bitmap_t));
-       //fix this to be far~
-       //And a pointer
-       bp = bitmapLoadPcx("data/ed.pcx");
-       map->tiles->btdata = &bp;
-       map->tiles->tileHeight = 16;
-       map->tiles->tileWidth = 16;
-       map->tiles->rows = 1;
-       map->tiles->cols = 1;
-       map->tiles->debug_text=false;
-       
+       char *s;
+       i = 0;
        while(i<count) {
-               if(jsoneq(js, t, "layers" == 0)) {
+               if(jsoneq(js, &(t[i]), "layers") == 0) {
                        i++;
-                       map->data = malloc(sizeof(*byte) * t[i].size);
+                       map->data = malloc(sizeof(byte*) * t[i].size);
                        inner_end = t[i].end;
                        k = 0;
                        while(t[i].start < inner_end) {
-                               if(jsoneq(js, t, "data") == 0) {
+                               printf("%d, %d\n", t[i].start, inner_end);
+                               if(jsoneq(js, &(t[i]), "data") == 0) {
+                                       #ifdef DEBUG_MAPVAR
+                                       printf("Layer %d data: [", k);
+                                       #endif
                                        map->data[k] = malloc(sizeof(byte) * t[i+1].size);
                                        for(j = 0; j < t[i+1].size; j++) {
-                                               map->data[k][j] = (byte)atoi(js + t[i+1+j].start);
+                                               map->data[k][j] = (byte)atoi(js + t[i+2+j].start);
+                                               #ifdef DEBUG_MAPVAR
+                                               printf("%d, ", map->data[k][j]);
+                                               #endif
                                        }
-                                       i += j + 1;
+                                       i += j + 2;
                                        k++;
+                                       #ifdef DEBUG_MAPVAR
+                                       puts("]");
+                                       #endif
+                               }
+                               else{
+                                       i++;
                                }
                        }
-               }/*
-               if(jsoneq(js, t, "tilesets" == 0)) {
+               }
+               if(jsoneq(js, &(t[i]), "tilesets") == 0) {
                        i++;
-                       map->tiles = malloc(sizeof(*tiles_t) * t[i].size);
+                       map->tiles = malloc(sizeof(tiles_t*) * t[i].size);
                        inner_end = t[i].end;
                        k = 0;
                        while(t[i].start < inner_end) {
-                               if(jsoneq(js, t, "data") == 0) {
+                               if(jsoneq(js, &(t[i]), "image") == 0) {
+                                       //fix this to be far~
                                        map->tiles[k] = malloc(sizeof(tiles_t));
+                                       map->tiles[k]->btdata = malloc(sizeof(bitmap_t));
+                                       map->tiles[k]->tileHeight = 16;
+                                       map->tiles[k]->tileWidth = 16;
+                                       map->tiles[k]->rows = 1;
+                                       map->tiles[k]->cols = 1;
+                                       map->tiles[k]->debug_text=false;
+                                       //Fix to load tileset specified.
+                                       //And move to vrs, probably
                                        bp = bitmapLoadPcx("data/ed.pcx");
-                                       map->tiles[k].btdata = &bp;
+                                       map->tiles[k]->btdata = &bp;
                                        k++;
                                }
+                               i++;
                        }
-               }*/
+               }
 
-               if (jsoneq(js, t, "height") == 0 && indent<=1) {
+               if (jsoneq(js, &(t[i]), "height") == 0 && indent<=1) {
                        map->height = atoi(js + t[i+1].start);
                        #ifdef DEBUG_MAPVAR
-                       fprintf(stderr, "indent= [%d]   ", indent);
-                       fprintf(stderr, "h:[%d]\n", map->height);
+                       printf("Height: %d\n", map->height);
                        #endif
                        i++;
                }
-               else if(jsoneq(js, t, "width") == 0 && indent<=1) {
-                       map->width = atoi(js+t[i+1]->start);
+               else if(jsoneq(js, &(t[i]), "width") == 0 && indent<=1) {
+                       map->width = atoi(js + t[i+1].start);
                        #ifdef DEBUG_MAPVAR
-                       fprintf(stderr, "indent= [%d]   ", indent);
-                       fprintf(stderr, "w:[%d]\n", map->width);
+                       printf("Width: %d\n", map->width);
                        #endif
                        i++;
                }
@@ -107,13 +112,13 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) {
 
 int loadmap(char *mn, map_t *map) {
        char *js;
-       char js_ss[16];
 
        jsmn_parser p;
        jsmntok_t *tok = NULL;
        size_t tokcount, file_s;
 
        FILE *fh = fopen(mn, "r");
+       int status;
 
        /* Prepare parser */
        jsmn_init(&p);
@@ -131,13 +136,17 @@ int loadmap(char *mn, map_t *map) {
                fclose(fh);
                return 1;
        }
-
        tokcount = jsmn_parse(&p, js, file_s, NULL, 0);
        tok = malloc(tokcount*sizeof(jsmntok_t));
-       jsmn_parse(&p, js, file_s, tok, tokcount);
-       fprintf(stderr, "running dump~\n");
-       printf("%d\n", p.toknext);
-       extract_map(js, tok, tokcount, 0);
+       printf("Allocated %d tokens", tokcount);
+       jsmn_init(&p);
+       if((status = jsmn_parse(&p, js, file_s, tok, tokcount)) < 0)
+       {
+               printf("Error: %d\n", status);
+               return status;
+       }
+       else if(status != tokcount) { printf("Warning: used %d tok\n", status);}
+       extract_map(js, tok, tokcount, map);
 
        free(js);
        free(tok);
index 3665a650be4ec6e2931059c5da17e0c7c0ae62ba..4a9ce9bbc903ae95bb26a1c4db8798a0f5ec5c92 100755 (executable)
@@ -41,7 +41,7 @@ typedef struct {
 } tiles_t;\r
 \r
 typedef struct {\r
-       byte    **data;\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
index cba6d07f3280398ed36764099576d5e13962cf35..b77b5e55ff581c2f6bc53db4648ee33ff9a48271 100755 (executable)
  *\r
  */\r
 //TODO: ADD MEMORY MANAGER! WWWW\r
-#include "src/lib/mapread.h"\r
+#include "src/lib/16_map.h"\r
 \r
 #define DUMP\r
-//#define DUMP_MAP\r
+#define DUMP_MAP\r
 \r
 void\r
 main(int argc, char *argv[])\r
@@ -44,9 +44,10 @@ main(int argc, char *argv[])
        fprintf(stdout, "map.width=     %d\n", map.width);\r
        fprintf(stdout, "map.height=    %d\n", map.height);\r
        #ifdef DUMP_MAP\r
+       if(map.width*map.height != 1200) exit(-3);\r
        for(i=0; i<(map.width*map.height); i++)\r
        {\r
-               fprintf(stdout, "%04d[%02d]", i, map.data[i]);\r
+               fprintf(stdout, "%04d[%02d]", i, map.data[0][i]);\r
                if(i && !(i%map.width)) fprintf(stdout, "\n");\r
        }\r
        fprintf(stdout, "\n");\r