]> 4ch.mooo.com Git - 16.git/commitdiff
WWWWWWWWWWWWwwwwwwwwwwWWWWWWWwwwwWWwwWWwwWwwWww
authorsparky4 <sparky4@cock.li>
Wed, 8 Feb 2017 19:19:12 +0000 (13:19 -0600)
committersparky4 <sparky4@cock.li>
Wed, 8 Feb 2017 19:19:12 +0000 (13:19 -0600)
MAPTEST.L16 [new file with mode: 0755]
src/lib/16_map.c
src/lib/16_map.h
src/lib/16_tail.c
src/lib/16_tdef.h
src/lib/16_timer.c
src/lib/scroll16.c
src/lib/scroll16.h
src/maptest.c
src/scroll.c
src/zcroll.c

diff --git a/MAPTEST.L16 b/MAPTEST.L16
new file mode 100755 (executable)
index 0000000..1e4bf52
--- /dev/null
@@ -0,0 +1,34 @@
+map.width=     40\r
+map.height=    30\r
+-./0,////////0-----------------------./0\r
+1234,-,-,,--------------------------1234\r
+56780-,-,,--------------------------5678\r
+9:;<,---14-77-----------------------9:;<\r
+,,0,,,,,44-77/--------------------------\r
+----,,,,44------------------------------\r
+----,,,,--------------------------------\r
+----,,,,--------/-----------------------\r
+---------,------/-----------------------\r
+----------------/-----------------------\r
+----------------/-----------------------\r
+------------////-./0/////---------------\r
+-----------/----123422222///------------\r
+---------//-----567822222222///---------\r
+--------/-------9:;</2222222222//-------\r
+--------/-----------/222222222222//-----\r
+--------/------------/2222222222222/----\r
+--------/-------------//222222222222/---\r
+--------/---------------/////2222222/---\r
+--------/--------------------////////---\r
+--------/-------------------------------\r
+---------//----------------,,,,,,,------\r
+-----------//--------------,-----,------\r
+-------------///-----------,-,,,-,------\r
+----------------///--------,-,---,------\r
+---------------------------,-,,,,,------\r
+-./0-----------------------,---------./0\r
+1234-----------------------,,,,,,,,-1234\r
+5678--------------------------------5678\r
+9:;<--------------------------------9:;<\r
+\r
+okies~\r
index d5744b9a2b344438ef96dcc8ddc37c7ac7f23543..91199e55ae5987c36b59d1f09d17f6cc35bc6d50 100755 (executable)
@@ -148,7 +148,7 @@ word dump(const char *js, jsmntok_t *t, size_t count, word indent, char *js_sv,
        return 0;\r
 }\r
 \r
