]> 4ch.mooo.com Git - 16.git/commitdiff
too tired to continue
authorsparky4 <sparky4@cock.li>
Tue, 14 Feb 2017 17:38:49 +0000 (11:38 -0600)
committersparky4 <sparky4@cock.li>
Tue, 14 Feb 2017 17:38:49 +0000 (11:38 -0600)
data/16.pal
data/G.PAL
src/lib/16_map.c
src/lib/16_tdef.h
src/lib/16_vl.c
src/lib/16_vlpal.c
src/lib/bitmap.c
src/lib/scroll16.c
src/maptest.c

index eaf5208550ce2b2d7a255488e2de6b8d22afb6c8..cb6f0aef37b2280a7cac68a10dc99108348f0789 100755 (executable)
Binary files a/data/16.pal and b/data/16.pal differ
index 8092380af954e11b165eae773d83f03429619756..07edf768ed7f6efd53e88d7cc113aba28ab309f6 100755 (executable)
Binary files a/data/G.PAL and b/data/G.PAL differ
index 37179ab76d120cb44ecc0952fe6bc3bdf9e2ea1a..b17eb932b3d5e51b7f9181f288dd4b76ec761be0 100755 (executable)
@@ -296,7 +296,7 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) {
                                if(jsoneq(js, &(t[i]), "image") == 0) {\r
                                        map->MAPTILESPTK = malloc(sizeof(tiles_t));\r
                                        s = remove_ext((char *)js+t[i+1].start, '.', '/');\r
-                                       strcpy(map->MAPTILESPTK->imgname, s);\r
+                                       strcpy(map->MAPTILESPTK->tileset.imgname, s);\r
                                        //And move to vrs, probably\r
 //                                     bp = bitmapLoadPcx("data/ed.pcx");\r
 //                                     map->MAPTILESPTK->btdata = &bp;\r
index 38fd2260f04af464ee6acd7144bbd04eb3c6954b..4700625ef6ef33979c4d44b8939400e6c20763dc 100755 (executable)
@@ -48,14 +48,44 @@ typedef struct {
        word offset;\r
 } bitmap_t;\r
 \r
+//from 16_sprit.h\r
+#ifdef __WATCOMC__\r
+typedef struct sprite\r
+{\r
+       // VRS container from which we will extract animation and image data\r
+       struct vrs_container *spritesheet;\r
+       // Container for a vrl sprite\r
+       struct vrl_container *sprite_vrl_cont;\r
+       // Current sprite id\r
+       int curr_spri_id;\r
+       // Index of a current sprite in an animation sequence\r
+       int curr_anim_spri;\r
+       // Current animation sequence\r
+       struct vrs_animation_list_entry_t *curr_anim_list;\r
+       // Index of current animation in relevant VRS offsets table\r
+       int curr_anim;\r
+       // Delay in time units untill we should change sprite\r
+       int delay;\r
+       // Position of sprite on screen\r
+       int x, y;\r
+} sprite_t;\r
+#endif\r
+\r
 typedef struct {\r
-       byte far **data;\r
-       word ntiles;   /* the number of tiles */\r
-       word twidth;   /* width of the tiles */\r
-       word theight;  /* height of the tiles */\r
-       byte *palette; /* palette for the tile set */\r
+       //byte far **data;\r
+//#ifdef       __WATCOMC__\r
+       //sprite_t *spri;\r
+//#endif\r
+       bitmap_t far *data;     // actual tileset info\r
+//in the bitmap_t\r
+//     byte *palette;          // palette for the tile set\r
+       word ntiles;                    // the number of tiles\r
+       word twidth;            // width of the tiles\r
+       word theight;           // height of the tiles\r
+       byte    imgname[8];             // image filename of tileset\r
 } tileset_t;\r
 \r
+//not currently using\r
 typedef struct {\r
        byte far *plane[4];     // 4 planes of image data\r
        word width;                     // width of the image (spread across 4 planes)\r
@@ -64,25 +94,20 @@ typedef struct {
        byte *palette;\r
 } planar_buf_t;\r
 \r
-//TODO: 16_mm and 16_ca must handle this\r
+//tile properties\r
 typedef struct {\r
-       bitmap_t far *data;             //old\r
-       //planar_buf_t far *data;       //old\r
+       //bitmap_t far *btdata;         //old\r
+       tileset_t       tileset;                        //new\r
        word tileHeight, tileWidth;\r
-       unsigned int rows, cols;\r
-//     #ifdef __DEBUG__\r
-//     boolean debug_text;     //show the value of the tile! wwww\r
-//     byte *debug_data;\r
-//     #endif\r
-       byte    imgname[8];             //image file of tileset\r
+       word rows, cols;\r
 } tiles_t;\r
 \r
 //TODO: 16_mm and 16_ca must handle this\r
 //TODO: add variables from 16_ca\r
+#define MAPLAYERS 4\r
 //#define __NEWMAPTILEDATAVARS__\r
 \r
 #ifdef __NEWMAPTILEDATAVARS__\r
-#define MAPLAYERS 4\r
 #define MAPTILESPTR            layertile[0]\r
 #define MAPTILESPTK            layertile[k]\r
 #define MAPDATAPTR             layerdata[0]\r
@@ -97,14 +122,14 @@ typedef struct {
        //long          planestart[3];\r
        //unsigned      planelength[3];\r
 #ifndef __NEWMAPTILEDATAVARS__\r
-       byte *data;                     //TODO: 16_mm and 16_ca must handle this\r
-       tiles_t *tiles;         //TODO: 16_mm and 16_ca must handle this\r
+       byte            *data;                  //TODO: 16_mm and 16_ca must handle this\r
+       tiles_t         *tiles;         //TODO: 16_mm and 16_ca must handle this\r
 #else\r
-       byte * far *layerdata;  //TODO: 16_mm and 16_ca must handle this\r
-       tiles_t far *layertile[MAPLAYERS];      //TODO: 16_mm and 16_ca must handle this\r
+       byte far        *layerdata[MAPLAYERS];  //mapindex for specific layer\r
+       tiles_t far     *layertile[MAPLAYERS];\r
 #endif\r
        int width, height;              //this has to be signed!\r
-       byte name[16];\r
+       byte name[16];          //mapname/maptitle\r
 } map_t;\r
 \r
 typedef struct{\r
@@ -116,12 +141,12 @@ typedef struct{
        sword tilemidposscreeny;        /* middle tile y position */    /* needed for scroll system to work accordingly */\r
        sword tileplayerposscreenx;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
        sword tileplayerposscreeny;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
-} tileinfo_t;\r
+} pagetileinfo_t;\r
 \r
 typedef struct {\r
        nibble/*word*/ id;      /* the Identification number of the page~ For layering~ */\r
        byte far* data; /* the data for the page */\r
-       tileinfo_t      ti;\r
+       pagetileinfo_t  ti;\r
        word dx;                /* col we are viewing on virtual screen (on page[0]) */ /* off screen buffer on the left size */\r
        word dy;                /* row we are viewing on virtual screen (on page[0]) */ /* off screen buffer on the top size */\r
        word sw;                /* screen width */      /* resolution */\r
@@ -137,29 +162,6 @@ typedef struct {
        sword delta;                    // How much should we shift the page for smooth scrolling\r
 } page_t;\r
 \r
-//from 16_sprit.h\r
-#ifdef __WATCOMC__\r
-typedef struct sprite\r
-{\r
-       // VRS container from which we will extract animation and image data\r
-       struct vrs_container *spritesheet;\r
-       // Container for a vrl sprite\r
-       struct vrl_container *sprite_vrl_cont;\r
-       // Current sprite id\r
-       int curr_spri_id;\r
-       // Index of a current sprite in an animation sequence\r
-       int curr_anim_spri;\r
-       // Current animation sequence\r
-       struct vrs_animation_list_entry_t *curr_anim_list;\r
-       // Index of current animation in relevant VRS offsets table\r
-       int curr_anim;\r
-       // Delay in time units untill we should change sprite\r
-       int delay;\r
-       // Position of sprite on screen\r
-       int x, y;\r
-} sprite_t;\r
-#endif\r
-\r
 //newer structs\r
 typedef        struct\r
 {\r
index 881239de5501212185693d31c713e31631ed3a4f..71c5667ddf7eece28600f5cc4c64835bfe156714 100755 (executable)
@@ -689,18 +689,7 @@ modexLoadPalFile(byte *filename, byte **palette) {
 \r
 void VL_LoadPalFile(const char *filename, byte *palette)\r
 {\r
-       int fd;\r
-\r
-       fd = open(filename,O_RDONLY|O_BINARY);\r
-       if (fd >= 0) {\r
-               word i;\r
-\r
-               read(fd,palette,        PAL_SIZE);\r
-               close(fd);\r
-\r
-               vga_palette_lseek(0);\r
-               for (i=0;i < 256;i++) vga_palette_write(palette[(i*3)+0]>>2,palette[(i*3)+1]>>2,palette[(i*3)+2]>>2);\r
-       }\r
+       VL_LoadPalFilewithoffset(filename, palette, 0);\r
 }\r
 \r
 void VL_LoadPalFilewithoffset(const char *filename, byte *palette, word o)\r
@@ -714,8 +703,8 @@ void VL_LoadPalFilewithoffset(const char *filename, byte *palette, word o)
                read(fd,palette,        PAL_SIZE);\r
                close(fd);\r
 \r
-               vga_palette_lseek(o);\r
-               for (i=o;i < 256-o;i++) vga_palette_write(palette[(i*3)+0]>>2,palette[(i*3)+1]>>2,palette[(i*3)+2]>>2);\r
+               vga_palette_lseek(1+o);\r
+               for (i=o;i < 255-o;i++) vga_palette_write(palette[(i*3)+0]>>2,palette[(i*3)+1]>>2,palette[(i*3)+2]>>2);\r
        }\r
 }\r
 \r
index 2f155f03a43256587a2878aa9c913be79be9d6ab..db0f19d668c532b10426e9fe24d8a10a0f77f861 100755 (executable)
@@ -32,7 +32,7 @@ void modexchkcolor(imgtestpal_t *bmp, word *q, word *a, word *aa, word *z, word
                modexPalSave(pal);\r
                CHKCOLDBGOUT1\r
                //check palette for dups\r
-               for(; (*z)<PAL_SIZE; (*z)+=3)\r
+               for(; (*z)<PAL_SIZE-3; (*z)+=3)\r
                {\r
                        CHKCOLDBGOUT2\r
                        //if((*z)%3==0)\r
@@ -99,7 +99,7 @@ VL_palette(imgtestpal_t *bmp, byte *p, word *i, word qp, word aqoffset)
        word w=0;\r
        word q=0;\r
        word qq=0;\r
-       static word a[PAL_SIZE];        //palette array of change values!\r
+       static word a[PAL_SIZE-3];      //palette array of change values!\r
        word z=0, aq=0, aa=0, pp=0;\r
 \r
        //modexWaitBorder();\r
@@ -107,7 +107,7 @@ VL_palette(imgtestpal_t *bmp, byte *p, word *i, word qp, word aqoffset)
        if((*i)==0)\r
        {\r
                memset(a, -1, sizeof(a));\r
-               outp(PAL_WRITE_REG, 0);  /* start at the beginning of palette */\r
+               outp(PAL_WRITE_REG, 1);  /* start at the beginning of palette */\r
        }\r
        else if(qp==0)\r
        {\r
@@ -124,9 +124,9 @@ VL_palette(imgtestpal_t *bmp, byte *p, word *i, word qp, word aqoffset)
 #endif\r
                outp(PAL_WRITE_REG, qq);  /* start at the beginning of palette */\r
        }\r
-       if((*i)<PAL_SIZE && w==0)\r
+       if((*i)<PAL_SIZE-3 && w==0)\r
        {\r
-               for(; (*i)<PAL_SIZE; (*i)++)\r
+               for(; (*i)<PAL_SIZE-3; (*i)++)\r
                {\r
                        //if(i%3==0 && (p[i+5]==p[i+4] && p[i+4]==p[i+3] && p[i+3]==p[i+2] && p[i+2]==p[i+1] && p[i+1]==p[i] && p[i+5]==p[i]))\r
 //____           if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else\r
index 22bad98103086b9a36e7a7af57c700f448aebcd7..b42204aac9ac5ce22d0503df11a8b2839875827f 100755 (executable)
@@ -160,6 +160,7 @@ bitmapLoadPcx(char *filename, global_game_variables_t *gv) {
 }\r
 \r
 //TODO: update!!\r
+/*\r
 tileset_t\r
 bitmapLoadPcxTiles(char *filename, word twidth, word theight) {\r
        tileset_t ts;\r
@@ -167,33 +168,33 @@ bitmapLoadPcxTiles(char *filename, word twidth, word theight) {
        bitmap_t result;\r
        int i;\r
 \r
-       /* open the PCX file for reading */\r
+       // open the PCX file for reading\r
        file = fopen(filename, "rb");\r
        if(!file) {\r
                printf("Could not open %s for reading.\n", filename);\r
                exit(-2);\r
        }\r
 \r
-       /* load the first part of the pcx file */\r
+       // load the first part of the pcx file\r
        loadPcxStage1(file, &result);\r
 \r
-       /* get the number of tiles and set up the result structure */\r
+       // get the number of tiles and set up the result structure\r
        ts.twidth = twidth;\r
        ts.theight = theight;\r
        ts.ntiles = (result.width/twidth) * (result.height/theight);\r
        ts.palette = result.palette;\r
 \r
-       /* allocate the pixel storage for the tiles */\r
+       // allocate the pixel storage for the tiles\r
        ts.data = _fmalloc(sizeof(byte*) * ts.ntiles);\r
        //ts.data[0] = malloc(sizeof(byte) * ts.ntiles * twidth * theight);\r
        for(i=1; i < ts.ntiles; i++) {\r
                ts.data[i] = ts.data[i-1] + twidth * theight;\r
        }\r
 \r
-       /* finish off the file */\r
+       // finish off the file\r
        loadPcxPalette(file, &result);\r
 \r
        fclose(file);\r
 \r
        return ts;\r
-}\r
+}*/\r
index 9a4708abedfe2daf0e7ec74287c36db2849cd680..e60a8b97344f55ab64ebd95d3158f4165a1f4c9b 100755 (executable)
@@ -563,42 +563,43 @@ void ZC_mapredraw(map_view_t *mv, int tx, int ty)
 void near\r
 mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y)\r
 {\r
-       word rx;\r
-       word ry;\r
+       word rx, ry;\r
        //word textx=0, texty=0;\r
        //if(i==0) i=2;\r
-       if(i==0)\r
+       switch(i)\r
        {\r
+               case 0:\r
                //wwww\r
-               modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, 1); //currently the over scan color!\r
-       }\r
-       else\r
-       {\r
-               rx = (((i-1) % ((t->data->width)/t->tileWidth)) * t->tileWidth);\r
-               ry = (((i-1) / ((t->data->height)/t->tileHeight)) * t->tileHeight);\r
+                       modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, 0); //currently the over scan color!\r
+               break;\r
+               case 1:\r
+                       rx = (((i-1) % ((t->tileset.data->width)/t->tileWidth)) * t->tileWidth);\r
+                       ry = (((i-1) / ((t->tileset.data->height)/t->tileHeight)) * t->tileHeight);\r
+//                     rx = (((i-1) % ((t->spri->sprite_vrl_cont->vrl_header->width)/t->tileWidth)) * t->tileWidth);\r
+//                     ry = (((i-1) / ((t->spri->sprite_vrl_cont->vrl_header->height)/t->tileHeight)) * t->tileHeight);\r
 ////0000printf("i=%d\n", i);\r
-#ifdef __DEBUG_MAP__\r
-               switch(dbg_maptext)\r
-               {\r
-                       case 0:\r
-#endif\r
 #ifndef TILERENDER\r
-                               if(!pagenorendermap) modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, i+1);\r
+                       if(!pagenorendermap) modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, i+1);\r
 #else\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
+                       //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
+                       //drawmap here\r
 #endif\r
 #ifdef __DEBUG_MAP__\r
+               switch(dbg_maptext)\r
+               {\r
+                       case 0:\r
+\r
                        break;\r
                        case 1:\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
+                               modexprint(page, x+8, y+8, 1, 1, 2, global_temp_status_text2);\r
                        break;\r
                }\r
 #endif\r
+               break;\r
        }\r
 }\r
 \r
index f426b2c66bf7f8f5eb161c0d2ee007f2a2355486..696f9b7368cfc7339d65a2e72a7796af5603bb61 100755 (executable)
@@ -31,7 +31,7 @@ main(int argc, char *argv[])
        map_t map;\r
 #ifdef DUMP\r
 #ifdef DUMP_MAP\r
-       short i;\r
+       short i,k;\r
 #endif\r
 #endif\r
        char *fmt = "Memory available = %u\n";\r
@@ -58,15 +58,19 @@ main(int argc, char *argv[])
        fprintf(stdout, "map.height=    %d\n", map.height);\r
        #ifdef DUMP_MAP\r
        //if(map.width*map.height != 1200)\r
-       for(i=0; i<(map.width*map.height); i++)\r
+       for(k=0;k<MAPLAYERS;k++)\r
        {\r
-               //fprintf(stdout, "%04d[%02d]", i, map.data[i]);\r
-               fprintf(stdout, "%c", map.MAPDATAPTR[i]+44);\r
-               if(!((i+1)%map.width)){\r
-                       //fprintf(stdout, "[%d]", i);\r
-                       fprintf(stdout, "\n"); }\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.MAPDATAPTR[i]+44);\r
+                       if(!((i+1)%map.width)){\r
+                               //fprintf(stdout, "[%d]", i);\r
+                               fprintf(stdout, "\n"); }\r
+               }\r
+               fprintf(stdout, "\n");\r
+               getch();\r
        }\r
-       fprintf(stdout, "\n");\r
        #else\r
        //fprintf(stderr, "contents of the buffer\n[\n%s\n]\n", (gvar.ca.camap.mapsegs));\r
        #endif\r