From cdf280628cb7ad5b038dae2adc708c38bce4626d Mon Sep 17 00:00:00 2001 From: nhmall Date: Wed, 6 May 2020 10:55:54 -0400 Subject: [PATCH] split symbols bits from drawing.c; new file src/symbols.c --- src/drawing.c | 553 +----------------------------- src/symbols.c | 553 ++++++++++++++++++++++++++++++ sys/msdos/Makefile1.cross | 3 +- sys/msdos/Makefile2.cross | 55 +-- sys/unix/Makefile.src | 11 +- sys/unix/Makefile.utl | 6 +- sys/winnt/Makefile.msc | 183 ++++------ win/win32/vs2017/NetHack.vcxproj | 1 + win/win32/vs2017/NetHackW.vcxproj | 1 + win/win32/vs2017/tile2bmp.vcxproj | 3 +- 10 files changed, 652 insertions(+), 717 deletions(-) create mode 100644 src/symbols.c diff --git a/src/drawing.c b/src/drawing.c index 6bc35abd8..cc752081b 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -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 index 000000000..efb76c37c --- /dev/null +++ b/src/symbols.c @@ -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*/ diff --git a/sys/msdos/Makefile1.cross b/sys/msdos/Makefile1.cross index b51e285dc..834156ab4 100644 --- a/sys/msdos/Makefile1.cross +++ b/sys/msdos/Makefile1.cross @@ -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 diff --git a/sys/msdos/Makefile2.cross b/sys/msdos/Makefile2.cross index 08dfc1e20..e9d6e735c 100644 --- a/sys/msdos/Makefile2.cross +++ b/sys/msdos/Makefile2.cross @@ -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) diff --git a/sys/unix/Makefile.src b/sys/unix/Makefile.src index 944027288..1bd32b6a9 100644 --- a/sys/unix/Makefile.src +++ b/sys/unix/Makefile.src @@ -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) diff --git a/sys/unix/Makefile.utl b/sys/unix/Makefile.utl index 6a190bd48..987e4d447 100644 --- a/sys/unix/Makefile.utl +++ b/sys/unix/Makefile.utl @@ -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 diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index ffb0ee1ec..94dfd919e 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -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) diff --git a/win/win32/vs2017/NetHack.vcxproj b/win/win32/vs2017/NetHack.vcxproj index 2fbf33372..485081cd5 100644 --- a/win/win32/vs2017/NetHack.vcxproj +++ b/win/win32/vs2017/NetHack.vcxproj @@ -180,6 +180,7 @@ + diff --git a/win/win32/vs2017/NetHackW.vcxproj b/win/win32/vs2017/NetHackW.vcxproj index b95611068..e2845b42c 100644 --- a/win/win32/vs2017/NetHackW.vcxproj +++ b/win/win32/vs2017/NetHackW.vcxproj @@ -174,6 +174,7 @@ + diff --git a/win/win32/vs2017/tile2bmp.vcxproj b/win/win32/vs2017/tile2bmp.vcxproj index c5d14ebf2..372e3a02b 100644 --- a/win/win32/vs2017/tile2bmp.vcxproj +++ b/win/win32/vs2017/tile2bmp.vcxproj @@ -30,7 +30,6 @@ - @@ -50,4 +49,4 @@ - \ No newline at end of file + -- 2.50.1