/* 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. */
};
/* 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 */
#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,
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*/
--- /dev/null
+/* 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*/
# 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
# 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
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 \
$(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
$(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)
# 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.
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
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 \
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
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)
# 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.
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
# 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
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
#
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
# 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.
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
#==========================================
{$(UTIL)}.c{$(OBJ)}.o:
- @$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $<
+ @$(cc) $(cflagsBuild) -Fo$@ $<
#==========================================
# Rules for files in win\share
#==========================================
# 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 \
# 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
$(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
$(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:^ =^
)
# @$(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
#===============================================================================
# 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
#
# 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
$(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
$(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)
$(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)
$(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)
<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
<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
</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
<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