[BACK]Return to stripgfx.c CVS log [TXT][DIR] Up to [contributed] / dgamelaunch-openbsd

Annotation of dgamelaunch-openbsd/stripgfx.c, Revision 1.1.1.1

1.1       rubenllo    1: /* Parts taken from drawing.c, nethack source */
                      2: /* Copyright (c) NetHack Development Team 1992.                          */
                      3: /* NetHack may be freely redistributed.  See license for details. */
                      4:
                      5: #include <string.h>
                      6: #include "stripgfx.h"
                      7:
                      8: #define MAXPCHARS 92
                      9:
                     10: unsigned char gfx_map[256];
                     11: unsigned int state = 0;
                     12:
                     13: static unsigned char no_graphics[MAXPCHARS] = {
                     14:   ' ',                          /* 0 */
                     15:   /* stone */
                     16:   '|',                          /* vwall */
                     17:   '-',                          /* hwall */
                     18:   '-',                          /* tlcorn */
                     19:   '-',                          /* trcorn */
                     20:   '-',                          /* blcorn */
                     21:   '-',                          /* brcorn */
                     22:   '-',                          /* crwall */
                     23:   '-',                          /* tuwall */
                     24:   '-',                          /* tdwall */
                     25:   '|',                          /* 10 */
                     26:   /* tlwall */
                     27:   '|',                          /* trwall */
                     28:   '.',                          /* ndoor */
                     29:   '-',                          /* vodoor */
                     30:   '|',                          /* hodoor */
                     31:   '+',                          /* vcdoor */
                     32:   '+',                          /* hcdoor */
                     33:   '#',                          /* bars */
                     34:   '#',                          /* tree */
                     35:   '.',                          /* room */
                     36:   '#',                          /* 20 */
                     37:   /* dark corr */
                     38:   '#',                          /* lit corr */
                     39:   '<',                          /* upstair */
                     40:   '>',                          /* dnstair */
                     41:   '<',                          /* upladder */
                     42:   '>',                          /* dnladder */
                     43:   '_',                          /* altar */
                     44:   '|',                          /* grave */
                     45:   '\\',                         /* throne */
                     46:   '#',                          /* sink */
                     47:   '{',                          /* 30 */
                     48:   /* fountain */
                     49:   '}',                          /* pool */
                     50:   '.',                          /* ice */
                     51:   '}',                          /* lava */
                     52:   '.',                          /* vodbridge */
                     53:   '.',                          /* hodbridge */
                     54:   '#',                          /* vcdbridge */
                     55:   '#',                          /* hcdbridge */
                     56:   ' ',                          /* open air */
                     57:   '#',                          /* [part of] a cloud */
                     58:   '}',                          /* 40 */
                     59:   /* under water */
                     60:   '^',                          /* trap */
                     61:   '^',                          /* trap */
                     62:   '^',                          /* trap */
                     63:   '^',                          /* trap */
                     64:   '^',                          /* trap */
                     65:   '^',                          /* trap */
                     66:   '^',                          /* trap */
                     67:   '^',                          /* trap */
                     68:   '^',                          /* trap */
                     69:   '^',                          /* 50 */
                     70:   /* trap */
                     71:   '^',                          /* trap */
                     72:   '^',                          /* trap */
                     73:   '^',                          /* trap */
                     74:   '^',                          /* trap */
                     75:   '^',                          /* trap */
                     76:   '^',                          /* trap */
                     77:   '^',                          /* trap */
                     78:   '"',                          /* web */
                     79:   '^',                          /* trap */
                     80:   '^',                          /* 60 */
                     81:   /* trap */
                     82:   '^',                          /* trap */
                     83:   '^',                          /* trap */
                     84:   '|',                          /* vbeam */
                     85:   '-',                          /* hbeam */
                     86:   '\\',                         /* lslant */
                     87:   '/',                          /* rslant */
                     88:   '*',                          /* dig beam */
                     89:   '!',                          /* camera flash beam */
                     90:   ')',                          /* boomerang open left */
                     91:   '(',                          /* 70 */
                     92:   /* boomerang open right */
                     93:   '0',                          /* 4 magic shield symbols */
                     94:   '#',
                     95:   '@',
                     96:   '*',
                     97:   '/',                          /* swallow top left  */
                     98:   '-',                          /* swallow top center  */
                     99:   '\\',                         /* swallow top right  */
                    100:   '|',                          /* swallow middle left */
                    101:   '|',                          /* swallow middle right  */
                    102:   '\\',                         /* 80 */
                    103:   /* swallow bottom left  */
                    104:   '-',                          /* swallow bottom center */
                    105:   '/',                          /* swallow bottom right  */
                    106:   '/',                          /* explosion top left     */
                    107:   '-',                          /* explosion top center   */
                    108:   '\\',                         /* explosion top right    */
                    109:   '|',                          /* explosion middle left  */
                    110:   ' ',                          /* explosion middle center */
                    111:   '|',                          /* explosion middle right */
                    112:   '\\',                         /* explosion bottom left  */
                    113:   '-',                          /* 90 */
                    114:   /* explosion bottom center */
                    115:   '/'                           /* explosion bottom right */
                    116: };
                    117:
                    118: static unsigned char ibm_graphics[MAXPCHARS] = {
                    119: /* 0*/ 0x00,
                    120:   0xb3,                         /* : meta-3, vertical rule */
                    121:   0xc4,                         /* : meta-D, horizontal rule */
                    122:   0xda,                         /* :  meta-Z, top left corner */
                    123:   0xbf,                         /* :  meta-?, top right corner */
                    124:   0xc0,                         /* :  meta-@, bottom left */
                    125:   0xd9,                         /* :  meta-Y, bottom right */
                    126:   0xc5,                         /* :  meta-E, cross */
                    127:   0xc1,                         /* :  meta-A, T up */
                    128:   0xc2,                         /* :  meta-B, T down */
                    129:   /*10 */ 0xb4,
                    130:   /* :  meta-4, T left */
                    131:   0xc3,                         /* :  meta-C, T right */
                    132:   0xfa,                         /* : meta-z, centered dot */
                    133:   0xfe,                         /* :  meta-~, small centered square */
                    134:   0xfe,                         /* :  meta-~, small centered square */
                    135:   0x00,
                    136:   0x00,
                    137:   240,                          /* :  equivalence symbol */
                    138:   241,                          /* :  plus or minus symbol */
                    139:   0xfa,                         /* :  meta-z, centered dot */
                    140:   /*20 */ 0xb0,
                    141:   /* :  meta-0, light shading */
                    142:   0xb1,                         /* : meta-1, medium shading */
                    143:   0x00,
                    144:   0x00,
                    145:   0x00,
                    146:   0x00,
                    147:   0x00,
                    148:   0x00,
                    149:   0x00,
                    150:   0x00,
                    151:   /*30 */ 0xf4,
                    152:   /* :  meta-t, integral top half */
                    153:   0xf7,                         /* :  meta-w, approx. equals */
                    154:   0xfa,                         /* : meta-z, centered dot */
                    155:   0xf7,                         /* :  meta-w, approx. equals */
                    156:   0xfa,                         /* : meta-z, centered dot */
                    157:   0xfa,                         /* : meta-z, centered dot */
                    158:   0x00,
                    159:   0x00,
                    160:   0x00,
                    161:   0x00,
                    162:   /*40 */ 0xf7,
                    163:   /* : meta-w, approx. equals */
                    164:   0x00,
                    165:   0x00,
                    166:   0x00,
                    167:   0x00,
                    168:   0x00,
                    169:   0x00,
                    170:   0x00,
                    171:   0x00,
                    172:   0x00,
                    173: /*50*/ 0x00,
                    174:   0x00,
                    175:   0x00,
                    176:   0x00,
                    177:   0x00,
                    178:   0x00,
                    179:   0x00,
                    180:   0x00,
                    181:   0x00,
                    182:   0x00,
                    183: /*60*/ 0x00,
                    184:   0x00,
                    185:   0x00,
                    186:   0xb3,                         /* : meta-3, vertical rule */
                    187:   0xc4,                         /* : meta-D, horizontal rule */
                    188:   0x00,
                    189:   0x00,
                    190:   0x00,
                    191:   0x00,
                    192:   0x00,
                    193: /*70*/ 0x00,
                    194:   0x00,
                    195:   0x00,
                    196:   0x00,
                    197:   0x00,
                    198:   0x00,
                    199:   0x00,
                    200:   0x00,
                    201:   0xb3,                         /* : meta-3, vertical rule */
                    202:   0xb3,                         /* : meta-3, vertical rule */
                    203: /*80*/ 0x00,
                    204:   0x00,
                    205:   0x00,
                    206:   0x00,
                    207:   0x00,
                    208:   0x00,
                    209:   0xb3,                         /* :  meta-3, vertical rule */
                    210:   0x00,
                    211:   0xb3,                         /* :  meta-3, vertical rule */
                    212:   0x00,
                    213: /*90*/ 0x00,
                    214:   0x00
                    215: };
                    216:
                    217: static unsigned char dec_graphics[MAXPCHARS] = {
                    218: /* 0*/ 0x00,
                    219:   0xf8,                         /* : meta-x, vertical rule */
                    220:   0xf1,                         /* : meta-q, horizontal rule */
                    221:   0xec,                         /* :  meta-l, top left corner */
                    222:   0xeb,                         /* :  meta-k, top right corner */
                    223:   0xed,                         /* :  meta-m, bottom left */
                    224:   0xea,                         /* :  meta-j, bottom right */
                    225:   0xee,                         /* :  meta-n, cross */
                    226:   0xf6,                         /* :  meta-v, T up */
                    227:   0xf7,                         /* :  meta-w, T down */
                    228:   /*10 */ 0xf5,
                    229:   /* :  meta-u, T left */
                    230:   0xf4,                         /* :  meta-t, T right */
                    231:   0xfe,                         /* : meta-~, centered dot */
                    232:   0xe1,                         /* :  meta-a, solid block */
                    233:   0xe1,                         /* :  meta-a, solid block */
                    234:   0x00,
                    235:   0x00,
                    236:   0xfb,                         /* :  meta-{, small pi */
                    237:   0xe7,                         /* :  meta-g, plus-or-minus */
                    238:   0xfe,                         /* :  meta-~, centered dot */
                    239: /*20*/ 0x00,
                    240:   0x00,
                    241:   0x00,
                    242:   0x00,
                    243:   0xf9,                         /* :  meta-y, greater-than-or-equals */
                    244:   0xfa,                         /* :  meta-z, less-than-or-equals */
                    245:   0x00,                         /* 0xc3, \E)3: meta-C, dagger */
                    246:   0x00,
                    247:   0x00,
                    248:   0x00,
                    249:   /*30 */ 0x00,
                    250:   /* 0xdb, \E)3: meta-[, integral top half */
                    251:   0xe0,                         /* :  meta-\, diamond */
                    252:   0xfe,                         /* : meta-~, centered dot */
                    253:   0xe0,                         /* :  meta-\, diamond */
                    254:   0xfe,                         /* : meta-~, centered dot */
                    255:   0xfe,                         /* : meta-~, centered dot */
                    256:   0x00,
                    257:   0x00,
                    258:   0x00,
                    259:   0x00,
                    260:   /*40 */ 0xe0,
                    261:   /* : meta-\, diamond */
                    262:   0x00,
                    263:   0x00,
                    264:   0x00,
                    265:   0x00,
                    266:   0x00,
                    267:   0x00,
                    268:   0x00,
                    269:   0x00,
                    270:   0x00,
                    271: /*50*/ 0x00,
                    272:   0x00,
                    273:   0x00,
                    274:   0x00,
                    275:   0x00,
                    276:   0x00,
                    277:   0x00,
                    278:   0x00,
                    279:   0x00,                         /* 0xbd, \E)3: meta-=, int'l currency */
                    280:   0x00,
                    281: /*60*/ 0x00,
                    282:   0x00,
                    283:   0x00,
                    284:   0xf8,                         /* : meta-x, vertical rule */
                    285:   0xf1,                         /* : meta-q, horizontal rule */
                    286:   0x00,
                    287:   0x00,
                    288:   0x00,
                    289:   0x00,
                    290:   0x00,
                    291: /*70*/ 0x00,
                    292:   0x00,
                    293:   0x00,
                    294:   0x00,
                    295:   0x00,
                    296:   0x00,
                    297:   0xef,                         /* : meta-o, high horizontal line */
                    298:   0x00,
                    299:   0xf8,                         /* : meta-x, vertical rule */
                    300:   0xf8,                         /* : meta-x, vertical rule */
                    301: /*80*/ 0x00,
                    302:   0xf3,                         /* : meta-s, low horizontal line */
                    303:   0x00,
                    304:   0x00,
                    305:   0xef,                         /* :  meta-o, high horizontal line */
                    306:   0x00,
                    307:   0xf8,                         /* :  meta-x, vertical rule */
                    308:   0x00,
                    309:   0xf8,                         /* :  meta-x, vertical rule */
                    310:   0x00,
                    311:   /*90 */ 0xf3,
                    312:   /* :  meta-s, low horizontal line */
                    313:   0x00
                    314: };
                    315:
                    316: static unsigned char IBM_r_oc_syms[18] = {  /* a la EPYX Rogue */
                    317: /* 0*/ '\0',
                    318:   0x00,
                    319:   0x18,                         /* weapon: up arrow */
                    320:   /*  0x0a, */ 0x00,
                    321:   /* armor:  Vert rect with o */
                    322:   /*  0x09, */ 0x00,
                    323:   /* ring:   circle with arrow */
                    324:   /* 5 */ 0x0c,
                    325:   /* amulet: "female" symbol */
                    326:   0x00,
                    327:   0x05,                         /* food:   club (as in cards) */
                    328:   0xad,                         /* potion: upside down '!' */
                    329:   0x0e,                         /* scroll: musical note */
                    330: /*10*/ 0x00,
                    331:   0xe7,                         /* wand:   greek tau */
                    332:   0x0f,                         /* gold:   yes it's the same as gems */
                    333:   0x0f,                         /* gems:   fancy '*' */
                    334:   0x00,
                    335: /*15*/ 0x00,
                    336:   0x00,
                    337:   0x00
                    338: };
                    339:
                    340: void
                    341: populate_gfx_array (int gfxset)
                    342: {
                    343:   int i;
                    344:
                    345:   state = 0;
                    346:
                    347:   memset (gfx_map, 0, 256);
                    348:
                    349:   if (gfxset == NO_GRAPHICS)
                    350:     return;
                    351:
                    352:   for (i = 0; i < MAXPCHARS; i++)
                    353:     {
                    354:       if ((gfxset == DEC_GRAPHICS) && (dec_graphics[i])
                    355:           && !(gfx_map[dec_graphics[i]]))
                    356:         gfx_map[dec_graphics[i] - 128] = no_graphics[i];
                    357:       if ((gfxset == IBM_GRAPHICS) && (ibm_graphics[i]))
                    358:         gfx_map[ibm_graphics[i]] = no_graphics[i];
                    359:     }
                    360:
                    361:   if (gfxset == IBM_GRAPHICS)
                    362:     state = -1;
                    363:
                    364:   /*
                    365:      endwin();
                    366:      for (i=0;i<256;i++) {
                    367:      printf("%X:%X ",i,gfx_map[i]);
                    368:      }
                    369:      exit(1);  */
                    370: }
                    371:
                    372: unsigned char
                    373: strip_gfx (unsigned char inchar)
                    374: {
                    375:   if ((inchar == 0x0E) && (state == 0))
                    376:     {
                    377:       state = 1;
                    378:       return 0x00;
                    379:     }
                    380:
                    381:   if ((inchar == 0x0F) && (state == 1))
                    382:     {
                    383:       state = 0;
                    384:       return inchar;
                    385:     }
                    386:
                    387:   if ((inchar == 0x1B) && (state == 1))
                    388:     {
                    389:       state = 0;
                    390:       return inchar;
                    391:     }
                    392:
                    393:   if (gfx_map[inchar] && (state == 1 || state == -1))
                    394:     {
                    395:       return gfx_map[inchar];
                    396:     }
                    397:
                    398:   return inchar;
                    399: }

CVSweb