-int loadmap(char *mn, map_t *map)\r
+int loadmap(char *mn, map_t *map, global_game_variables_t *gvar)\r
 {\r
        int r;\r
        static word incr=0;\r
@@ -250,8 +250,8 @@ again:
 \r
 void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) {\r
        int i, j, k, indent=0, inner_end;\r
-       bitmap_t bp;\r
-       //char *s;\r
+       //bitmap_t bp;\r
+\r
        i = 0;\r
        while(i<count) {\r
                if(jsoneq(js, &(t[i]), "layers") == 0) {\r
@@ -260,25 +260,30 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) {
                        inner_end = t[i].end;\r
                        k = 0;\r
                        while(t[i].start < inner_end) {\r
-                               printf("%d, %d\n", t[i].start, inner_end);\r
+#ifdef DEBUG_DUMPVARS\r
+                               printf("t[%d].start=%d, %d\n", i, t[i].start, inner_end);\r
+#endif\r
                                if(jsoneq(js, &(t[i]), "data") == 0) {\r
-                                       #ifdef DEBUG_MAPVAR\r
-                                       printf("Layer %d data: [", k);\r
-                                       #endif\r
+#ifdef DEBUG_MAPDATA\r
+                                       printf("Layer %d data: [\n", k);\r
+#endif\r
                                        map->layerdata[k] = malloc(sizeof(byte) * t[i+1].size);\r
+                                       map->data = map->layerdata[k];\r
                                        for(j = 0; j < t[i+1].size; j++) {\r
                                                map->layerdata[k][j] = (byte)atoi(js + t[i+2+j].start);\r
-                                               #ifdef DEBUG_MAPVAR\r
-                                               printf("%d, ", map->layerdata[k][j]);\r
-                                               #endif\r
+                                               //for backwards compatibility for rest of code\r
+//                                             map->data[j] = map->layerdata[k][j];//(byte)atoi(js + t[i+2+j].start);//(byte)atoi(js+t->start);\r
+#ifdef DEBUG_MAPDATA\r
+                                               //printf("[%d,%d]%d", k, j, map->layerdata[k][j]);\r
+                                               fprintf(stdout, "%c", map->data[j]+44);\r
+#endif\r
                                        }\r
                                        i += j + 2;\r
                                        k++;\r
-                                       #ifdef DEBUG_MAPVAR\r
-                                       puts("]");\r
-                                       #endif\r
-                               }\r
-                               else{\r
+#ifdef DEBUG_MAPDATA\r
+                                       puts("\n]");\r
+#endif\r
+                               }else{\r
                                        i++;\r
                                }\r
                        }\r
@@ -290,8 +295,11 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) {
                        k = 0;\r
                        while(t[i].start < inner_end) {\r
                                if(jsoneq(js, &(t[i]), "image") == 0) {\r
-                                       //fix this to be far~\r
                                        map->layertile[k] = malloc(sizeof(tiles_t));\r
+                                       //Fix to load tileset specified.\r
+                                       //And move to vrs, probably\r
+//                                     bp = bitmapLoadPcx("data/ed.pcx");\r
+//                                     map->layertile[k]->btdata = &bp;\r
                                        map->layertile[k]->btdata = malloc(sizeof(bitmap_t));\r
                                        map->layertile[k]->tileHeight = 16;\r
                                        map->layertile[k]->tileWidth = 16;\r
@@ -300,10 +308,11 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) {
 #ifdef __DEBUG_MAP__\r
                                        dbg_maptext=false;\r
 #endif\r
-                                       //Fix to load tileset specified.\r
-                                       //And move to vrs, probably\r
-                                       //bp = bitmapLoadPcx("data/ed.pcx");\r
-                                       map->layertile[k]->btdata = &bp;\r
+                                       map->tiles->btdata = map->layertile[k]->btdata;\r
+                                       map->tiles->tileHeight = 16;\r
+                                       map->tiles->tileWidth = 16;\r
+                                       map->tiles->rows = 1;\r
+                                       map->tiles->cols = 1;\r
                                        k++;\r
                                }\r
                                i++;\r
@@ -312,16 +321,16 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) {
 \r
                if (jsoneq(js, &(t[i]), "height") == 0 && indent<=1) {\r
                        map->height = atoi(js + t[i+1].start);\r
-                       #ifdef DEBUG_MAPVAR\r
+#ifdef DEBUG_MAPVAR\r
                        printf("Height: %d\n", map->height);\r
-                       #endif\r
+#endif\r
                        i++;\r
                }\r
                else if(jsoneq(js, &(t[i]), "width") == 0 && indent<=1) {\r
                        map->width = atoi(js + t[i+1].start);\r
-                       #ifdef DEBUG_MAPVAR\r
+#ifdef DEBUG_MAPVAR\r
                        printf("Width: %d\n", map->width);\r
-                       #endif\r
+#endif\r
                        i++;\r
                }\r
                i++;\r
@@ -372,3 +381,54 @@ int newloadmap(char *mn, map_t *map) {
 \r
        return 0;\r
 }\r
+\r
+\r
+//======\r
+\r
+\r
+#define MAPBUFINLM (gvar->ca.camap.mapsegs)\r
+int CA_loadmap(char *mn, map_t *map, global_game_variables_t *gvar)\r
+{\r
+       jsmn_parser p;\r
+       jsmntok_t *tok = NULL;\r
+       size_t tokcount, file_s;\r
+\r
+       FILE *fh = fopen(mn, "r");\r
+       int status;\r
+\r
+       /* Prepare parser */\r
+       jsmn_init(&p);\r
+\r
+       file_s = filesize(fh);\r
+       /*js = malloc(file_s);\r
+       if(js == NULL) {\r
+               fprintf(stderr, "malloc(): errno = %d", 2);\r
+               fclose(fh);\r
+               return 3;\r
+       }\r
+       if(fread(js, 1, file_s, fh) != file_s) {\r
+               fprintf(stderr, "Map read error");\r
+               free(js);\r
+               fclose(fh);\r
+               return 1;\r
+       }*/\r
+       CA_LoadFile(mn, &MAPBUFINLM, gvar);\r
+       tokcount = jsmn_parse(&p, MAPBUFINLM, file_s, NULL, 0);\r
+       tok = malloc(tokcount*sizeof(jsmntok_t));\r
+//     printf("Allocated %d tokens", tokcount);\r
+       jsmn_init(&p);\r
+       if((status = jsmn_parse(&p, MAPBUFINLM, file_s, tok, tokcount)) < 0)\r
+       {\r
+               printf("Error: %d\n", status);\r
+               return status;\r
+       }\r
+       else if(status != tokcount) { printf("Warning: used %d tok\n", status);}\r
+       extract_map(MAPBUFINLM, tok, tokcount, map);\r
+       //CA_mapdump(MAPBUFINLM, tok, p.toknext, map, 0, gvar);\r
+\r
+       //free(js);\r
+       free(tok);\r
+       fclose(fh);\r
+\r
+       return 0;\r
+}\r
index 84cfd923e021aa4a4b22b64a04825e1a36b48bb2..26901678ae24b5a8f604b3b1a0605678a433451c 100755 (executable)
@@ -41,8 +41,9 @@
 //typedefs moved to 16_tdef.h\r
 \r
 int jsoneq(const char *json, jsmntok_t *tok, const char *s);\r
-word dump(const char *js, jsmntok_t *t, size_t count, word indent, char *js_sv, map_t *map, dword q);\r
-int loadmap(char *mn, map_t *map);\r
+//word dump(const char *js, jsmntok_t *t, size_t count, word indent, char *js_sv, map_t *map, dword q);\r
+int loadmap(char *mn, map_t *map, global_game_variables_t *gvar);\r
 int newloadmap(char *mn, map_t *map);\r
+int CA_loadmap(char *mn, map_t *map, global_game_variables_t *gvar);\r
 \r
 #endif/*_16_LIB__H_*/\r
index 463055a1f78d0c2ce9a49c81a1f7fcfdfddeed00..1a8a2972024115c7b7b6f95d1cde8391784f0c53 100755 (executable)
@@ -374,6 +374,7 @@ void Quit (global_game_variables_t *gvar, char *error)
 //===========================================================================\r
 #ifndef __WATCOMC__\r
 char global_temp_status_text[512];\r
+char global_temp_status_text2[512];\r
 #else\r
 //\r
 // for mary4 (XT)\r
index ec6caf5b6e37250d7135d947f42250cf20173f59..3f839204884f9374b7d8100f0c0131d89cb1ac68 100755 (executable)
@@ -494,9 +494,10 @@ typedef struct
 typedef struct\r
 {\r
        int             mapon, mapnum;\r
-       __SEGA  *mapsegs[4];\r
-       __SEGA  *mapheaderseg[NUMMAPS];\r
-       __SEGA  *tinf;\r
+       //__SEGA        *mapsegs[4];\r
+       //__SEGA        *mapheaderseg[NUMMAPS];\r
+       //__SEGA        *tinf;\r
+       memptr  mapsegs;\r
 } ca_mapinfo_t;\r
 \r
 typedef struct\r
@@ -540,6 +541,7 @@ typedef struct
 \r
 #ifdef __WATCOMC__\r
 extern char global_temp_status_text[512];\r
+extern char global_temp_status_text2[512];\r
 #define EINVFMT EMFILE\r
 #endif\r
 #endif /* _TYPEDEFSTRUCT_H_ */\r
index 6a0c7a47d00a91d90e17acc9d33c27d62e78f98f..16295d1bca454f12c01bf5d709276761f18e2633 100755 (executable)
@@ -67,6 +67,7 @@ double time_in_seconds(global_game_variables_t *gv)
 \r
 // big global status text buffer\r
 char global_temp_status_text[512];\r
+char global_temp_status_text2[512];\r
 \r
 /*double time_in_seconds(time_t in_t)\r
 {\r
index 53be25431f654d92eee51246c615db62b2eec997..a9d4e98f687cb11817538acb18359c5cde306a55 100755 (executable)
@@ -504,9 +504,6 @@ sword chkmap(map_t *map, word q)
                //fix this to be far~\r
 //             bp = bitmapLoadPcx("data/ed.pcx");\r
 //             map->tiles->data = &bp;\r
-#ifdef __DEBUG_MAP__\r
-               dbg_mapdata = map->data;\r
-#endif\r
                map->tiles->tileHeight = 16;\r
                map->tiles->tileWidth = 16;\r
                map->tiles->rows = 1;\r
@@ -516,7 +513,10 @@ sword chkmap(map_t *map, word q)
 #endif\r
        }\r
 #ifdef __DEBUG_MAP__\r
-       else dbg_maptext = false;\r
+       else\r
+       {\r
+               dbg_maptext = false;\r
+       }\r
 #endif\r
        return 0;\r
 }\r
@@ -583,10 +583,11 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y)
                        case 0:\r
 #endif\r
 #ifndef TILERENDER\r
-                               if(!pagenorendermap) modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, ((dbg_mapdata[i])+1));\r
-                               //modexprint(page, x, y, 1, 15, 0, (char const *)(t->debug_data[i]));\r
+                               if(!pagenorendermap) modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, i);\r
+                               sprintf(global_temp_status_text2, "%d", i);\r
+                               modexprint(page, x, y, 1, 1, 2, global_temp_status_text2);\r
 #else\r
-                               modexDrawBmpRegion              (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));\r
+                               modexDrawBmpRegion              (page, x, y, rx, ry, t->tileWidth, t->tileHeight, i);\r
                                /* then the sprite. note modding ram ptr means we just draw to (x&3,0) */\r
                                //draw_vrl1_vgax_modex(x-rx,y-ry,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));\r
                                //modexDrawBmpRegion    (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));\r
@@ -594,7 +595,7 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y)
 #ifdef __DEBUG_MAP__\r
                        break;\r
                        case 1:\r
-                               modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, (dbg_mapdata[i])+1);\r
+                               modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, i);\r
                                //modexprintbig(page, x, y, 1, 15, 0, (t->debug_data));\r
                                /*for(texty=0; texty<2; texty++)\r
                                {\r
index 1176328b6daeeaaefd1ba84570e0b7fc34ebe94f..efe02d9b7e32c9d315668dfd0b4641fa2f78e47d 100755 (executable)
@@ -72,7 +72,7 @@
 //not used now printf("temporary player sprite 1: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=44606385\n");\r
 //printf("mv[%u].tx: %d", gvar.video.panp, mv[gvar.video.panp].tx); printf("   mv[%u].ty: %d   ", gvar.video.panp, mv[gvar.video.panp].ty);\r
 //printf("gvar.kurokku:        "); printf("%.0f ", clock());   printf("tiku=%lu ", gvar.kurokku.tiku); printf("t=%.0f ", gvar.kurokku.t);      printf("ticktock()=%f ", ticktock(&gvar));      printf("%.0f fps", (double)gvar.kurokku.tiku/ticktock(&gvar));\r
-//printf("map.width=%d map.height=%d   map.data[0]=%d\n", mv[1].map->width, mv[1].map->height, mv[1].map->data[0]);\r
+//printf("map.width=%d map.height=%d   map.data[0]=%d\n", mv[1].map->width, mv[1].map->height, mv[1].map->layerdata[0][0]);\r
 //printf("pageflipflop=%u", pageflipflop);\r
 //printf("&global_temp_status_text = %Fp\n", &global_temp_status_text);\r
 //printf("middle tile position: %dx", gvar.video.page[0].tilemidposscreenx);   printf("%d\n", gvar.video.page[0].tilemidposscreeny);\r
@@ -81,7 +81,7 @@
 #define SCROLLEXITMESG         printf("page[0]dxy: %dx%d", gvar.video.page[0].dx, gvar.video.page[0].dy);\\r
        printf("\n\n");\\r
        printf("player vars:\n");\\r
-       printf("        xy: %dx%d", player[0].enti.x, player[0].enti.y); printf("       txy: %dx%d", player[0].enti.tx, player[0].enti.ty); printf("    triggxy: %dx%d", player[0].enti.triggerx, player[0].enti.triggery); printf("    value: %d\n", mv[1].map->data[(player[0].enti.triggerx-1)+(map.width*(player[0].enti.triggery-1))]);\\r
+       printf("        xy: %dx%d", player[0].enti.x, player[0].enti.y); printf("       txy: %dx%d", player[0].enti.tx, player[0].enti.ty); printf("    triggxy: %dx%d", player[0].enti.triggerx, player[0].enti.triggery); printf("    value: %d\n", mv[1].map->layerdata[0][(player[0].enti.triggerx-1)+(map.width*(player[0].enti.triggery-1))]);\\r
        printf("        hp: %d", (player[0].enti.hp));  printf("        q: %u", player[0].enti.q);      printf("        info.dir: %u", player[0].info.dir);     printf("        d: %u", player[0].enti.d);      printf("        dire: %u", player[0].enti.dire);\\r
                printf("        pdir: %u\n", player[0].pdir); printf("  delay=%u", player[0].enti.spri->delay);\\r
 printf("\n\n");\\r
@@ -95,6 +95,7 @@ printf("\n\n");
 extern boolean pagenorendermap, pagedelayrendermap;\r
 \r
 extern char global_temp_status_text[512];\r
+extern char global_temp_status_text2[512];\r
 \r
 //map_t allocMap(int w, int h);\r
 void initMap(map_t *map);\r
index 4a413ca83f59c6b1f21300b11f2d41f6be81ee69..c73ea3dd403f3f32c22c940f4ab902dea676637d 100755 (executable)
@@ -29,9 +29,10 @@ main(int argc, char *argv[])
 {\r
        static global_game_variables_t gvar;\r
        map_t map;\r
-       static memptr   mapbuf;\r
+#ifdef DUMP\r
 #ifdef DUMP_MAP\r
        short i;\r
+#endif\r
 #endif\r
        char *fmt = "Memory available = %u\n";\r
        char *fmt0 = "Largest Contiguous Block of Memory available = %u\n";\r
@@ -45,13 +46,13 @@ main(int argc, char *argv[])
 \r
        fprintf(stderr, fmt, _memavl());\r
        fprintf(stderr, fmt0, _memmax());\r
-       fprintf(stderr, "Size of map var = %u\n", _msize(&mapbuf));\r
+       fprintf(stderr, "Size of map var = %u\n", _msize(&(gvar.ca.camap.mapsegs)));\r
        //fprintf(stderr, "program always crashes for some reason....\n");\r
        getch();\r
 \r
-       loadmap("data/test.map", &map);\r
-       CA_LoadFile("data/test.map", &mapbuf, &gvar);\r
-       //map=(map_t *)mapbuf;\r
+       //loadmap("data/test.map", &map);\r
+       //newloadmap("data/test.map", &map);\r
+       CA_loadmap("data/test.map", &map, &gvar);\r
        #ifdef DUMP\r
        fprintf(stdout, "map.width=     %d\n", map.width);\r
        fprintf(stdout, "map.height=    %d\n", map.height);\r
@@ -60,14 +61,14 @@ main(int argc, char *argv[])
        for(i=0; i<(map.width*map.height); i++)\r
        {\r
                //fprintf(stdout, "%04d[%02d]", i, map.data[i]);\r
-               fprintf(stdout, "%c", map.data[i]+44);\r
+               fprintf(stdout, "%c", map.layerdata[0][i]+44);\r
                if(!((i+1)%map.width)){\r
                        //fprintf(stdout, "[%d]", i);\r
                        fprintf(stdout, "\n"); }\r
        }\r
        fprintf(stdout, "\n");\r
        #else\r
-       fprintf(stderr, "contents of the buffer\n[\n%s\n]\n", mapbuf);\r
+       //fprintf(stderr, "contents of the buffer\n[\n%s\n]\n", (gvar.ca.camap.mapsegs));\r
        #endif\r
        /*fprintf(stdout, "&main()=%Fp\n", *argv[0]);\r
        fprintf(stdout, "&map==%Fp\n", &map);\r
@@ -77,7 +78,7 @@ main(int argc, char *argv[])
        fprintf(stdout, "&map.data==%Fp\n", map.data);*/\r
        #endif\r
        fprintf(stdout, "okies~\n");\r
-       MM_FreePtr(&mapbuf, &gvar);\r
+       MM_FreePtr(&(gvar.ca.camap.mapsegs), &gvar);\r
        PM_Shutdown(&gvar);\r
        CA_Shutdown(&gvar);\r
        MM_Shutdown(&gvar);\r
index 6e7664f00125e87a0132b026f56ab2a9ec9ef9b7..5666059730987987339d2b6627024c0a171bd4e4 100755 (executable)
@@ -55,7 +55,7 @@ void main(int argc, char *argv[])
 \r
        /* create the map */\r
 //     fprintf(stderr, "testing map load~      ");\r
-       loadmap("data/test.map", &map);\r
+       loadmap("data/test.map", &map, &gvar);\r
        chkmap(&map, 0);\r
 //     printf("chkmap ok       ");\r
 //     fprintf(stderr, "yay map loaded~~\n");\r
index 3723b201a5d642b4a4e1d0ee46d418d587dcb80e..f2e803f314402b02ebf67bdc968ffb4b676ce6a6 100755 (executable)
@@ -82,7 +82,7 @@ void main(int argc, char *argv[])
 \r
        // create the map\r
 //     fprintf(stderr, "testing map load~      ");\r
-       loadmap("data/test.map", &map);\r
+       CA_loadmap("data/test.map", &map, &gvar);\r
        chkmap(&map, 0);\r
 //     initMap(&map);\r
 //     printf("chkmap ok       ");\r