]> granicus.if.org Git - nethack/commitdiff
split symbols bits from drawing.c; new file src/symbols.c
authornhmall <nhmall@nethack.org>
Wed, 6 May 2020 14:55:54 +0000 (10:55 -0400)
committernhmall <nhmall@nethack.org>
Wed, 6 May 2020 14:55:54 +0000 (10:55 -0400)
src/drawing.c
src/symbols.c [new file with mode: 0644]
sys/msdos/Makefile1.cross
sys/msdos/Makefile2.cross
sys/unix/Makefile.src
sys/unix/Makefile.utl
sys/winnt/Makefile.msc
win/win32/vs2017/NetHack.vcxproj
win/win32/vs2017/NetHackW.vcxproj
win/win32/vs2017/tile2bmp.vcxproj

index 6bc35abd8304716e1568f63e67a0335a6fcdbd8f..cc752081b65a5707250430feb407b010ba8ec234 100644 (file)
@@ -2,15 +2,11 @@
 /* Copyright (c) NetHack Development Team 1992.                   */
 /* NetHack may be freely redistributed.  See license for details. */
 
-#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_TARGET)
-#include "hack.h"
-#else
 #include "config.h"
 #include "color.h"
 #include "rm.h"
 #include "objclass.h"
 #include "monsym.h"
-#endif
 #include "tcap.h"
 
 /* Relevant header information in rm.h, objclass.h, and monsym.h. */
@@ -240,7 +236,7 @@ const struct symdef defsyms[MAXPCHARS] = {
 };
 
 /* default rogue level symbols */
