--- /dev/null
+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
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
\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
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
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
#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
\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
\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
//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
//===========================================================================\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
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
\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
\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
//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
#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
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
#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
//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
#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
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
{\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
\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
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
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
\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
\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