From: sparky4 Date: Wed, 8 Feb 2017 19:19:12 +0000 (-0600) Subject: WWWWWWWWWWWWwwwwwwwwwwWWWWWWWwwwwWWwwWWwwWwwWww X-Git-Url: http://4ch.mooo.com/gitweb/?p=16.git;a=commitdiff_plain;h=5d57fb1ad5b8342b68eda18973c2f45d81481a2e WWWWWWWWWWWWwwwwwwwwwwWWWWWWWwwwwWWwwWWwwWwwWww --- diff --git a/MAPTEST.L16 b/MAPTEST.L16 new file mode 100755 index 00000000..1e4bf52f --- /dev/null +++ b/MAPTEST.L16 @@ -0,0 +1,34 @@ +map.width= 40 +map.height= 30 +-./0,////////0-----------------------./0 +1234,-,-,,--------------------------1234 +56780-,-,,--------------------------5678 +9:;<,---14-77-----------------------9:;< +,,0,,,,,44-77/-------------------------- +----,,,,44------------------------------ +----,,,,-------------------------------- +----,,,,--------/----------------------- +---------,------/----------------------- +----------------/----------------------- +----------------/----------------------- +------------////-./0/////--------------- +-----------/----123422222///------------ +---------//-----567822222222///--------- +--------/-------9:;layerdata[k] = malloc(sizeof(byte) * t[i+1].size); + map->data = map->layerdata[k]; for(j = 0; j < t[i+1].size; j++) { map->layerdata[k][j] = (byte)atoi(js + t[i+2+j].start); - #ifdef DEBUG_MAPVAR - printf("%d, ", map->layerdata[k][j]); - #endif + //for backwards compatibility for rest of code +// map->data[j] = map->layerdata[k][j];//(byte)atoi(js + t[i+2+j].start);//(byte)atoi(js+t->start); +#ifdef DEBUG_MAPDATA + //printf("[%d,%d]%d", k, j, map->layerdata[k][j]); + fprintf(stdout, "%c", map->data[j]+44); +#endif } i += j + 2; k++; - #ifdef DEBUG_MAPVAR - puts("]"); - #endif - } - else{ +#ifdef DEBUG_MAPDATA + puts("\n]"); +#endif + }else{ i++; } } @@ -290,8 +295,11 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) { k = 0; while(t[i].start < inner_end) { if(jsoneq(js, &(t[i]), "image") == 0) { - //fix this to be far~ map->layertile[k] = malloc(sizeof(tiles_t)); + //Fix to load tileset specified. + //And move to vrs, probably +// bp = bitmapLoadPcx("data/ed.pcx"); +// map->layertile[k]->btdata = &bp; map->layertile[k]->btdata = malloc(sizeof(bitmap_t)); map->layertile[k]->tileHeight = 16; map->layertile[k]->tileWidth = 16; @@ -300,10 +308,11 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) { #ifdef __DEBUG_MAP__ dbg_maptext=false; #endif - //Fix to load tileset specified. - //And move to vrs, probably - //bp = bitmapLoadPcx("data/ed.pcx"); - map->layertile[k]->btdata = &bp; + map->tiles->btdata = map->layertile[k]->btdata; + map->tiles->tileHeight = 16; + map->tiles->tileWidth = 16; + map->tiles->rows = 1; + map->tiles->cols = 1; k++; } i++; @@ -312,16 +321,16 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) { if (jsoneq(js, &(t[i]), "height") == 0 && indent<=1) { map->height = atoi(js + t[i+1].start); - #ifdef DEBUG_MAPVAR +#ifdef DEBUG_MAPVAR printf("Height: %d\n", map->height); - #endif +#endif i++; } else if(jsoneq(js, &(t[i]), "width") == 0 && indent<=1) { map->width = atoi(js + t[i+1].start); - #ifdef DEBUG_MAPVAR +#ifdef DEBUG_MAPVAR printf("Width: %d\n", map->width); - #endif +#endif i++; } i++; @@ -372,3 +381,54 @@ int newloadmap(char *mn, map_t *map) { return 0; } + + +//====== + + +#define MAPBUFINLM (gvar->ca.camap.mapsegs) +int CA_loadmap(char *mn, map_t *map, global_game_variables_t *gvar) +{ + jsmn_parser p; + jsmntok_t *tok = NULL; + size_t tokcount, file_s; + + FILE *fh = fopen(mn, "r"); + int status; + + /* Prepare parser */ + jsmn_init(&p); + + file_s = filesize(fh); + /*js = malloc(file_s); + if(js == NULL) { + fprintf(stderr, "malloc(): errno = %d", 2); + fclose(fh); + return 3; + } + if(fread(js, 1, file_s, fh) != file_s) { + fprintf(stderr, "Map read error"); + free(js); + fclose(fh); + return 1; + }*/ + CA_LoadFile(mn, &MAPBUFINLM, gvar); + tokcount = jsmn_parse(&p, MAPBUFINLM, file_s, NULL, 0); + tok = malloc(tokcount*sizeof(jsmntok_t)); +// printf("Allocated %d tokens", tokcount); + jsmn_init(&p); + if((status = jsmn_parse(&p, MAPBUFINLM, 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(MAPBUFINLM, tok, tokcount, map); + //CA_mapdump(MAPBUFINLM, tok, p.toknext, map, 0, gvar); + + //free(js); + free(tok); + fclose(fh); + + return 0; +} diff --git a/src/lib/16_map.h b/src/lib/16_map.h index 84cfd923..26901678 100755 --- a/src/lib/16_map.h +++ b/src/lib/16_map.h @@ -41,8 +41,9 @@ //typedefs moved to 16_tdef.h 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); +//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, global_game_variables_t *gvar); int newloadmap(char *mn, map_t *map); +int CA_loadmap(char *mn, map_t *map, global_game_variables_t *gvar); #endif/*_16_LIB__H_*/ diff --git a/src/lib/16_tail.c b/src/lib/16_tail.c index 463055a1..1a8a2972 100755 --- a/src/lib/16_tail.c +++ b/src/lib/16_tail.c @@ -374,6 +374,7 @@ void Quit (global_game_variables_t *gvar, char *error) //=========================================================================== #ifndef __WATCOMC__ char global_temp_status_text[512]; +char global_temp_status_text2[512]; #else // // for mary4 (XT) diff --git a/src/lib/16_tdef.h b/src/lib/16_tdef.h index ec6caf5b..3f839204 100755 --- a/src/lib/16_tdef.h +++ b/src/lib/16_tdef.h @@ -494,9 +494,10 @@ typedef struct typedef struct { int mapon, mapnum; - __SEGA *mapsegs[4]; - __SEGA *mapheaderseg[NUMMAPS]; - __SEGA *tinf; + //__SEGA *mapsegs[4]; + //__SEGA *mapheaderseg[NUMMAPS]; + //__SEGA *tinf; + memptr mapsegs; } ca_mapinfo_t; typedef struct @@ -540,6 +541,7 @@ typedef struct #ifdef __WATCOMC__ extern char global_temp_status_text[512]; +extern char global_temp_status_text2[512]; #define EINVFMT EMFILE #endif #endif /* _TYPEDEFSTRUCT_H_ */ diff --git a/src/lib/16_timer.c b/src/lib/16_timer.c index 6a0c7a47..16295d1b 100755 --- a/src/lib/16_timer.c +++ b/src/lib/16_timer.c @@ -67,6 +67,7 @@ double time_in_seconds(global_game_variables_t *gv) // big global status text buffer char global_temp_status_text[512]; +char global_temp_status_text2[512]; /*double time_in_seconds(time_t in_t) { diff --git a/src/lib/scroll16.c b/src/lib/scroll16.c index 53be2543..a9d4e98f 100755 --- a/src/lib/scroll16.c +++ b/src/lib/scroll16.c @@ -504,9 +504,6 @@ sword chkmap(map_t *map, word q) //fix this to be far~ // bp = bitmapLoadPcx("data/ed.pcx"); // map->tiles->data = &bp; -#ifdef __DEBUG_MAP__ - dbg_mapdata = map->data; -#endif map->tiles->tileHeight = 16; map->tiles->tileWidth = 16; map->tiles->rows = 1; @@ -516,7 +513,10 @@ sword chkmap(map_t *map, word q) #endif } #ifdef __DEBUG_MAP__ - else dbg_maptext = false; + else + { + dbg_maptext = false; + } #endif return 0; } @@ -583,10 +583,11 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y) case 0: #endif #ifndef TILERENDER - if(!pagenorendermap) modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, ((dbg_mapdata[i])+1)); - //modexprint(page, x, y, 1, 15, 0, (char const *)(t->debug_data[i])); + if(!pagenorendermap) modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, i); + sprintf(global_temp_status_text2, "%d", i); + modexprint(page, x, y, 1, 1, 2, global_temp_status_text2); #else - modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data)); + modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, i); /* then the sprite. note modding ram ptr means we just draw to (x&3,0) */ //draw_vrl1_vgax_modex(x-rx,y-ry,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header)); //modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data)); @@ -594,7 +595,7 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y) #ifdef __DEBUG_MAP__ break; case 1: - modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, (dbg_mapdata[i])+1); + modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, i); //modexprintbig(page, x, y, 1, 15, 0, (t->debug_data)); /*for(texty=0; texty<2; texty++) { diff --git a/src/lib/scroll16.h b/src/lib/scroll16.h index 1176328b..efe02d9b 100755 --- a/src/lib/scroll16.h +++ b/src/lib/scroll16.h @@ -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"); //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); //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)); -//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]); +//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]); //printf("pageflipflop=%u", pageflipflop); //printf("&global_temp_status_text = %Fp\n", &global_temp_status_text); //printf("middle tile position: %dx", gvar.video.page[0].tilemidposscreenx); printf("%d\n", gvar.video.page[0].tilemidposscreeny); @@ -81,7 +81,7 @@ #define SCROLLEXITMESG printf("page[0]dxy: %dx%d", gvar.video.page[0].dx, gvar.video.page[0].dy);\ printf("\n\n");\ printf("player vars:\n");\ - 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))]);\ + 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))]);\ 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);\ printf(" pdir: %u\n", player[0].pdir); printf(" delay=%u", player[0].enti.spri->delay);\ printf("\n\n");\ @@ -95,6 +95,7 @@ printf("\n\n"); extern boolean pagenorendermap, pagedelayrendermap; extern char global_temp_status_text[512]; +extern char global_temp_status_text2[512]; //map_t allocMap(int w, int h); void initMap(map_t *map); diff --git a/src/maptest.c b/src/maptest.c index 4a413ca8..c73ea3dd 100755 --- a/src/maptest.c +++ b/src/maptest.c @@ -29,9 +29,10 @@ main(int argc, char *argv[]) { static global_game_variables_t gvar; map_t map; - static memptr mapbuf; +#ifdef DUMP #ifdef DUMP_MAP short i; +#endif #endif char *fmt = "Memory available = %u\n"; char *fmt0 = "Largest Contiguous Block of Memory available = %u\n"; @@ -45,13 +46,13 @@ main(int argc, char *argv[]) fprintf(stderr, fmt, _memavl()); fprintf(stderr, fmt0, _memmax()); - fprintf(stderr, "Size of map var = %u\n", _msize(&mapbuf)); + fprintf(stderr, "Size of map var = %u\n", _msize(&(gvar.ca.camap.mapsegs))); //fprintf(stderr, "program always crashes for some reason....\n"); getch(); - loadmap("data/test.map", &map); - CA_LoadFile("data/test.map", &mapbuf, &gvar); - //map=(map_t *)mapbuf; + //loadmap("data/test.map", &map); + //newloadmap("data/test.map", &map); + CA_loadmap("data/test.map", &map, &gvar); #ifdef DUMP fprintf(stdout, "map.width= %d\n", map.width); fprintf(stdout, "map.height= %d\n", map.height); @@ -60,14 +61,14 @@ main(int argc, char *argv[]) for(i=0; i<(map.width*map.height); i++) { //fprintf(stdout, "%04d[%02d]", i, map.data[i]); - fprintf(stdout, "%c", map.data[i]+44); + fprintf(stdout, "%c", map.layerdata[0][i]+44); if(!((i+1)%map.width)){ //fprintf(stdout, "[%d]", i); fprintf(stdout, "\n"); } } fprintf(stdout, "\n"); #else - fprintf(stderr, "contents of the buffer\n[\n%s\n]\n", mapbuf); + //fprintf(stderr, "contents of the buffer\n[\n%s\n]\n", (gvar.ca.camap.mapsegs)); #endif /*fprintf(stdout, "&main()=%Fp\n", *argv[0]); fprintf(stdout, "&map==%Fp\n", &map); @@ -77,7 +78,7 @@ main(int argc, char *argv[]) fprintf(stdout, "&map.data==%Fp\n", map.data);*/ #endif fprintf(stdout, "okies~\n"); - MM_FreePtr(&mapbuf, &gvar); + MM_FreePtr(&(gvar.ca.camap.mapsegs), &gvar); PM_Shutdown(&gvar); CA_Shutdown(&gvar); MM_Shutdown(&gvar); diff --git a/src/scroll.c b/src/scroll.c index 6e7664f0..56660597 100755 --- a/src/scroll.c +++ b/src/scroll.c @@ -55,7 +55,7 @@ void main(int argc, char *argv[]) /* create the map */ // fprintf(stderr, "testing map load~ "); - loadmap("data/test.map", &map); + loadmap("data/test.map", &map, &gvar); chkmap(&map, 0); // printf("chkmap ok "); // fprintf(stderr, "yay map loaded~~\n"); diff --git a/src/zcroll.c b/src/zcroll.c index 3723b201..f2e803f3 100755 --- a/src/zcroll.c +++ b/src/zcroll.c @@ -82,7 +82,7 @@ void main(int argc, char *argv[]) // create the map // fprintf(stderr, "testing map load~ "); - loadmap("data/test.map", &map); + CA_loadmap("data/test.map", &map, &gvar); chkmap(&map, 0); // initMap(&map); // printf("chkmap ok ");