From: nethack.allison Date: Sun, 13 Jan 2002 05:53:39 +0000 (+0000) Subject: Changes to existing files by the win32 port additions. X-Git-Tag: MOVE2GIT~3488 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e02ab47597b5c608e5637c700aa047a55d8021e7;p=nethack Changes to existing files by the win32 port additions. --- diff --git a/include/config.h b/include/config.h index e449c214f..b12ac77cb 100644 --- a/include/config.h +++ b/include/config.h @@ -46,6 +46,7 @@ /* #define X11_GRAPHICS */ /* X11 interface */ /* #define QT_GRAPHICS */ /* Qt interface */ /* #define GNOME_GRAPHICS */ /* Gnome interface */ +/* #define MSWIN_GRAPHICS */ /* Windows NT, CE, Graphics */ /* * Define the default window system. This should be one that is compiled @@ -98,6 +99,16 @@ # endif #endif +#ifdef MSWIN_GRAPHICS +# ifdef TTY_GRAPHICS +# undef TTY_GRAPHICS +# endif +# ifndef DEFAULT_WINDOW_SYS +# define DEFAULT_WINDOW_SYS "mswin" +# endif +# define HACKDIR "\\nethack" +#endif + #ifndef DEFAULT_WINDOW_SYS # define DEFAULT_WINDOW_SYS "tty" #endif diff --git a/include/config1.h b/include/config1.h index 4f003680a..0f34f1692 100644 --- a/include/config1.h +++ b/include/config1.h @@ -108,6 +108,11 @@ /* * Windows NT Autodetection */ +#ifdef _WIN32_WCE +# ifndef WIN32 +# define WIN32 +# endif +#endif #ifdef WIN32 # undef UNIX @@ -116,6 +121,16 @@ # define STRNCMPI # define USE_STDARG # define NEED_VARARGS + +# ifdef UNDER_CE +# define WIN_CE +# define STRCMPI +# endif + +/* ARM - the processor; avoids conflict with ARM in hack.h */ +# ifdef ARM +# undef ARM +# endif #endif diff --git a/include/global.h b/include/global.h index d8ad8dc9e..0bcb4d3b9 100644 --- a/include/global.h +++ b/include/global.h @@ -175,8 +175,12 @@ typedef xchar boolean; /* 0 or 1 */ #endif #ifdef WIN32 +#ifdef WIN_CE +#include "wceconf.h" +#else #include "ntconf.h" #endif +#endif /* Displayable name of this port; don't redefine if defined in *conf.h */ #ifndef PORT_ID diff --git a/src/files.c b/src/files.c index 3d343a948..80dd8f03c 100644 --- a/src/files.c +++ b/src/files.c @@ -99,8 +99,10 @@ static int lockptr; #define Delay(a) msleep(a) # endif #define Close close +#ifndef WIN_CE #define DeleteFile unlink #endif +#endif #ifdef USER_SOUNDS extern int FDECL(add_sound_mapping, (const char* mapping)); diff --git a/src/mklev.c b/src/mklev.c index 3f2b3105f..6275821a4 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -34,7 +34,13 @@ STATIC_DCL struct mkroom *FDECL(pos_to_room, (XCHAR_P, XCHAR_P)); STATIC_DCL boolean FDECL(place_niche,(struct mkroom *,int*,int*,int*)); STATIC_DCL void FDECL(makeniche,(int)); STATIC_DCL void NDECL(make_niches); + +#ifdef WIN_CE +static int __cdecl do_comp(const void *vx, const void *vy); +#else STATIC_PTR int FDECL(do_comp,(const genericptr,const genericptr)); +#endif + STATIC_DCL void FDECL(dosdoor,(XCHAR_P,XCHAR_P,struct mkroom *,int)); STATIC_DCL void FDECL(join,(int,int,BOOLEAN_P)); STATIC_DCL void FDECL(do_room_or_subroom, (struct mkroom *,int,int,int,int, @@ -53,10 +59,14 @@ static boolean made_branch; /* used only during level creation */ /* Args must be (const genericptr) so that qsort will always be happy. */ +#ifdef WIN_CE +static int __cdecl do_comp(const void *vx, const void *vy) +#else STATIC_PTR int do_comp(vx,vy) const genericptr vx; const genericptr vy; +#endif { #ifdef LINT /* lint complains about possible pointer alignment problems, but we know @@ -108,7 +118,11 @@ sort_rooms() #if defined(SYSV) || defined(DGUX) qsort((genericptr_t) rooms, (unsigned)nroom, sizeof(struct mkroom), do_comp); #else +# if defined(WIN_CE) + qsort((genericptr_t) rooms, (unsigned)nroom, sizeof(struct mkroom), (int (__cdecl*)(const void *, const void *))do_comp); +# else qsort((genericptr_t) rooms, nroom, sizeof(struct mkroom), do_comp); +# endif #endif } diff --git a/src/rip.c b/src/rip.c index bb65e097e..247b0127c 100644 --- a/src/rip.c +++ b/src/rip.c @@ -8,7 +8,7 @@ STATIC_DCL void FDECL(center, (int, char *)); extern const char *killed_by_prefix[]; -#if defined(TTY_GRAPHICS) || defined(X11_GRAPHICS) || defined(GEM_GRAPHICS) +#if defined(TTY_GRAPHICS) || defined(X11_GRAPHICS) || defined(GEM_GRAPHICS) || defined(MSWIN_GRAPHICS) # define TEXT_TOMBSTONE #endif #if defined(mac) || defined(__BEOS__) || defined(WIN32_GRAPHICS) diff --git a/src/windows.c b/src/windows.c index a18fba2e3..dacde257d 100644 --- a/src/windows.c +++ b/src/windows.c @@ -37,6 +37,10 @@ extern struct window_procs win32_procs; #include "winGnome.h" extern struct window_procs Gnome_procs; #endif +#ifdef MSWIN_GRAPHICS +#include "winMS.h" +extern struct window_procs mswin_procs; +#endif STATIC_DCL void FDECL(def_raw_print, (const char *s)); @@ -74,6 +78,9 @@ struct win_choices { #endif #ifdef GNOME_GRAPHICS { &Gnome_procs, 0 }, +#endif +#ifdef MSWIN_GRAPHICS + { &mswin_procs, 0 }, #endif { 0, 0 } /* must be last */ }; diff --git a/sys/share/pcmain.c b/sys/share/pcmain.c index 0996d2be8..c09645ad2 100644 --- a/sys/share/pcmain.c +++ b/sys/share/pcmain.c @@ -638,7 +638,15 @@ char *str; # ifndef WIN32 Strcpy (tmp, str); # else - *(tmp + GetModuleFileName((HANDLE)0, tmp, bsize)) = '\0'; + #ifdef UNICODE + { + TCHAR wbuf[BUFSZ]; + GetModuleFileName((HANDLE)0, wbuf, BUFSZ); + WideCharToMultiByte(CP_ACP, 0, wbuf, -1, tmp, bsize, NULL, NULL); + } + #else + *(tmp + GetModuleFileName((HANDLE)0, tmp, bsize)) = '\0'; + #endif # endif tmp2 = strrchr(tmp, PATH_SEPARATOR); if (tmp2) *tmp2 = '\0'; diff --git a/sys/share/pcsys.c b/sys/share/pcsys.c index dee9486bf..b2c9cee3a 100644 --- a/sys/share/pcsys.c +++ b/sys/share/pcsys.c @@ -11,7 +11,7 @@ #include #include -#ifndef MSDOS /* already done */ +#if !defined(MSDOS) && !defined(WIN_CE) /* already done */ #include #endif #ifdef __GO32__ diff --git a/sys/winnt/Install.nt b/sys/winnt/Install.nt index b85e7ab35..7d9dabbeb 100644 --- a/sys/winnt/Install.nt +++ b/sys/winnt/Install.nt @@ -1,28 +1,59 @@ - Copyright (c) NetHack Development Team 1990-2000 + Copyright (c) NetHack Development Team 1990-2002 NetHack may be freely redistributed. See license for details. ============================================================== Instructions for compiling and installing - NetHack 3.3 on a Windows NT, 2000, or Windows 9x system + NetHack 3.3 on a Windows NT, 2000, or XP system ============================================================== - (or, How to make NetHack 3.3.1 for the WIN32 Console subsystem) - Last revision: August 2, 2000 - -Credit for the PC versions of NetHack goes to the PC Development team -of Paul Winner, Kevin Smolkowski, Michael Allison, Yitzhak Sapir, Bill -Dyer, Timo Hakulinen, Yamamoto Keizo, Mike Threepoint, Mike Stephenson, -Stephen White, Ken Washikita and Janet Walz. + Last revision: January 12, 2002 Credit for the porting of NetHack to the Win32 Console Subsystem goes to the NT Porting Team started by Michael Allison. +Credit for the Win32 Graphical version of NetHack (aka Winhack) goes to +Alex Kompel. + +You can build either the TTY version of NetHack or the Windows Graphical +version. In either case you will need: + o A copy of Microsoft Visual C V6.0 or later. Things may work with + earlier version of the compiler, but the current code has not been + tested with an earlier compiler. + + o A version of a UUDECODE utility in your path. The Makefiles and + the VC Project files assume that a utility called uudecode.exe is + in your path. + +FIRST STEP: + +The first step in building either version of NetHack is to execute +sys/winnt/Install.nt. Specify either TTY, or GUI. (You can +substitute WINHACK for GUI if you wish). + +For the tty version using the NT Console I/O subsystem: + cd sys\winnt + nhsetup TTY + +For the graphical version (WinHack) + cd sys\winnt + nhsetup WINHACK + +Files appropriate for the selected build will be moved to the +appropriate place. + +If you wish to build the TTY version, proceed now to "BUILDING TTY VERSION." +If you wish to build the graphical version, proceed now to "BUILDING GRAPHICAL VERSION." + +------------------------ +| BUILDING TTY VERSION | +------------------------ + This version of NetHack for Win32 is a tty port utilizing the WIN32 Console I/O subsystem. I. Dispelling the Myths: - Compiling NetHack is not as easy as it sounds, nor as hard as it looks, - however it will behoove you to read this entire file through before - beginning the task. + Compiling NetHack for WIN32 TTY is not as easy as it sounds, nor as hard + as it looks, however it will behoove you to read this entire section + through before beginning the task. We have provided a Makefile for building NetHack using the following compiler: @@ -191,7 +222,151 @@ Notes: 2) The executable produced by this port is a 32-bit, flat-address space, non-overlayed .exe file, which should run on any true Win32 environment. -3) If you encounter a bug and wish to report it, please send e-mail to: + +------------------------------ +| BUILDING GRAPHICAL VERSION | +------------------------------ + + +This version of NetHack is a Win32 native port built on the Windows API. + +I. Dispelling the Myths: + + Compiling WIN32 is straightforward, as long as you have Visual C + correctly installed. It is also assumed that you changed your + directory to sys\winnt and executed: + nhsetup winhack + as described at the top of this document. + +II. To compile your copy of NetHack on a Windows NT/2000/XP machine: + +Setting Up + +1. A version of uudecode.exe is required to be in + your path when you attempt the build. If you don't have a version + of uudecode on your system, then you must find a way to uudecode + the following files elsewhere and move the decoded version to its + target directory: + + win\win32\mnsel.uu ---> winhacknt\mnsel.bmp + win\win32\mnunsel.uu ---> winhacknt\mnunsel.bmp + sys\winnt\nhico.uu ---> winhacknt\nethack.ico + + (The winhacknt directory should have been created when you + issued the "nhsetup winhack" command earlier.) + +2. Make sure all the NetHack files are in the appropriate directory + structure. You should have a main directory with subdirectories + dat, doc, include, src, sys\share, sys\winnt, util, win\win32, + and at this point, you should also have winhacknt (created by + nhsetup.bat in sys\winnt.) + + Other subdirectories may also be included in your distribution, but + they are not necessary for building the graphical version of NetHack + (you can delete them to save space if you wish.) + + Required Directories for a Win32 Console NetHack: + + top + | + -----------------------------------------/ /--------------- + | | | | | | | | | + util dat doc include src sys win winhacknt binary + | | + ------ ----- + | | | + share winnt win32 + + Those last two (winhacknt and binary) are created during the + build. They are not disributed as part of the source distribution. + nhsetup.bat moves many files into the "winhacknt" directory. + + Check the file "Files" in your top level directory for an exact + listing of what file is in which directory. In order for the + build process to work, all the source files must be in the proper + locations. Remember that nhsetup.bat moves many files around to + their intended locations. + +3. Start the Visual C IDE. In the Visual C IDE Menus, choose: + File | Open Workspace + +4. In the Visual C "Open Workspace" dialog box, navigate to your nethack + source directory, specifically the winhacknt subdirectory. + + In there, highlight "nethack.dsw" and click on Open. + +5. Once the workspace has been opened, you should see the following list + in the Visual C selection window: + + dgncomp files + + dgnstuff files + + dlb_main files + + levcomp files + + levstuff files + + makedefs files + + recover files + + tile2bmp files + + tilemap files + + winhack files + +6. On the Visual C menus, choose: + Project | Set Active Project | winhack + +7. On the Visual C menus once again, choose: + Build | Build winhack.exe + + This starts the build. If all goes well, you will have a playable + game of netack in the "binary" directory. + + In any case, it is likely that the command prompt window where you are + + doing the compiling will be occupied for a quite a while. If all + goes well, you will get an NetHack executable. + +Running NetHack + +7. Make sure all of the support files -- Guidebook.txt, license, + Defaults.nh, winhack.exe, nhdat, tiles.bmp, and recover.exe + -- were copied to the binary directory. + (If not, find them in the tree and move them there yourself if they + exist. If they don't exist, something has gone wrong) + + Defaults.nh is actually distributed in the sources as sys/winnt/winnt.cnf, + but the build process should take care of moving it and renaming it + correctly. + + Edit Defaults.nh to reflect your particular setup and personal + preferences, by following the comments. As with all releases since + 3.2.1, HACKDIR defaults to the same directory as that where the winhack.exe + executable resides. You only need to set HACKDIR in Defaults.nh if, + for some reason, you wish to override that. + +8a. Running from the command prompt: + + If you add the directory containing the NetHack executable + to your PATH, + You can just type "winhack" to start it up. Alternatively, you + can explicitly invoke it with a command such as + "c:\games\nethack\winhack" (specifying whatever drive and directory + your NetHack executable resides in) each time. + + +8b. Running from a Windows shortcut (win95 or NT4.x) + + If you will be running it by launching it from program manager + or from a shortcut, just use the following information when + setting up the icon or shortcut. + + Description : NetHack 3.3.2 + Command Line : C:\GAMES\NETHACK\WINHACK.EXE + + (changing the directory to the appropriate one of course) + +9. Play NetHack. If it works, you're done! + + +PROBLEMS + + If you encounter a bug and wish to report it, please send e-mail to: nethack-bugs@nethack.org If you have any comments or suggestions, feel free to drop us a line c/o: diff --git a/sys/winnt/nhsetup.bat b/sys/winnt/nhsetup.bat index 8e2f0e8d1..195088316 100755 --- a/sys/winnt/nhsetup.bat +++ b/sys/winnt/nhsetup.bat @@ -1,9 +1,14 @@ -@REM SCCS Id: @(#)nhsetup.bat 96/10/30 -@REM Copyright (c) NetHack PC Development Team 1993, 1996 +@REM SCCS Id: @(#)nhsetup.bat 2002/01/12 +@REM Copyright (c) NetHack PC Development Team 1993, 1996, 2002 @REM NetHack may be freely redistributed. See license for details. @REM Win32 setup batch file, see Install.nt for details @REM @echo off + +set err_nouu= +set err_copy= +set opt= + echo Checking to see if directories are set up properly if not exist ..\..\include\hack.h goto err_dir if not exist ..\..\src\hack.c goto err_dir @@ -12,53 +17,170 @@ if not exist ..\..\util\makedefs.c goto err_dir if not exist ..\..\sys\winnt\winnt.c goto err_dir echo Directories look ok. -:do_rest -echo "Copying Makefile.NT to ..\..\src\Makefile" -copy makefile.NT ..\..\src\Makefile >nul -echo Makefile copied ok. -if not exist ..\..\win\win32\NetHack.dsp goto nowin32 -echo "Copying Visual C project files to top level directory" -copy ..\..\win\win32\NetHack.rc ..\.. -copy ..\..\win\win32\resource.h ..\.. -copy ..\..\win\win32\NetHack.dsw ..\.. -copy ..\..\win\win32\NetHack.clw ..\.. -copy ..\..\win\win32\makedefs.dsp ..\.. -copy ..\..\win\win32\NetHack.dsp ..\.. -copy ..\..\win\win32\tile2bmp.dsp ..\.. -copy ..\..\win\win32\dgncomp.dsp ..\.. -copy ..\..\win\win32\levcomp.dsp ..\.. -copy ..\..\win\win32\dlb_main.dsp ..\.. -copy ..\..\win\win32\tilemap.dsp ..\.. -copy ..\..\win\win32\recover.dsp ..\.. - -:nowin32 +if "%1"=="tty" goto do_tty +if "%1"=="WINHACK" goto do_winhack +if "%1"=="tty" goto do_tty +if "%1"=="winhack" goto do_winhack +if "%1"=="gui" goto do_winhack +if "%1"=="GUI" goto do_winhack +goto err_set +:do_tty +set opt=NetHack for NT Console if exist .\nethack.ico goto hasicon if exist .\nhico.uu uudecode nhico.uu >nul -if NOT exist .\nethack.ico goto err_nouu +if exist .\nethack.ico goto hasicon +set err_nouu=Y +goto done :hasicon echo NetHack icon exists ok. +echo "Copying Makefile.NT to ..\..\src\Makefile" +copy makefile.NT ..\..\src\Makefile >nul +echo Makefile copied ok. echo done! echo. echo Proceed with the next step documented in Install.nt echo. goto done -:err_nouu -echo Apparently you have no UUDECODE utility in your path. You need a UUDECODE -echo utility in order to turn "nhico.uu" into "nethack.ico". -echo Check "Install.nt" for a list of the steps required to build NetHack. + +:do_winhack +set opt=Graphical NetHack for Windows (winhack) +if not exist ..\..\win\win32\winnt.dsw goto err_winhack +echo "Copying Visual C project files to ..\..\winhacknt directory" +if NOT exist ..\..\winhacknt\*.* mkdir ..\..\winhacknt +REM copy ..\..\win\win32\winnt.dsw ..\.. >nul +copy ..\..\win\win32\nethack.dsw ..\.. >nul +copy ..\..\win\win32\dgncomp.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\dgnstuff.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\dgnstuff.mak ..\..\winhacknt >nul +copy ..\..\win\win32\dlb_main.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\levcomp.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\levstuff.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\levstuff.mak ..\..\winhacknt >nul +copy ..\..\win\win32\makedefs.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\mhaskyn.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhaskyn.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhcmd.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhcmd.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhdlg.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhdlg.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhfont.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhfont.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhinput.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhinput.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhmain.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhmain.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhmap.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhmap.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhmenu.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhmenu.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhmsg.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhmsgwnd.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhmsgwnd.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhrip.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhrip.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhstatus.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhstatus.h ..\..\winhacknt >nul +copy ..\..\win\win32\mhtext.c ..\..\winhacknt >nul +copy ..\..\win\win32\mhtext.h ..\..\winhacknt >nul +copy ..\..\win\win32\mswproc.c ..\..\winhacknt >nul +copy ..\..\win\win32\recover.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\resource.h ..\..\winhacknt >nul +copy ..\..\win\win32\tile2bmp.c ..\..\winhacknt >nul +copy ..\..\win\win32\tile2bmp.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\tilemap.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\winMS.h ..\..\winhacknt >nul +copy ..\..\win\win32\winhack.c ..\..\winhacknt >nul +copy ..\..\win\win32\winhack.dsp ..\..\winhacknt >nul +copy ..\..\win\win32\winhack.h ..\..\winhacknt >nul +copy ..\..\win\win32\winhack.rc ..\..\winhacknt >nul + +if exist ..\..\winhacknt\mnsel.bmp goto hasmnsel2 +if exist .\mnsel.bmp goto hasmnsel1 +if exist ..\..\win\win32\mnsel.uu uudecode ..\..\win\win32\mnsel.uu >nul +if exist .\mnsel.bmp goto hasmnsel1 +echo Error - No UUDECODE utility to decode ..\..\win\win32\mnsel.uu +goto hasmnsel2 +:hasmnsel1 +echo copy .\mnsel.bmp ..\..\winhacknt +copy .\mnsel.bmp ..\..\winhacknt +:hasmnsel2 +if NOT exist ..\..\winhacknt\mnsel.bmp set err_nouu=Y + +if exist ..\..\winhacknt\mnunsel.bmp goto hasmnuns2 +if exist .\mnunsel.bmp goto hasmnuns1 +if exist ..\..\win\win32\mnunsel.uu uudecode ..\..\win\win32\mnunsel.uu >nul +if exist .\mnunsel.bmp goto hasmnuns1 +echo Error - No UUDECODE utility to decode ..\..\win\win32\mnunsel.uu +goto hasmnuns2 +:hasmnuns1 +echo copy .\mnsel.bmp ..\..\winhacknt +copy .\mnunsel.bmp ..\..\winhacknt +:hasmnuns2 +if NOT exist ..\..\winhacknt\mnunsel.bmp set err_nouu=Y + +if exist ..\..\winhacknt\nethack.ico goto hasicon2 +if exist .\nethack.ico goto hasicon1 +if exist .\nhico.uu uudecode nhico.uu >nul +if exist .\nethack.ico goto hasicon1 +echo Error - No UUDECODE utility to decode nhico.uu +goto hasicon2 +:hasicon1 +echo copy .\nethack.ico ..\..\winhacknt +copy .\nethack.ico ..\..\winhacknt +:hasicon2 +if NOT exist ..\..\winhacknt\nethack.ico set err_nouu=Y + goto done -:err_plev -echo A required file ..\..\include\patchlev.h seems to be missing. -echo Check "Files." in the root directory for your NetHack distribution -echo and make sure that all required files exist. + +:err_winhack +echo Some of the files needed to build graphical NetHack +echo for Windows are not in the expected places. +echo Check "Install.nt" for a list of the steps required +echo to build NetHack. goto done + :err_data echo A required file ..\..\dat\data.bas seems to be missing. echo Check "Files." in the root directory for your NetHack distribution echo and make sure that all required files exist. goto done + :err_dir echo Your directories are not set up properly, please re-read the echo documentation. +goto done + +:err_set +echo. +echo Usage: +echo "%0 " +echo. +echo Run this batch file specifying one of the following: +echo tty, winhack, ce +echo. +echo The tty argument is for preparing to build a console I/O TTY version +echo of NetHack. +echo. +echo The winhack argument is for preparing to build a graphical version +echo of NetHack. +echo. +echo The CE argument is for preparing to build a Windows CE version +echo of NetHack. +echo. +goto end + :done +echo done! +echo. +if "%err_nouu%"=="" echo Proceed with the next step documented in Install.nt +if "%err_nouu%"=="" echo for building %opt%. +echo. +if "%err_nouu%"=="" goto fini +echo Apparently you have no UUDECODE utility in your path. +echo You need a UUDECODE utility in order to turn several .uu files +echo into their decoded binary versions. +echo Check "Install.nt" for a list of prerequisites for building NetHack. + +:fini +:end diff --git a/util/lev_main.c b/util/lev_main.c index ea2ffc258..2634d50de 100644 --- a/util/lev_main.c +++ b/util/lev_main.c @@ -25,6 +25,10 @@ # endif #endif +#ifdef WIN_CE +#define PREFIX "\\nethack\\dat\\" +#endif + #ifndef MPWTOOL # define SpinCursor(x) #endif diff --git a/util/recover.c b/util/recover.c index 94ab54763..f6b812b94 100644 --- a/util/recover.c +++ b/util/recover.c @@ -26,7 +26,13 @@ int FDECL(open_levelfile, (int)); int NDECL(create_savefile); void FDECL(copy_bytes, (int,int)); +#ifndef WIN_CE #define Fprintf (void)fprintf +#else +#define Fprintf (void)nhce_message +static void nhce_message(FILE*, const char*, ...); +#endif + #define Close (void)close #ifdef UNIX @@ -340,11 +346,19 @@ char *str; if (!str) return (char *)0; bsize = EXEPATHBUFSZ; tmp = exepathbuf; -# ifndef WIN32 +#if !defined(WIN32) strcpy (tmp, str); +#else +# if defined(WIN_CE) + { + TCHAR wbuf[EXEPATHBUFSZ]; + GetModuleFileName((HANDLE)0, wbuf, EXEPATHBUFSZ); + NH_W2A(wbuf, tmp, bsize); + } # else *(tmp + GetModuleFileName((HANDLE)0, tmp, bsize)) = '\0'; # endif +#endif tmp2 = strrchr(tmp, PATH_SEPARATOR); if (tmp2) *tmp2 = '\0'; return tmp; @@ -356,4 +370,19 @@ char *str; const char amiga_version_string[] = AMIGA_VERSION_STRING; #endif +#ifdef WIN_CE +void nhce_message(FILE* f, const char* str, ...) +{ + va_list ap; + TCHAR wbuf[NHSTR_BUFSIZE]; + char buf[NHSTR_BUFSIZE]; + + va_start(ap, str); + vsprintf(buf, str, ap); + va_end(ap); + + MessageBox(NULL, NH_A2W(buf, wbuf, NHSTR_BUFSIZE), TEXT("Recover"), MB_OK); +} +#endif + /*recover.c*/