-static const uchar def_r_oc_syms[MAXOCLASSES] = {
+const uchar def_r_oc_syms[MAXOCLASSES] = {
 /* 0*/ '\0', ILLOBJ_SYM, WEAPON_SYM, ']', /* armor */
        RING_SYM,
 /* 5*/ ',',                     /* amulet */
@@ -254,19 +250,6 @@ static const uchar def_r_oc_syms[MAXOCLASSES] = {
 
 #undef C
 
-#if defined(TERMLIB) || defined(CURSES_GRAPHICS)
-void NDECL((*decgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
-#endif /* TERMLIB || CURSES */
-
-#ifdef PC9800
-void NDECL((*ibmgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
-void NDECL((*ascgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
-#endif
-
-#ifdef CURSES_GRAPHICS
-void NDECL((*cursesgraphics_mode_callback)) = 0;
-#endif
-
 /*
  * Convert the given character to an object class.  If the character is not
  * recognized, then MAXOCLASSES is returned.  Used in detect.c, invent.c,
@@ -328,538 +311,4 @@ char ch;
     return -1;
 }
 
-#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_TARGET)
-/*
- * Explanations of the functions found below:
- *
- * init_symbols()
- *                     Sets the current display symbols, the
- *                     loadable symbols to the default NetHack
- *                     symbols, including the rogue_syms rogue level
- *                     symbols. This would typically be done
- *                     immediately after execution begins. Any
- *                     previously loaded external symbol sets are
- *                     discarded.
- *
- * switch_symbols(arg)
- *                     Called to swap in new current display symbols
- *                     (showsyms) from either the default symbols,
- *                     or from the loaded symbols.
- *
- *                     If (arg == 0) then showsyms are taken from
- *                     defsyms, def_oc_syms, and def_monsyms.
- *
- *                     If (arg != 0), which is the normal expected
- *                     usage, then showsyms are taken from the
- *                     adjustable display symbols found in g.primary_syms.
- *                     g.primary_syms may have been loaded from an external
- *                     symbol file by config file options or interactively
- *                     in the Options menu.
- *
- * assign_graphics(arg)
- *
- *                     This is used in the game core to toggle in and
- *                     out of other {rogue} level display modes.
- *
- *                     If arg is ROGUESET, this places the rogue level
- *                     symbols from g.rogue_syms into g.showsyms.
- *
- *                     If arg is PRIMARY, this places the symbols
- *                     from g.primary_syms into g.showsyms.
- *
- * update_primary_symset()
- *                     Update a member of the primary(primary_*) symbol set.
- *
- * update_rogue_symset()
- *                     Update a member of the rogue (rogue_*) symbol set.
- *
- * update_ov_primary_symset()
- *                     Update a member of the overrides for primary symbol set.
- *
- * update_ov_rogue_symset()
- *                     Update a member of the overrides for rogue symbol set.
- *
- */
-
-void
-init_symbols()
-{
-    init_ov_primary_symbols();
-    init_ov_rogue_symbols();
-    init_primary_symbols();
-    init_showsyms();
-    init_rogue_symbols();
-}
-
-void
-init_showsyms()
-{
-    register int i;
-
-    for (i = 0; i < MAXPCHARS; i++)
-        g.showsyms[i + SYM_OFF_P] = defsyms[i].sym;
-    for (i = 0; i < MAXOCLASSES; i++)
-        g.showsyms[i + SYM_OFF_O] = def_oc_syms[i].sym;
-    for (i = 0; i < MAXMCLASSES; i++)
-        g.showsyms[i + SYM_OFF_M] = def_monsyms[i].sym;
-    for (i = 0; i < WARNCOUNT; i++)
-        g.showsyms[i + SYM_OFF_W] = def_warnsyms[i].sym;
-    for (i = 0; i < MAXOTHER; i++)
-        g.showsyms[i + SYM_OFF_X] = get_othersym(i, PRIMARY);
-}
-
-/* initialize defaults for the overrides to the rogue symset */
-void
-init_ov_rogue_symbols()
-{
-    register int i;
-
-    for (i = 0; i < SYM_MAX; i++)
-        g.ov_rogue_syms[i] = (nhsym) 0;
-}
-/* initialize defaults for the overrides to the primary symset */
-void
-init_ov_primary_symbols()
-{
-    register int i;
-
-    for (i = 0; i < SYM_MAX; i++)
-        g.ov_primary_syms[i] = (nhsym) 0;
-}
-
-nhsym
-get_othersym(idx, which_set)
-int idx, which_set;
-{
-    nhsym sym = (nhsym) 0;
-    int oidx = idx + SYM_OFF_X;
-
-    if (which_set == ROGUESET)
-        sym = g.ov_rogue_syms[oidx] ? g.ov_rogue_syms[oidx]
-                                  : g.rogue_syms[oidx];
-    else
-        sym = g.ov_primary_syms[oidx] ? g.ov_primary_syms[oidx]
-                                  : g.primary_syms[oidx];
-    if (!sym) {
-        switch(idx) {
-            case SYM_NOTHING:
-            case SYM_UNEXPLORED:
-                sym = DEF_NOTHING;
-                break;
-            case SYM_BOULDER:
-                sym = def_oc_syms[ROCK_CLASS].sym;
-                break;
-            case SYM_INVISIBLE:
-                sym = DEF_INVISIBLE;
-                break;
-#if 0
-            /* these intentionally have no defaults */
-            case SYM_PET_OVERRIDE:
-            case SYM_HERO_OVERRIDE:
-                break;
-#endif
-        }
-    }
-    return sym;
-}
-
-/* initialize defaults for the primary symset */
-void
-init_primary_symbols()
-{
-    register int i;
-
-    for (i = 0; i < MAXPCHARS; i++)
-        g.primary_syms[i + SYM_OFF_P] = defsyms[i].sym;
-    for (i = 0; i < MAXOCLASSES; i++)
-        g.primary_syms[i + SYM_OFF_O] = def_oc_syms[i].sym;
-    for (i = 0; i < MAXMCLASSES; i++)
-        g.primary_syms[i + SYM_OFF_M] = def_monsyms[i].sym;
-    for (i = 0; i < WARNCOUNT; i++)
-        g.primary_syms[i + SYM_OFF_W] = def_warnsyms[i].sym;
-    for (i = 0; i < MAXOTHER; i++)
-        g.primary_syms[i + SYM_OFF_X] = get_othersym(i, PRIMARY);
-
-    clear_symsetentry(PRIMARY, FALSE);
-}
-
-/* initialize defaults for the rogue symset */
-void
-init_rogue_symbols()
-{
-    register int i;
-
-    /* These are defaults that can get overwritten
-       later by the roguesymbols option */
-
-    for (i = 0; i < MAXPCHARS; i++)
-        g.rogue_syms[i + SYM_OFF_P] = defsyms[i].sym;
-    g.rogue_syms[S_vodoor] = g.rogue_syms[S_hodoor] = g.rogue_syms[S_ndoor] = '+';
-    g.rogue_syms[S_upstair] = g.rogue_syms[S_dnstair] = '%';
-
-    for (i = 0; i < MAXOCLASSES; i++)
-        g.rogue_syms[i + SYM_OFF_O] = def_r_oc_syms[i];
-    for (i = 0; i < MAXMCLASSES; i++)
-        g.rogue_syms[i + SYM_OFF_M] = def_monsyms[i].sym;
-    for (i = 0; i < WARNCOUNT; i++)
-        g.rogue_syms[i + SYM_OFF_W] = def_warnsyms[i].sym;
-    for (i = 0; i < MAXOTHER; i++)
-        g.rogue_syms[i + SYM_OFF_X] = get_othersym(i, ROGUESET);
-
-    clear_symsetentry(ROGUESET, FALSE);
-    /* default on Rogue level is no color
-     * but some symbol sets can override that
-     */
-    g.symset[ROGUESET].nocolor = 1;
-}
-
-void
-assign_graphics(whichset)
-int whichset;
-{
-    register int i;
-
-    switch (whichset) {
-    case ROGUESET:
-        /* Adjust graphics display characters on Rogue levels */
-
-        for (i = 0; i < SYM_MAX; i++)
-            g.showsyms[i] = g.ov_rogue_syms[i] ? g.ov_rogue_syms[i]
-                                           : g.rogue_syms[i];
-
-#if defined(MSDOS) && defined(USE_TILES)
-        if (iflags.grmode)
-            tileview(FALSE);
-#endif
-        g.currentgraphics = ROGUESET;
-        break;
-
-    case PRIMARY:
-    default:
-        for (i = 0; i < SYM_MAX; i++)
-            g.showsyms[i] = g.ov_primary_syms[i] ? g.ov_primary_syms[i]
-                                             : g.primary_syms[i];
-
-#if defined(MSDOS) && defined(USE_TILES)
-        if (iflags.grmode)
-            tileview(TRUE);
-#endif
-        g.currentgraphics = PRIMARY;
-        break;
-    }
-}
-
-void
-switch_symbols(nondefault)
-int nondefault;
-{
-    register int i;
-
-    if (nondefault) {
-        for (i = 0; i < SYM_MAX; i++)
-            g.showsyms[i] = g.ov_primary_syms[i] ? g.ov_primary_syms[i]
-                                             : g.primary_syms[i];
-#ifdef PC9800
-        if (SYMHANDLING(H_IBM) && ibmgraphics_mode_callback)
-            (*ibmgraphics_mode_callback)();
-        else if (SYMHANDLING(H_UNK) && ascgraphics_mode_callback)
-            (*ascgraphics_mode_callback)();
-#endif
-#if defined(TERMLIB) || defined(CURSES_GRAPHICS)
-        /* curses doesn't assign any routine to dec..._callback but
-           probably does the expected initialization under the hood
-           for terminals capable of rendering DECgraphics */
-        if (SYMHANDLING(H_DEC) && decgraphics_mode_callback)
-            (*decgraphics_mode_callback)();
-# ifdef CURSES_GRAPHICS
-        /* there aren't any symbol sets with CURS handling, and the
-           curses interface never assigns a routine to curses..._callback */
-        if (SYMHANDLING(H_CURS) && cursesgraphics_mode_callback)
-            (*cursesgraphics_mode_callback)();
-# endif
-#endif
-    } else {
-        init_primary_symbols();
-        init_showsyms();
-    }
-}
-
-void
-update_ov_primary_symset(symp, val)
-struct symparse *symp;
-int val;
-{
-    g.ov_primary_syms[symp->idx] = val;
-}
-
-void
-update_ov_rogue_symset(symp, val)
-struct symparse *symp;
-int val;
-{
-    g.ov_rogue_syms[symp->idx] = val;
-}
-
-void
-update_primary_symset(symp, val)
-struct symparse *symp;
-int val;
-{
-    g.primary_syms[symp->idx] = val;
-}
-
-void
-update_rogue_symset(symp, val)
-struct symparse *symp;
-int val;
-{
-    g.rogue_syms[symp->idx] = val;
-}
-
-void
-clear_symsetentry(which_set, name_too)
-int which_set;
-boolean name_too;
-{
-    if (g.symset[which_set].desc)
-        free((genericptr_t) g.symset[which_set].desc);
-    g.symset[which_set].desc = (char *) 0;
-
-    g.symset[which_set].handling = H_UNK;
-    g.symset[which_set].nocolor = 0;
-    /* initialize restriction bits */
-    g.symset[which_set].primary = 0;
-    g.symset[which_set].rogue = 0;
-
-    if (name_too) {
-        if (g.symset[which_set].name)
-            free((genericptr_t) g.symset[which_set].name);
-        g.symset[which_set].name = (char *) 0;
-    }
-}
-
-/*
- * If you are adding code somewhere to be able to recognize
- * particular types of symset "handling", define a
- * H_XXX macro in include/rm.h and add the name
- * to this array at the matching offset.
- */
-const char *known_handling[] = {
-    "UNKNOWN", /* H_UNK  */
-    "IBM",     /* H_IBM  */
-    "DEC",     /* H_DEC  */
-    "CURS",    /* H_CURS */
-    "MAC",     /* H_MAC  -- pre-OSX MACgraphics */
-    (const char *) 0,
-};
-
-/*
- * Accepted keywords for symset restrictions.
- * These can be virtually anything that you want to
- * be able to test in the code someplace.
- * Be sure to:
- *    - add a corresponding Bitfield to the symsetentry struct in rm.h
- *    - initialize the field to zero in parse_sym_line in the SYM_CONTROL
- *      case 0 section of the idx switch. The location is prefaced with
- *      with a comment stating "initialize restriction bits".
- *    - set the value appropriately based on the index of your keyword
- *      under the case 5 sections of the same SYM_CONTROL idx switches.
- *    - add the field to clear_symsetentry()
- */
-const char *known_restrictions[] = {
-    "primary", "rogue", (const char *) 0,
-};
-
-const struct symparse loadsyms[] = {
-    { SYM_CONTROL, 0, "start" },
-    { SYM_CONTROL, 0, "begin" },
-    { SYM_CONTROL, 1, "finish" },
-    { SYM_CONTROL, 2, "handling" },
-    { SYM_CONTROL, 3, "description" },
-    { SYM_CONTROL, 4, "color" },
-    { SYM_CONTROL, 4, "colour" },
-    { SYM_CONTROL, 5, "restrictions" },
-    { SYM_PCHAR, S_stone, "S_stone" },
-    { SYM_PCHAR, S_vwall, "S_vwall" },
-    { SYM_PCHAR, S_hwall, "S_hwall" },
-    { SYM_PCHAR, S_tlcorn, "S_tlcorn" },
-    { SYM_PCHAR, S_trcorn, "S_trcorn" },
-    { SYM_PCHAR, S_blcorn, "S_blcorn" },
-    { SYM_PCHAR, S_brcorn, "S_brcorn" },
-    { SYM_PCHAR, S_crwall, "S_crwall" },
-    { SYM_PCHAR, S_tuwall, "S_tuwall" },
-    { SYM_PCHAR, S_tdwall, "S_tdwall" },
-    { SYM_PCHAR, S_tlwall, "S_tlwall" },
-    { SYM_PCHAR, S_trwall, "S_trwall" },
-    { SYM_PCHAR, S_ndoor, "S_ndoor" },
-    { SYM_PCHAR, S_vodoor, "S_vodoor" },
-    { SYM_PCHAR, S_hodoor, "S_hodoor" },
-    { SYM_PCHAR, S_vcdoor, "S_vcdoor" },
-    { SYM_PCHAR, S_hcdoor, "S_hcdoor" },
-    { SYM_PCHAR, S_bars, "S_bars" },
-    { SYM_PCHAR, S_tree, "S_tree" },
-    { SYM_PCHAR, S_room, "S_room" },
-    { SYM_PCHAR, S_darkroom, "S_darkroom" },
-    { SYM_PCHAR, S_corr, "S_corr" },
-    { SYM_PCHAR, S_litcorr, "S_litcorr" },
-    { SYM_PCHAR, S_upstair, "S_upstair" },
-    { SYM_PCHAR, S_dnstair, "S_dnstair" },
-    { SYM_PCHAR, S_upladder, "S_upladder" },
-    { SYM_PCHAR, S_dnladder, "S_dnladder" },
-    { SYM_PCHAR, S_altar, "S_altar" },
-    { SYM_PCHAR, S_grave, "S_grave" },
-    { SYM_PCHAR, S_throne, "S_throne" },
-    { SYM_PCHAR, S_sink, "S_sink" },
-    { SYM_PCHAR, S_fountain, "S_fountain" },
-    { SYM_PCHAR, S_pool, "S_pool" },
-    { SYM_PCHAR, S_ice, "S_ice" },
-    { SYM_PCHAR, S_lava, "S_lava" },
-    { SYM_PCHAR, S_vodbridge, "S_vodbridge" },
-    { SYM_PCHAR, S_hodbridge, "S_hodbridge" },
-    { SYM_PCHAR, S_vcdbridge, "S_vcdbridge" },
-    { SYM_PCHAR, S_hcdbridge, "S_hcdbridge" },
-    { SYM_PCHAR, S_air, "S_air" },
-    { SYM_PCHAR, S_cloud, "S_cloud" },
-    { SYM_PCHAR, S_poisoncloud, "S_poisoncloud" },
-    { SYM_PCHAR, S_water, "S_water" },
-    { SYM_PCHAR, S_arrow_trap, "S_arrow_trap" },
-    { SYM_PCHAR, S_dart_trap, "S_dart_trap" },
-    { SYM_PCHAR, S_falling_rock_trap, "S_falling_rock_trap" },
-    { SYM_PCHAR, S_squeaky_board, "S_squeaky_board" },
-    { SYM_PCHAR, S_bear_trap, "S_bear_trap" },
-    { SYM_PCHAR, S_land_mine, "S_land_mine" },
-    { SYM_PCHAR, S_rolling_boulder_trap, "S_rolling_boulder_trap" },
-    { SYM_PCHAR, S_sleeping_gas_trap, "S_sleeping_gas_trap" },
-    { SYM_PCHAR, S_rust_trap, "S_rust_trap" },
-    { SYM_PCHAR, S_fire_trap, "S_fire_trap" },
-    { SYM_PCHAR, S_pit, "S_pit" },
-    { SYM_PCHAR, S_spiked_pit, "S_spiked_pit" },
-    { SYM_PCHAR, S_hole, "S_hole" },
-    { SYM_PCHAR, S_trap_door, "S_trap_door" },
-    { SYM_PCHAR, S_teleportation_trap, "S_teleportation_trap" },
-    { SYM_PCHAR, S_level_teleporter, "S_level_teleporter" },
-    { SYM_PCHAR, S_magic_portal, "S_magic_portal" },
-    { SYM_PCHAR, S_web, "S_web" },
-    { SYM_PCHAR, S_statue_trap, "S_statue_trap" },
-    { SYM_PCHAR, S_magic_trap, "S_magic_trap" },
-    { SYM_PCHAR, S_anti_magic_trap, "S_anti_magic_trap" },
-    { SYM_PCHAR, S_polymorph_trap, "S_polymorph_trap" },
-    { SYM_PCHAR, S_vibrating_square, "S_vibrating_square" },
-    { SYM_PCHAR, S_vbeam, "S_vbeam" },
-    { SYM_PCHAR, S_hbeam, "S_hbeam" },
-    { SYM_PCHAR, S_lslant, "S_lslant" },
-    { SYM_PCHAR, S_rslant, "S_rslant" },
-    { SYM_PCHAR, S_digbeam, "S_digbeam" },
-    { SYM_PCHAR, S_flashbeam, "S_flashbeam" },
-    { SYM_PCHAR, S_boomleft, "S_boomleft" },
-    { SYM_PCHAR, S_boomright, "S_boomright" },
-    { SYM_PCHAR, S_goodpos, "S_goodpos" },
-    { SYM_PCHAR, S_ss1, "S_ss1" },
-    { SYM_PCHAR, S_ss2, "S_ss2" },
-    { SYM_PCHAR, S_ss3, "S_ss3" },
-    { SYM_PCHAR, S_ss4, "S_ss4" },
-    { SYM_PCHAR, S_sw_tl, "S_sw_tl" },
-    { SYM_PCHAR, S_sw_tc, "S_sw_tc" },
-    { SYM_PCHAR, S_sw_tr, "S_sw_tr" },
-    { SYM_PCHAR, S_sw_ml, "S_sw_ml" },
-    { SYM_PCHAR, S_sw_mr, "S_sw_mr" },
-    { SYM_PCHAR, S_sw_bl, "S_sw_bl" },
-    { SYM_PCHAR, S_sw_bc, "S_sw_bc" },
-    { SYM_PCHAR, S_sw_br, "S_sw_br" },
-    { SYM_PCHAR, S_explode1, "S_explode1" },
-    { SYM_PCHAR, S_explode2, "S_explode2" },
-    { SYM_PCHAR, S_explode3, "S_explode3" },
-    { SYM_PCHAR, S_explode4, "S_explode4" },
-    { SYM_PCHAR, S_explode5, "S_explode5" },
-    { SYM_PCHAR, S_explode6, "S_explode6" },
-    { SYM_PCHAR, S_explode7, "S_explode7" },
-    { SYM_PCHAR, S_explode8, "S_explode8" },
-    { SYM_PCHAR, S_explode9, "S_explode9" },
-    { SYM_OC, ILLOBJ_CLASS + SYM_OFF_O, "S_strange_obj" },
-    { SYM_OC, WEAPON_CLASS + SYM_OFF_O, "S_weapon" },
-    { SYM_OC, ARMOR_CLASS + SYM_OFF_O, "S_armor" },
-    { SYM_OC, ARMOR_CLASS + SYM_OFF_O, "S_armour" },
-    { SYM_OC, RING_CLASS + SYM_OFF_O, "S_ring" },
-    { SYM_OC, AMULET_CLASS + SYM_OFF_O, "S_amulet" },
-    { SYM_OC, TOOL_CLASS + SYM_OFF_O, "S_tool" },
-    { SYM_OC, FOOD_CLASS + SYM_OFF_O, "S_food" },
-    { SYM_OC, POTION_CLASS + SYM_OFF_O, "S_potion" },
-    { SYM_OC, SCROLL_CLASS + SYM_OFF_O, "S_scroll" },
-    { SYM_OC, SPBOOK_CLASS + SYM_OFF_O, "S_book" },
-    { SYM_OC, WAND_CLASS + SYM_OFF_O, "S_wand" },
-    { SYM_OC, COIN_CLASS + SYM_OFF_O, "S_coin" },
-    { SYM_OC, GEM_CLASS + SYM_OFF_O, "S_gem" },
-    { SYM_OC, ROCK_CLASS + SYM_OFF_O, "S_rock" },
-    { SYM_OC, BALL_CLASS + SYM_OFF_O, "S_ball" },
-    { SYM_OC, CHAIN_CLASS + SYM_OFF_O, "S_chain" },
-    { SYM_OC, VENOM_CLASS + SYM_OFF_O, "S_venom" },
-    { SYM_MON, S_ANT + SYM_OFF_M, "S_ant" },
-    { SYM_MON, S_BLOB + SYM_OFF_M, "S_blob" },
-    { SYM_MON, S_COCKATRICE + SYM_OFF_M, "S_cockatrice" },
-    { SYM_MON, S_DOG + SYM_OFF_M, "S_dog" },
-    { SYM_MON, S_EYE + SYM_OFF_M, "S_eye" },
-    { SYM_MON, S_FELINE + SYM_OFF_M, "S_feline" },
-    { SYM_MON, S_GREMLIN + SYM_OFF_M, "S_gremlin" },
-    { SYM_MON, S_HUMANOID + SYM_OFF_M, "S_humanoid" },
-    { SYM_MON, S_IMP + SYM_OFF_M, "S_imp" },
-    { SYM_MON, S_JELLY + SYM_OFF_M, "S_jelly" },
-    { SYM_MON, S_KOBOLD + SYM_OFF_M, "S_kobold" },
-    { SYM_MON, S_LEPRECHAUN + SYM_OFF_M, "S_leprechaun" },
-    { SYM_MON, S_MIMIC + SYM_OFF_M, "S_mimic" },
-    { SYM_MON, S_NYMPH + SYM_OFF_M, "S_nymph" },
-    { SYM_MON, S_ORC + SYM_OFF_M, "S_orc" },
-    { SYM_MON, S_PIERCER + SYM_OFF_M, "S_piercer" },
-    { SYM_MON, S_QUADRUPED + SYM_OFF_M, "S_quadruped" },
-    { SYM_MON, S_RODENT + SYM_OFF_M, "S_rodent" },
-    { SYM_MON, S_SPIDER + SYM_OFF_M, "S_spider" },
-    { SYM_MON, S_TRAPPER + SYM_OFF_M, "S_trapper" },
-    { SYM_MON, S_UNICORN + SYM_OFF_M, "S_unicorn" },
-    { SYM_MON, S_VORTEX + SYM_OFF_M, "S_vortex" },
-    { SYM_MON, S_WORM + SYM_OFF_M, "S_worm" },
-    { SYM_MON, S_XAN + SYM_OFF_M, "S_xan" },
-    { SYM_MON, S_LIGHT + SYM_OFF_M, "S_light" },
-    { SYM_MON, S_ZRUTY + SYM_OFF_M, "S_zruty" },
-    { SYM_MON, S_ANGEL + SYM_OFF_M, "S_angel" },
-    { SYM_MON, S_BAT + SYM_OFF_M, "S_bat" },
-    { SYM_MON, S_CENTAUR + SYM_OFF_M, "S_centaur" },
-    { SYM_MON, S_DRAGON + SYM_OFF_M, "S_dragon" },
-    { SYM_MON, S_ELEMENTAL + SYM_OFF_M, "S_elemental" },
-    { SYM_MON, S_FUNGUS + SYM_OFF_M, "S_fungus" },
-    { SYM_MON, S_GNOME + SYM_OFF_M, "S_gnome" },
-    { SYM_MON, S_GIANT + SYM_OFF_M, "S_giant" },
-    { SYM_MON, S_JABBERWOCK + SYM_OFF_M, "S_jabberwock" },
-    { SYM_MON, S_KOP + SYM_OFF_M, "S_kop" },
-    { SYM_MON, S_LICH + SYM_OFF_M, "S_lich" },
-    { SYM_MON, S_MUMMY + SYM_OFF_M, "S_mummy" },
-    { SYM_MON, S_NAGA + SYM_OFF_M, "S_naga" },
-    { SYM_MON, S_OGRE + SYM_OFF_M, "S_ogre" },
-    { SYM_MON, S_PUDDING + SYM_OFF_M, "S_pudding" },
-    { SYM_MON, S_QUANTMECH + SYM_OFF_M, "S_quantmech" },
-    { SYM_MON, S_RUSTMONST + SYM_OFF_M, "S_rustmonst" },
-    { SYM_MON, S_SNAKE + SYM_OFF_M, "S_snake" },
-    { SYM_MON, S_TROLL + SYM_OFF_M, "S_troll" },
-    { SYM_MON, S_UMBER + SYM_OFF_M, "S_umber" },
-    { SYM_MON, S_VAMPIRE + SYM_OFF_M, "S_vampire" },
-    { SYM_MON, S_WRAITH + SYM_OFF_M, "S_wraith" },
-    { SYM_MON, S_XORN + SYM_OFF_M, "S_xorn" },
-    { SYM_MON, S_YETI + SYM_OFF_M, "S_yeti" },
-    { SYM_MON, S_ZOMBIE + SYM_OFF_M, "S_zombie" },
-    { SYM_MON, S_HUMAN + SYM_OFF_M, "S_human" },
-    { SYM_MON, S_GHOST + SYM_OFF_M, "S_ghost" },
-    { SYM_MON, S_GOLEM + SYM_OFF_M, "S_golem" },
-    { SYM_MON, S_DEMON + SYM_OFF_M, "S_demon" },
-    { SYM_MON, S_EEL + SYM_OFF_M, "S_eel" },
-    { SYM_MON, S_LIZARD + SYM_OFF_M, "S_lizard" },
-    { SYM_MON, S_WORM_TAIL + SYM_OFF_M, "S_worm_tail" },
-    { SYM_MON, S_MIMIC_DEF + SYM_OFF_M, "S_mimic_def" },
-    { SYM_OTH, SYM_NOTHING + SYM_OFF_X, "S_nothing" },
-    { SYM_OTH, SYM_UNEXPLORED + SYM_OFF_X, "S_unexplored" },
-    { SYM_OTH, SYM_BOULDER + SYM_OFF_X, "S_boulder" },
-    { SYM_OTH, SYM_INVISIBLE + SYM_OFF_X, "S_invisible" },
-    { SYM_OTH, SYM_PET_OVERRIDE + SYM_OFF_X, "S_pet_override" },
-    { SYM_OTH, SYM_HERO_OVERRIDE + SYM_OFF_X, "S_hero_override" },
-    { 0, 0, (const char *) 0 } /* fence post */
-};
-#endif /* !CROSSCOMPILE || CROSSCOMPILE_TARGET */
-
 /*drawing.c*/
diff --git a/src/symbols.c b/src/symbols.c
new file mode 100644 (file)
index 0000000..efb76c3
--- /dev/null
@@ -0,0 +1,553 @@
+/* NetHack 3.6 symbols.c       $NHDT-Date: 1588776075 2020/05/06 14:41:15 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.0 $ */
+/* Copyright (c) NetHack Development Team 2020.                   */
+/* NetHack may be freely redistributed.  See license for details. */
+
+#include "hack.h"
+
+extern const uchar def_r_oc_syms[MAXOCLASSES];      /* drawing.c */
+
+#if defined(TERMLIB) || defined(CURSES_GRAPHICS)
+void NDECL((*decgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
+#endif /* TERMLIB || CURSES */
+
+#ifdef PC9800
+void NDECL((*ibmgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
+void NDECL((*ascgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
+#endif
+
+#ifdef CURSES_GRAPHICS
+void NDECL((*cursesgraphics_mode_callback)) = 0;
+#endif
+/*
+ * Explanations of the functions found below:
+ *
+ * init_symbols()
+ *                     Sets the current display symbols, the
+ *                     loadable symbols to the default NetHack
+ *                     symbols, including the rogue_syms rogue level
+ *                     symbols. This would typically be done
+ *                     immediately after execution begins. Any
+ *                     previously loaded external symbol sets are
+ *                     discarded.
+ *
+ * switch_symbols(arg)
+ *                     Called to swap in new current display symbols
+ *                     (showsyms) from either the default symbols,
+ *                     or from the loaded symbols.
+ *
+ *                     If (arg == 0) then showsyms are taken from
+ *                     defsyms, def_oc_syms, and def_monsyms.
+ *
+ *                     If (arg != 0), which is the normal expected
+ *                     usage, then showsyms are taken from the
+ *                     adjustable display symbols found in g.primary_syms.
+ *                     g.primary_syms may have been loaded from an external
+ *                     symbol file by config file options or interactively
+ *                     in the Options menu.
+ *
+ * assign_graphics(arg)
+ *
+ *                     This is used in the game core to toggle in and
+ *                     out of other {rogue} level display modes.
+ *
+ *                     If arg is ROGUESET, this places the rogue level
+ *                     symbols from g.rogue_syms into g.showsyms.
+ *
+ *                     If arg is PRIMARY, this places the symbols
+ *                     from g.primary_syms into g.showsyms.
+ *
+ * update_primary_symset()
+ *                     Update a member of the primary(primary_*) symbol set.
+ *
+ * update_rogue_symset()
+ *                     Update a member of the rogue (rogue_*) symbol set.
+ *
+ * update_ov_primary_symset()
+ *                     Update a member of the overrides for primary symbol set.
+ *
+ * update_ov_rogue_symset()
+ *                     Update a member of the overrides for rogue symbol set.
+ *
+ */
+
+void
+init_symbols()
+{
+    init_ov_primary_symbols();
+    init_ov_rogue_symbols();
+    init_primary_symbols();
+    init_showsyms();
+    init_rogue_symbols();
+}
+
+void
+init_showsyms()
+{
+    register int i;
+
+    for (i = 0; i < MAXPCHARS; i++)
+        g.showsyms[i + SYM_OFF_P] = defsyms[i].sym;
+    for (i = 0; i < MAXOCLASSES; i++)
+        g.showsyms[i + SYM_OFF_O] = def_oc_syms[i].sym;
+    for (i = 0; i < MAXMCLASSES; i++)
+        g.showsyms[i + SYM_OFF_M] = def_monsyms[i].sym;
+    for (i = 0; i < WARNCOUNT; i++)
+        g.showsyms[i + SYM_OFF_W] = def_warnsyms[i].sym;
+    for (i = 0; i < MAXOTHER; i++)
+        g.showsyms[i + SYM_OFF_X] = get_othersym(i, PRIMARY);
+}
+
+/* initialize defaults for the overrides to the rogue symset */
+void
+init_ov_rogue_symbols()
+{
+    register int i;
+
+    for (i = 0; i < SYM_MAX; i++)
+        g.ov_rogue_syms[i] = (nhsym) 0;
+}
+/* initialize defaults for the overrides to the primary symset */
+void
+init_ov_primary_symbols()
+{
+    register int i;
+
+    for (i = 0; i < SYM_MAX; i++)
+        g.ov_primary_syms[i] = (nhsym) 0;
+}
+
+nhsym
+get_othersym(idx, which_set)
+int idx, which_set;
+{
+    nhsym sym = (nhsym) 0;
+    int oidx = idx + SYM_OFF_X;
+
+    if (which_set == ROGUESET)
+        sym = g.ov_rogue_syms[oidx] ? g.ov_rogue_syms[oidx]
+                                  : g.rogue_syms[oidx];
+    else
+        sym = g.ov_primary_syms[oidx] ? g.ov_primary_syms[oidx]
+                                  : g.primary_syms[oidx];
+    if (!sym) {
+        switch(idx) {
+            case SYM_NOTHING:
+            case SYM_UNEXPLORED:
+                sym = DEF_NOTHING;
+                break;
+            case SYM_BOULDER:
+                sym = def_oc_syms[ROCK_CLASS].sym;
+                break;
+            case SYM_INVISIBLE:
+                sym = DEF_INVISIBLE;
+                break;
+#if 0
+            /* these intentionally have no defaults */
+            case SYM_PET_OVERRIDE:
+            case SYM_HERO_OVERRIDE:
+                break;
+#endif
+        }
+    }
+    return sym;
+}
+
+/* initialize defaults for the primary symset */
+void
+init_primary_symbols()
+{
+    register int i;
+
+    for (i = 0; i < MAXPCHARS; i++)
+        g.primary_syms[i + SYM_OFF_P] = defsyms[i].sym;
+    for (i = 0; i < MAXOCLASSES; i++)
+        g.primary_syms[i + SYM_OFF_O] = def_oc_syms[i].sym;
+    for (i = 0; i < MAXMCLASSES; i++)
+        g.primary_syms[i + SYM_OFF_M] = def_monsyms[i].sym;
+    for (i = 0; i < WARNCOUNT; i++)
+        g.primary_syms[i + SYM_OFF_W] = def_warnsyms[i].sym;
+    for (i = 0; i < MAXOTHER; i++)
+        g.primary_syms[i + SYM_OFF_X] = get_othersym(i, PRIMARY);
+
+    clear_symsetentry(PRIMARY, FALSE);
+}
+
+/* initialize defaults for the rogue symset */
+void
+init_rogue_symbols()
+{
+    register int i;
+
+    /* These are defaults that can get overwritten
+       later by the roguesymbols option */
+
+    for (i = 0; i < MAXPCHARS; i++)
+        g.rogue_syms[i + SYM_OFF_P] = defsyms[i].sym;
+    g.rogue_syms[S_vodoor] = g.rogue_syms[S_hodoor] = g.rogue_syms[S_ndoor] = '+';
+    g.rogue_syms[S_upstair] = g.rogue_syms[S_dnstair] = '%';
+
+    for (i = 0; i < MAXOCLASSES; i++)
+        g.rogue_syms[i + SYM_OFF_O] = def_r_oc_syms[i];
+    for (i = 0; i < MAXMCLASSES; i++)
+        g.rogue_syms[i + SYM_OFF_M] = def_monsyms[i].sym;
+    for (i = 0; i < WARNCOUNT; i++)
+        g.rogue_syms[i + SYM_OFF_W] = def_warnsyms[i].sym;
+    for (i = 0; i < MAXOTHER; i++)
+        g.rogue_syms[i + SYM_OFF_X] = get_othersym(i, ROGUESET);
+
+    clear_symsetentry(ROGUESET, FALSE);
+    /* default on Rogue level is no color
+     * but some symbol sets can override that
+     */
+    g.symset[ROGUESET].nocolor = 1;
+}
+
+void
+assign_graphics(whichset)
+int whichset;
+{
+    register int i;
+
+    switch (whichset) {
+    case ROGUESET:
+        /* Adjust graphics display characters on Rogue levels */
+
+        for (i = 0; i < SYM_MAX; i++)
+            g.showsyms[i] = g.ov_rogue_syms[i] ? g.ov_rogue_syms[i]
+                                           : g.rogue_syms[i];
+
+#if defined(MSDOS) && defined(USE_TILES)
+        if (iflags.grmode)
+            tileview(FALSE);
+#endif
+        g.currentgraphics = ROGUESET;
+        break;
+
+    case PRIMARY:
+    default:
+        for (i = 0; i < SYM_MAX; i++)
+            g.showsyms[i] = g.ov_primary_syms[i] ? g.ov_primary_syms[i]
+                                             : g.primary_syms[i];
+
+#if defined(MSDOS) && defined(USE_TILES)
+        if (iflags.grmode)
+            tileview(TRUE);
+#endif
+        g.currentgraphics = PRIMARY;
+        break;
+    }
+}
+
+void
+switch_symbols(nondefault)
+int nondefault;
+{
+    register int i;
+
+    if (nondefault) {
+        for (i = 0; i < SYM_MAX; i++)
+            g.showsyms[i] = g.ov_primary_syms[i] ? g.ov_primary_syms[i]
+                                             : g.primary_syms[i];
+#ifdef PC9800
+        if (SYMHANDLING(H_IBM) && ibmgraphics_mode_callback)
+            (*ibmgraphics_mode_callback)();
+        else if (SYMHANDLING(H_UNK) && ascgraphics_mode_callback)
+            (*ascgraphics_mode_callback)();
+#endif
+#if defined(TERMLIB) || defined(CURSES_GRAPHICS)
+        /* curses doesn't assign any routine to dec..._callback but
+           probably does the expected initialization under the hood
+           for terminals capable of rendering DECgraphics */
+        if (SYMHANDLING(H_DEC) && decgraphics_mode_callback)
+            (*decgraphics_mode_callback)();
+# ifdef CURSES_GRAPHICS
+        /* there aren't any symbol sets with CURS handling, and the
+           curses interface never assigns a routine to curses..._callback */
+        if (SYMHANDLING(H_CURS) && cursesgraphics_mode_callback)
+            (*cursesgraphics_mode_callback)();
+# endif
+#endif
+    } else {
+        init_primary_symbols();
+        init_showsyms();
+    }
+}
+
+void
+update_ov_primary_symset(symp, val)
+struct symparse *symp;
+int val;
+{
+    g.ov_primary_syms[symp->idx] = val;
+}
+
+void
+update_ov_rogue_symset(symp, val)
+struct symparse *symp;
+int val;
+{
+    g.ov_rogue_syms[symp->idx] = val;
+}
+
+void
+update_primary_symset(symp, val)
+struct symparse *symp;
+int val;
+{
+    g.primary_syms[symp->idx] = val;
+}
+
+void
+update_rogue_symset(symp, val)
+struct symparse *symp;
+int val;
+{
+    g.rogue_syms[symp->idx] = val;
+}
+
+void
+clear_symsetentry(which_set, name_too)
+int which_set;
+boolean name_too;
+{
+    if (g.symset[which_set].desc)
+        free((genericptr_t) g.symset[which_set].desc);
+    g.symset[which_set].desc = (char *) 0;
+
+    g.symset[which_set].handling = H_UNK;
+    g.symset[which_set].nocolor = 0;
+    /* initialize restriction bits */
+    g.symset[which_set].primary = 0;
+    g.symset[which_set].rogue = 0;
+
+    if (name_too) {
+        if (g.symset[which_set].name)
+            free((genericptr_t) g.symset[which_set].name);
+        g.symset[which_set].name = (char *) 0;
+    }
+}
+
+/*
+ * If you are adding code somewhere to be able to recognize
+ * particular types of symset "handling", define a
+ * H_XXX macro in include/rm.h and add the name
+ * to this array at the matching offset.
+ */
+const char *known_handling[] = {
+    "UNKNOWN", /* H_UNK  */
+    "IBM",     /* H_IBM  */
+    "DEC",     /* H_DEC  */
+    "CURS",    /* H_CURS */
+    "MAC",     /* H_MAC  -- pre-OSX MACgraphics */
+    (const char *) 0,
+};
+
+/*
+ * Accepted keywords for symset restrictions.
+ * These can be virtually anything that you want to
+ * be able to test in the code someplace.
+ * Be sure to:
+ *    - add a corresponding Bitfield to the symsetentry struct in rm.h
+ *    - initialize the field to zero in parse_sym_line in the SYM_CONTROL
+ *      case 0 section of the idx switch. The location is prefaced with
+ *      with a comment stating "initialize restriction bits".
+ *    - set the value appropriately based on the index of your keyword
+ *      under the case 5 sections of the same SYM_CONTROL idx switches.
+ *    - add the field to clear_symsetentry()
+ */
+const char *known_restrictions[] = {
+    "primary", "rogue", (const char *) 0,
+};
+
+const struct symparse loadsyms[] = {
+    { SYM_CONTROL, 0, "start" },
+    { SYM_CONTROL, 0, "begin" },
+    { SYM_CONTROL, 1, "finish" },
+    { SYM_CONTROL, 2, "handling" },
+    { SYM_CONTROL, 3, "description" },
+    { SYM_CONTROL, 4, "color" },
+    { SYM_CONTROL, 4, "colour" },
+    { SYM_CONTROL, 5, "restrictions" },
+    { SYM_PCHAR, S_stone, "S_stone" },
+    { SYM_PCHAR, S_vwall, "S_vwall" },
+    { SYM_PCHAR, S_hwall, "S_hwall" },
+    { SYM_PCHAR, S_tlcorn, "S_tlcorn" },
+    { SYM_PCHAR, S_trcorn, "S_trcorn" },
+    { SYM_PCHAR, S_blcorn, "S_blcorn" },
+    { SYM_PCHAR, S_brcorn, "S_brcorn" },
+    { SYM_PCHAR, S_crwall, "S_crwall" },
+    { SYM_PCHAR, S_tuwall, "S_tuwall" },
+    { SYM_PCHAR, S_tdwall, "S_tdwall" },
+    { SYM_PCHAR, S_tlwall, "S_tlwall" },
+    { SYM_PCHAR, S_trwall, "S_trwall" },
+    { SYM_PCHAR, S_ndoor, "S_ndoor" },
+    { SYM_PCHAR, S_vodoor, "S_vodoor" },
+    { SYM_PCHAR, S_hodoor, "S_hodoor" },
+    { SYM_PCHAR, S_vcdoor, "S_vcdoor" },
+    { SYM_PCHAR, S_hcdoor, "S_hcdoor" },
+    { SYM_PCHAR, S_bars, "S_bars" },
+    { SYM_PCHAR, S_tree, "S_tree" },
+    { SYM_PCHAR, S_room, "S_room" },
+    { SYM_PCHAR, S_darkroom, "S_darkroom" },
+    { SYM_PCHAR, S_corr, "S_corr" },
+    { SYM_PCHAR, S_litcorr, "S_litcorr" },
+    { SYM_PCHAR, S_upstair, "S_upstair" },
+    { SYM_PCHAR, S_dnstair, "S_dnstair" },
+    { SYM_PCHAR, S_upladder, "S_upladder" },
+    { SYM_PCHAR, S_dnladder, "S_dnladder" },
+    { SYM_PCHAR, S_altar, "S_altar" },
+    { SYM_PCHAR, S_grave, "S_grave" },
+    { SYM_PCHAR, S_throne, "S_throne" },
+    { SYM_PCHAR, S_sink, "S_sink" },
+    { SYM_PCHAR, S_fountain, "S_fountain" },
+    { SYM_PCHAR, S_pool, "S_pool" },
+    { SYM_PCHAR, S_ice, "S_ice" },
+    { SYM_PCHAR, S_lava, "S_lava" },
+    { SYM_PCHAR, S_vodbridge, "S_vodbridge" },
+    { SYM_PCHAR, S_hodbridge, "S_hodbridge" },
+    { SYM_PCHAR, S_vcdbridge, "S_vcdbridge" },
+    { SYM_PCHAR, S_hcdbridge, "S_hcdbridge" },
+    { SYM_PCHAR, S_air, "S_air" },
+    { SYM_PCHAR, S_cloud, "S_cloud" },
+    { SYM_PCHAR, S_poisoncloud, "S_poisoncloud" },
+    { SYM_PCHAR, S_water, "S_water" },
+    { SYM_PCHAR, S_arrow_trap, "S_arrow_trap" },
+    { SYM_PCHAR, S_dart_trap, "S_dart_trap" },
+    { SYM_PCHAR, S_falling_rock_trap, "S_falling_rock_trap" },
+    { SYM_PCHAR, S_squeaky_board, "S_squeaky_board" },
+    { SYM_PCHAR, S_bear_trap, "S_bear_trap" },
+    { SYM_PCHAR, S_land_mine, "S_land_mine" },
+    { SYM_PCHAR, S_rolling_boulder_trap, "S_rolling_boulder_trap" },
+    { SYM_PCHAR, S_sleeping_gas_trap, "S_sleeping_gas_trap" },
+    { SYM_PCHAR, S_rust_trap, "S_rust_trap" },
+    { SYM_PCHAR, S_fire_trap, "S_fire_trap" },
+    { SYM_PCHAR, S_pit, "S_pit" },
+    { SYM_PCHAR, S_spiked_pit, "S_spiked_pit" },
+    { SYM_PCHAR, S_hole, "S_hole" },
+    { SYM_PCHAR, S_trap_door, "S_trap_door" },
+    { SYM_PCHAR, S_teleportation_trap, "S_teleportation_trap" },
+    { SYM_PCHAR, S_level_teleporter, "S_level_teleporter" },
+    { SYM_PCHAR, S_magic_portal, "S_magic_portal" },
+    { SYM_PCHAR, S_web, "S_web" },
+    { SYM_PCHAR, S_statue_trap, "S_statue_trap" },
+    { SYM_PCHAR, S_magic_trap, "S_magic_trap" },
+    { SYM_PCHAR, S_anti_magic_trap, "S_anti_magic_trap" },
+    { SYM_PCHAR, S_polymorph_trap, "S_polymorph_trap" },
+    { SYM_PCHAR, S_vibrating_square, "S_vibrating_square" },
+    { SYM_PCHAR, S_vbeam, "S_vbeam" },
+    { SYM_PCHAR, S_hbeam, "S_hbeam" },
+    { SYM_PCHAR, S_lslant, "S_lslant" },
+    { SYM_PCHAR, S_rslant, "S_rslant" },
+    { SYM_PCHAR, S_digbeam, "S_digbeam" },
+    { SYM_PCHAR, S_flashbeam, "S_flashbeam" },
+    { SYM_PCHAR, S_boomleft, "S_boomleft" },
+    { SYM_PCHAR, S_boomright, "S_boomright" },
+    { SYM_PCHAR, S_goodpos, "S_goodpos" },
+    { SYM_PCHAR, S_ss1, "S_ss1" },
+    { SYM_PCHAR, S_ss2, "S_ss2" },
+    { SYM_PCHAR, S_ss3, "S_ss3" },
+    { SYM_PCHAR, S_ss4, "S_ss4" },
+    { SYM_PCHAR, S_sw_tl, "S_sw_tl" },
+    { SYM_PCHAR, S_sw_tc, "S_sw_tc" },
+    { SYM_PCHAR, S_sw_tr, "S_sw_tr" },
+    { SYM_PCHAR, S_sw_ml, "S_sw_ml" },
+    { SYM_PCHAR, S_sw_mr, "S_sw_mr" },
+    { SYM_PCHAR, S_sw_bl, "S_sw_bl" },
+    { SYM_PCHAR, S_sw_bc, "S_sw_bc" },
+    { SYM_PCHAR, S_sw_br, "S_sw_br" },
+    { SYM_PCHAR, S_explode1, "S_explode1" },
+    { SYM_PCHAR, S_explode2, "S_explode2" },
+    { SYM_PCHAR, S_explode3, "S_explode3" },
+    { SYM_PCHAR, S_explode4, "S_explode4" },
+    { SYM_PCHAR, S_explode5, "S_explode5" },
+    { SYM_PCHAR, S_explode6, "S_explode6" },
+    { SYM_PCHAR, S_explode7, "S_explode7" },
+    { SYM_PCHAR, S_explode8, "S_explode8" },
+    { SYM_PCHAR, S_explode9, "S_explode9" },
+    { SYM_OC, ILLOBJ_CLASS + SYM_OFF_O, "S_strange_obj" },
+    { SYM_OC, WEAPON_CLASS + SYM_OFF_O, "S_weapon" },
+    { SYM_OC, ARMOR_CLASS + SYM_OFF_O, "S_armor" },
+    { SYM_OC, ARMOR_CLASS + SYM_OFF_O, "S_armour" },
+    { SYM_OC, RING_CLASS + SYM_OFF_O, "S_ring" },
+    { SYM_OC, AMULET_CLASS + SYM_OFF_O, "S_amulet" },
+    { SYM_OC, TOOL_CLASS + SYM_OFF_O, "S_tool" },
+    { SYM_OC, FOOD_CLASS + SYM_OFF_O, "S_food" },
+    { SYM_OC, POTION_CLASS + SYM_OFF_O, "S_potion" },
+    { SYM_OC, SCROLL_CLASS + SYM_OFF_O, "S_scroll" },
+    { SYM_OC, SPBOOK_CLASS + SYM_OFF_O, "S_book" },
+    { SYM_OC, WAND_CLASS + SYM_OFF_O, "S_wand" },
+    { SYM_OC, COIN_CLASS + SYM_OFF_O, "S_coin" },
+    { SYM_OC, GEM_CLASS + SYM_OFF_O, "S_gem" },
+    { SYM_OC, ROCK_CLASS + SYM_OFF_O, "S_rock" },
+    { SYM_OC, BALL_CLASS + SYM_OFF_O, "S_ball" },
+    { SYM_OC, CHAIN_CLASS + SYM_OFF_O, "S_chain" },
+    { SYM_OC, VENOM_CLASS + SYM_OFF_O, "S_venom" },
+    { SYM_MON, S_ANT + SYM_OFF_M, "S_ant" },
+    { SYM_MON, S_BLOB + SYM_OFF_M, "S_blob" },
+    { SYM_MON, S_COCKATRICE + SYM_OFF_M, "S_cockatrice" },
+    { SYM_MON, S_DOG + SYM_OFF_M, "S_dog" },
+    { SYM_MON, S_EYE + SYM_OFF_M, "S_eye" },
+    { SYM_MON, S_FELINE + SYM_OFF_M, "S_feline" },
+    { SYM_MON, S_GREMLIN + SYM_OFF_M, "S_gremlin" },
+    { SYM_MON, S_HUMANOID + SYM_OFF_M, "S_humanoid" },
+    { SYM_MON, S_IMP + SYM_OFF_M, "S_imp" },
+    { SYM_MON, S_JELLY + SYM_OFF_M, "S_jelly" },
+    { SYM_MON, S_KOBOLD + SYM_OFF_M, "S_kobold" },
+    { SYM_MON, S_LEPRECHAUN + SYM_OFF_M, "S_leprechaun" },
+    { SYM_MON, S_MIMIC + SYM_OFF_M, "S_mimic" },
+    { SYM_MON, S_NYMPH + SYM_OFF_M, "S_nymph" },
+    { SYM_MON, S_ORC + SYM_OFF_M, "S_orc" },
+    { SYM_MON, S_PIERCER + SYM_OFF_M, "S_piercer" },
+    { SYM_MON, S_QUADRUPED + SYM_OFF_M, "S_quadruped" },
+    { SYM_MON, S_RODENT + SYM_OFF_M, "S_rodent" },
+    { SYM_MON, S_SPIDER + SYM_OFF_M, "S_spider" },
+    { SYM_MON, S_TRAPPER + SYM_OFF_M, "S_trapper" },
+    { SYM_MON, S_UNICORN + SYM_OFF_M, "S_unicorn" },
+    { SYM_MON, S_VORTEX + SYM_OFF_M, "S_vortex" },
+    { SYM_MON, S_WORM + SYM_OFF_M, "S_worm" },
+    { SYM_MON, S_XAN + SYM_OFF_M, "S_xan" },
+    { SYM_MON, S_LIGHT + SYM_OFF_M, "S_light" },
+    { SYM_MON, S_ZRUTY + SYM_OFF_M, "S_zruty" },
+    { SYM_MON, S_ANGEL + SYM_OFF_M, "S_angel" },
+    { SYM_MON, S_BAT + SYM_OFF_M, "S_bat" },
+    { SYM_MON, S_CENTAUR + SYM_OFF_M, "S_centaur" },
+    { SYM_MON, S_DRAGON + SYM_OFF_M, "S_dragon" },
+    { SYM_MON, S_ELEMENTAL + SYM_OFF_M, "S_elemental" },
+    { SYM_MON, S_FUNGUS + SYM_OFF_M, "S_fungus" },
+    { SYM_MON, S_GNOME + SYM_OFF_M, "S_gnome" },
+    { SYM_MON, S_GIANT + SYM_OFF_M, "S_giant" },
+    { SYM_MON, S_JABBERWOCK + SYM_OFF_M, "S_jabberwock" },
+    { SYM_MON, S_KOP + SYM_OFF_M, "S_kop" },
+    { SYM_MON, S_LICH + SYM_OFF_M, "S_lich" },
+    { SYM_MON, S_MUMMY + SYM_OFF_M, "S_mummy" },
+    { SYM_MON, S_NAGA + SYM_OFF_M, "S_naga" },
+    { SYM_MON, S_OGRE + SYM_OFF_M, "S_ogre" },
+    { SYM_MON, S_PUDDING + SYM_OFF_M, "S_pudding" },
+    { SYM_MON, S_QUANTMECH + SYM_OFF_M, "S_quantmech" },
+    { SYM_MON, S_RUSTMONST + SYM_OFF_M, "S_rustmonst" },
+    { SYM_MON, S_SNAKE + SYM_OFF_M, "S_snake" },
+    { SYM_MON, S_TROLL + SYM_OFF_M, "S_troll" },
+    { SYM_MON, S_UMBER + SYM_OFF_M, "S_umber" },
+    { SYM_MON, S_VAMPIRE + SYM_OFF_M, "S_vampire" },
+    { SYM_MON, S_WRAITH + SYM_OFF_M, "S_wraith" },
+    { SYM_MON, S_XORN + SYM_OFF_M, "S_xorn" },
+    { SYM_MON, S_YETI + SYM_OFF_M, "S_yeti" },
+    { SYM_MON, S_ZOMBIE + SYM_OFF_M, "S_zombie" },
+    { SYM_MON, S_HUMAN + SYM_OFF_M, "S_human" },
+    { SYM_MON, S_GHOST + SYM_OFF_M, "S_ghost" },
+    { SYM_MON, S_GOLEM + SYM_OFF_M, "S_golem" },
+    { SYM_MON, S_DEMON + SYM_OFF_M, "S_demon" },
+    { SYM_MON, S_EEL + SYM_OFF_M, "S_eel" },
+    { SYM_MON, S_LIZARD + SYM_OFF_M, "S_lizard" },
+    { SYM_MON, S_WORM_TAIL + SYM_OFF_M, "S_worm_tail" },
+    { SYM_MON, S_MIMIC_DEF + SYM_OFF_M, "S_mimic_def" },
+    { SYM_OTH, SYM_NOTHING + SYM_OFF_X, "S_nothing" },
+    { SYM_OTH, SYM_UNEXPLORED + SYM_OFF_X, "S_unexplored" },
+    { SYM_OTH, SYM_BOULDER + SYM_OFF_X, "S_boulder" },
+    { SYM_OTH, SYM_INVISIBLE + SYM_OFF_X, "S_invisible" },
+    { SYM_OTH, SYM_PET_OVERRIDE + SYM_OFF_X, "S_pet_override" },
+    { SYM_OTH, SYM_HERO_OVERRIDE + SYM_OFF_X, "S_hero_override" },
+    { 0, 0, (const char *) 0 } /* fence post */
+};
+
+/*symbols.c*/
index b51e285dc5beb304503dc5876848bee279af3b0c..834156ab46f6d037d6396ef72dc6bce9fbd28958 100644 (file)
@@ -612,11 +612,12 @@ spotless: clean
 #      if [ -f $(WSHR)/oththin.txt ]; then rm $(WSHR)/oththin.txt; fi;
 
 #==========================================
-# Game Dependencies
+# Host Utility Dependencies
 #==========================================
 
 # src dependencies
 
+$(HOST_O)drawing.o: $(CONFIG_H)
 $(HOST_O)vis_tab.o: vis_tab.c $(CONFIG_H) $(INCL)/vis_tab.h
 $(HOST_O)alloc.o: alloc.c $(CONFIG_H)
 $(HOST_O)dlb.o: dlb.c $(CONFIG_H) $(INCL)/dlb.h
index 08dfc1e200f3e15486f980e4e85b8dc353a7fa97..e9d6e735cc32444ac4f829d7da3c57ed2c1eefe5 100644 (file)
@@ -233,46 +233,6 @@ U  = $(UTIL)/
 #  Tile related object files.
 #==========================================
 
-#ifeq ($(SUPPRESS_GRAPHICS),Y)
-#TILOBJ       =
-#TILOBJ2      =
-#TEXTIO       =
-#TEXTIO2      =
-#TILE_BMP     =
-#TILEUTIL     = 
-#TILEFILES    = 
-#TILEFILES2   = 
-#GIFREADERS   = 
-#GIFREAD2     = 
-#PPMWRITERS   = 
-#PPMWRIT2     = 
-#
-#else
-#
-TILOBJ      = $(O)tile.o $(VIDEO_OBJ)
-#
-#TILOBJ2     = $(O)tileset.o $(O)bmptiles.o $(O)giftiles.o
-#
-#TEXTIO      = $(HOST_O)tiletext.o $(HOST_O)tiletxt.o $(HOST_O)drawing.o $(HOST_O)decl.o $(HOST_O)monst.o \
-#              $(HOST_O)objects.o $(HOST_O)stubvid.o
-#
-#TEXTIO2     = $(HOST_O)tiletex2.o $(HOST_O)tiletxt2.o $(HOST_O)drawing.o $(HOST_O)decl.o $(HOST_O)monst.o \
-#              $(HOST_O)objects.o $(HOST_O)stubvid.o
-#TILEUTIL    = $(TILOBJ) $(U)tile2bin $(U)til2bin2 $(TILE_BMP) $(PLANAR_TIB) $(OVERVIEW_TIB)
-#
-#TILEFILES   = $(WSHR)/monsters.txt $(WSHR)/objects.txt $(WSHR)/other.txt
-#
-#TILEFILES2  = $(WSHR)/monthin.txt $(WSHR)/objthin.txt $(WSHR)/oththin.txt
-#
-#GIFREADERS  = $(HOST_O)gifread.o $(HOST_O)alloc.o $(HOST_O)panic.o
-#
-#GIFREAD2    = $(HOST_O)gifread2.o $(HOST_O)alloc.o $(HOST_O)panic.o
-#
-#PPMWRITERS  = $(HOST_O)ppmwrite.o $(HOST_O)alloc.o $(HOST_O)panic.o
-#
-#PPMWRIT2    = $(HOST_O)ppmwrit2.o $(HOST_O)alloc.o $(HOST_O)panic.o
-#endif
-
 PLANAR_TIB   = $(DAT)/NETHACK1.tib
 OVERVIEW_TIB = $(DAT)/NETHACKO.tib
 TILE_BMP     = $(DAT)/NHTILES.BMP
@@ -309,12 +269,12 @@ VOBJ20 = $(O)region.o  $(O)restore.o  $(O)rip.o      $(O)rnd.o
 VOBJ21 = $(O)role.o    $(O)rumors.o   $(O)save.o     $(O)sfstruct.o
 VOBJ22 = $(O)shk.o     $(O)shknam.o   $(O)sit.o      $(O)sounds.o
 VOBJ23 = $(O)sp_lev.o  $(O)spell.o    $(O)steal.o    $(O)steed.o
-VOBJ24 = $(O)sys.o     $(O)teleport.o $(O)termcap.o  $(O)timeout.o
-VOBJ25 = $(O)topl.o    $(O)topten.o   $(O)track.o    $(O)trap.o
-VOBJ26 = $(O)u_init.o  $(O)uhitm.o    $(O)vault.o    $(O)vision.o
-VOBJ27 = $(O)vis_tab.o $(O)weapon.o   $(O)were.o     $(O)wield.o
-VOBJ28 = $(O)windows.o $(O)wintty.o   $(O)wizard.o   $(O)worm.o
-VOBJ29 = $(O)worn.o    $(O)write.o    $(O)zap.o
+VOBJ24 = $(O)symbols.o $(O)sys.o      $(O)teleport.o $(O)termcap.o
+VOBJ25 = $(O)timeout.o $(O)topl.o     $(O)topten.o   $(O)track.o
+VOBJ26 = $(O)trap.o    $(O)u_init.o   $(O)uhitm.o    $(O)vault.o
+VOBJ27 = $(O)vision.o  $(O)vis_tab.o  $(O)weapon.o   $(O)were.o
+VOBJ28 = $(O)wield.o   $(O)windows.o  $(O)wintty.o   $(O)wizard.o
+VOBJ29 = $(O)worm.o    $(O)worn.o     $(O)write.o    $(O)zap.o
 VOBJ30 = $(REGEX)      $(VIDEO_OBJ)
 
 SOBJ   = $(O)msdos.o   $(O)pcsys.o    $(O)tty.o      $(O)unix.o \
@@ -1071,7 +1031,7 @@ $(O)dog.o: dog.c $(HACK_H)
 $(O)dogmove.o: dogmove.c $(HACK_H) $(INCL)/mfndpos.h
 $(O)dokick.o: dokick.c $(HACK_H)
 $(O)dothrow.o: dothrow.c $(HACK_H)
-$(O)drawing.o: drawing.c $(HACK_H) $(INCL)/tcap.h
+$(O)drawing.o: drawing.c $(CONFIG_H) $(INCL)/tcap.h
 $(O)dungeon.o: dungeon.c $(HACK_H) $(INCL)/dgn_file.h $(INCL)/dlb.h
 $(O)eat.o: eat.c $(HACK_H)
 $(O)end.o: end.c $(HACK_H) $(INCL)/dlb.h
@@ -1144,6 +1104,7 @@ $(O)sp_lev.o: sp_lev.c $(HACK_H) $(INCL)/dlb.h $(INCL)/sp_lev.h
 $(O)spell.o: spell.c $(HACK_H)
 $(O)steal.o: steal.c $(HACK_H)
 $(O)steed.o: steed.c $(HACK_H)
+$(O)symbols.o: symbols.c $(HACK_H)
 $(O)sys.o: sys.c $(HACK_H)
 $(O)teleport.o: teleport.c $(HACK_H)
 $(O)timeout.o: timeout.c $(HACK_H)
index 94402728848515dbc48aed6a9a1b4e0c0e4f6875..1bd32b6a9d15e182dac918dd53daa44be5d0df7f 100644 (file)
@@ -1,5 +1,5 @@
 #      NetHack Makefile.
-# NetHack 3.6  Makefile.src    $NHDT-Date: 1575932543 2019/12/09 23:02:23 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.87 $
+# NetHack 3.6  Makefile.src    $NHDT-Date: 1588776919 2020/05/06 14:55:19 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.97 $
 # Copyright (c) 2018 by Pasi Kallinen
 # NetHack may be freely redistributed.  See license for details.
 
@@ -455,8 +455,8 @@ HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
           priest.c quest.c questpgr.c read.c rect.c region.c restore.c \
           rip.c rnd.c role.c rumors.c save.c sfstruct.c \
           shk.c shknam.c sit.c sounds.c \
-          sp_lev.c spell.c steal.c steed.c sys.c teleport.c timeout.c \
-          topten.c track.c trap.c u_init.c \
+          sp_lev.c spell.c steal.c steed.c symbols.c sys.c teleport.c \
+          timeout.c topten.c track.c trap.c u_init.c \
           uhitm.c vault.c version.c vision.c weapon.c were.c wield.c \
           windows.c wizard.c worm.c worn.c write.c zap.c
 
@@ -522,7 +522,7 @@ HOBJ = $(FIRSTOBJ) allmain.o alloc.o apply.o artifact.o attrib.o ball.o \
        pager.o pickup.o pline.o polyself.o potion.o pray.o priest.o \
        quest.o questpgr.o read.o rect.o region.o restore.o rip.o rnd.o \
        role.o rumors.o save.o sfstruct.o \
-       shk.o shknam.o sit.o sounds.o sp_lev.o spell.o sys.o \
+       shk.o shknam.o sit.o sounds.o sp_lev.o spell.o symbols.o sys.o \
        steal.o steed.o teleport.o timeout.o topten.o track.o trap.o u_init.o \
        uhitm.o vault.o vision.o vis_tab.o weapon.o were.o wield.o windows.o \
        wizard.o worm.o worn.o write.o zap.o \
@@ -1065,7 +1065,7 @@ dog.o: dog.c $(HACK_H)
 dogmove.o: dogmove.c $(HACK_H) ../include/mfndpos.h
 dokick.o: dokick.c $(HACK_H)
 dothrow.o: dothrow.c $(HACK_H)
-drawing.o: drawing.c $(HACK_H) ../include/tcap.h
+drawing.o: drawing.c $(CONFIG_H) ../include/tcap.h
 dungeon.o: dungeon.c $(HACK_H) ../include/dgn_file.h ../include/dlb.h
 eat.o: eat.c $(HACK_H)
 end.o: end.c $(HACK_H) ../include/dlb.h
@@ -1148,6 +1148,7 @@ sp_lev.o: sp_lev.c $(HACK_H) ../include/sp_lev.h
 spell.o: spell.c $(HACK_H)
 steal.o: steal.c $(HACK_H)
 steed.o: steed.c $(HACK_H)
+symbols.o: symbols.c $(HACK_H)
 sys.o: sys.c $(HACK_H)
 teleport.o: teleport.c $(HACK_H)
 timeout.o: timeout.c $(HACK_H)
index 6a190bd4826c93fb209831493095e5f45b82392e..987e4d44752d17308c5df78f8aa0987a0fa99a48 100644 (file)
@@ -1,5 +1,5 @@
 #      Makefile for NetHack's utility programs.
-# NetHack 3.6  Makefile.utl    $NHDT-Date: 1576976264 2019/12/22 00:57:44 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.49 $
+# NetHack 3.6  Makefile.utl    $NHDT-Date: 1588776926 2020/05/06 14:55:26 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.50 $
 # Copyright (c) 2018 by Robert Patrick Rankin
 # NetHack may be freely redistributed.  See license for details.
 
@@ -171,8 +171,8 @@ UTILSRCS = $(MAKESRC) panic.c $(DGNCOMPSRC) $(RECOVSRC) $(DLBSRC)
 CMONOBJ = ../src/monst.c ../src/objects.c
 OMONOBJ = $(OBJDIR)/monst.o $(OBJDIR)/objects.o
 # files that provide access to NetHack's names
-CNAMING = ../src/drawing.c ../src/decl.c $(CMONOBJ)
-ONAMING = $(OBJDIR)/drawing.o $(OBJDIR)/decl.o $(OMONOBJ)
+CNAMING = ../src/drawing.c $(CMONOBJ)
+ONAMING = $(OBJDIR)/drawing.o $(OMONOBJ)
 # dynamic memory allocation
 CALLOC = ../src/alloc.c panic.c
 OALLOC = $(OBJDIR)/alloc.o panic.o
index ffb0ee1ec0e01349d74c6d544510de7a493b20ad..94dfd919e4ea3df7e75ecb6b59f62d61446759c9 100644 (file)
@@ -98,8 +98,8 @@ GAMEDIR = ..\binary               # Default game build directory
 #    PDCurses header (.h) files and PDCURSES_C to the location
 #    of your PDCurses C files.
 #
-ADD_CURSES=Y
-PDCURSES_TOP=..\lib\pdcurses
+#ADD_CURSES=Y
+#PDCURSES_TOP=..\lib\pdcurses
 #
 #------------------------------------------------------------------------------
 # OPTIONAL - zlib support (to allow compressed savefile exchange across platforms
@@ -244,15 +244,15 @@ O  = $(OBJ)^\
 U  = $(UTIL)^\
 
 !IFDEF TEST_CROSSCOMPILE
-CROSSCOMPILE_TARGET = -DCROSSCOMPILE_TARGET
-CROSSCOMPILE_HOST = -DCROSSCOMPILE_HOST
-CROSSCOMPILE = -DCROSSCOMPILE
 HOST=_host
+CROSSCOMPILE_TARGET= -DCROSSCOMPILE_TARGET
+CROSSCOMPILE_HOST= -DCROSSCOMPILE_HOST
+CROSSCOMPILE= -DCROSSCOMPILE
 !ELSE
-!UNDEF CROSSCOMPILE_TARGET
-!UNDEF CROSSCOMPILE_HOST
-!UNDEF CROSSCOMPILE
-!UNDEF HOST
+HOST=
+CROSSCOMPILE_TARGET=
+CROSSCOMPILE_HOST=
+CROSSCOMPILE=
 !ENDIF
 
 #
@@ -261,7 +261,7 @@ HOST=_host
 
 MAKESRC       = $(U)makedefs.c
 
-MAKEDEFSOBJS  = $(O)makedefs$(HOST).o $(O)monst$(HOST).o $(O)objects$(HOST).o
+MAKEDEFSOBJS  = $(O)makedefs.o $(O)monst$(HOST).o $(O)objects$(HOST).o
 
 RECOVOBJS      = $(O)recover.o
 
@@ -271,26 +271,16 @@ TILEFILES      = $(WSHR)\monsters.txt $(WSHR)\objects.txt $(WSHR)\other.txt
 # These are not invoked during a normal game build in 3.4
 #
 
-!IFDEF CROSSCOMPILE_HOST
-DO_UTILS = Y
-!ELSE IFNDEF CROSSCOMPILE
-DO_UTILS = Y
-!ELSE
-DO_UTILS = N
-!ENDIF
-
-!IF "$(DO_UTILS)" == "Y"
-TEXT_IO        = $(O)tiletext$(HOST).o $(O)tiletxt$(HOST).o    $(O)drawing$(HOST).o \
+TEXT_IO   = $(O)tiletext.o     $(O)tiletxt.o   $(O)drawing$(HOST).o \
                 $(O)monst$(HOST).o     $(O)objects$(HOST).o
 
-TEXT_IO32      = $(O)tilete32$(HOST).o $(O)tiletx32$(HOST).o $(O)drawing$(HOST).o \
+TEXT_IO32 = $(O)tilete32.o $(O)tiletx32.o $(O)drawing$(HOST).o \
                 $(O)monst$(HOST).o $(O)objects$(HOST).o
 
-GIFREADERS     = $(O)gifread$(HOST).o  $(O)alloc$(HOST).o $(O)panic$(HOST).o
-GIFREADERS32   = $(O)gifrd32$(HOST).o $(O)alloc$(HOST).o $(O)panic$(HOST).o
+GIFREADERS_HOST     = $(O)gifread.o    $(O)alloc$(HOST).o $(O)panic$(HOST).o
+GIFREADERS32_HOST   = $(O)gifrd32.o $(O)alloc$(HOST).o $(O)panic$(HOST).o
 
-PPMWRITERS     = $(O)ppmwrite$(HOST).o $(O)alloc$(HOST).o $(O)panic$(HOST).o
-!ENDIF
+PPMWRITERS     = $(O)ppmwrite.o $(O)alloc$(HOST).o $(O)panic$(HOST).o
 
 #
 #  Object files for the game itself.
@@ -318,16 +308,16 @@ VOBJ19 = $(O)read.o     $(O)rect.o     $(O)region.o   $(O)restore.o
 VOBJ20 = $(O)rip.o      $(O)rnd.o      $(O)role.o     $(O)rumors.o
 VOBJ21 = $(O)save.o     $(O)sfstruct.o $(O)shk.o      $(O)shknam.o
 VOBJ22 = $(O)sit.o      $(O)sounds.o   $(O)sp_lev.o   $(O)spell.o
-VOBJ23 = $(O)steal.o    $(O)steed.o    $(O)sys.o      $(O)teleport.o
-VOBJ24 = $(O)timeout.o  $(O)topten.o   $(O)track.o    $(O)trap.o
-VOBJ25 = $(O)u_init.o   $(O)uhitm.o    $(O)vault.o    $(O)vis_tab.o
-VOBJ26 = $(O)vision.o   $(O)weapon.o   $(O)were.o     $(O)wield.o
-VOBJ27 = $(O)windows.o  $(O)wizard.o   $(O)worm.o     $(O)worn.o
-VOBJ28 = $(O)write.o    $(O)zap.o
+VOBJ23 = $(O)steal.o    $(O)steed.o    $(O)symbols.o  $(O)sys.o
+VOBJ24 = $(O)teleport.o $(O)timeout.o  $(O)topten.o   $(O)track.o
+VOBJ25 = $(O)trap.o     $(O)u_init.o   $(O)uhitm.o    $(O)vault.o
+VOBJ26 = $(O)vis_tab.o  $(O)vision.o   $(O)weapon.o   $(O)were.o
+VOBJ27 = $(O)wield.o    $(O)windows.o  $(O)wizard.o   $(O)worm.o
+VOBJ28 = $(O)worn.o     $(O)write.o    $(O)zap.o
 
 LUAOBJ = $(O)nhlua.o    $(O)nhlsel.o    $(O)nhlobj.o
 
-!IFDEF CROSSCOMPILE_HOST
+!IFDEF TEST_CROSSCOMPILE
 DLBOBJ_HOST = $(O)dlb$(HOST).o
 !ENDIF
 DLBOBJ = $(O)dlb.o
@@ -768,7 +758,7 @@ DLB =
 #==========================================
 
 {$(UTIL)}.c{$(OBJ)}.o:
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $<
+       @$(cc) $(cflagsBuild) -Fo$@ $<
 
 #==========================================
 # Rules for files in win\share
@@ -1058,18 +1048,18 @@ $(O)console.res: $(MSWSYS)\console.rc $(MSWSYS)\NetHack.ico
 #==========================================
 # Makedefs Stuff
 #==========================================
-$(U)nhsizes3.exe: $(O)nhsizes3$(HOST).o
+$(U)nhsizes3.exe: $(O)nhsizes3.o
        @echo Linking $(@:\=/)
-       $(link) $(lflagsBuild) -out:$@ $(O)nhsizes$(HOST).o $(O)panic$(HOST).o $(O)alloc$(HOST).o
+       $(link) $(lflagsBuild) -out:$@ $(O)nhsizes.o $(O)panic$(HOST).o $(O)alloc$(HOST).o
 
-$(O)nhsizes3$(HOST).o: $(CONFIG_H) nhsizes3.c
+$(O)nhsizes3.o: $(CONFIG_H) nhsizes3.c
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ nhsizes3.c
 
 $(U)makedefs.exe:      $(MAKEDEFSOBJS)
        @echo Linking $(@:\=/)
        @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(MAKEDEFSOBJS)
 
-$(O)makedefs$(HOST).o: $(U)makedefs.c $(SRC)\mdlib.c $(CONFIG_H) $(INCL)\permonst.h \
+$(O)makedefs.o: $(U)makedefs.c $(SRC)\mdlib.c $(CONFIG_H) $(INCL)\permonst.h \
                $(INCL)\objclass.h $(INCL)\monsym.h \
                $(INCL)\artilist.h $(INCL)\dungeon.h $(INCL)\obj.h \
                $(INCL)\monst.h $(INCL)\you.h $(INCL)\flag.h \
@@ -1103,11 +1093,11 @@ $(SRC)\vis_tab.c: $(U)makedefs.exe
 # uudecode utility and uuencoded targets
 #==========================================
 
-$(U)uudecode.exe: $(O)uudecode$(HOST).o
+$(U)uudecode.exe: $(O)uudecode.o
        @echo Linking $(@:\=/)
-       @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)uudecode$(HOST).o
+       @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)uudecode.o
 
-$(O)uudecode$(HOST).o: $(SSYS)\uudecode.c
+$(O)uudecode.o: $(SSYS)\uudecode.c
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /D_CRT_SECURE_NO_DEPRECATE -Fo$@ $(SSYS)\uudecode.c
 
 $(MSWSYS)\NetHack.ico : $(U)uudecode.exe $(MSWSYS)\nhico.uu 
@@ -1205,15 +1195,15 @@ $(U)dlb.exe: $(DLBOBJ_HOST) $(O)dlb$(HOST).o
                $(O)panic$(HOST).o
 <<
 
-!IFDEF CROSSCOMPILE_HOST
+!IFDEF TEST_CROSSCOMPILE
 $(O)dlb$(HOST).o: $(O)dlb_main$(HOST).o $(O)alloc$(HOST).o $(O)panic$(HOST).o $(INCL)\dlb.h
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /Fo$@ $(SRC)\dlb.c
 !ENDIF
 
 $(O)dlb.o: $(O)dlb_main.o $(O)alloc.o $(O)panic.o $(INCL)\dlb.h
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /Fo$@ $(SRC)\dlb.c
+       @$(cc) $(cflagsBuild) /Fo$@ $(SRC)\dlb.c
        
-!IFDEF CROSSCOMPILE_HOST
+!IFDEF TEST_CROSSCOMPILE
 $(O)dlb_main$(HOST).o: $(UTIL)\dlb_main.c $(INCL)\config.h $(INCL)\dlb.h
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /Fo$@ $(UTIL)\dlb_main.c
 !ENDIF
@@ -1261,61 +1251,61 @@ $(U)recover.exe: $(RECOVOBJS)
        $(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(RECOVOBJS)
 
 $(O)recover.o: $(CONFIG_H) $(U)recover.c $(MSWSYS)\win32api.h
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $(U)recover.c
+       @$(cc) $(cflagsBuild) -Fo$@ $(U)recover.c
 
 #==========================================
 #  Tile Mapping
 #==========================================
 
 $(SRC)\tile.c: $(U)tilemap.exe
-       @echo A new $(@:\=/) has been created
        @$(U)tilemap
+       @echo A new $(@:\=/) has been created
 
-$(U)tilemap.exe: $(O)tilemap$(HOST).o
+$(U)tilemap.exe: $(O)tilemap.o
        @echo Linking $(@:\=/)
-       @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)tilemap$(HOST).o
+       @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)tilemap.o
 
-$(O)tilemap$(HOST).o: $(WSHR)\tilemap.c $(HACK_H)
+$(O)tilemap.o: $(WSHR)\tilemap.c $(HACK_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $(WSHR)\tilemap.c
 
-$(O)tiletx32$(HOST).o: $(WSHR)\tilemap.c $(HACK_H)
+$(O)tiletx32.o: $(WSHR)\tilemap.c $(HACK_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /DTILETEXT /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tilemap.c
 
-$(O)tiletxt$(HOST).o: $(WSHR)\tilemap.c $(HACK_H)
+$(O)tiletxt.o: $(WSHR)\tilemap.c $(HACK_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /DTILETEXT -Fo$@ $(WSHR)\tilemap.c
 
-$(O)gifread$(HOST).o: $(WSHR)\gifread.c  $(CONFIG_H) $(TILE_H)
+$(O)gifread.o: $(WSHR)\gifread.c  $(CONFIG_H) $(TILE_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) -Fo$@ $(WSHR)\gifread.c
 
-$(O)gifrd32$(HOST).o: $(WSHR)\gifread.c  $(CONFIG_H) $(TILE_H)
+$(O)gifrd32.o: $(WSHR)\gifread.c  $(CONFIG_H) $(TILE_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\gifread.c
 
-$(O)ppmwrite$(HOST).o: $(WSHR)\ppmwrite.c $(CONFIG_H) $(TILE_H)
+$(O)ppmwrite.o: $(WSHR)\ppmwrite.c $(CONFIG_H) $(TILE_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) -Fo$@ $(WSHR)\ppmwrite.c
 
-$(O)tiletext$(HOST).o: $(WSHR)\tiletext.c  $(CONFIG_H) $(TILE_H)
+$(O)tiletext.o: $(WSHR)\tiletext.c  $(CONFIG_H) $(TILE_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) -Fo$@ $(WSHR)\tiletext.c
 
-$(O)tilete32$(HOST).o: $(WSHR)\tiletext.c  $(CONFIG_H) $(TILE_H)
+$(O)tilete32.o: $(WSHR)\tiletext.c  $(CONFIG_H) $(TILE_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tiletext.c
 
 #==========================================
 # Optional Tile Utilities
 #==========================================
 
-$(U)gif2txt.exe: $(GIFREADERS) $(TEXT_IO)
+$(U)gif2txt.exe: $(GIFREADERS_HOST) $(TEXT_IO)
        @echo Linking $(@:\=/)
        @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
-               $(GIFREADERS:^  =^
+               $(GIFREADERS_HOST:^     =^
                )
                $(TEXT_IO:^     =^
                )
 <<
 
-$(U)gif2tx32.exe: $(GIFREADERS32) $(TEXT_IO32)
+$(U)gif2tx32.exe: $(GIFREADERS32_HOST) $(TEXT_IO32)
        @echo Linking $(@:\=/)
        @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
-               $(GIFREADERS32:^        =^
+               $(GIFREADERS32_HOST:^   =^
                )
                $(TEXT_IO32:^   =^
                )
@@ -1339,26 +1329,26 @@ $(TILEBMP16): $(TILEUTIL16) $(TILEFILES)
 #      @$(U)til2bm32 $(TILEBMP32)
 
 
-$(U)tile2bmp.exe: $(O)tile2bmp$(HOST).o $(TEXT_IO)
+$(U)tile2bmp.exe: $(O)tile2bmp.o $(TEXT_IO)
        @echo Linking $(@:\=/)
        @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
-               $(O)tile2bmp$(HOST).o
+               $(O)tile2bmp.o
                $(TEXT_IO:^  =^
                )
 <<
 
-$(U)til2bm32.exe: $(O)til2bm32$(HOST).o $(TEXT_IO32)
+$(U)til2bm32.exe: $(O)til2bm32.o $(TEXT_IO32)
        @echo Linking $(@:\=/)
        @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ @<<$(@B).lnk
-               $(O)til2bm32$(HOST).o
+               $(O)til2bm32.o
                $(TEXT_IO32:^  =^
                )
 <<
 
-$(O)tile2bmp$(HOST).o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
+$(O)tile2bmp.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) /DPACKED_FILE /Fo$@ $(WSHR)\tile2bmp.c
 
-$(O)til2bm32$(HOST).o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
+$(O)til2bm32.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) /DPACKED_FILE /DTILE_X=32 /DTILE_Y=32 /Fo$@ $(WSHR)\tile2bmp.c
 
 #===============================================================================
@@ -1482,14 +1472,14 @@ $(O)sfstruct.o: $(HACK_H) $(SRC)\sfstruct.c
 # data file.
 #
 
-!IFDEF CROSSCOMPILE_HOST
+!IFDEF TEST_CROSSCOMPILE
 $(O)mdlib$(HOST).o: $(SRC)\mdlib.c
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSDEFINE_HOST) -Fo$@ $(SRC)\mdlib.c
+       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $(SRC)\mdlib.c
 !ENDIF
 
 $(O)mdlib.o: $(SRC)\mdlib.c
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $(SRC)\mdlib.c
-#      @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) /EP -Fo$@ $(SRC)\mdlib.c >mdlib.c.preprocessed
+       @$(cc) $(cflagsBuild) -Fo$@ $(SRC)\mdlib.c
+#      @$(cc) $(cflagsBuild) /EP -Fo$@ $(SRC)\mdlib.c >mdlib.c.preprocessed
 
 #============================================
 # util dual-role CROSSCOMPILE dependencies
@@ -1497,64 +1487,41 @@ $(O)mdlib.o: $(SRC)\mdlib.c
 #
 # These have dual-roles and need to be build for host and target platforms.
 #
-!IFDEF CROSSCOMPILE_HOST
-$(O)panic$(HOST).o:  $(U)panic.c $(CONFIG_H)
+$(O)panic_host.o:  $(U)panic.c $(CONFIG_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $(U)panic.c
-!ENDIF
 
 $(O)panic.o:  $(U)panic.c $(CONFIG_H)
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $(U)panic.c
+       @$(cc) $(cflagsBuild) -Fo$@ $(U)panic.c
 
-
-!IFDEF CROSSCOMPILE_HOST
-$(O)drawing$(HOST).o: drawing.c $(HACK_H) $(INCL)\tcap.h
+$(O)drawing_host.o: drawing.c $(HACK_H) $(INCL)\tcap.h
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ drawing.c
-!ENDIF
 
 $(O)drawing.o: drawing.c $(HACK_H) $(INCL)\tcap.h
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ drawing.c
-
-!IFDEF CROSSCOMPILE_HOST
-$(O)decl$(HOST).o: decl.c $(HACK_H)
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ decl.c
-!ENDIF
-
-$(O)decl.o: decl.c $(HACK_H)
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ decl.c
+       @$(cc) $(cflagsBuild) -Fo$@ drawing.c
 
-!IFDEF CROSSCOMPILE_HOST
-$(O)monst$(HOST).o: monst.c $(CONFIG_H) $(INCL)\permonst.h $(INCL)\align.h \
+$(O)monst_host.o: monst.c $(CONFIG_H) $(INCL)\permonst.h $(INCL)\align.h \
                $(INCL)\monattk.h $(INCL)\monflag.h $(INCL)\monsym.h \
                $(INCL)\color.h
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ monst.c
-!ENDIF
+       @$(cc) $(cflagsBuild) -Fo$@ monst.c
 
 $(O)monst.o: monst.c $(CONFIG_H) $(INCL)\permonst.h $(INCL)\align.h \
                $(INCL)\monattk.h $(INCL)\monflag.h $(INCL)\monsym.h \
                $(INCL)\color.h
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ monst.c
+       @$(cc) $(cflagsBuild) -Fo$@ monst.c
 
-!IFDEF CROSSCOMPILE_HOST
-$(O)objects$(HOST).o: objects.c $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h \
+$(O)objects_host.o: objects.c $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h \
                $(INCL)\prop.h $(INCL)\skills.h $(INCL)\color.h
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ objects.c
-!ENDIF
+       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ objects.c
 
 $(O)objects.o: objects.c $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h \
                $(INCL)\prop.h $(INCL)\skills.h $(INCL)\color.h
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ objects.c
+       @$(cc) $(cflagsBuild) -Fo$@ objects.c
 
-!IFDEF CROSSCOMPILE_HOST
-$(O)alloc$(HOST).o: alloc.c $(CONFIG_H)
+$(O)alloc_host.o: alloc.c $(CONFIG_H)
        @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ alloc.c
-!ENDIF
 
 $(O)alloc.o: alloc.c $(CONFIG_H)
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ alloc.c
-
-$(O)version.o: version.c $(HACK_H) $(INCL)\dlb.h $(INCL)\date.h \
-               $(INCL)\patchlevel.h
-       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ version.c
+       @$(cc) $(cflagsBuild) -Fo$@ alloc.c
 
 #===================================================================
 # DAT dependencies
@@ -2006,7 +1973,7 @@ $(O)dog.o: dog.c $(HACK_H)
 $(O)dogmove.o: dogmove.c $(HACK_H) $(INCL)\mfndpos.h
 $(O)dokick.o: dokick.c $(HACK_H)
 $(O)dothrow.o: dothrow.c $(HACK_H)
-$(O)drawing.o: drawing.c $(HACK_H) $(INCL)\tcap.h
+$(O)drawing.o: drawing.c $(CONFIG_H) $(INCL)\tcap.h
 $(O)dungeon.o: dungeon.c $(HACK_H) $(INCL)\dgn_file.h $(INCL)\dlb.h
 $(O)eat.o: eat.c $(HACK_H)
 $(O)end.o: end.c $(HACK_H) $(INCL)\dlb.h
@@ -2062,8 +2029,8 @@ $(O)objects.o: objects.c $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h \
 $(O)objnam.o: objnam.c $(HACK_H)
 $(O)options.o: options.c $(INCL)\optlist.h $(CONFIG_H) $(INCL)\objclass.h $(INCL)\flag.h \
                $(HACK_H) $(INCL)\tcap.h
-       $(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) /EP options.c >$(@B).preproc
-       $(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ options.c
+       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ options.c
+#      $(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) /EP options.c >$(@B).preproc
 $(O)pager.o: pager.c $(HACK_H) $(INCL)\dlb.h
 $(O)pickup.o: pickup.c $(HACK_H)
 $(O)pline.o: pline.c $(HACK_H)
@@ -2091,6 +2058,7 @@ $(O)sp_lev.o: sp_lev.c $(HACK_H) $(INCL)\sp_lev.h
 $(O)spell.o: spell.c $(HACK_H)
 $(O)steal.o: steal.c $(HACK_H)
 $(O)steed.o: steed.c $(HACK_H)
+$(O)symbols.o: symbols.c $(HACK_H)
 $(O)sys.o: sys.c $(HACK_H)
 $(O)teleport.o: teleport.c $(HACK_H)
 $(O)timeout.o: timeout.c $(HACK_H)
@@ -2102,6 +2070,7 @@ $(O)uhitm.o: uhitm.c $(HACK_H)
 $(O)vault.o: vault.c $(HACK_H)
 $(O)version.o: version.c $(HACK_H) $(INCL)\dlb.h $(INCL)\date.h \
                $(INCL)\patchlevel.h
+       @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ version.c
 $(O)vision.o: vision.c $(HACK_H) $(INCL)\vis_tab.h
 $(O)weapon.o: weapon.c $(HACK_H)
 $(O)were.o: were.c $(HACK_H)
index 2fbf3337244689e6a8b3111d4c27208f4ad910a6..485081cd56731ee24be224062459401a56d47386 100644 (file)
     <ClCompile Include="$(SrcDir)sp_lev.c" />\r
     <ClCompile Include="$(SrcDir)steal.c" />\r
     <ClCompile Include="$(SrcDir)steed.c" />\r
+    <ClCompile Include="$(SrcDir)symbols.c" />\r
     <ClCompile Include="$(SrcDir)sys.c" />\r
     <ClCompile Include="$(SrcDir)teleport.c" />\r
     <ClCompile Include="$(SrcDir)tile.c" />\r
index b95611068d342cea669e04d4fee90809256afee5..e2845b42c66b000092a2a1c3003817f86ac78286 100644 (file)
     <ClCompile Include="$(SrcDir)sp_lev.c" />\r
     <ClCompile Include="$(SrcDir)steal.c" />\r
     <ClCompile Include="$(SrcDir)steed.c" />\r
+    <ClCompile Include="$(SrcDir)symbols.c" />\r
     <ClCompile Include="$(SrcDir)sys.c" />\r
     <ClCompile Include="$(SrcDir)teleport.c" />\r
     <ClCompile Include="$(SrcDir)tile.c" />\r
index c5d14ebf24203cd85fc22ad0be5aaa5a22925a39..372e3a02bbc0434dcc331f188061f586472d248c 100644 (file)
@@ -30,7 +30,6 @@
     </ClCompile>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
-    <ClCompile Include="$(SrcDir)decl.c" />\r
     <ClCompile Include="$(SrcDir)drawing.c" />\r
     <ClCompile Include="$(SrcDir)monst.c" />\r
     <ClCompile Include="$(SrcDir)objects.c" />\r
@@ -50,4 +49,4 @@
   <Target Name="AfterRebuild">\r
     <MSBuild Projects="aftertile2bmp.proj" Targets="Build" Properties="Configuration=$(Configuration)" />\r
   </Target>\r
-</Project>
\ No newline at end of file
+</Project>\r