Merge branch 'NetHack-3.7' into twitch-interact
This commit is contained in:
2
sys/amiga/.gitattributes
vendored
Normal file
2
sys/amiga/.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.p NHSUBST
|
||||
* NH_filestag=(file%s_for_Amiga_versions)
|
||||
107
sys/amiga/README.amiga
Normal file
107
sys/amiga/README.amiga
Normal file
@@ -0,0 +1,107 @@
|
||||
NetHack 3.7 for Amiga
|
||||
====================
|
||||
|
||||
Requirements
|
||||
------------
|
||||
- AmigaOS 3.0 or later (Kickstart 39+)
|
||||
- 6 MB free RAM minimum (8 MB recommended)
|
||||
- Hard drive with ~5 MB free space
|
||||
|
||||
Recommended: RTG graphics card (Picasso96/CyberGraphX) for best
|
||||
tile rendering. Native AGA/OCS/ECS chipsets are supported.
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
Extract NH370AMI.ZIP to a directory and assign it:
|
||||
|
||||
assign NetHack: <path>
|
||||
|
||||
The directory should contain:
|
||||
nethack - game binary
|
||||
nhdat - data library
|
||||
symbols - symbol set definitions
|
||||
sysconf - system configuration
|
||||
nethack.cnf - game options
|
||||
hack.font - font descriptor
|
||||
hack/8 - font bitmap (8pt)
|
||||
tiles/tiles16.iff - 16-color tiles (OCS/ECS)
|
||||
tiles/tiles32.iff - 32-color tiles (AGA/RTG)
|
||||
tomb.iff - tombstone image
|
||||
record - high score file
|
||||
|
||||
To play:
|
||||
cd NetHack:
|
||||
nethack
|
||||
|
||||
|
||||
Display Modes
|
||||
-------------
|
||||
Two display modes are available, selected in nethack.cnf:
|
||||
|
||||
Text mode (AMII):
|
||||
OPTIONS=symset:AmigaFont
|
||||
|
||||
Tile mode (AMIV):
|
||||
OPTIONS=windowtype:amiv
|
||||
|
||||
Tile mode auto-selects tiles32.iff (32 colors, 5 bitplanes) when the
|
||||
screen supports 32+ colors, otherwise tiles16.iff (16 colors, 4 planes).
|
||||
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
Edit nethack.cnf for game options. Key settings:
|
||||
|
||||
OPTIONS=windowtype:amiv - tile graphics (default)
|
||||
OPTIONS=symset:AmigaFont - text mode with line-drawing chars
|
||||
OPTIONS=menucolors - colored inventory items
|
||||
OPTIONS=time,lit_corridor - show turn count, lit corridors
|
||||
OPTIONS=boulder:0 - display boulders as '0'
|
||||
|
||||
Menu color examples (add after OPTIONS=menucolors):
|
||||
MENUCOLOR=" blessed "=green
|
||||
MENUCOLOR=" cursed "=red
|
||||
MENUCOLOR=" uncursed "=cyan
|
||||
|
||||
|
||||
Building from Source
|
||||
--------------------
|
||||
Cross-compilation from Linux using bebbo's m68k-amigaos-gcc toolchain
|
||||
(https://franke.ms/git/bebbo/amiga-gcc):
|
||||
|
||||
# Install toolchain to /opt/amiga
|
||||
# Clone NetHack 3.7 source
|
||||
cd NetHack
|
||||
sys/unix/setup.sh sys/unix/hints/linux.370
|
||||
make fetch-lua
|
||||
make CROSS_TO_AMIGA=1 fetch-regex
|
||||
make CROSS_TO_AMIGA=1 all
|
||||
make CROSS_TO_AMIGA=1 package
|
||||
|
||||
The distribution ZIP is created at targets/amiga/NH370AMI.ZIP.
|
||||
|
||||
Toolchain requirements:
|
||||
- m68k-amigaos-gcc (bebbo's amigaos-cross-toolchain in /opt/amiga)
|
||||
- -noixemul (libnix) for linking
|
||||
- -m68000 for maximum compatibility (or -m68020/040/060)
|
||||
|
||||
|
||||
Known Issues
|
||||
------------
|
||||
- Native Amiga compilation (SAS/C, DICE) is not supported;
|
||||
cross-compilation with GCC is required
|
||||
|
||||
|
||||
Credits
|
||||
-------
|
||||
Olaf Seibert first ported NetHack 2.3 and 3.0 to the Amiga.
|
||||
Richard Addison, Andrew Church, Jochen Erwied, Mark Gooderum,
|
||||
Ken Lorber, Greg Olson, Mike Passaretti, and Gregg Wonderly
|
||||
polished and extended the 3.0 and 3.1 ports. Andrew Church,
|
||||
Ken Lorber, and Gregg Wonderly are responsible for the 3.2 port.
|
||||
Janne Salmijärvi resurrected the Amiga port for 3.3 and
|
||||
Teemu Suikki joined before 3.4.0.
|
||||
|
||||
Updated for NetHack 3.7, cross compile fixes and 32 color tile support by Ingo
|
||||
Paschke in 2026.
|
||||
518
sys/amiga/amidos.c
Normal file
518
sys/amiga/amidos.c
Normal file
@@ -0,0 +1,518 @@
|
||||
/* NetHack 3.6 amidos.c $NHDT-Date: 1432512796 2015/05/25 00:13:16 $ $NHDT-Branch: master $:$NHDT-Revision: 1.10 $ */
|
||||
/* Copyright (c) Olaf Seibert, Nijmegen, The Netherlands, 1988,1990. */
|
||||
/* Copyright (c) Kenneth Lorber, Bethesda, Maryland, 1991,1992,1993,1996. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/*
|
||||
* An assortment of imitations of cheap plastic MSDOS and Unix functions.
|
||||
*/
|
||||
|
||||
#include "hack.h"
|
||||
#include "winami.h"
|
||||
#include "windefs.h"
|
||||
|
||||
/* Defined in config.h, let's undefine it here (static function below) */
|
||||
#undef strcmpi
|
||||
|
||||
#include <libraries/dos.h>
|
||||
#include <exec/execbase.h>
|
||||
#include <intuition/intuition.h>
|
||||
|
||||
#undef COUNT
|
||||
|
||||
#if defined(__SASC_60) || defined(__GNUC__)
|
||||
#include <proto/exec.h>
|
||||
#include <proto/dos.h>
|
||||
#endif
|
||||
|
||||
/* POSIX stubs needed by libnix (-noixemul) */
|
||||
#ifdef __noixemul__
|
||||
int getpid(void) { return (int)FindTask(NULL); }
|
||||
#endif
|
||||
|
||||
#ifdef AZTEC_50
|
||||
#include <functions.h>
|
||||
#undef strcmpi
|
||||
#endif
|
||||
|
||||
/* Prototypes */
|
||||
#ifndef CROSS_TO_AMIGA
|
||||
#include "NH:sys/amiga/amiwind.p"
|
||||
#include "NH:sys/amiga/winami.p"
|
||||
#include "NH:sys/amiga/amidos.p"
|
||||
#else
|
||||
#include "amiwind.p"
|
||||
#include "winami.p"
|
||||
#include "amidos.p"
|
||||
#endif
|
||||
|
||||
|
||||
extern char Initialized;
|
||||
extern struct window_procs amii_procs;
|
||||
struct ami_sysflags sysflags = {0};
|
||||
FILE *fopenp(const char *, const char *);
|
||||
|
||||
#ifndef __SASC_60
|
||||
int Enable_Abort = 0; /* for stdio package */
|
||||
#endif
|
||||
|
||||
/* Initial path, so we can find NetHack.cnf */
|
||||
char PATH[PATHLEN] = "NetHack:";
|
||||
|
||||
static boolean record_exists(void);
|
||||
|
||||
void
|
||||
flushout(void)
|
||||
{
|
||||
(void) fflush(stdout);
|
||||
}
|
||||
|
||||
#ifndef getuid
|
||||
int
|
||||
getuid(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef getlogin
|
||||
char *
|
||||
getlogin(void)
|
||||
{
|
||||
return ((char *) NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* abs() provided by libnix/stdlib */
|
||||
|
||||
#ifdef SHELL
|
||||
int
|
||||
dosh(void)
|
||||
{
|
||||
int i = 0;
|
||||
char buf[BUFSZ];
|
||||
extern struct ExecBase *SysBase;
|
||||
|
||||
/* Only under 2.0 and later ROMs do we have System() */
|
||||
if (SysBase->LibNode.lib_Version >= 37 && !amibbs) {
|
||||
getlin("Enter CLI Command...", buf);
|
||||
if (buf[0] != '\033')
|
||||
i = System(buf, NULL);
|
||||
} else {
|
||||
i = 0;
|
||||
pline("No mysterious force prevented you from using multitasking.");
|
||||
}
|
||||
return i;
|
||||
}
|
||||
#endif /* SHELL */
|
||||
|
||||
#ifdef MFLOPPY
|
||||
#include <ctype.h>
|
||||
|
||||
#define Sprintf (void) sprintf
|
||||
|
||||
#define EXTENSION 72
|
||||
|
||||
/*
|
||||
* This routine uses an approximation of the free bytes on a disk.
|
||||
* How large a file you can actually write depends on the number of
|
||||
* extension blocks you need for it.
|
||||
* In each extenstion block there are maximum 72 pointers to blocks,
|
||||
* so every 73 disk blocks have only 72 available for data.
|
||||
* The (necessary) file header is also good for 72 data block pointers.
|
||||
*/
|
||||
/* TODO: update this for FFS */
|
||||
long
|
||||
freediskspace(char *path)
|
||||
{
|
||||
#ifdef UNTESTED
|
||||
/* these changes from Patric Mueller <bhaak@gmx.net> for AROS to
|
||||
* handle larger disks. Also needs limits.h and aros/oldprograms.h
|
||||
* for AROS. (keni)
|
||||
*/
|
||||
unsigned long long freeBytes = 0;
|
||||
#else
|
||||
long freeBytes = 0;
|
||||
#endif
|
||||
struct InfoData *infoData; /* Remember... longword aligned */
|
||||
char fileName[32];
|
||||
|
||||
/*
|
||||
* Find a valid path on the device of which we want the free space.
|
||||
* If there is a colon in the name, it is an absolute path
|
||||
* and all up to the colon is everything we need.
|
||||
* Remember slashes in a volume name are allowed!
|
||||
* If there is no colon, it is relative to the current directory,
|
||||
* so must be on the current device, so "" is enough...
|
||||
*/
|
||||
{
|
||||
char *colon;
|
||||
|
||||
strncpy(fileName, path, sizeof(fileName) - 1);
|
||||
fileName[31] = 0;
|
||||
if (colon = strchr(fileName, ':'))
|
||||
colon[1] = '\0';
|
||||
else
|
||||
fileName[0] = '\0';
|
||||
}
|
||||
{
|
||||
BPTR fileLock;
|
||||
infoData = (struct InfoData *) alloc(sizeof(struct InfoData));
|
||||
if (fileLock = Lock(fileName, SHARED_LOCK)) {
|
||||
if (Info(fileLock, infoData)) {
|
||||
/* We got a kind of DOS volume, since we can Lock it. */
|
||||
/* Calculate number of blocks available for new file */
|
||||
/* Kludge for the ever-full VOID: (oops RAM:) device */
|
||||
if (infoData->id_UnitNumber == -1
|
||||
&& infoData->id_NumBlocks == infoData->id_NumBlocksUsed) {
|
||||
freeBytes = AvailMem(0L) - 64 * 1024L;
|
||||
/* Just a stupid guess at the */
|
||||
/* Ram-Handler overhead per block: */
|
||||
freeBytes -= freeBytes / 16;
|
||||
} else {
|
||||
/* Normal kind of DOS file system device/volume */
|
||||
freeBytes =
|
||||
infoData->id_NumBlocks - infoData->id_NumBlocksUsed;
|
||||
freeBytes -= (freeBytes + EXTENSION) / (EXTENSION + 1);
|
||||
freeBytes *= infoData->id_BytesPerBlock;
|
||||
#ifdef UNTESTED
|
||||
if (freeBytes > LONG_MAX) {
|
||||
freeBytes = LONG_MAX;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (freeBytes < 0)
|
||||
freeBytes = 0;
|
||||
}
|
||||
UnLock(fileLock);
|
||||
}
|
||||
free(infoData);
|
||||
return freeBytes;
|
||||
}
|
||||
}
|
||||
|
||||
long
|
||||
filesize(char *file)
|
||||
{
|
||||
BPTR fileLock;
|
||||
struct FileInfoBlock *fileInfoBlock;
|
||||
long size = 0;
|
||||
|
||||
fileInfoBlock =
|
||||
(struct FileInfoBlock *) alloc(sizeof(struct FileInfoBlock));
|
||||
if (fileLock = Lock(file, SHARED_LOCK)) {
|
||||
if (Examine(fileLock, fileInfoBlock)) {
|
||||
size = fileInfoBlock->fib_Size;
|
||||
}
|
||||
UnLock(fileLock);
|
||||
}
|
||||
free(fileInfoBlock);
|
||||
return size;
|
||||
}
|
||||
|
||||
#if 0
|
||||
void
|
||||
void
|
||||
eraseall(const char *path, const char *files)
|
||||
{
|
||||
BPTR dirLock, dirLock2;
|
||||
struct FileInfoBlock *fibp;
|
||||
int chklen;
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
if(files != g.alllevels)panic("eraseall");
|
||||
#endif
|
||||
chklen=(int)index(files,'*')-(int)files;
|
||||
|
||||
if (dirLock = Lock( (char *)path ,SHARED_LOCK)) {
|
||||
dirLock2=DupLock(dirLock);
|
||||
dirLock2= CurrentDir(dirLock2);
|
||||
fibp=AllocMem(sizeof(struct FileInfoBlock),0);
|
||||
if(fibp){
|
||||
if(Examine(dirLock,fibp)){
|
||||
while(ExNext(dirLock,fibp)){
|
||||
if(!strncmp(fibp->fib_FileName,files,chklen)){
|
||||
DeleteFile(fibp->fib_FileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
FreeMem(fibp,sizeof(struct FileInfoBlock));
|
||||
}
|
||||
UnLock(dirLock);
|
||||
UnLock(CurrentDir(dirLock2));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* This size makes that most files can be copied with two Read()/Write()s */
|
||||
|
||||
#if 0 /* Unused */
|
||||
#define COPYSIZE 4096
|
||||
|
||||
char *CopyFile(const char *from, const char *to)
|
||||
{
|
||||
BPTR fromFile, toFile;
|
||||
char *buffer;
|
||||
long size;
|
||||
char *error = NULL;
|
||||
|
||||
buffer = (char *) alloc(COPYSIZE);
|
||||
if (fromFile = Open( (char *)from, MODE_OLDFILE)) {
|
||||
if (toFile = Open( (char *)to, MODE_NEWFILE)) {
|
||||
while (size = Read(fromFile, buffer, (long)COPYSIZE)) {
|
||||
if (size == -1){
|
||||
error = "Read error";
|
||||
break;
|
||||
}
|
||||
if (size != Write(toFile, buffer, size)) {
|
||||
error = "Write error";
|
||||
break;
|
||||
}
|
||||
}
|
||||
Close(toFile);
|
||||
} else
|
||||
error = "Cannot open destination";
|
||||
Close(fromFile);
|
||||
} else
|
||||
error = "Cannot open source (this should not occur)";
|
||||
free(buffer);
|
||||
return error;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MFLOPPY
|
||||
/* this should be replaced */
|
||||
int
|
||||
saveDiskPrompt(int start)
|
||||
{
|
||||
char buf[BUFSIZ], *bp;
|
||||
BPTR fileLock;
|
||||
if (sysflags.asksavedisk) {
|
||||
/* Don't prompt if you can find the save file */
|
||||
if (fileLock = Lock(gs.SAVEF, SHARED_LOCK)) {
|
||||
UnLock(fileLock);
|
||||
#if defined(TTY_GRAPHICS)
|
||||
if (windowprocs.win_init_nhwindows
|
||||
!= amii_procs.win_init_nhwindows)
|
||||
clear_nhwindow(WIN_MAP);
|
||||
#endif
|
||||
#if defined(AMII_GRAPHICS)
|
||||
if (windowprocs.win_init_nhwindows
|
||||
== amii_procs.win_init_nhwindows)
|
||||
clear_nhwindow(WIN_BASE);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
pline("If save file is on a SAVE disk, put that disk in now.");
|
||||
if (strlen(gs.SAVEF) > QBUFSZ - 25 - 22)
|
||||
panic("not enough buffer space for prompt");
|
||||
/* THIS IS A HACK */
|
||||
#if defined(TTY_GRAPHICS)
|
||||
if (windowprocs.win_init_nhwindows != amii_procs.win_init_nhwindows) {
|
||||
getlin("File name ?", buf);
|
||||
clear_nhwindow(WIN_MAP);
|
||||
}
|
||||
#endif
|
||||
#if defined(AMII_GRAPHICS)
|
||||
if (windowprocs.win_init_nhwindows == amii_procs.win_init_nhwindows) {
|
||||
getlind("File name ?", buf, gs.SAVEF);
|
||||
clear_nhwindow(WIN_BASE);
|
||||
}
|
||||
#endif
|
||||
clear_nhwindow(WIN_MESSAGE);
|
||||
if (!start && *buf == '\033')
|
||||
return 0;
|
||||
|
||||
/* Strip any whitespace. Also, if nothing was entered except
|
||||
* whitespace, do not change the value of gs.SAVEF.
|
||||
*/
|
||||
for (bp = buf; *bp; bp++) {
|
||||
if (!isspace(*bp)) {
|
||||
strncpy(gs.SAVEF, bp, PATHLEN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#endif /* MFLOPPY */
|
||||
|
||||
/* Return 1 if the record file was found */
|
||||
static boolean
|
||||
record_exists(void)
|
||||
{
|
||||
FILE *file;
|
||||
|
||||
if (file = fopenp(RECORD, "r")) {
|
||||
fclose(file);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#ifdef MFLOPPY
|
||||
/*
|
||||
* Under MSDOS: Prompt for game disk, then check for record file.
|
||||
* For Amiga: do nothing, but called from restore.c
|
||||
*/
|
||||
void
|
||||
gameDiskPrompt(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Add a slash to any name not ending in / or :. There must
|
||||
* be room for the /.
|
||||
*/
|
||||
void
|
||||
append_slash(char *name)
|
||||
{
|
||||
char *ptr;
|
||||
|
||||
if (!*name)
|
||||
return;
|
||||
|
||||
ptr = eos(name) - 1;
|
||||
if (*ptr != '/' && *ptr != ':') {
|
||||
*++ptr = '/';
|
||||
*++ptr = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
getreturn(const char *str)
|
||||
{
|
||||
int ch;
|
||||
|
||||
raw_printf("Hit <RETURN> %s.", str);
|
||||
while ((ch = nhgetch()) != '\n' && ch != '\r')
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Follow the PATH, trying to fopen the file.
|
||||
*/
|
||||
#define PATHSEP ';'
|
||||
|
||||
FILE *
|
||||
fopenp(const char *name, const char *mode)
|
||||
{
|
||||
char *bp, *pp, lastch = 0;
|
||||
FILE *fp;
|
||||
BPTR theLock;
|
||||
char buf[BUFSIZ];
|
||||
|
||||
/* Try the default directory first. Then look along PATH.
|
||||
*/
|
||||
if (strlen(name) >= BUFSIZ)
|
||||
return (NULL);
|
||||
strcpy(buf, name);
|
||||
if (theLock = Lock(buf, SHARED_LOCK)) {
|
||||
UnLock(theLock);
|
||||
if (fp = fopen(buf, mode))
|
||||
return fp;
|
||||
}
|
||||
pp = PATH;
|
||||
while (pp && *pp) {
|
||||
bp = buf;
|
||||
while (*pp && *pp != PATHSEP) {
|
||||
if (bp > buf + BUFSIZ - 1)
|
||||
return (NULL);
|
||||
lastch = *bp++ = *pp++;
|
||||
}
|
||||
if (lastch != ':' && lastch != '/' && bp != buf)
|
||||
*bp++ = '/';
|
||||
if (bp + strlen(name) > buf + BUFSIZ - 1)
|
||||
return (NULL);
|
||||
strcpy(bp, name);
|
||||
if (theLock = Lock(buf, SHARED_LOCK)) {
|
||||
UnLock(theLock);
|
||||
if (fp = fopen(buf, mode))
|
||||
return fp;
|
||||
}
|
||||
if (*pp)
|
||||
pp++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#endif /* MFLOPPY */
|
||||
|
||||
#ifdef CHDIR
|
||||
|
||||
/*
|
||||
* A not general-purpose directory changing routine.
|
||||
* Assumes you want to return to the original directory eventually,
|
||||
* by chdir()ing to orgdir (which is defined in pcmain.c).
|
||||
* Assumes -1 is not a valid lock, since 0 is valid.
|
||||
*/
|
||||
|
||||
#define NO_LOCK ((BPTR) -1)
|
||||
|
||||
static BPTR OrgDirLock = NO_LOCK;
|
||||
|
||||
int
|
||||
chdir(
|
||||
#ifdef CROSS_TO_AMIGA
|
||||
const
|
||||
#endif
|
||||
char *dir)
|
||||
{
|
||||
extern char orgdir[];
|
||||
|
||||
if (dir == orgdir) {
|
||||
/* We want to go back to where we came from. */
|
||||
if (OrgDirLock != NO_LOCK) {
|
||||
UnLock(CurrentDir(OrgDirLock));
|
||||
OrgDirLock = NO_LOCK;
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* Go to some new place. If still at the original
|
||||
* directory, save the FileLock.
|
||||
*/
|
||||
BPTR newDir;
|
||||
|
||||
if (newDir = Lock((char *) dir, SHARED_LOCK)) {
|
||||
if (OrgDirLock == NO_LOCK) {
|
||||
OrgDirLock = CurrentDir(newDir);
|
||||
} else {
|
||||
UnLock(CurrentDir(newDir));
|
||||
}
|
||||
} else {
|
||||
return -1; /* Failed */
|
||||
}
|
||||
}
|
||||
/* CurrentDir always succeeds if you have a lock */
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CHDIR */
|
||||
|
||||
/* Chdir back to original directory
|
||||
*/
|
||||
#undef exit
|
||||
void
|
||||
nethack_exit(int code)
|
||||
{
|
||||
#ifdef CHDIR
|
||||
extern char orgdir[];
|
||||
#endif
|
||||
|
||||
#ifdef CHDIR
|
||||
chdir(orgdir); /* chdir, not chdirx */
|
||||
#endif
|
||||
|
||||
#ifdef AMII_GRAPHICS
|
||||
if (windowprocs.win_init_nhwindows == amii_procs.win_init_nhwindows)
|
||||
CleanUp();
|
||||
#endif
|
||||
exit(code);
|
||||
}
|
||||
|
||||
void
|
||||
regularize(char *s) /* normalize file name - we don't like :'s or /'s */
|
||||
{
|
||||
char *lp;
|
||||
|
||||
while ((lp = strchr(s, ':')) || (lp = strchr(s, '/')))
|
||||
*lp = '_';
|
||||
}
|
||||
42
sys/amiga/amidos.p
Normal file
42
sys/amiga/amidos.p
Normal file
@@ -0,0 +1,42 @@
|
||||
/* NetHack 3.6 amidos.p $NHDT-Date: 1432512796 2015/05/25 00:13:16 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Kenneth Lorber, Bethesda, Maryland, 1992, 1993. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/* amidos.c */
|
||||
void flushout (void);
|
||||
#ifndef getuid
|
||||
int getuid (void);
|
||||
#endif
|
||||
#ifndef getpid
|
||||
int getpid (void);
|
||||
#endif
|
||||
#ifndef getlogin
|
||||
char *getlogin (void);
|
||||
#endif
|
||||
#ifndef abs
|
||||
int abs(int );
|
||||
#endif
|
||||
int tgetch (void);
|
||||
int dosh (void);
|
||||
long freediskspace(char *);
|
||||
long filesize(char *);
|
||||
void eraseall(const char * , const char *);
|
||||
char *CopyFile(const char * , const char *);
|
||||
void copybones(int );
|
||||
void playwoRAMdisk (void);
|
||||
int saveDiskPrompt(int );
|
||||
void gameDiskPrompt (void);
|
||||
void append_slash(char *);
|
||||
void getreturn(const char *);
|
||||
#ifndef msmsg
|
||||
void msmsg( const char *, ... );
|
||||
#endif
|
||||
#if !defined(__SASC_60) && !defined(_DCC) && !defined(CROSS_TO_AMIGA)
|
||||
int chdir(char *);
|
||||
#endif
|
||||
#ifndef strcmpi
|
||||
int strcmpi(char * , char *);
|
||||
#endif
|
||||
#if !defined(memcmp) && !defined(AZTEC_C) && !defined(_DCC) && !defined(__GNUC__)
|
||||
int memcmp(unsigned char * , unsigned char * , int );
|
||||
#endif
|
||||
9
sys/amiga/amifont.uu
Normal file
9
sys/amiga/amifont.uu
Normal file
@@ -0,0 +1,9 @@
|
||||
begin 777 hack.font
|
||||
M#P```6AA8VLO.```````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
G````````````````````````````````````````````````"`!`
|
||||
`
|
||||
end
|
||||
59
sys/amiga/amifont8.uu
Normal file
59
sys/amiga/amifont8.uu
Normal file
@@ -0,0 +1,59 @@
|
||||
begin 644 8
|
||||
M```#\P`````````!``````````````)E```#Z0```F5P_TYU```````````,
|
||||
M`````!H/@``!``````````````````````````````````````````!&140`
|
||||
M```````````,`````!H`````"20`"`!```@`!@`!```@_P```&X`M```!@X`
|
||||
M```````````8;&P8`#@8##````````,\&#P\''X<?CP\```,`#`\?!C\//C^
|
||||
M_CQF?@[F\(+&./PX_#Q^9L/&P\/^/,`\$``8`.``#@`<`.`8!N`X````````
|
||||
M``@````````.&'!RS.?BY^?EY^?GY^?GY.?AY^?__\,8`&;GY^?GY^3GX>?G
|
||||
MYVH```!J:A@````8&!@``!@88L!6`%96```8`!@8`*@5P8.BP:@5YP/_[W_^
|
||||
M````P,```P`\;&P^QFP8&!AF&`````9F.&9F/&`P9F9F&!@8`!AFQCQF9FQF
|
||||
M9F9F&`9F8,;F;&9L9F9:9L/&9L/&,&`,.``8`&``!@`V`&```&`8````````
|
||||
M`!@````````8&!B<,Z6BH:&EI*2AI:6EI*2AI*3__\,8`&:DH:6EI:2DH:2D
|
||||
MI58```!65CP````8&!@``!@\96-J`&IJ```8`!@8UB/$`\`C+"O4A`/_]Y_Y
|
||||
M````P,```P`\`/Y@S&@P,`P\&`````QN&`8&;'Q@!F9F&!@P?@P&WCQFP&9@
|
||||
M8,!F&`9L8.[VQF;&9G`89F;&/&:,,#`,;``,/&P\-CPP.VPX!F889GP\W#WL
|
||||
M/CYF9F-C9GX8&!@`S.7BY^?GY^?AY^?GY^3GY^?_`.<8`,/GX>?GY^?DY^?G
|
||||
MY6K_#_!KZCP````8&!@``!AF8#97_];7`&8<`#@\;&I6)F1I/&F6YP./]]_[
|
||||
M#__PP,```P`8`&P\&'8`,`S_?@!^`!A^&!P<S`9\##P^``!@``8,WF9\P&9X
|
||||
M>,Y^&`9X8/[>QGS&?#@89F;6&#P8,!@,Q@``!G9F;F9X9G88!FP8=V9F9F9V
|
||||
M8!AF9FLV9DQP&`X`,Z6BI*&AH:6AI:&EI:2EI*3_`.<8_P`E(24A)24D)20D
|
||||
MI595/5Q55F;_#_`/\/\``-O#?AMJ5:JJ```?__C_JIPY:];X*]I;A`-F[\_S
|
||||
M.``<P&``!@`8`/X&,-P`,`P\&````#!V&#`&_@9F&&8&```P``P8WGYFP&9@
|
||||
M8,9F&&9L8M;.QF#&;`X89CS^/!@R,`P,````'F9@9GXP9F88!G@8:V9F9F9F
|
||||
M/!AF9FL<9A@8&!@`S.?BY^?AY^?AY^'EY^?GY^3_`.<8_P`G(2<A)2<G)R<D
|
||||
MIVJJ:JHZK&8`&!@``!@``,/;9NQ5JE95&``</#@`;&O6G#DK^#?LYP/Q[_//
|
||||
M8``&P#@`'````&Q\9LP`&!AF&!@`&&!F&&9F#&9F&&8,&!@8?A@`P,-F9FQF
|
||||
M8&9F&&9F9L;&;&!L9F889CSN9AAF,`8,````9F9F9F`P/&88!FP88V9F?#Y@
|
||||
M!AIF/#8V/#(8&!@`,P````````````````````#_`.<8`,,`````````````
|
||||
M`%;_5=8/\,,`&!@``!AS`&889C9KU^K_```8&!@`UB9D:E8\:;0M``/_W_O?
|
||||
MP``#P`__\``8`&P8QG8`##```!@`&,`\?GX\'CP\&#PX&!@,`#`8>,/\//C^
|
||||
M\#YF?CSF_L;&./`\XSP\/AC&PSS^/`,\````.SP\.SQXQN8\9N8\8V8\8`;P
|
||||
M?`P[	C&'X.&'``S`````````````````````#__\,8`&8`````````````
|
||||
M`&H`:VH``,,`&!@``!B<&#P89F-6:E8``&88&!@`K`/`(\0L(T&"``/_W_F?
|
||||
MP``#P````````````````````#```````````````````#``````````````
|
||||
M```````````````&`````````````````/X`````````?```/```````\`<`
|
||||
M````````<```````,P````````````````````#__\,8`&8`````````````
|
||||
M`%8`5E8`````&!@``!@``!@8`,!J5FH````8&!@``,&#J!7!HL&#``/_[_Y_
|
||||
MP``#P`````````@`"``(`!``"``8``@`(``(`"@`"``P``@`.``(`$``"`!(
|
||||
M``@`4``(`%@`"`!@``@`:``(`'``"`!X``@`@``(`(@`"`"0``@`F``(`*``
|
||||
M"`"H``@`L``(`+@`"`#```@`R``(`-``"`#8``@`X``(`.@`"`#P``@`^``(
|
||||
M`0``"`$(``@!$``(`1@`"`$@``@!*``(`3``"`$X``@!0``(`4@`"`%0``@!
|
||||
M6``(`6``"`%H``@!<``(`7@`"`&```@!B``(`9``"`&8``@!H``(`:@`"`&P
|
||||
M``@!N``(`<``"`'(``@!T``(`=@`"`'@``@!Z``(`?``"`'X``@"```(`@@`
|
||||
M"`(0``@"&``(`B``"`(H``@",``(`C@`"`)```@"2``(`E``"`)8``@"8``(
|
||||
M`F@`"`)P``@">``(`H``"`*(``@"D``(`I@`"`*@``@"J``(`K``"`*X``@"
|
||||
MP``(`L@`"`+0``@"V``(`N``"`+H``@"\``(`O@`"`,```@#"``(`Q``"`,8
|
||||
M``@#(``(`R@`"`,P``@#.``(`T``"`-(``@#4``(`U@`"`-@``@#:``(`W``
|
||||
M"`-X``@#@``(`X@`"`.0``@#F``(`Z``"`.H``@#L``(`[@`"`/```@#R``(
|
||||
M`]``"`/8``@#X``(`^@`"`/P``@#^``(!```"``(``@`$``(`!@`"``@``@`
|
||||
M*``(`#``"``X``@`0``(`$@`"`!0``@`6``(`&``"`!H``@`<``(`'@`"`"`
|
||||
M``@`B``(`)``"`"8``@`H``(`*@`"`"P``@`N``(`,``"`#(``@`T``(`-@`
|
||||
M"`#@``@`Z``(`/``"`#X``@$"``(!!``"`08``@$(``(!"@`"`0P``@#J``(
|
||||
M!#@`"`.8``@$0``(!$@`"`10``@$6``(!&``"`1H``@$<``(!'@`"`2```@$
|
||||
MB``(!)``"`28``@$H``(!*@`"`2P``@$N``(!,``"`3(``@!V``(`>``"`'H
|
||||
M``@!\``(`?@`"`(```@$T``(!-@`"`3@``@$Z``(!/``"`3X``@%```(!0@`
|
||||
M"`40``@%&``(!2``"`4H``@%,``(!3@`"`5```@%2``(!5``"`58``@%8``(
|
||||
M!6@`"`5P``@%>``(!8``"`6(``@%D``(!9@`"`+8``@"X``(`N@`"`+P``@"
|
||||
M^``(````"``````#[`````0`````````#@```$0```!<````8@````````/R
|
||||
`
|
||||
end
|
||||
49
sys/amiga/amigst.c
Normal file
49
sys/amiga/amigst.c
Normal file
@@ -0,0 +1,49 @@
|
||||
/* NetHack 3.6 amigst.c $NHDT-Date: 1432512794 2015/05/25 00:13:14 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Gregg Wonderly, Naperville, IL, 1992, 1993 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <exec/types.h>
|
||||
#include <exec/io.h>
|
||||
#include <exec/alerts.h>
|
||||
#include <exec/devices.h>
|
||||
#include <devices/console.h>
|
||||
#include <devices/conunit.h>
|
||||
#include <graphics/gfxbase.h>
|
||||
#include <intuition/intuition.h>
|
||||
#include <libraries/dosextens.h>
|
||||
#include <ctype.h>
|
||||
#undef strcmpi
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef __SASC
|
||||
#include <dos.h> /* for __emit */
|
||||
#include <string.h>
|
||||
#include <proto/dos.h>
|
||||
#include <proto/exec.h>
|
||||
#include <proto/graphics.h>
|
||||
#include <proto/intuition.h>
|
||||
#include <proto/diskfont.h>
|
||||
#include <proto/console.h>
|
||||
#endif
|
||||
|
||||
#include "hack.h"
|
||||
#include "winprocs.h"
|
||||
#include "winami.h"
|
||||
|
||||
#ifdef AZTEC
|
||||
#include <functions.h>
|
||||
#endif
|
||||
|
||||
#ifndef CROSS_TO_AMIGA
|
||||
#include "NH:sys/amiga/winami.p"
|
||||
#include "NH:sys/amiga/amiwind.p"
|
||||
#include "NH:sys/amiga/amidos.p"
|
||||
#else
|
||||
#include "winami.p"
|
||||
#include "amiwind.p"
|
||||
#include "amidos.p"
|
||||
#endif
|
||||
|
||||
/* end amigst.c */
|
||||
31
sys/amiga/amii.hlp
Normal file
31
sys/amiga/amii.hlp
Normal file
@@ -0,0 +1,31 @@
|
||||
Amiga-specific help file for NetHack 3.6
|
||||
|
||||
The Amiga port of NetHack supports a number of additional commands
|
||||
and facilities specific to the Amiga. Listed below are the things
|
||||
which are either specific to the Amiga port or might not appear
|
||||
in other ports.
|
||||
|
||||
While playing NetHack you can press:
|
||||
|
||||
ALT-HELP Color requestor.
|
||||
CTL-HELP Scale display (amitile only).
|
||||
SHIFT-HELP Overview window (amitile only).
|
||||
|
||||
Amiga-specific run-time options:
|
||||
altmeta use the alt keys as meta keys
|
||||
flush throw away keyboard type-ahead
|
||||
|
||||
Command line options recognized are
|
||||
|
||||
-n No News at game startup.
|
||||
-X Play in discovery mode.
|
||||
-D Play in debug mode.
|
||||
-L Interlaced screen.
|
||||
-l Never Interlaced screen.
|
||||
-u Play as player given as
|
||||
an argument.
|
||||
-r Pick a race given as an
|
||||
argument.
|
||||
-p Pick a profession given
|
||||
as an argument
|
||||
-? Gives command line usage.
|
||||
107
sys/amiga/amimenu.c
Normal file
107
sys/amiga/amimenu.c
Normal file
@@ -0,0 +1,107 @@
|
||||
/* NetHack 3.6 amimenu.c $NHDT-Date: 1432512796 2015/05/25 00:13:16 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Olaf 'Rhialto' Seibert, 1989 */
|
||||
/* Copyright (c) Kenneth Lorber, Bethesda, Maryland, 1992, 1993, 1996 */
|
||||
/* Copyright (c) Janne Salmijärvi, 2000 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/* Originally by John Toebes. */
|
||||
|
||||
/* GadTools menus by jhsa */
|
||||
|
||||
struct NewMenu GTHackMenu[] = {
|
||||
{ NM_TITLE, "Commands", 0, 0, 0, 0 },
|
||||
{ NM_ITEM, "? Display help menu", 0, 0, 0, (void *) '?' },
|
||||
{ NM_ITEM, "& Explain a command", 0, 0, 0, (void *) '&' },
|
||||
{ NM_ITEM, "O Set options", 0, 0, 0, (void *) 'O' },
|
||||
{ NM_ITEM, "! AmigaDos command", 0, 0, 0, (void *) '!' },
|
||||
{ NM_ITEM, "v Version number", 0, 0, 0, (void *) 'v' },
|
||||
{ NM_ITEM, "V Long version and game history", 0, 0, 0, (void *) 'V' },
|
||||
{ NM_ITEM, "^R Redraw screen", 0, 0, 0, (void *) 022 },
|
||||
{ NM_ITEM, "^P Repeat previous messages", 0, 0, 0, (void *) 020 },
|
||||
{ NM_ITEM, "M-q #quit the game", 0, 0, 0, (void *)(128 + 'q') },
|
||||
{ NM_ITEM, "S Save the game", 0, 0, 0, (void *) 'S' },
|
||||
{ NM_TITLE, "Inventory", 0, 0, 0, 0 },
|
||||
{ NM_ITEM, "i Inventory", 0, 0, 0, (void *) 'i' },
|
||||
{ NM_ITEM, "p Pay your bill", 0, 0, 0, (void *) 'p' },
|
||||
{ NM_ITEM, "d Drop an object", 0, 0, 0, (void *) 'd' },
|
||||
{ NM_ITEM, "D Drop several things", 0, 0, 0, (void *) 'D' },
|
||||
{ NM_ITEM, ", Pickup an object", 0, 0, 0, (void *) ',' },
|
||||
{ NM_ITEM, "@ Toggle pickup", 0, 0, 0, (void *) '@' },
|
||||
{ NM_ITEM, "/ Identify something", 0, 0, 0, (void *) '/' },
|
||||
{ NM_ITEM, "C Christen a monster", 0, 0, 0, (void *) 'C' },
|
||||
{ NM_ITEM, "+ List known spells", 0, 0, 0, (void *) '+' },
|
||||
{ NM_ITEM, "$ Your gold", 0, 0, 0, (void *) '$' },
|
||||
{ NM_TITLE, "Actions", 0, 0, 0, 0 },
|
||||
{ NM_ITEM, "a Apply/use something", 0, 0, 0, (void *) 'a' },
|
||||
{ NM_ITEM, "e Eat something", 0, 0, 0, (void *) 'e' },
|
||||
{ NM_ITEM, "f Fire ammunition", 0, 0, 0, (void *) 'f' },
|
||||
{ NM_ITEM, "F Fight a monster", 0, 0, 0, (void *) 'F' },
|
||||
{ NM_ITEM, "q Quaff a monster", 0, 0, 0, (void *) 'q' },
|
||||
{ NM_ITEM, "r Read scroll/book", 0, 0, 0, (void *) 'r' },
|
||||
{ NM_ITEM, "t Throw something", 0, 0, 0, (void *) 't' },
|
||||
{ NM_ITEM, "z Zap a wand", 0, 0, 0, (void *) 'z' },
|
||||
{ NM_ITEM, "Z Cast a spell", 0, 0, 0, (void *) 'Z' },
|
||||
{ NM_TITLE, "Preparations", 0, 0, 0, 0 },
|
||||
{ NM_ITEM, "A Remove all armor", 0, 0, 0, (void *) 'A' },
|
||||
{ NM_ITEM, "P Put on a ring", 0, 0, 0, (void *) 'P' },
|
||||
{ NM_ITEM, "R Remove ring", 0, 0, 0, (void *) 'R' },
|
||||
{ NM_ITEM, "Q Select ammunition for quiver", 0, 0, 0, (void *) 'Q' },
|
||||
{ NM_ITEM, "T Take off armor", 0, 0, 0, (void *) 'T' },
|
||||
{ NM_ITEM, "w Wield a weapon", 0, 0, 0, (void *) 'w' },
|
||||
{ NM_ITEM, "W Wear armor", 0, 0, 0, (void *) 'W' },
|
||||
{ NM_ITEM, "x Swap wielded and secondary weapons", 0, 0, 0,
|
||||
(void *) 'x' },
|
||||
{ NM_ITEM, ") Current weapon", 0, 0, 0, (void *) ')' },
|
||||
{ NM_ITEM, "[ Current armor", 0, 0, 0, (void *) '[' },
|
||||
{ NM_ITEM, "= Current rings", 0, 0, 0, (void *) '=' },
|
||||
{ NM_ITEM, "\" Current amulet", 0, 0, 0, (void *) '"' },
|
||||
{ NM_ITEM, "( Current tools", 0, 0, 0, (void *) '(' },
|
||||
{ NM_ITEM, "* Current equipment", 0, 0, 0, (void *) '*' },
|
||||
{ NM_TITLE, "Movement", 0, 0, 0, 0 },
|
||||
{ NM_ITEM, "o Open door", 0, 0, 0, (void *) 'o' },
|
||||
{ NM_ITEM, "c Close door", 0, 0, 0, (void *) 'c' },
|
||||
{ NM_ITEM, "^D Kick door", 0, 0, 0, (void *) 004 },
|
||||
{ NM_ITEM, "s Search", 0, 0, 0, (void *) 's' },
|
||||
{ NM_ITEM, "< Go up stairs", 0, 0, 0, (void *) '<' },
|
||||
{ NM_ITEM, "> Go down stairs", 0, 0, 0, (void *) '>' },
|
||||
{ NM_ITEM, "^T Teleport", 0, 0, 0, (void *) 024 },
|
||||
{ NM_ITEM, ". Wait a moment", 0, 0, 0, (void *) '.' },
|
||||
{ NM_ITEM, "E Engrave message on floor", 0, 0, 0, (void *) 'E' },
|
||||
{ NM_TITLE, "Extended", 0, 0, 0, 0 },
|
||||
{ NM_ITEM, "M-a #adjust inventory letters", 0, 0, 0,
|
||||
(void *)(128 + 'a') },
|
||||
{ NM_ITEM, "M-c #chat with someone", 0, 0, 0, (void *)(128 + 'c') },
|
||||
{ NM_ITEM, "M-d #dip an object into something", 0, 0, 0,
|
||||
(void *)(128 + 'd') },
|
||||
#ifdef WEAPON_SKILLS
|
||||
{ NM_ITEM, "M-e #enhance weapon skills", 0, 0, 0, (void *)(128 + 'e') },
|
||||
#endif
|
||||
{ NM_ITEM, "M-f #force a lock", 0, 0, 0, (void *)(128 + 'f') },
|
||||
{ NM_ITEM, "M-i #invoke an object's special powers", 0, 0, 0,
|
||||
(void *)(128 + 'i') },
|
||||
{ NM_ITEM, "M-j #jump to another location", 0, 0, 0,
|
||||
(void *)(128 + 'j') },
|
||||
{ NM_ITEM, "M-l #loot a box on the floor", 0, 0, 0,
|
||||
(void *)(128 + 'l') },
|
||||
{ NM_ITEM, "M-m Use a #monster's special ability", 0, 0, 0,
|
||||
(void *)(128 + 'm') },
|
||||
{ NM_ITEM, "M-n #name an item or type of object", 0, 0, 0,
|
||||
(void *)(128 + 'n') },
|
||||
{ NM_ITEM, "M-o #offer a sacrifice to the gods", 0, 0, 0,
|
||||
(void *)(128 + 'o') },
|
||||
{ NM_ITEM, "M-p #pray to the gods for help", 0, 0, 0,
|
||||
(void *)(128 + 'p') },
|
||||
{ NM_ITEM, "M-q #quit the game", 0, 0, 0, (void *)(128 + 'q') },
|
||||
{ NM_ITEM, "M-r #rub a lamp", 0, 0, 0, (void *)(128 + 'r') },
|
||||
{ NM_ITEM, "M-s #sit down", 0, 0, 0, (void *)(128 + 's') },
|
||||
{ NM_ITEM, "M-t #turn undead", 0, 0, 0, (void *)(128 + 't') },
|
||||
{ NM_ITEM, "M-u #untrap something", 0, 0, 0, (void *)(128 + 'u') },
|
||||
{ NM_ITEM, "M-v Long #version information", 0, 0, 0,
|
||||
(void *)(128 + 'v') },
|
||||
{ NM_ITEM, "M-w #wipe off your face", 0, 0, 0, (void *)(128 + 'w') },
|
||||
{ NM_ITEM, " Your #conduct", 0, 0, 0, (void *) '#' }, /* "#co\n" */
|
||||
{ NM_ITEM, " #ride your steed", 0, 0, 0, (void *) '#' }, /* "#ri\n" */
|
||||
{ NM_ITEM, "M-2 Switch #twoweapon mode on/off", 0, 0, 0,
|
||||
(void *)(128 + '2') },
|
||||
{ NM_END, NULL, 0, 0, 0, 0 }
|
||||
};
|
||||
367
sys/amiga/amirip.c
Normal file
367
sys/amiga/amirip.c
Normal file
@@ -0,0 +1,367 @@
|
||||
/* NetHack 3.6 amirip.c $NHDT-Date: 1450453302 2015/12/18 15:41:42 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.16 $ */
|
||||
/* Copyright (c) Kenneth Lorber, Bethesda, Maryland 1991,1992,1993,1995,1996.
|
||||
*/
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#include "hack.h"
|
||||
#include <exec/types.h>
|
||||
#include <exec/io.h>
|
||||
#include <exec/alerts.h>
|
||||
#include <exec/devices.h>
|
||||
#include <devices/console.h>
|
||||
#include <devices/conunit.h>
|
||||
#include <graphics/gfxbase.h>
|
||||
#include <graphics/gfxmacros.h>
|
||||
#include <intuition/intuition.h>
|
||||
#include <libraries/dosextens.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include "winami.h"
|
||||
#include "windefs.h"
|
||||
#include "winext.h"
|
||||
#include "winproto.h"
|
||||
|
||||
static struct RastPort *rp;
|
||||
|
||||
#ifdef AMII_GRAPHICS
|
||||
|
||||
#undef NULL
|
||||
#define NULL 0
|
||||
|
||||
#ifdef AZTEC_C
|
||||
#include <functions.h>
|
||||
#else
|
||||
#ifdef _DCC
|
||||
#include <clib/dos_protos.h>
|
||||
#include <clib/exec_protos.h>
|
||||
#include <clib/console_protos.h>
|
||||
#include <clib/diskfont_protos.h>
|
||||
#else
|
||||
#include <proto/dos.h>
|
||||
#include <proto/exec.h>
|
||||
#include <proto/console.h>
|
||||
#include <proto/diskfont.h>
|
||||
#endif
|
||||
|
||||
static BitMapHeader tomb_bmhd;
|
||||
static struct BitMap *tombimg = NULL;
|
||||
|
||||
static const int cols_base[2] = { 154, 319 }; /* X location of center of columns */
|
||||
static int cols[2]; /* cols_base[] + xoff, computed per call */
|
||||
static int cno = 0; /* current column */
|
||||
#define TEXT_TOP (65 + yoff)
|
||||
|
||||
static int xoff, yoff; /* image centering */
|
||||
|
||||
/* terrible kludge */
|
||||
/* this is why prototypes should have ONLY types in them! */
|
||||
#undef red
|
||||
#undef green
|
||||
#undef blue
|
||||
#ifdef _DCC
|
||||
#include <clib/graphics_protos.h>
|
||||
#include <clib/intuition_protos.h>
|
||||
#else
|
||||
#include <proto/graphics.h>
|
||||
#include <proto/intuition.h>
|
||||
#endif
|
||||
#endif /* AZTEC_C */
|
||||
|
||||
static struct Window *ripwin = 0;
|
||||
static void tomb_text(char *);
|
||||
static void dofade(int, int, int);
|
||||
static int search_cmap(int, int, int);
|
||||
|
||||
#define STONE_LINE_LEN \
|
||||
13 /* # chars that fit on one line \
|
||||
* (note 1 ' ' border) */
|
||||
|
||||
#define DEATH_LINE 10
|
||||
#define YEAR_LINE 15
|
||||
|
||||
static unsigned short tomb_line;
|
||||
|
||||
extern struct amii_DisplayDesc *amiIDisplay;
|
||||
extern struct Screen *HackScreen;
|
||||
extern int havelace;
|
||||
|
||||
static unsigned short transpalette[AMII_MAXCOLORS] = {
|
||||
0x0000,
|
||||
};
|
||||
|
||||
static struct NewWindow newwin = { 0, 0, 640, 200, 1, 0,
|
||||
MOUSEBUTTONS | VANILLAKEY | NOCAREREFRESH,
|
||||
BORDERLESS | ACTIVATE | SMART_REFRESH,
|
||||
NULL, NULL, (UBYTE *) NULL, NULL, NULL, -1,
|
||||
-1, 0xffff, 0xffff, CUSTOMSCREEN };
|
||||
|
||||
int wh; /* was local in outrip, but needed for SCALE macro */
|
||||
|
||||
int cmap_white, cmap_black;
|
||||
|
||||
void
|
||||
amii_outrip(winid tmpwin, int how, time_t when)
|
||||
{
|
||||
int just_return = 0;
|
||||
int done, rtxth;
|
||||
|
||||
struct IntuiMessage *imsg;
|
||||
int i;
|
||||
char *dpx;
|
||||
char buf[200];
|
||||
int line, tw, ww;
|
||||
long year;
|
||||
|
||||
if (!WINVERS_AMIV || HackScreen->RastPort.BitMap->Depth < 4)
|
||||
goto cleanup;
|
||||
|
||||
/* Use the users display size */
|
||||
newwin.Height = amiIDisplay->ypix - newwin.TopEdge;
|
||||
newwin.Width = amiIDisplay->xpix;
|
||||
newwin.Screen = HackScreen;
|
||||
|
||||
for (i = 0; i < amii_numcolors; ++i)
|
||||
sysflags.amii_curmap[i] = GetRGB4(HackScreen->ViewPort.ColorMap, i);
|
||||
|
||||
ripwin = OpenWindow((void *) &newwin);
|
||||
if (!ripwin)
|
||||
goto cleanup;
|
||||
|
||||
LoadRGB4(&HackScreen->ViewPort, transpalette, amii_numcolors);
|
||||
|
||||
rp = ripwin->RPort;
|
||||
wh = ripwin->Height;
|
||||
ww = ripwin->Width;
|
||||
|
||||
#ifdef HACKFONT
|
||||
if (HackFont)
|
||||
SetFont(rp, HackFont);
|
||||
#endif
|
||||
|
||||
tomb_bmhd = ReadImageFile("tomb.iff", &tombimg);
|
||||
if (tomb_bmhd.w > ww || tomb_bmhd.h > wh)
|
||||
goto cleanup;
|
||||
|
||||
#define GENOFF(full, used) ((((full) - (used)) / 2) & ~7)
|
||||
xoff = GENOFF(ww, tomb_bmhd.w);
|
||||
yoff = GENOFF(wh, tomb_bmhd.h);
|
||||
for (i = 0; i < SIZE(cols); i++)
|
||||
cols[i] = cols_base[i] + xoff;
|
||||
|
||||
cmap_white = search_cmap(0, 0, 0);
|
||||
cmap_black = search_cmap(15, 15, 15);
|
||||
|
||||
BltBitMap(tombimg, 0, 0, rp->BitMap, xoff, yoff, tomb_bmhd.w, tomb_bmhd.h,
|
||||
0xc0, 0xff, NULL);
|
||||
|
||||
/* Put together death description */
|
||||
formatkiller(buf, sizeof buf, how, FALSE);
|
||||
|
||||
tw = TextLength(rp, buf, STONE_LINE_LEN) + 40;
|
||||
|
||||
{
|
||||
char *p = buf;
|
||||
int x, tmp;
|
||||
for (x = STONE_LINE_LEN; x; x--)
|
||||
*p++ = 'W';
|
||||
*p = '\0';
|
||||
tmp = TextLength(rp, buf, STONE_LINE_LEN) + 40;
|
||||
tw = max(tw, tmp);
|
||||
}
|
||||
|
||||
/* There are 5 lines of text on the stone. */
|
||||
rtxth = ripwin->RPort->TxHeight * 5;
|
||||
|
||||
SetAfPt(rp, (UWORD *) NULL, 0);
|
||||
SetDrPt(rp, 0xFFFF);
|
||||
|
||||
tomb_line = TEXT_TOP;
|
||||
|
||||
SetDrMd(rp, JAM1);
|
||||
|
||||
/* Put name on stone */
|
||||
Sprintf(buf, "%s", svp.plname);
|
||||
buf[STONE_LINE_LEN] = 0;
|
||||
tomb_text(buf);
|
||||
|
||||
/* Put $ on stone */
|
||||
Sprintf(buf, "%ld Au", gd.done_money);
|
||||
buf[STONE_LINE_LEN] = 0; /* It could be a *lot* of gold :-) */
|
||||
tomb_text(buf);
|
||||
|
||||
/* Put together death description */
|
||||
formatkiller(buf, sizeof buf, how, FALSE);
|
||||
|
||||
/* Put death type on stone */
|
||||
for (line = DEATH_LINE, dpx = buf; line < YEAR_LINE; line++) {
|
||||
int i, i0;
|
||||
char tmpchar;
|
||||
|
||||
if ((i0 = strlen(dpx)) > STONE_LINE_LEN) {
|
||||
for (i = STONE_LINE_LEN; ((i0 > STONE_LINE_LEN) && i); i--) {
|
||||
if (dpx[i] == ' ')
|
||||
i0 = i;
|
||||
}
|
||||
if (!i)
|
||||
i0 = STONE_LINE_LEN;
|
||||
}
|
||||
|
||||
tmpchar = dpx[i0];
|
||||
dpx[i0] = 0;
|
||||
tomb_text(dpx);
|
||||
|
||||
if (tmpchar != ' ') {
|
||||
dpx[i0] = tmpchar;
|
||||
dpx = &dpx[i0];
|
||||
} else {
|
||||
dpx = &dpx[i0 + 1];
|
||||
}
|
||||
}
|
||||
|
||||
/* Put year on stone */
|
||||
year = yyyymmdd(when) / 10000L;
|
||||
Sprintf(buf, "%4ld", year);
|
||||
tomb_text(buf);
|
||||
|
||||
#ifdef NH320_DEDICATION
|
||||
/* dedication */
|
||||
cno = 1;
|
||||
tomb_line = TEXT_TOP;
|
||||
tomb_text("This release");
|
||||
tomb_text("of NetHack");
|
||||
tomb_text("is dedicated");
|
||||
tomb_text("to the");
|
||||
tomb_text("memory of");
|
||||
tomb_text("");
|
||||
tomb_text("Izchak");
|
||||
tomb_text(" Miller");
|
||||
tomb_text("");
|
||||
tomb_text("1935-1994");
|
||||
tomb_text("");
|
||||
tomb_text("Ascended");
|
||||
#endif
|
||||
/* Fade from black to full color */
|
||||
dofade(0, 16, 1);
|
||||
|
||||
/* Flush all messages to avoid typeahead */
|
||||
while (imsg = (struct IntuiMessage *) GetMsg(ripwin->UserPort))
|
||||
ReplyMsg((struct Message *) imsg);
|
||||
done = 0;
|
||||
while (!done) {
|
||||
WaitPort(ripwin->UserPort);
|
||||
while (imsg = (struct IntuiMessage *) GetMsg(ripwin->UserPort)) {
|
||||
switch (imsg->Class) {
|
||||
case MOUSEBUTTONS:
|
||||
case VANILLAKEY:
|
||||
done = 1;
|
||||
break;
|
||||
}
|
||||
ReplyMsg((struct Message *) imsg);
|
||||
}
|
||||
}
|
||||
|
||||
/* Fade out */
|
||||
dofade(16, 0, -1);
|
||||
just_return = 1;
|
||||
|
||||
cleanup:
|
||||
/* free everything */
|
||||
if (ripwin) {
|
||||
Forbid();
|
||||
while (imsg = (struct IntuiMessage *) GetMsg(ripwin->UserPort))
|
||||
ReplyMsg((struct Message *) imsg);
|
||||
CloseWindow(ripwin);
|
||||
Permit();
|
||||
}
|
||||
LoadRGB4(&HackScreen->ViewPort, sysflags.amii_curmap, amii_numcolors);
|
||||
|
||||
FreeImageFile(&tombimg);
|
||||
if (just_return)
|
||||
return;
|
||||
/* fall back to the straight-ASCII version */
|
||||
genl_outrip(tmpwin, how, when);
|
||||
}
|
||||
|
||||
static void
|
||||
tomb_text(char *p)
|
||||
{
|
||||
char buf[STONE_LINE_LEN * 2];
|
||||
int l;
|
||||
|
||||
tomb_line += rp->TxHeight;
|
||||
|
||||
if (!*p)
|
||||
return;
|
||||
sprintf(buf, " %s ", p);
|
||||
l = TextLength(rp, buf, strlen(buf));
|
||||
|
||||
SetAPen(rp, cmap_white);
|
||||
Move(rp, cols[cno] - (l / 2) - 1, tomb_line);
|
||||
Text(rp, buf, strlen(buf));
|
||||
|
||||
SetAPen(rp, cmap_white);
|
||||
Move(rp, cols[cno] - (l / 2) + 1, tomb_line);
|
||||
Text(rp, buf, strlen(buf));
|
||||
|
||||
SetAPen(rp, cmap_white);
|
||||
Move(rp, cols[cno] - (l / 2), tomb_line - 1);
|
||||
Text(rp, buf, strlen(buf));
|
||||
|
||||
SetAPen(rp, cmap_white);
|
||||
Move(rp, cols[cno] - (l / 2), tomb_line + 1);
|
||||
Text(rp, buf, strlen(buf));
|
||||
|
||||
SetAPen(rp, cmap_black);
|
||||
Move(rp, cols[cno] - (l / 2), tomb_line);
|
||||
Text(rp, buf, strlen(buf));
|
||||
}
|
||||
|
||||
/* search colormap for best match to given color */
|
||||
static int
|
||||
search_cmap(int r0, int g0, int b0)
|
||||
{
|
||||
int best = 0;
|
||||
int bdiff = 0x0fffffff;
|
||||
int x;
|
||||
for (x = 0; x < amii_numcolors; x++) {
|
||||
int r = r0 - ((amiv_init_map[x] >> 8) & 15);
|
||||
int g = g0 - ((amiv_init_map[x] >> 4) & 15);
|
||||
int b = b0 - ((amiv_init_map[x]) & 15);
|
||||
int diff = (r * r) + (g * g) + (b * b);
|
||||
if (diff < bdiff) {
|
||||
bdiff = diff;
|
||||
best = x;
|
||||
}
|
||||
}
|
||||
return best;
|
||||
}
|
||||
|
||||
/* caution: this is NOT general! */
|
||||
static void
|
||||
dofade(int start, int stop, int inc)
|
||||
{
|
||||
int i, j;
|
||||
for (i = start; (i * inc) <= stop; i += inc) {
|
||||
for (j = 0; j < amii_numcolors; ++j) {
|
||||
int r, g, b;
|
||||
|
||||
r = (amiv_init_map[j] & 0xf00) >> 8;
|
||||
g = (amiv_init_map[j] & 0xf0) >> 4;
|
||||
b = (amiv_init_map[j] & 0xf);
|
||||
r = (r * i) / 16;
|
||||
g = (g * i) / 16;
|
||||
b = (b * i) / 16;
|
||||
transpalette[j] = ((r << 8) | (g << 4) | b);
|
||||
}
|
||||
LoadRGB4(&HackScreen->ViewPort, transpalette, amii_numcolors);
|
||||
Delay(1);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* AMII_GRAPHICS */
|
||||
|
||||
/*
|
||||
TODO:
|
||||
memory leaks
|
||||
fix ReadImageFiles to return error instead of panic on error
|
||||
*/
|
||||
27
sys/amiga/amistack.c
Normal file
27
sys/amiga/amistack.c
Normal file
@@ -0,0 +1,27 @@
|
||||
/* NetHack 3.6 amistack.c $NHDT-Date: 1432512795 2015/05/25 00:13:15 $ $NHDT-Branch: master $:$NHDT-Revision: 1.8 $ */
|
||||
/* Copyright (c) Janne Salmij<69>rvi, Tampere, Finland, 2000 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/*
|
||||
* Increase stack size to allow deep recursions.
|
||||
*
|
||||
* Note: This is SAS/C specific, using other compiler probably
|
||||
* requires another method for increasing stack.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __SASC_60
|
||||
#include <dos.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Increase stack size to allow deep recursions.
|
||||
* NetHack 3.7 with Lua needs significantly more stack than 3.6.
|
||||
*/
|
||||
|
||||
#ifdef __SASC_60
|
||||
long __stack = 256 * 1024;
|
||||
#else
|
||||
/* For GCC with -noixemul (libnix), __stack is also recognized */
|
||||
unsigned long __stack = 256 * 1024;
|
||||
#endif
|
||||
85
sys/amiga/amitty.c
Normal file
85
sys/amiga/amitty.c
Normal file
@@ -0,0 +1,85 @@
|
||||
/* NetHack 3.6 amitty.c $NHDT-Date: 1432512795 2015/05/25 00:13:15 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Kenneth Lorber, Bethesda, Maryland 1993,1996 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/* TTY-specific code for the Amiga
|
||||
* This is still experimental.
|
||||
* Still to do:
|
||||
* add real termcap handling - currently requires ANSI_DEFAULT
|
||||
*/
|
||||
|
||||
#include "hack.h"
|
||||
#include "tcap.h"
|
||||
#include <stdio.h>
|
||||
#include <proto/dos.h>
|
||||
|
||||
#ifdef _DCC
|
||||
#define getch() getchar()
|
||||
#endif
|
||||
#ifdef __SASC_60
|
||||
#include <clib/dos_protos.h>
|
||||
#endif
|
||||
|
||||
void tty_change_color(void);
|
||||
char *tty_get_color_string(void);
|
||||
|
||||
int amibbs = 0; /* BBS mode */
|
||||
char bbs_id[80] = ""; /* BBS uid equivalent */
|
||||
long afh_in, afh_out; /* BBS mode Amiga filehandles */
|
||||
|
||||
#ifdef TTY_GRAPHICS
|
||||
|
||||
void
|
||||
settty(const char *s)
|
||||
{
|
||||
end_screen();
|
||||
if (s)
|
||||
raw_print(s);
|
||||
iflags.cbreak = ON; /* this is too easy: probably wrong */
|
||||
#if 1 /* should be version>=36 */
|
||||
/* if(IsInteractive(afh_in)){ */
|
||||
SetMode(afh_in, 0); /* con mode */
|
||||
/* } */
|
||||
#endif
|
||||
}
|
||||
void
|
||||
gettty()
|
||||
{
|
||||
#if 1 /* should be VERSION >=36 */
|
||||
/* if(IsInteractive(afh_in)){ */
|
||||
SetMode(afh_in, 1); /* raw mode */
|
||||
/* } */
|
||||
#endif
|
||||
}
|
||||
void
|
||||
setftty()
|
||||
{
|
||||
iflags.cbreak = ON; /* ditto */
|
||||
}
|
||||
char kill_char = 'X' - '@';
|
||||
char erase_char = '\b';
|
||||
int
|
||||
tgetch(void)
|
||||
{
|
||||
unsigned char x;
|
||||
Read(afh_in, &x, 1);
|
||||
return (x == '\r') ? '\n' : x;
|
||||
}
|
||||
void
|
||||
get_scr_size()
|
||||
{
|
||||
CO = 80;
|
||||
LI = 24;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void
|
||||
tty_change_color()
|
||||
{
|
||||
}
|
||||
char *
|
||||
tty_get_color_string()
|
||||
{
|
||||
return ("");
|
||||
}
|
||||
913
sys/amiga/amiwind.c
Normal file
913
sys/amiga/amiwind.c
Normal file
@@ -0,0 +1,913 @@
|
||||
/* NetHack 3.6 amiwind.c $NHDT-Date: 1432512794 2015/05/25 00:13:14 $ $NHDT-Branch: master $:$NHDT-Revision: 1.10 $ */
|
||||
/* Copyright (c) Olaf Seibert (KosmoSoft), 1989, 1992 */
|
||||
/* Copyright (c) Kenneth Lorber, Bethesda, Maryland 1993,1996 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#ifndef CROSS_TO_AMIGA
|
||||
#include "NH:sys/amiga/windefs.h"
|
||||
#include "NH:sys/amiga/winext.h"
|
||||
#include "NH:sys/amiga/winproto.h"
|
||||
#else
|
||||
#include "windefs.h"
|
||||
#include "winext.h"
|
||||
#include "winproto.h"
|
||||
#endif
|
||||
|
||||
/* Have to undef CLOSE as display.h and intuition.h both use it */
|
||||
#undef CLOSE
|
||||
|
||||
#ifdef AMII_GRAPHICS /* too early in the file? too late? */
|
||||
|
||||
#ifdef AMIFLUSH
|
||||
static struct Message *GetFMsg(struct MsgPort *);
|
||||
#endif
|
||||
|
||||
static int BufferGetchar(void);
|
||||
static void ProcessMessage(struct IntuiMessage *message);
|
||||
|
||||
#define BufferQueueChar(ch) (KbdBuffer[KbdBuffered++] = (ch))
|
||||
|
||||
struct Device *ConsoleDevice = NULL;
|
||||
|
||||
/* Library bases - opened by amii_init_nhwindows, closed by amii_cleanup.
|
||||
DOSBase is provided by newlib's startup code.
|
||||
The rest must be defined here. */
|
||||
struct IntuitionBase *IntuitionBase = NULL;
|
||||
struct GfxBase *GfxBase = NULL;
|
||||
struct Library *GadToolsBase = NULL;
|
||||
struct Library *LayersBase = NULL;
|
||||
struct Library *AslBase = NULL;
|
||||
|
||||
#ifndef CROSS_TO_AMIGA
|
||||
#include "NH:sys/amiga/amimenu.c"
|
||||
#else
|
||||
#include "amimenu.c"
|
||||
#endif
|
||||
|
||||
/* Now our own variables */
|
||||
|
||||
struct Screen *HackScreen;
|
||||
struct Window *pr_WindowPtr;
|
||||
struct MsgPort *HackPort;
|
||||
struct IOStdReq ConsoleIO;
|
||||
struct Menu *MenuStrip;
|
||||
APTR *VisualInfo;
|
||||
char Initialized = 0;
|
||||
WEVENT lastevent;
|
||||
|
||||
#ifdef HACKFONT
|
||||
struct Library *DiskfontBase;
|
||||
#endif
|
||||
|
||||
#define KBDBUFFER 10
|
||||
static unsigned char KbdBuffer[KBDBUFFER];
|
||||
unsigned char KbdBuffered;
|
||||
|
||||
#ifdef HACKFONT
|
||||
|
||||
struct TextFont *TextsFont = NULL;
|
||||
struct TextFont *HackFont = NULL;
|
||||
struct TextFont *RogueFont = NULL;
|
||||
|
||||
UBYTE FontName[] = "NetHack:hack.font";
|
||||
/* # chars in "NetHack:": */
|
||||
#define SIZEOF_DISKNAME 8
|
||||
|
||||
#endif
|
||||
|
||||
struct TextAttr Hack80 = {
|
||||
#ifdef HACKFONT
|
||||
&FontName[SIZEOF_DISKNAME],
|
||||
#else
|
||||
(UBYTE *) "topaz.font",
|
||||
#endif
|
||||
8, FS_NORMAL, FPF_DISKFONT | FPF_DESIGNED | FPF_ROMFONT
|
||||
};
|
||||
|
||||
struct TextAttr TextsFont13 = { (UBYTE *) "courier.font", 13, FS_NORMAL,
|
||||
FPF_DISKFONT | FPF_DESIGNED
|
||||
#ifndef HACKFONT
|
||||
| FPF_ROMFONT
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Avoid doing a ReplyMsg through a window that no longer exists. */
|
||||
static enum { NoAction, CloseOver } delayed_key_action = NoAction;
|
||||
|
||||
/*
|
||||
* Open a window that shares the HackPort IDCMP. Use CloseShWindow()
|
||||
* to close.
|
||||
*/
|
||||
|
||||
struct Window *
|
||||
OpenShWindow(struct NewWindow *nw)
|
||||
{
|
||||
struct Window *win;
|
||||
ULONG idcmpflags;
|
||||
|
||||
if (!HackPort) /* Sanity check */
|
||||
return (struct Window *) 0;
|
||||
|
||||
idcmpflags = nw->IDCMPFlags;
|
||||
nw->IDCMPFlags = 0;
|
||||
if (!(win = OpenWindow((void *) nw))) {
|
||||
nw->IDCMPFlags = idcmpflags;
|
||||
return (struct Window *) 0;
|
||||
}
|
||||
|
||||
nw->IDCMPFlags = idcmpflags;
|
||||
win->UserPort = HackPort;
|
||||
ModifyIDCMP(win, idcmpflags);
|
||||
return win;
|
||||
}
|
||||
|
||||
/*
|
||||
* Close a window that shared the HackPort IDCMP port.
|
||||
*/
|
||||
|
||||
void
|
||||
CloseShWindow(struct Window *win)
|
||||
{
|
||||
struct IntuiMessage *msg;
|
||||
|
||||
if (!HackPort)
|
||||
panic("HackPort NULL in CloseShWindow");
|
||||
if (!win)
|
||||
return;
|
||||
|
||||
Forbid();
|
||||
/* Flush all messages for all windows to avoid typeahead and other
|
||||
* similar problems...
|
||||
*/
|
||||
while (msg = (struct IntuiMessage *) GetMsg(win->UserPort))
|
||||
ReplyMsg((struct Message *) msg);
|
||||
KbdBuffered = 0;
|
||||
win->UserPort = (struct MsgPort *) 0;
|
||||
ModifyIDCMP(win, 0L);
|
||||
Permit();
|
||||
CloseWindow(win);
|
||||
}
|
||||
|
||||
static int
|
||||
BufferGetchar(void)
|
||||
{
|
||||
int c;
|
||||
|
||||
if (KbdBuffered > 0) {
|
||||
c = KbdBuffer[0];
|
||||
KbdBuffered--;
|
||||
/* Move the remaining characters */
|
||||
if (KbdBuffered < sizeof(KbdBuffer))
|
||||
memcpy(KbdBuffer, KbdBuffer + 1, KbdBuffered);
|
||||
return c;
|
||||
}
|
||||
|
||||
return NO_CHAR;
|
||||
}
|
||||
|
||||
/*
|
||||
* This should remind you remotely of DeadKeyConvert, but we are cheating
|
||||
* a bit. We want complete control over the numeric keypad, and no dead
|
||||
* keys... (they are assumed to be on Alted keys).
|
||||
*
|
||||
* Also assumed is that the IntuiMessage is of type RAWKEY. For some
|
||||
* reason, IECODE_UP_PREFIX events seem to be lost when they occur while
|
||||
* our console window is inactive. This is particulary troublesome with
|
||||
* qualifier keys... Is this because I never RawKeyConvert those events???
|
||||
*/
|
||||
|
||||
int
|
||||
ConvertKey(struct IntuiMessage *message)
|
||||
{
|
||||
static struct InputEvent theEvent;
|
||||
static char numpad[] = "bjnh.lyku";
|
||||
static char ctrl_numpad[] = "\x02\x0A\x0E\x08.\x0C\x19\x0B\x15";
|
||||
static char shift_numpad[] = "BJNH.LYKU";
|
||||
|
||||
unsigned char buffer[10];
|
||||
struct Window *w = message->IDCMPWindow;
|
||||
int length;
|
||||
ULONG qualifier;
|
||||
char numeric_pad, shift, control, alt;
|
||||
|
||||
if (amii_wins[WIN_MAP])
|
||||
w = amii_wins[WIN_MAP]->win;
|
||||
qualifier = message->Qualifier;
|
||||
|
||||
control = (qualifier & IEQUALIFIER_CONTROL) != 0;
|
||||
shift = (qualifier & (IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT)) != 0;
|
||||
alt = (qualifier & (IEQUALIFIER_LALT | IEQUALIFIER_RALT)) != 0;
|
||||
|
||||
/* Allow ALT to function as a META key ... */
|
||||
/* But make it switchable - alt is needed for some non-US keymaps */
|
||||
if (sysflags.altmeta)
|
||||
qualifier &= ~(IEQUALIFIER_LALT | IEQUALIFIER_RALT);
|
||||
numeric_pad = (qualifier & IEQUALIFIER_NUMERICPAD) != 0;
|
||||
|
||||
/*
|
||||
* Shortcut for HELP and arrow keys. I suppose this is allowed.
|
||||
* The defines are in intuition/intuition.h, and the keys don't
|
||||
* serve 'text' input, normally. Also, parsing their escape
|
||||
* sequences is such a mess...
|
||||
*/
|
||||
|
||||
switch (message->Code) {
|
||||
case RAWHELP:
|
||||
if (alt) {
|
||||
EditColor();
|
||||
return (-1);
|
||||
}
|
||||
#ifdef CLIPPING
|
||||
else if (WINVERS_AMIV && control) {
|
||||
EditClipping();
|
||||
|
||||
CO = (w->Width - w->BorderLeft - w->BorderRight) / mxsize;
|
||||
LI = (w->Height - w->BorderTop - w->BorderBottom) / mysize;
|
||||
clipxmax = CO + clipx;
|
||||
clipymax = LI + clipy;
|
||||
if (CO < COLNO || LI < ROWNO) {
|
||||
clipping = TRUE;
|
||||
amii_cliparound(u.ux, u.uy);
|
||||
} else {
|
||||
clipping = FALSE;
|
||||
clipx = clipy = 0;
|
||||
}
|
||||
BufferQueueChar('R' - 64);
|
||||
return (-1);
|
||||
}
|
||||
#endif
|
||||
else if (WINVERS_AMIV && shift) {
|
||||
if (WIN_OVER == WIN_ERR) {
|
||||
WIN_OVER = amii_create_nhwindow(NHW_OVER);
|
||||
BufferQueueChar('R' - 64);
|
||||
} else {
|
||||
delayed_key_action = CloseOver;
|
||||
}
|
||||
return (-1);
|
||||
}
|
||||
return ('?');
|
||||
break;
|
||||
case CURSORLEFT:
|
||||
length = '4';
|
||||
numeric_pad = 1;
|
||||
goto arrow;
|
||||
case CURSORDOWN:
|
||||
length = '2';
|
||||
numeric_pad = 1;
|
||||
goto arrow;
|
||||
case CURSORUP:
|
||||
length = '8';
|
||||
numeric_pad = 1;
|
||||
goto arrow;
|
||||
case CURSORRIGHT:
|
||||
length = '6';
|
||||
numeric_pad = 1;
|
||||
goto arrow;
|
||||
}
|
||||
|
||||
theEvent.ie_Class = IECLASS_RAWKEY;
|
||||
theEvent.ie_Code = message->Code;
|
||||
theEvent.ie_Qualifier = numeric_pad ? IEQUALIFIER_NUMERICPAD : qualifier;
|
||||
theEvent.ie_EventAddress = (APTR)(message->IAddress);
|
||||
|
||||
length = RawKeyConvert(&theEvent, (char *) buffer, (long) sizeof(buffer),
|
||||
NULL);
|
||||
|
||||
if (length == 1) { /* Plain ASCII character */
|
||||
length = buffer[0];
|
||||
/*
|
||||
* If iflags.num_pad is set, movement is by 4286.
|
||||
* If not set, translate 4286 into hjkl.
|
||||
* This way, the numeric pad can /always/ be used
|
||||
* for moving, though best results are when it is off.
|
||||
*/
|
||||
arrow:
|
||||
if (!iflags.num_pad && numeric_pad && length >= '1'
|
||||
&& length <= '9') {
|
||||
length -= '1';
|
||||
if (control) {
|
||||
length = ctrl_numpad[length];
|
||||
} else if (shift) {
|
||||
length = shift_numpad[length];
|
||||
} else {
|
||||
length = numpad[length];
|
||||
}
|
||||
}
|
||||
|
||||
/* Kludge to allow altmeta on eg. scandinavian keymap (# ==
|
||||
shift+alt+3)
|
||||
and prevent it from interfering with # command (M-#) */
|
||||
if (length == ('#' | 0x80))
|
||||
return '#';
|
||||
if (alt && sysflags.altmeta)
|
||||
length |= 0x80;
|
||||
return (length);
|
||||
} /* else shift, ctrl, alt, amiga, F-key, shift-tab, etc */
|
||||
else if (length > 1) {
|
||||
int i;
|
||||
|
||||
if (length == 3 && buffer[0] == 155 && buffer[2] == 126) {
|
||||
int got = 1;
|
||||
switch (buffer[1]) {
|
||||
case 53:
|
||||
mxsize = mysize = 8;
|
||||
break;
|
||||
case 54:
|
||||
mxsize = mysize = 16;
|
||||
break;
|
||||
case 55:
|
||||
mxsize = mysize = 24;
|
||||
break;
|
||||
case 56:
|
||||
mxsize = mysize = 32;
|
||||
break;
|
||||
case 57:
|
||||
mxsize = mysize = 48;
|
||||
break;
|
||||
default:
|
||||
got = 0;
|
||||
break;
|
||||
}
|
||||
#ifdef OPT_DISPMAP
|
||||
dispmap_sanity();
|
||||
#endif
|
||||
|
||||
if (got) {
|
||||
CO = (w->Width - w->BorderLeft - w->BorderRight) / mxsize;
|
||||
LI = (w->Height - w->BorderTop - w->BorderBottom) / mysize;
|
||||
clipxmax = CO + clipx;
|
||||
clipymax = LI + clipy;
|
||||
if (CO < COLNO || LI < ROWNO) {
|
||||
amii_cliparound(u.ux, u.uy);
|
||||
} else {
|
||||
CO = COLNO;
|
||||
LI = ROWNO;
|
||||
}
|
||||
reclip = 1;
|
||||
doredraw();
|
||||
flush_screen(1);
|
||||
reclip = 0;
|
||||
/*BufferQueueChar( 'R'-64 );*/
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
/* unrecognized key — silently ignore */
|
||||
}
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Process an incoming IntuiMessage.
|
||||
* It would certainly look nicer if this could be done using a
|
||||
* PA_SOFTINT message port, but we cannot call RawKeyConvert()
|
||||
* during a software interrupt.
|
||||
* Anyway, amikbhit()/kbhit() is called often enough, and usually gets
|
||||
* ahead of input demands, when the user types ahead.
|
||||
*/
|
||||
|
||||
static void
|
||||
ProcessMessage(struct IntuiMessage *message)
|
||||
{
|
||||
int c;
|
||||
int cnt;
|
||||
menu_item *mip;
|
||||
static int skip_mouse = 0; /* need to ignore next mouse event on
|
||||
* a window activation */
|
||||
struct Window *w = message->IDCMPWindow;
|
||||
|
||||
switch (message->Class) {
|
||||
case ACTIVEWINDOW:
|
||||
skip_mouse = 1;
|
||||
break;
|
||||
|
||||
case MOUSEBUTTONS: {
|
||||
if (skip_mouse) {
|
||||
skip_mouse = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!amii_wins[WIN_MAP] || w != amii_wins[WIN_MAP]->win)
|
||||
break;
|
||||
|
||||
if (message->Code == SELECTDOWN) {
|
||||
lastevent.type = WEMOUSE;
|
||||
lastevent.un.mouse.x = message->MouseX;
|
||||
lastevent.un.mouse.y = message->MouseY;
|
||||
/* With shift equals RUN */
|
||||
lastevent.un.mouse.qual =
|
||||
(message->Qualifier
|
||||
& (IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT)) != 0;
|
||||
}
|
||||
} break;
|
||||
|
||||
case MENUPICK: {
|
||||
USHORT thismenu;
|
||||
struct MenuItem *item;
|
||||
|
||||
thismenu = message->Code;
|
||||
while (thismenu != MENUNULL) {
|
||||
item = ItemAddress(MenuStrip, (ULONG) thismenu);
|
||||
if (KbdBuffered < KBDBUFFER)
|
||||
BufferQueueChar((char) (GTMENUITEM_USERDATA(item)));
|
||||
thismenu = item->NextSelect;
|
||||
}
|
||||
} break;
|
||||
|
||||
case REFRESHWINDOW:
|
||||
break;
|
||||
|
||||
case CLOSEWINDOW:
|
||||
if (WIN_INVEN != WIN_ERR && w == amii_wins[WIN_INVEN]->win) {
|
||||
dismiss_nhwindow(WIN_INVEN);
|
||||
}
|
||||
if (WINVERS_AMIV
|
||||
&& (WIN_OVER != WIN_ERR && w == amii_wins[WIN_OVER]->win)) {
|
||||
destroy_nhwindow(WIN_OVER);
|
||||
WIN_OVER = WIN_ERR;
|
||||
}
|
||||
break;
|
||||
|
||||
case RAWKEY:
|
||||
if (!(message->Code & IECODE_UP_PREFIX)) {
|
||||
/* May queue multiple characters
|
||||
* but doesn't do that yet...
|
||||
*/
|
||||
if ((c = ConvertKey(message)) > 0)
|
||||
BufferQueueChar(c);
|
||||
}
|
||||
break;
|
||||
|
||||
case GADGETDOWN:
|
||||
break;
|
||||
|
||||
case NEWSIZE:
|
||||
if (WIN_MESSAGE != WIN_ERR && w == amii_wins[WIN_MESSAGE]->win) {
|
||||
if (WINVERS_AMIV) {
|
||||
/* Make sure that new size is honored for good. */
|
||||
SetAPen(w->RPort, amii_msgBPen);
|
||||
SetBPen(w->RPort, amii_msgBPen);
|
||||
SetDrMd(w->RPort, JAM2);
|
||||
RectFill(w->RPort, w->BorderLeft, w->BorderTop,
|
||||
w->Width - w->BorderRight - 1,
|
||||
w->Height - w->BorderBottom - 1);
|
||||
}
|
||||
ReDisplayData(WIN_MESSAGE);
|
||||
} else if (WIN_INVEN != WIN_ERR && w == amii_wins[WIN_INVEN]->win) {
|
||||
ReDisplayData(WIN_INVEN);
|
||||
} else if (WINVERS_AMIV && (WIN_OVER != WIN_ERR
|
||||
&& w == amii_wins[WIN_OVER]->win)) {
|
||||
{
|
||||
int i, have_redraw = 0;
|
||||
for (i = 0; i < KbdBuffered; i++) {
|
||||
if (KbdBuffer[i] == 'R' - 64) {
|
||||
have_redraw = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!have_redraw)
|
||||
BufferQueueChar('R' - 64);
|
||||
}
|
||||
} else if (WIN_MAP != WIN_ERR && w == amii_wins[WIN_MAP]->win) {
|
||||
#ifdef CLIPPING
|
||||
CO = (w->Width - w->BorderLeft - w->BorderRight) / mxsize;
|
||||
LI = (w->Height - w->BorderTop - w->BorderBottom) / mysize;
|
||||
clipxmax = CO + clipx;
|
||||
clipymax = LI + clipy;
|
||||
if (CO < COLNO || LI < ROWNO) {
|
||||
amii_cliparound(u.ux, u.uy);
|
||||
} else {
|
||||
clipping = FALSE;
|
||||
clipx = clipy = 0;
|
||||
}
|
||||
{
|
||||
int i, have_redraw = 0;
|
||||
for (i = 0; i < KbdBuffered; i++) {
|
||||
if (KbdBuffer[i] == 'R' - 64) {
|
||||
have_redraw = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!have_redraw)
|
||||
BufferQueueChar('R' - 64);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
ReplyMsg((struct Message *) message);
|
||||
|
||||
switch (delayed_key_action) {
|
||||
case CloseOver:
|
||||
amii_destroy_nhwindow(WIN_OVER);
|
||||
WIN_OVER = WIN_ERR;
|
||||
delayed_key_action = NoAction;
|
||||
break;
|
||||
case NoAction:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* AMII_GRAPHICS */
|
||||
/*
|
||||
* Get all incoming messages and fill up the keyboard buffer,
|
||||
* thus allowing Intuition to (maybe) free up the IntuiMessages.
|
||||
* Return when no more messages left, or keyboard buffer half full.
|
||||
* We need to do this since there is no one-to-one correspondence
|
||||
* between characters and incoming messages.
|
||||
*/
|
||||
|
||||
#if defined(TTY_GRAPHICS) && !defined(AMII_GRAPHICS)
|
||||
int
|
||||
kbhit(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
int
|
||||
kbhit(void)
|
||||
{
|
||||
int c;
|
||||
#ifdef TTY_GRAPHICS
|
||||
/* a kludge to defuse the mess in allmain.c */
|
||||
/* I hope this is the right approach */
|
||||
if (windowprocs.win_init_nhwindows == amii_procs.win_init_nhwindows)
|
||||
return 0;
|
||||
#endif
|
||||
c = amikbhit();
|
||||
if (c <= 0)
|
||||
return (0);
|
||||
return (c);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef AMII_GRAPHICS
|
||||
|
||||
int
|
||||
amikbhit(void)
|
||||
{
|
||||
struct IntuiMessage *message;
|
||||
while (KbdBuffered < KBDBUFFER / 2) {
|
||||
#ifdef AMIFLUSH
|
||||
message = (struct IntuiMessage *) GetFMsg(HackPort);
|
||||
#else
|
||||
message = (struct IntuiMessage *) GetMsg(HackPort);
|
||||
#endif
|
||||
if (message) {
|
||||
ProcessMessage(message);
|
||||
if (lastevent.type != WEUNK && lastevent.type != WEKEY)
|
||||
break;
|
||||
} else
|
||||
break;
|
||||
}
|
||||
return (lastevent.type == WEUNK) ? KbdBuffered : -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get a character from the keyboard buffer, waiting if not available.
|
||||
* Ignore other kinds of events that happen in the mean time.
|
||||
*/
|
||||
|
||||
int
|
||||
WindowGetchar(void)
|
||||
{
|
||||
while ((lastevent.type = WEUNK), amikbhit() <= 0) {
|
||||
WaitPort(HackPort);
|
||||
}
|
||||
return BufferGetchar();
|
||||
}
|
||||
|
||||
WETYPE
|
||||
WindowGetevent(void)
|
||||
{
|
||||
lastevent.type = WEUNK;
|
||||
while (amikbhit() == 0) {
|
||||
WaitPort(HackPort);
|
||||
}
|
||||
|
||||
if (KbdBuffered) {
|
||||
lastevent.type = WEKEY;
|
||||
lastevent.un.key = BufferGetchar();
|
||||
}
|
||||
return (lastevent.type);
|
||||
}
|
||||
|
||||
/*
|
||||
* Clean up everything. But before we do, ask the user to hit return
|
||||
* when there is something that s/he should read.
|
||||
*/
|
||||
|
||||
void
|
||||
amii_cleanup(void)
|
||||
{
|
||||
struct IntuiMessage *msg;
|
||||
|
||||
/* Close things up */
|
||||
if (HackPort) {
|
||||
amii_raw_print("");
|
||||
amii_getret();
|
||||
}
|
||||
|
||||
if (ConsoleIO.io_Device)
|
||||
CloseDevice((struct IORequest *) &ConsoleIO);
|
||||
ConsoleIO.io_Device = 0;
|
||||
|
||||
if (ConsoleIO.io_Message.mn_ReplyPort)
|
||||
DeleteMsgPort(ConsoleIO.io_Message.mn_ReplyPort);
|
||||
ConsoleIO.io_Message.mn_ReplyPort = 0;
|
||||
|
||||
/* Strip messages before deleting the port */
|
||||
if (HackPort) {
|
||||
Forbid();
|
||||
while (msg = (struct IntuiMessage *) GetMsg(HackPort))
|
||||
ReplyMsg((struct Message *) msg);
|
||||
kill_nhwindows(1);
|
||||
DeleteMsgPort(HackPort);
|
||||
HackPort = NULL;
|
||||
Permit();
|
||||
}
|
||||
|
||||
/* Close the screen, under v37 or greater it is a pub screen and there may
|
||||
* be visitors, so check close status and wait till everyone is gone.
|
||||
*/
|
||||
if (HackScreen) {
|
||||
#ifdef INTUI_NEW_LOOK
|
||||
if (IntuitionBase->LibNode.lib_Version >= 37) {
|
||||
if (MenuStrip)
|
||||
FreeMenus(MenuStrip);
|
||||
if (VisualInfo)
|
||||
FreeVisualInfo(VisualInfo);
|
||||
while (CloseScreen(HackScreen) == FALSE) {
|
||||
struct EasyStruct easy = {
|
||||
sizeof(struct EasyStruct), 0, "Nethack Problem",
|
||||
"Can't Close Screen, Close Visiting Windows", "Okay"
|
||||
};
|
||||
EasyRequest(NULL, &easy, NULL, NULL);
|
||||
}
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
CloseScreen(HackScreen);
|
||||
}
|
||||
HackScreen = NULL;
|
||||
}
|
||||
|
||||
#ifdef HACKFONT
|
||||
if (HackFont) {
|
||||
CloseFont(HackFont);
|
||||
HackFont = NULL;
|
||||
}
|
||||
|
||||
if (TextsFont) {
|
||||
CloseFont(TextsFont);
|
||||
TextsFont = NULL;
|
||||
}
|
||||
|
||||
if (RogueFont) {
|
||||
CloseFont(RogueFont);
|
||||
RogueFont = NULL;
|
||||
}
|
||||
|
||||
if (DiskfontBase) {
|
||||
CloseLibrary(DiskfontBase);
|
||||
DiskfontBase = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (GadToolsBase) {
|
||||
CloseLibrary((struct Library *) GadToolsBase);
|
||||
GadToolsBase = NULL;
|
||||
}
|
||||
|
||||
if (LayersBase) {
|
||||
CloseLibrary((struct Library *) LayersBase);
|
||||
LayersBase = NULL;
|
||||
}
|
||||
|
||||
if (GfxBase) {
|
||||
CloseLibrary((struct Library *) GfxBase);
|
||||
GfxBase = NULL;
|
||||
}
|
||||
|
||||
if (IntuitionBase) {
|
||||
CloseLibrary((struct Library *) IntuitionBase);
|
||||
IntuitionBase = NULL;
|
||||
}
|
||||
|
||||
#ifdef SHAREDLIB
|
||||
if (DOSBase) {
|
||||
CloseLibrary((struct Library *) DOSBase);
|
||||
DOSBase = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
((struct Process *) FindTask(NULL))->pr_WindowPtr = (APTR) pr_WindowPtr;
|
||||
|
||||
Initialized = 0;
|
||||
}
|
||||
|
||||
#endif /* AMII_GRAPHICS */
|
||||
|
||||
#ifndef SHAREDLIB
|
||||
void
|
||||
Abort(long rc)
|
||||
{
|
||||
int fault = 1;
|
||||
#ifdef CHDIR
|
||||
extern char orgdir[];
|
||||
chdir(orgdir);
|
||||
#endif
|
||||
#ifdef AMII_GRAPHICS
|
||||
if (Initialized && ConsoleDevice
|
||||
&& windowprocs.win_init_nhwindows == amii_procs.win_init_nhwindows) {
|
||||
printf("\n\nAbort with alert code %08lx...\n", rc);
|
||||
amii_getret();
|
||||
} else
|
||||
#endif
|
||||
printf("\n\nAbort with alert code %08lx...\n", rc);
|
||||
/* Alert(rc); this is too severe */
|
||||
#ifdef __SASC
|
||||
#ifdef INTUI_NEW_LOOK
|
||||
if (IntuitionBase->LibNode.lib_Version >= 37) {
|
||||
struct EasyStruct es = {
|
||||
sizeof(struct EasyStruct), 0, "NetHack Panic Request",
|
||||
"NetHack is Aborting with code == 0x%08lx",
|
||||
"Continue Abort|Return to Program|Clean up and exit",
|
||||
};
|
||||
fault = EasyRequest(NULL, &es, NULL, (long) rc);
|
||||
if (fault == 2)
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if (fault == 1) {
|
||||
/* __emit(0x4afc); */ /* illegal instruction */
|
||||
__emit(0x40fc); /* divide by */
|
||||
__emit(0x0000); /* #0 */
|
||||
/* NOTE: don't move amii_cleanup() above here - */
|
||||
/* it is too likely to kill the system */
|
||||
/* before it can get the SnapShot out, if */
|
||||
/* there is something really wrong. */
|
||||
}
|
||||
#endif
|
||||
#ifdef AMII_GRAPHICS
|
||||
if (windowprocs.win_init_nhwindows == amii_procs.win_init_nhwindows)
|
||||
amii_cleanup();
|
||||
#endif
|
||||
#undef exit
|
||||
#ifdef AZTEC_C
|
||||
_abort();
|
||||
#endif
|
||||
exit((int) rc);
|
||||
}
|
||||
|
||||
void
|
||||
CleanUp(void)
|
||||
{
|
||||
amii_cleanup();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef AMII_GRAPHICS
|
||||
|
||||
#ifdef AMIFLUSH
|
||||
/* This routine adapted from AmigaMail IV-37 by Michael Sinz */
|
||||
static struct Message *
|
||||
GetFMsg(struct MsgPort *port)
|
||||
{
|
||||
struct IntuiMessage *msg, *succ, *succ1;
|
||||
|
||||
if (msg = (struct IntuiMessage *) GetMsg(port)) {
|
||||
if (!sysflags.amiflush)
|
||||
return ((struct Message *) msg);
|
||||
if (msg->Class == RAWKEY) {
|
||||
Forbid();
|
||||
succ = (struct IntuiMessage *) (port->mp_MsgList.lh_Head);
|
||||
while (succ1 = (struct IntuiMessage *) (succ->ExecMessage.mn_Node
|
||||
.ln_Succ)) {
|
||||
if (succ->Class == RAWKEY) {
|
||||
Remove((struct Node *) succ);
|
||||
ReplyMsg((struct Message *) succ);
|
||||
}
|
||||
succ = succ1;
|
||||
}
|
||||
Permit();
|
||||
}
|
||||
}
|
||||
return ((struct Message *) msg);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct NewWindow *
|
||||
DupNewWindow(struct NewWindow *win)
|
||||
{
|
||||
struct NewWindow *nwin;
|
||||
struct Gadget *ngd, *gd, *pgd = NULL;
|
||||
struct PropInfo *pip;
|
||||
struct StringInfo *sip;
|
||||
|
||||
/* Copy the (Ext)NewWindow structure */
|
||||
|
||||
nwin = (struct NewWindow *) alloc(sizeof(struct NewWindow));
|
||||
*nwin = *win;
|
||||
|
||||
/* Now do the gadget list */
|
||||
|
||||
nwin->FirstGadget = NULL;
|
||||
for (gd = win->FirstGadget; gd; gd = gd->NextGadget) {
|
||||
ngd = (struct Gadget *) alloc(sizeof(struct Gadget));
|
||||
*ngd = *gd;
|
||||
if (gd->GadgetType == STRGADGET) {
|
||||
sip = (struct StringInfo *) alloc(sizeof(struct StringInfo));
|
||||
*sip = *((struct StringInfo *) gd->SpecialInfo);
|
||||
sip->Buffer = (UBYTE *) alloc(sip->MaxChars);
|
||||
*sip->Buffer = 0;
|
||||
ngd->SpecialInfo = (APTR) sip;
|
||||
} else if (gd->GadgetType == PROPGADGET) {
|
||||
pip = (struct PropInfo *) alloc(sizeof(struct PropInfo));
|
||||
*pip = *((struct PropInfo *) gd->SpecialInfo);
|
||||
ngd->SpecialInfo = (APTR) pip;
|
||||
}
|
||||
if (pgd)
|
||||
pgd->NextGadget = ngd;
|
||||
else
|
||||
nwin->FirstGadget = ngd;
|
||||
pgd = ngd;
|
||||
ngd->NextGadget = NULL;
|
||||
ngd->UserData = (APTR) 0x45f35c3d; // magic cookie for FreeNewWindow()
|
||||
}
|
||||
return (nwin);
|
||||
}
|
||||
|
||||
void
|
||||
FreeNewWindow(struct NewWindow *win)
|
||||
{
|
||||
struct Gadget *gd, *pgd;
|
||||
struct StringInfo *sip;
|
||||
|
||||
for (gd = win->FirstGadget; gd; gd = pgd) {
|
||||
pgd = gd->NextGadget;
|
||||
if ((ULONG) gd->UserData == 0x45f35c3d) {
|
||||
if (gd->GadgetType == STRGADGET) {
|
||||
sip = (struct StringInfo *) gd->SpecialInfo;
|
||||
free(sip->Buffer);
|
||||
free(sip);
|
||||
} else if (gd->GadgetType == PROPGADGET) {
|
||||
free((struct PropInfo *) gd->SpecialInfo);
|
||||
}
|
||||
free(gd);
|
||||
}
|
||||
}
|
||||
free(win);
|
||||
}
|
||||
|
||||
void
|
||||
bell(void)
|
||||
{
|
||||
if (flags.silent)
|
||||
return;
|
||||
DisplayBeep(NULL);
|
||||
}
|
||||
|
||||
void
|
||||
amii_delay_output(void)
|
||||
{
|
||||
/* delay 50 ms */
|
||||
Delay(2L);
|
||||
}
|
||||
|
||||
void
|
||||
amii_number_pad(int state)
|
||||
{
|
||||
}
|
||||
#endif /* AMII_GRAPHICS */
|
||||
|
||||
#ifndef SHAREDLIB
|
||||
void
|
||||
amiv_loadlib(void)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
amii_loadlib(void)
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef CROSS_TO_AMIGA
|
||||
extern void Abort(long) NORETURN;
|
||||
#endif
|
||||
|
||||
/* fatal error */
|
||||
/*VARARGS1*/
|
||||
void error
|
||||
VA_DECL(const char *, s)
|
||||
{
|
||||
VA_START(s);
|
||||
VA_INIT(s, char *);
|
||||
|
||||
putchar('\n');
|
||||
vprintf(s, VA_ARGS);
|
||||
putchar('\n');
|
||||
|
||||
VA_END();
|
||||
Abort(0L);
|
||||
}
|
||||
#endif
|
||||
40
sys/amiga/amiwind.p
Normal file
40
sys/amiga/amiwind.p
Normal file
@@ -0,0 +1,40 @@
|
||||
/* NetHack 3.6 amiwind.p $NHDT-Date: 1432512795 2015/05/25 00:13:15 $ $NHDT-Branch: master $:$NHDT-Revision: 1.6 $ */
|
||||
/* Copyright (c) Gregg Wonderly, Naperville, IL, 1992, 1993 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/* amiwind.c */
|
||||
#ifdef INTUI_NEW_LOOK
|
||||
struct Window * OpenShWindow(struct ExtNewWindow *) ;
|
||||
#else
|
||||
struct Window * OpenShWindow(struct NewWindow *) ;
|
||||
#endif
|
||||
void CloseShWindow(struct Window *);
|
||||
int kbhit (void);
|
||||
int amikbhit (void);
|
||||
int WindowGetchar (void);
|
||||
WETYPE WindowGetevent (void);
|
||||
void WindowFlush (void);
|
||||
void WindowPutchar(char );
|
||||
void WindowFPuts(const char *);
|
||||
void WindowPuts(const char *);
|
||||
void WindowPrintf( char *,... );
|
||||
void CleanUp (void);
|
||||
int ConvertKey( struct IntuiMessage * );
|
||||
#ifndef SHAREDLIB
|
||||
void Abort(long );
|
||||
#endif
|
||||
void flush_glyph_buffer(struct Window *);
|
||||
void amiga_print_glyph(winid , int , int );
|
||||
void start_glyphout(winid );
|
||||
void amii_end_glyphout(winid );
|
||||
#ifdef INTUI_NEW_LOOK
|
||||
struct ExtNewWindow * DupNewWindow(struct ExtNewWindow *);
|
||||
void FreeNewWindow(struct ExtNewWindow *);
|
||||
#else
|
||||
struct NewWindow * DupNewWindow(struct NewWindow *);
|
||||
void FreeNewWindow(struct NewWindow *);
|
||||
#endif
|
||||
void bell (void);
|
||||
void amii_delay_output (void);
|
||||
void amii_number_pad(int );
|
||||
void amii_cleanup( void );
|
||||
480
sys/amiga/bmp2iff_host.c
Normal file
480
sys/amiga/bmp2iff_host.c
Normal file
@@ -0,0 +1,480 @@
|
||||
/*
|
||||
* bmp2iff_host.c - Convert a BMP to Amiga BMAP IFF.
|
||||
* Copyright (c) 2026 by Ingo Paschke.
|
||||
* NetHack may be freely redistributed. See license for details.
|
||||
*
|
||||
* IFF BMAP format matches sys/amiga/xpm2iff.c by Gregg Wonderly.
|
||||
*
|
||||
* Usage: bmp2iff_host -planes N input.bmp output.iff
|
||||
*
|
||||
* This is a HOST tool -- runs on the build machine.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define TILE_X 16
|
||||
#define TILE_Y 16
|
||||
|
||||
#pragma pack(push,1)
|
||||
typedef struct {
|
||||
uint16_t bfType;
|
||||
uint32_t bfSize;
|
||||
uint16_t bfReserved1, bfReserved2;
|
||||
uint32_t bfOffBits;
|
||||
} BMPFILEHEADER;
|
||||
|
||||
typedef struct {
|
||||
uint32_t biSize;
|
||||
int32_t biWidth, biHeight;
|
||||
uint16_t biPlanes, biBitCount;
|
||||
uint32_t biCompression;
|
||||
uint32_t biSizeImage;
|
||||
int32_t biXPelsPerMeter, biYPelsPerMeter;
|
||||
uint32_t biClrUsed, biClrImportant;
|
||||
} BMPINFOHEADER;
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct {
|
||||
uint8_t r, g, b;
|
||||
} RGB;
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
/* Fixed 16-color AMIV UI palette */
|
||||
/* Must match amiv_init_map[] in winami.c */
|
||||
/* --------------------------------------------------------- */
|
||||
|
||||
static const RGB amiv_pal[16] = {
|
||||
{0x00,0x00,0x00}, /* 0 black */
|
||||
{0xFF,0xFF,0xFF}, /* 1 white */
|
||||
{0x00,0xBB,0xFF}, /* 2 cyan */
|
||||
{0xFF,0x66,0x00}, /* 3 orange */
|
||||
{0x00,0x00,0xFF}, /* 4 blue */
|
||||
{0x00,0x99,0x00}, /* 5 green */
|
||||
{0x66,0x99,0xBB}, /* 6 grey */
|
||||
{0xFF,0x00,0x00}, /* 7 red */
|
||||
{0x66,0xFF,0x00}, /* 8 ltgreen */
|
||||
{0xFF,0xFF,0x00}, /* 9 yellow */
|
||||
{0xFF,0x00,0xFF}, /* 10 magenta */
|
||||
{0x99,0x44,0x00}, /* 11 brown */
|
||||
{0x44,0x66,0x66}, /* 12 greyblue */
|
||||
{0xCC,0x44,0x00}, /* 13 ltbrown */
|
||||
{0xDD,0xDD,0xBB}, /* 14 ltgrey */
|
||||
{0xFF,0xBB,0x99}, /* 15 peach */
|
||||
};
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
/* Colour helpers */
|
||||
/* --------------------------------------------------------- */
|
||||
|
||||
static int
|
||||
coldist(const RGB *a, const RGB *b)
|
||||
{
|
||||
int dr = a->r - b->r;
|
||||
int dg = a->g - b->g;
|
||||
int db = a->b - b->b;
|
||||
return dr*dr + dg*dg + db*db;
|
||||
}
|
||||
|
||||
static int
|
||||
nearest(const RGB *c, const RGB *pal, int n)
|
||||
{
|
||||
int best = 0, bestd = 0x7fffffff, i;
|
||||
for (i = 0; i < n; i++) {
|
||||
int d = coldist(c, &pal[i]);
|
||||
if (d < bestd) { bestd = d; best = i; }
|
||||
}
|
||||
return best;
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
/* IFF output */
|
||||
/* --------------------------------------------------------- */
|
||||
|
||||
static FILE *iff_fp;
|
||||
|
||||
static void
|
||||
wr32(uint32_t v)
|
||||
{
|
||||
uint8_t b[4] = { v>>24, v>>16, v>>8, v };
|
||||
fwrite(b, 1, 4, iff_fp);
|
||||
}
|
||||
|
||||
static void
|
||||
wr_chunk(const char *id, const void *d, uint32_t len)
|
||||
{
|
||||
fwrite(id, 1, 4, iff_fp);
|
||||
wr32(len);
|
||||
fwrite(d, 1, len, iff_fp);
|
||||
if (len & 1) fputc(0, iff_fp);
|
||||
}
|
||||
|
||||
static void
|
||||
iff_write(int nplanes, int ncolors, uint8_t *cmap,
|
||||
int w, int h, uint8_t **planes,
|
||||
int ntiles, int across, int down)
|
||||
{
|
||||
long spos;
|
||||
uint32_t plsz = (uint32_t)(w / 8) * h;
|
||||
int i;
|
||||
|
||||
fwrite("FORM", 1, 4, iff_fp);
|
||||
spos = ftell(iff_fp);
|
||||
wr32(0);
|
||||
fwrite("BMAP", 1, 4, iff_fp);
|
||||
|
||||
/* BMHD */
|
||||
{
|
||||
uint8_t bm[20];
|
||||
memset(bm, 0, 20);
|
||||
bm[0] = w >> 8; bm[1] = w;
|
||||
bm[2] = h >> 8; bm[3] = h;
|
||||
bm[8] = (uint8_t)nplanes;
|
||||
bm[14] = 100; bm[15] = 100;
|
||||
wr_chunk("BMHD", bm, 20);
|
||||
}
|
||||
|
||||
/* CAMG */
|
||||
{
|
||||
uint8_t c[4] = {0,0,0x80,0x04};
|
||||
wr_chunk("CAMG", c, 4);
|
||||
}
|
||||
|
||||
/* CMAP */
|
||||
wr_chunk("CMAP", cmap, (uint32_t)ncolors * 3);
|
||||
|
||||
/* PDAT */
|
||||
{
|
||||
uint8_t pd[28], *p = pd;
|
||||
uint32_t v[7];
|
||||
v[0] = nplanes;
|
||||
v[1] = plsz;
|
||||
v[2] = across;
|
||||
v[3] = down;
|
||||
v[4] = ntiles;
|
||||
v[5] = TILE_X;
|
||||
v[6] = TILE_Y;
|
||||
for (i = 0; i < 7; i++) {
|
||||
p[0] = (v[i]>>24); p[1] = (v[i]>>16);
|
||||
p[2] = (v[i]>> 8); p[3] = v[i];
|
||||
p += 4;
|
||||
}
|
||||
wr_chunk("PDAT", pd, 28);
|
||||
}
|
||||
|
||||
/* PLNE */
|
||||
fwrite("PLNE", 1, 4, iff_fp);
|
||||
wr32(plsz * nplanes);
|
||||
for (i = 0; i < nplanes; i++)
|
||||
fwrite(planes[i], 1, plsz, iff_fp);
|
||||
|
||||
/* fix FORM size */
|
||||
{
|
||||
long end = ftell(iff_fp);
|
||||
uint32_t sz = (uint32_t)(end - spos - 4);
|
||||
fseek(iff_fp, spos, SEEK_SET);
|
||||
wr32(sz);
|
||||
fseek(iff_fp, 0, SEEK_END);
|
||||
}
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
/* Pixel-to-bitplane conversion */
|
||||
/* --------------------------------------------------------- */
|
||||
|
||||
static void
|
||||
to_planes(uint8_t *pix, int w, int h,
|
||||
int np, uint8_t **pl)
|
||||
{
|
||||
int rb = w / 8;
|
||||
int x, y, p;
|
||||
|
||||
for (p = 0; p < np; p++)
|
||||
memset(pl[p], 0, rb * h);
|
||||
|
||||
for (y = 0; y < h; y++)
|
||||
for (x = 0; x < w; x++) {
|
||||
uint8_t v = pix[y * w + x];
|
||||
int off = y * rb + x / 8;
|
||||
int bit = 7 - (x & 7);
|
||||
for (p = 0; p < np; p++)
|
||||
if (v & (1 << p))
|
||||
pl[p][off] |= (1 << bit);
|
||||
}
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
/* Palette building */
|
||||
/* --------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* Build an output palette of 'maxcol' entries:
|
||||
* - slots 0-15: fixed AMIV UI colors
|
||||
* - slots 16+: tile colors from the BMP
|
||||
*
|
||||
* Returns remap[0..nsrc-1] mapping BMP palette index
|
||||
* to output palette index.
|
||||
*/
|
||||
static void
|
||||
build_palette(const RGB *src, int nsrc,
|
||||
const uint8_t *pix, int npix,
|
||||
int maxcol,
|
||||
RGB *out, int *remap)
|
||||
{
|
||||
int freq[256] = {0};
|
||||
int order[256];
|
||||
int i, j, nfree, nuniq;
|
||||
|
||||
/* count pixel frequency per BMP palette entry */
|
||||
for (i = 0; i < npix; i++)
|
||||
freq[pix[i]]++;
|
||||
|
||||
/* sort BMP colors by frequency (descending) */
|
||||
for (i = 0; i < nsrc; i++) order[i] = i;
|
||||
for (i = 1; i < nsrc; i++) {
|
||||
int k = order[i], kf = freq[k];
|
||||
j = i - 1;
|
||||
while (j >= 0 && freq[order[j]] < kf) {
|
||||
order[j+1] = order[j];
|
||||
j--;
|
||||
}
|
||||
order[j+1] = k;
|
||||
}
|
||||
|
||||
/* count unique colors actually used */
|
||||
nuniq = 0;
|
||||
for (i = 0; i < nsrc; i++)
|
||||
if (freq[i] > 0) nuniq++;
|
||||
|
||||
/* first 16 slots are AMIV UI */
|
||||
for (i = 0; i < 16 && i < maxcol; i++)
|
||||
out[i] = amiv_pal[i];
|
||||
for (i = 16; i < maxcol; i++)
|
||||
memset(&out[i], 0, sizeof(RGB));
|
||||
|
||||
nfree = maxcol - 16;
|
||||
if (nfree < 0) nfree = 0;
|
||||
|
||||
/*
|
||||
* Case 1: enough free slots for all unique colors.
|
||||
* Assign each unique BMP color its own pen, exact
|
||||
* AMIV matches share the UI pen.
|
||||
*/
|
||||
if (nuniq <= nfree) {
|
||||
int next = 16;
|
||||
for (i = 0; i < nsrc; i++) {
|
||||
if (freq[i] == 0) {
|
||||
remap[i] = 0;
|
||||
continue;
|
||||
}
|
||||
/* exact match to an AMIV pen? */
|
||||
int best = nearest(&src[i], amiv_pal, 16);
|
||||
if (coldist(&src[i], &amiv_pal[best]) == 0) {
|
||||
remap[i] = best;
|
||||
} else {
|
||||
remap[i] = next;
|
||||
out[next] = src[i];
|
||||
next++;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Case 2: more unique colors than free slots.
|
||||
* - Direct/near AMIV matches use UI pens.
|
||||
* - Remaining slots filled by most-frequent colors.
|
||||
* - Leftovers mapped to nearest in final palette.
|
||||
*/
|
||||
{
|
||||
int next = 16;
|
||||
int assigned[256];
|
||||
memset(assigned, 0, sizeof(assigned));
|
||||
|
||||
/* pass 1: exact/near AMIV matches */
|
||||
for (i = 0; i < nsrc; i++) {
|
||||
if (freq[i] == 0) {
|
||||
remap[i] = 0;
|
||||
assigned[i] = 1;
|
||||
continue;
|
||||
}
|
||||
int best = nearest(&src[i], amiv_pal, 16);
|
||||
int d = coldist(&src[i], &amiv_pal[best]);
|
||||
if (d < 200) { /* near match threshold */
|
||||
remap[i] = best;
|
||||
assigned[i] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* pass 2: fill free slots with most-frequent
|
||||
* unassigned colors (order[] is freq-sorted) */
|
||||
for (i = 0; i < nsrc && next < maxcol; i++) {
|
||||
int idx = order[i];
|
||||
if (assigned[idx] || freq[idx] == 0)
|
||||
continue;
|
||||
remap[idx] = next;
|
||||
out[next] = src[idx];
|
||||
assigned[idx] = 1;
|
||||
next++;
|
||||
}
|
||||
|
||||
/* pass 3: map remaining to nearest in palette */
|
||||
for (i = 0; i < nsrc; i++) {
|
||||
if (!assigned[i])
|
||||
remap[i] = nearest(&src[i], out, next);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
/* Main */
|
||||
/* --------------------------------------------------------- */
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
FILE *bmpfp;
|
||||
BMPFILEHEADER fhdr;
|
||||
BMPINFOHEADER ihdr;
|
||||
RGB palette[256];
|
||||
int ncolors, img_w, img_h, rowstride;
|
||||
uint8_t *bmpdata, *pixels;
|
||||
int ntiles, across, down;
|
||||
int nplanes, maxcol;
|
||||
int i, y;
|
||||
RGB outpal[256];
|
||||
int remap[256];
|
||||
uint8_t *remapped;
|
||||
uint8_t *plane_data[8];
|
||||
uint8_t cmap_rgb[256 * 3];
|
||||
int planesize;
|
||||
|
||||
/* parse args */
|
||||
if (argc != 5
|
||||
|| strcmp(argv[1], "-planes") != 0) {
|
||||
fprintf(stderr,
|
||||
"Usage: %s -planes N input.bmp output.iff\n",
|
||||
argv[0]);
|
||||
return 1;
|
||||
}
|
||||
nplanes = atoi(argv[2]);
|
||||
if (nplanes < 1 || nplanes > 8) {
|
||||
fprintf(stderr, "planes must be 1-8\n");
|
||||
return 1;
|
||||
}
|
||||
maxcol = 1 << nplanes;
|
||||
|
||||
/* read BMP */
|
||||
bmpfp = fopen(argv[3], "rb");
|
||||
if (!bmpfp) { perror(argv[3]); return 1; }
|
||||
|
||||
if (fread(&fhdr, sizeof(fhdr), 1, bmpfp) != 1
|
||||
|| fread(&ihdr, sizeof(ihdr), 1, bmpfp) != 1) {
|
||||
fprintf(stderr, "Failed to read BMP header\n");
|
||||
return 1;
|
||||
}
|
||||
if (fhdr.bfType != 0x4D42) {
|
||||
fprintf(stderr, "Not a BMP file\n");
|
||||
return 1;
|
||||
}
|
||||
if (ihdr.biBitCount != 8) {
|
||||
fprintf(stderr,
|
||||
"Expected 8-bit BMP, got %d-bit\n",
|
||||
ihdr.biBitCount);
|
||||
return 1;
|
||||
}
|
||||
|
||||
img_w = ihdr.biWidth;
|
||||
img_h = abs(ihdr.biHeight);
|
||||
ncolors = ihdr.biClrUsed ? ihdr.biClrUsed : 256;
|
||||
if (ncolors > 256) ncolors = 256;
|
||||
|
||||
/* read palette (BMP stores BGRx) */
|
||||
{
|
||||
uint8_t raw[256][4];
|
||||
if (fread(raw, 4, ncolors, bmpfp)
|
||||
!= (size_t)ncolors) {
|
||||
fprintf(stderr, "Failed to read palette\n");
|
||||
return 1;
|
||||
}
|
||||
for (i = 0; i < ncolors; i++) {
|
||||
palette[i].r = raw[i][2];
|
||||
palette[i].g = raw[i][1];
|
||||
palette[i].b = raw[i][0];
|
||||
}
|
||||
}
|
||||
|
||||
/* read pixel data */
|
||||
rowstride = (img_w + 3) & ~3;
|
||||
bmpdata = malloc(rowstride * img_h);
|
||||
fseek(bmpfp, fhdr.bfOffBits, SEEK_SET);
|
||||
if (fread(bmpdata, 1, rowstride * img_h, bmpfp)
|
||||
!= (size_t)(rowstride * img_h)) {
|
||||
fprintf(stderr, "Failed to read pixel data\n");
|
||||
return 1;
|
||||
}
|
||||
fclose(bmpfp);
|
||||
|
||||
/* flip bottom-up to top-down */
|
||||
pixels = malloc(img_w * img_h);
|
||||
if (ihdr.biHeight > 0) {
|
||||
for (y = 0; y < img_h; y++)
|
||||
memcpy(pixels + y * img_w,
|
||||
bmpdata + (img_h-1-y) * rowstride,
|
||||
img_w);
|
||||
} else {
|
||||
for (y = 0; y < img_h; y++)
|
||||
memcpy(pixels + y * img_w,
|
||||
bmpdata + y * rowstride, img_w);
|
||||
}
|
||||
free(bmpdata);
|
||||
|
||||
across = img_w / TILE_X;
|
||||
down = img_h / TILE_Y;
|
||||
ntiles = across * down;
|
||||
|
||||
/* build palette and remap pixels */
|
||||
build_palette(palette, ncolors,
|
||||
pixels, img_w * img_h,
|
||||
maxcol, outpal, remap);
|
||||
|
||||
remapped = malloc(img_w * img_h);
|
||||
for (i = 0; i < img_w * img_h; i++)
|
||||
remapped[i] = (uint8_t)remap[pixels[i]];
|
||||
|
||||
/* convert to bitplanes */
|
||||
planesize = (img_w / 8) * img_h;
|
||||
for (i = 0; i < nplanes; i++)
|
||||
plane_data[i] = calloc(1, planesize);
|
||||
|
||||
to_planes(remapped, img_w, img_h,
|
||||
nplanes, plane_data);
|
||||
|
||||
/* build CMAP */
|
||||
for (i = 0; i < maxcol; i++) {
|
||||
cmap_rgb[i*3+0] = outpal[i].r;
|
||||
cmap_rgb[i*3+1] = outpal[i].g;
|
||||
cmap_rgb[i*3+2] = outpal[i].b;
|
||||
}
|
||||
|
||||
/* write IFF */
|
||||
iff_fp = fopen(argv[4], "wb");
|
||||
if (!iff_fp) { perror(argv[4]); return 1; }
|
||||
|
||||
iff_write(nplanes, maxcol, cmap_rgb,
|
||||
img_w, img_h, plane_data,
|
||||
ntiles, across, down);
|
||||
fclose(iff_fp);
|
||||
|
||||
printf("%s: %dx%d, %d colors (%d planes), "
|
||||
"%d tiles\n",
|
||||
argv[4], img_w, img_h,
|
||||
maxcol, nplanes, ntiles);
|
||||
|
||||
for (i = 0; i < nplanes; i++) free(plane_data[i]);
|
||||
free(remapped);
|
||||
free(pixels);
|
||||
return 0;
|
||||
}
|
||||
258
sys/amiga/clipwin.c
Normal file
258
sys/amiga/clipwin.c
Normal file
@@ -0,0 +1,258 @@
|
||||
static USHORT Palette[] = {
|
||||
0x0AAA, /* color #0 */
|
||||
0x0000, /* color #1 */
|
||||
0x0FFF, /* color #2 */
|
||||
0x058B, /* color #3 */
|
||||
0x000F, /* color #4 */
|
||||
0x0F0F, /* color #5 */
|
||||
0x00FF, /* color #6 */
|
||||
0x0FFF /* color #7 */
|
||||
#define PaletteColorCount 8
|
||||
};
|
||||
|
||||
#define PALETTE Palette
|
||||
|
||||
static SHORT ClipBorderVectors1[] = { 0, 0, 76, 0, 76, 11, 0, 11, 0, 0 };
|
||||
static struct Border ClipBorder1 = {
|
||||
-1, -1, /* XY origin relative to container TopLeft */
|
||||
3, 0, JAM1, /* front pen, back pen and drawmode */
|
||||
5, /* number of XY vectors */
|
||||
ClipBorderVectors1, /* pointer to XY vectors */
|
||||
NULL /* next border in list */
|
||||
};
|
||||
|
||||
static struct IntuiText ClipIText1 = {
|
||||
4, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
15, 1, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"Cancel", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
static struct Gadget ClipCancel = {
|
||||
NULL, /* next gadget */
|
||||
240, 59, /* origin XY of hit box relative to window TopLeft */
|
||||
75, 10, /* hit box width and height */
|
||||
NULL, /* gadget flags */
|
||||
RELVERIFY, /* activation flags */
|
||||
BOOLGADGET, /* gadget type flags */
|
||||
(APTR) &ClipBorder1, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
&ClipIText1, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
NULL, /* SpecialInfo structure */
|
||||
GADCANCEL, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
static SHORT ClipBorderVectors2[] = { 0, 0, 78, 0, 78, 11, 0, 11, 0, 0 };
|
||||
static struct Border ClipBorder2 = {
|
||||
-1, -1, /* XY origin relative to container TopLeft */
|
||||
3, 0, JAM1, /* front pen, back pen and drawmode */
|
||||
5, /* number of XY vectors */
|
||||
ClipBorderVectors2, /* pointer to XY vectors */
|
||||
NULL /* next border in list */
|
||||
};
|
||||
|
||||
static struct IntuiText ClipIText2 = {
|
||||
4, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
24, 1, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"Okay", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
static struct Gadget ClipOkay = {
|
||||
&ClipCancel, /* next gadget */
|
||||
17, 60, /* origin XY of hit box relative to window TopLeft */
|
||||
77, 10, /* hit box width and height */
|
||||
NULL, /* gadget flags */
|
||||
RELVERIFY, /* activation flags */
|
||||
BOOLGADGET, /* gadget type flags */
|
||||
(APTR) &ClipBorder2, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
&ClipIText2, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
NULL, /* SpecialInfo structure */
|
||||
GADOKAY, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
static struct PropInfo ClipClipXCLIPSInfo = {
|
||||
AUTOKNOB + FREEHORIZ, /* PropInfo flags */
|
||||
24504, -1, /* horizontal and vertical pot values */
|
||||
10922, -1, /* horizontal and vertical body values */
|
||||
};
|
||||
|
||||
static struct Image ClipImage1 = {
|
||||
43, 0, /* XY origin relative to container TopLeft */
|
||||
24, 3, /* Image width and height in pixels */
|
||||
0, /* number of bitplanes in Image */
|
||||
NULL, /* pointer to ImageData */
|
||||
0x0000, 0x0000, /* PlanePick and PlaneOnOff */
|
||||
NULL /* next Image structure */
|
||||
};
|
||||
|
||||
static struct IntuiText ClipIText3 = {
|
||||
3, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
-116, -1, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"X Clip Border:", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
static struct Gadget ClipXCLIP = {
|
||||
&ClipOkay, /* next gadget */
|
||||
134, 37, /* origin XY of hit box relative to window TopLeft */
|
||||
-199, 7, /* hit box width and height */
|
||||
GRELWIDTH, /* gadget flags */
|
||||
RELVERIFY + GADGIMMEDIATE, /* activation flags */
|
||||
PROPGADGET, /* gadget type flags */
|
||||
(APTR) &ClipImage1, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
&ClipIText3, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
(APTR) &ClipClipXCLIPSInfo, /* SpecialInfo structure */
|
||||
XCLIP, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
static struct PropInfo ClipClipYCLIPSInfo = {
|
||||
AUTOKNOB + FREEHORIZ, /* PropInfo flags */
|
||||
13106, -1, /* horizontal and vertical pot values */
|
||||
10922, -1, /* horizontal and vertical body values */
|
||||
};
|
||||
|
||||
static struct Image ClipImage2 = {
|
||||
22, 0, /* XY origin relative to container TopLeft */
|
||||
24, 3, /* Image width and height in pixels */
|
||||
0, /* number of bitplanes in Image */
|
||||
NULL, /* pointer to ImageData */
|
||||
0x0000, 0x0000, /* PlanePick and PlaneOnOff */
|
||||
NULL /* next Image structure */
|
||||
};
|
||||
|
||||
static struct IntuiText ClipIText4 = {
|
||||
3, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
-116, -1, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"Y Clip Border:", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
static struct Gadget ClipYCLIP = {
|
||||
&ClipXCLIP, /* next gadget */
|
||||
134, 46, /* origin XY of hit box relative to window TopLeft */
|
||||
-199, 7, /* hit box width and height */
|
||||
GRELWIDTH, /* gadget flags */
|
||||
RELVERIFY + GADGIMMEDIATE, /* activation flags */
|
||||
PROPGADGET, /* gadget type flags */
|
||||
(APTR) &ClipImage2, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
&ClipIText4, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
(APTR) &ClipClipYCLIPSInfo, /* SpecialInfo structure */
|
||||
YCLIP, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
static struct PropInfo ClipClipXSIZESInfo = {
|
||||
AUTOKNOB + FREEHORIZ, /* PropInfo flags */
|
||||
26212, -1, /* horizontal and vertical pot values */
|
||||
10922, -1, /* horizontal and vertical body values */
|
||||
};
|
||||
|
||||
static struct Image ClipImage3 = {
|
||||
45, 0, /* XY origin relative to container TopLeft */
|
||||
24, 3, /* Image width and height in pixels */
|
||||
0, /* number of bitplanes in Image */
|
||||
NULL, /* pointer to ImageData */
|
||||
0x0000, 0x0000, /* PlanePick and PlaneOnOff */
|
||||
NULL /* next Image structure */
|
||||
};
|
||||
|
||||
static struct IntuiText ClipIText5 = {
|
||||
3, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
-124, -1, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"X Scale Factor:", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
static struct Gadget ClipXSIZE = {
|
||||
&ClipYCLIP, /* next gadget */
|
||||
134, 15, /* origin XY of hit box relative to window TopLeft */
|
||||
-199, 7, /* hit box width and height */
|
||||
GRELWIDTH, /* gadget flags */
|
||||
RELVERIFY + GADGIMMEDIATE, /* activation flags */
|
||||
PROPGADGET, /* gadget type flags */
|
||||
(APTR) &ClipImage3, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
&ClipIText5, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
(APTR) &ClipClipXSIZESInfo, /* SpecialInfo structure */
|
||||
XSIZE, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
static struct PropInfo ClipClipYSIZESInfo = {
|
||||
AUTOKNOB + FREEHORIZ, /* PropInfo flags */
|
||||
-25937, -1, /* horizontal and vertical pot values */
|
||||
10922, -1, /* horizontal and vertical body values */
|
||||
};
|
||||
|
||||
static struct Image ClipImage4 = {
|
||||
69, 0, /* XY origin relative to container TopLeft */
|
||||
24, 3, /* Image width and height in pixels */
|
||||
0, /* number of bitplanes in Image */
|
||||
NULL, /* pointer to ImageData */
|
||||
0x0000, 0x0000, /* PlanePick and PlaneOnOff */
|
||||
NULL /* next Image structure */
|
||||
};
|
||||
|
||||
static struct IntuiText ClipIText6 = {
|
||||
3, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
-124, -1, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"Y Scale Factor:", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
static struct Gadget ClipYSIZE = {
|
||||
&ClipXSIZE, /* next gadget */
|
||||
134, 24, /* origin XY of hit box relative to window TopLeft */
|
||||
-199, 7, /* hit box width and height */
|
||||
GRELWIDTH, /* gadget flags */
|
||||
RELVERIFY + GADGIMMEDIATE, /* activation flags */
|
||||
PROPGADGET, /* gadget type flags */
|
||||
(APTR) &ClipImage4, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
&ClipIText6, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
(APTR) &ClipClipYSIZESInfo, /* SpecialInfo structure */
|
||||
YSIZE, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
#define ClipGadgetList1 ClipYSIZE
|
||||
|
||||
static struct NewWindow ClipNewWindowStructure1 = {
|
||||
114, 16, /* window XY origin relative to TopLeft of screen */
|
||||
346, 76, /* window width and height */
|
||||
0, 1, /* detail and block pens */
|
||||
NEWSIZE + MOUSEMOVE + GADGETDOWN + GADGETUP + CLOSEWINDOW + ACTIVEWINDOW
|
||||
+ VANILLAKEY + INTUITICKS, /* IDCMP flags */
|
||||
WINDOWSIZING + WINDOWDRAG + WINDOWDEPTH + WINDOWCLOSE + ACTIVATE
|
||||
+ NOCAREREFRESH, /* other window flags */
|
||||
&ClipYSIZE, /* first gadget in gadget list */
|
||||
NULL, /* custom CHECKMARK imagery */
|
||||
"Edit Clipping Parameters", /* window title */
|
||||
NULL, /* custom screen pointer */
|
||||
NULL, /* custom bitmap */
|
||||
350,
|
||||
76, /* minimum width and height */
|
||||
-1, -1, /* maximum width and height */
|
||||
CUSTOMSCREEN /* destination screen type */
|
||||
};
|
||||
|
||||
/* end of PowerWindows source generation */
|
||||
242
sys/amiga/colorwin.c
Normal file
242
sys/amiga/colorwin.c
Normal file
@@ -0,0 +1,242 @@
|
||||
SHORT Col_BorderVectors1[] = { 0, 0, 59, 0, 59, 12, 0, 12, 0, 0 };
|
||||
struct Border Col_Border1 = {
|
||||
-1, -1, /* XY origin relative to container TopLeft */
|
||||
3, 0, JAM1, /* front pen, back pen and drawmode */
|
||||
5, /* number of XY vectors */
|
||||
Col_BorderVectors1, /* pointer to XY vectors */
|
||||
NULL /* next border in list */
|
||||
};
|
||||
|
||||
struct IntuiText Col_IText1 = {
|
||||
7, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
13, 1, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"Save", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
struct Gadget Col_Save = {
|
||||
NULL, /* next gadget */
|
||||
9, 77, /* origin XY of hit box relative to window TopLeft */
|
||||
58, 11, /* hit box width and height */
|
||||
NULL, /* gadget flags */
|
||||
RELVERIFY, /* activation flags */
|
||||
BOOLGADGET, /* gadget type flags */
|
||||
(APTR) &Col_Border1, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
&Col_IText1, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
NULL, /* SpecialInfo structure */
|
||||
GADCOLSAVE, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
SHORT Col_BorderVectors2[] = { 0, 0, 59, 0, 59, 12, 0, 12, 0, 0 };
|
||||
struct Border Col_Border2 = {
|
||||
-1, -1, /* XY origin relative to container TopLeft */
|
||||
3, 0, JAM1, /* front pen, back pen and drawmode */
|
||||
5, /* number of XY vectors */
|
||||
Col_BorderVectors2, /* pointer to XY vectors */
|
||||
NULL /* next border in list */
|
||||
};
|
||||
|
||||
struct IntuiText Col_IText2 = {
|
||||
7, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
17, 1, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"Use", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
struct Gadget Col_Okay = {
|
||||
&Col_Save, /* next gadget */
|
||||
128, 77, /* origin XY of hit box relative to window TopLeft */
|
||||
58, 11, /* hit box width and height */
|
||||
NULL, /* gadget flags */
|
||||
RELVERIFY, /* activation flags */
|
||||
BOOLGADGET, /* gadget type flags */
|
||||
(APTR) &Col_Border2, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
&Col_IText2, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
NULL, /* SpecialInfo structure */
|
||||
GADCOLOKAY, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
SHORT Col_BorderVectors3[] = { 0, 0, 59, 0, 59, 12, 0, 12, 0, 0 };
|
||||
struct Border Col_Border3 = {
|
||||
-1, -1, /* XY origin relative to container TopLeft */
|
||||
3, 0, JAM1, /* front pen, back pen and drawmode */
|
||||
5, /* number of XY vectors */
|
||||
Col_BorderVectors3, /* pointer to XY vectors */
|
||||
NULL /* next border in list */
|
||||
};
|
||||
|
||||
struct IntuiText Col_IText3 = {
|
||||
7, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
6, 1, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"Cancel", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
struct Gadget Col_Cancel = {
|
||||
&Col_Okay, /* next gadget */
|
||||
244, 77, /* origin XY of hit box relative to window TopLeft */
|
||||
58, 11, /* hit box width and height */
|
||||
NULL, /* gadget flags */
|
||||
RELVERIFY, /* activation flags */
|
||||
BOOLGADGET, /* gadget type flags */
|
||||
(APTR) &Col_Border3, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
&Col_IText3, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
NULL, /* SpecialInfo structure */
|
||||
GADCOLCANCEL, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
struct PropInfo Col_Col_RedPenSInfo = {
|
||||
AUTOKNOB + FREEHORIZ, /* PropInfo flags */
|
||||
0, 0, /* horizontal and vertical pot values */
|
||||
-1, -1, /* horizontal and vertical body values */
|
||||
};
|
||||
|
||||
struct Image Col_Image1 = {
|
||||
0, 0, /* XY origin relative to container TopLeft */
|
||||
263, 7, /* Image width and height in pixels */
|
||||
0, /* number of bitplanes in Image */
|
||||
NULL, /* pointer to ImageData */
|
||||
0x0000, 0x0000, /* PlanePick and PlaneOnOff */
|
||||
NULL /* next Image structure */
|
||||
};
|
||||
|
||||
struct Gadget Col_RedPen = {
|
||||
&Col_Cancel, /* next gadget */
|
||||
32, 12, /* origin XY of hit box relative to window TopLeft */
|
||||
271, 11, /* hit box width and height */
|
||||
NULL, /* gadget flags */
|
||||
RELVERIFY + GADGIMMEDIATE + FOLLOWMOUSE, /* activation flags */
|
||||
PROPGADGET, /* gadget type flags */
|
||||
(APTR) &Col_Image1, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
NULL, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
(APTR) &Col_Col_RedPenSInfo, /* SpecialInfo structure */
|
||||
GADREDPEN, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
struct PropInfo Col_Col_GreenPenSInfo = {
|
||||
AUTOKNOB + FREEHORIZ, /* PropInfo flags */
|
||||
0, 0, /* horizontal and vertical pot values */
|
||||
-1, -1, /* horizontal and vertical body values */
|
||||
};
|
||||
|
||||
struct Image Col_Image2 = {
|
||||
0, 0, /* XY origin relative to container TopLeft */
|
||||
263, 7, /* Image width and height in pixels */
|
||||
0, /* number of bitplanes in Image */
|
||||
NULL, /* pointer to ImageData */
|
||||
0x0000, 0x0000, /* PlanePick and PlaneOnOff */
|
||||
NULL /* next Image structure */
|
||||
};
|
||||
|
||||
struct Gadget Col_GreenPen = {
|
||||
&Col_RedPen, /* next gadget */
|
||||
32, 24, /* origin XY of hit box relative to window TopLeft */
|
||||
271, 11, /* hit box width and height */
|
||||
NULL, /* gadget flags */
|
||||
RELVERIFY + GADGIMMEDIATE + FOLLOWMOUSE, /* activation flags */
|
||||
PROPGADGET, /* gadget type flags */
|
||||
(APTR) &Col_Image2, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
NULL, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
(APTR) &Col_Col_GreenPenSInfo, /* SpecialInfo structure */
|
||||
GADGREENPEN, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
struct PropInfo Col_Col_BluePenSInfo = {
|
||||
AUTOKNOB + FREEHORIZ, /* PropInfo flags */
|
||||
0, 0, /* horizontal and vertical pot values */
|
||||
-1, -1, /* horizontal and vertical body values */
|
||||
};
|
||||
|
||||
struct Image Col_Image3 = {
|
||||
0, 0, /* XY origin relative to container TopLeft */
|
||||
263, 7, /* Image width and height in pixels */
|
||||
0, /* number of bitplanes in Image */
|
||||
NULL, /* pointer to ImageData */
|
||||
0x0000, 0x0000, /* PlanePick and PlaneOnOff */
|
||||
NULL /* next Image structure */
|
||||
};
|
||||
|
||||
struct Gadget Col_BluePen = {
|
||||
&Col_GreenPen, /* next gadget */
|
||||
32, 36, /* origin XY of hit box relative to window TopLeft */
|
||||
271, 11, /* hit box width and height */
|
||||
NULL, /* gadget flags */
|
||||
RELVERIFY + GADGIMMEDIATE + FOLLOWMOUSE, /* activation flags */
|
||||
PROPGADGET, /* gadget type flags */
|
||||
(APTR) &Col_Image3, /* gadget border or image to be rendered */
|
||||
NULL, /* alternate imagery for selection */
|
||||
NULL, /* first IntuiText structure */
|
||||
NULL, /* gadget mutual-exclude long word */
|
||||
(APTR) &Col_Col_BluePenSInfo, /* SpecialInfo structure */
|
||||
GADBLUEPEN, /* user-definable data */
|
||||
NULL /* pointer to user-definable data */
|
||||
};
|
||||
|
||||
#define Col_GadgetList1 Col_BluePen
|
||||
|
||||
struct IntuiText Col_IText6 = {
|
||||
3, 0, JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
17, 38, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"B", /* pointer to text */
|
||||
NULL /* next IntuiText structure */
|
||||
};
|
||||
|
||||
struct IntuiText Col_IText5 = {
|
||||
4, 0,
|
||||
JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
16, 26, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"G", /* pointer to text */
|
||||
&Col_IText6 /* next IntuiText structure */
|
||||
};
|
||||
|
||||
struct IntuiText Col_IText4 = {
|
||||
7, 0,
|
||||
JAM1, /* front and back text pens, drawmode and fill byte */
|
||||
16, 14, /* XY origin relative to container TopLeft */
|
||||
NULL, /* font pointer or NULL for default */
|
||||
"R", /* pointer to text */
|
||||
&Col_IText5 /* next IntuiText structure */
|
||||
};
|
||||
|
||||
#define Col_IntuiTextList1 Col_IText4
|
||||
|
||||
struct NewWindow Col_NewWindowStructure1 = {
|
||||
175, 45, /* window XY origin relative to TopLeft of screen */
|
||||
312, 93, /* window width and height */
|
||||
0, 1, /* detail and block pens */
|
||||
MOUSEBUTTONS + MOUSEMOVE + GADGETDOWN + GADGETUP + CLOSEWINDOW
|
||||
+ VANILLAKEY + INTUITICKS, /* IDCMP flags */
|
||||
WINDOWDRAG + WINDOWDEPTH + WINDOWCLOSE + ACTIVATE
|
||||
+ NOCAREREFRESH, /* other window flags */
|
||||
&Col_BluePen, /* first gadget in gadget list */
|
||||
NULL, /* custom CHECKMARK imagery */
|
||||
"Edit Screen Colors", /* window title */
|
||||
NULL, /* custom screen pointer */
|
||||
NULL, /* custom bitmap */
|
||||
5,
|
||||
5, /* minimum width and height */
|
||||
-1, -1, /* maximum width and height */
|
||||
CUSTOMSCREEN /* destination screen type */
|
||||
};
|
||||
|
||||
/* end of PowerWindows source generation */
|
||||
223
sys/amiga/grave16.xpm
Normal file
223
sys/amiga/grave16.xpm
Normal file
@@ -0,0 +1,223 @@
|
||||
/* XPM */
|
||||
static char *noname[] = {
|
||||
/* width height ncolors chars_per_pixel */
|
||||
"400 200 16 1",
|
||||
/* colors */
|
||||
"` c #66686A",
|
||||
"a c #797979",
|
||||
"b c #929291",
|
||||
"c c #43444A",
|
||||
"d c #758A74",
|
||||
"e c #F2F2F2",
|
||||
"f c #D1D0CE",
|
||||
"g c #066906",
|
||||
"h c #065506",
|
||||
"i c #53535C",
|
||||
"j c #0C0D0F",
|
||||
"k c #A3A5A2",
|
||||
"l c #2D332E",
|
||||
"m c #C3C4C1",
|
||||
"n c #B4B4B2",
|
||||
"o c #07840A",
|
||||
/* pixels */
|
||||
"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjljjjjjjjjjjjjjjjljjjjjjjjjjjljljjljljjljjllljljclljlllljlllljlllllllllllllllcicl``clcllclclllclclclcclclclcccccccccccccccccccii`iiccicicicciiciiiiiibiic`iii`a`iiii`icaii`iiii`iiii`ii`ii`iii```iii`i`ii`ii`ii`iiii`iii`ii`iifi`ii`ii`iiiiiiiiiiiiiiiiiiiiii`iciibicicicicciiccciiibiicciiiiccccbicicccccccciccclcccccclc`aiciiiciccclilccccccccccclcccacccccccclccclcclccc",
|
||||
"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjljjjjjjjljjjjjjljjjjjjajljjljljljljjjjljjljc`baljjllcljjcjlljllllllllllllllllllllllcclllllllclllcclcllclclccccccccclccccccccccccicciicciicicicic`cciiciciciciacicii`iiiiii``iiakii`iiii`ii`ii`iiii`bkb`i`ci``iiiiii`iii`ii``i`iiiiiaiiiiiiiiii`iiiiiiiiiiiiiiiiiiiiiciiciciicicciciiiicllic`iciiiicicciliccccccccccccc`ccccliccccccccciciccclccccclclclclcclccclclclllccclcllccll",
|
||||
"ijjjjjjjjjjjjjjjjjjljjjjjjjjljjjjjjjjjjjljjjljjjjjjljljjjjjjjljjjljljljljjjjlljljljljcclljllllljlllljllllllllllllllllcclccclcjcllclclclclllcclclcccccccccccciccccciiic`a`icciiccciciiiiiiiiibi`iiiiii`ii`ci`iii`ii`i`iiiiiiiii`iii``ici`i`i`i``ii`ii`iiiiiiic``iiiiiiiiiiiiiiaiiiiiiiiiiciicicii`iiiiiliiccicicccicccci`ccicccicccclccinccccccccclcccaccccccclccccccccccilcl`lllccclcclcclcllcllclcccclllilcllci",
|
||||
"jjjjjjjjjjjjj`cjjjjljjjjjjjjcljljjjjjjjljjljijjljjjjjjjljljljjljljljlljljllljjljllflcjljllljljlljllllcllllllllllllcllllccllcc`clclllcllcclclcccclccccccccciccciciccccccic`iciic`iiiiciiiiiiiaiii`iii`i`icak`c``i`iiiiii`ii`i`iii`i`ii`iiiiiiici`iii`ii`i`ii``iiii`c`iiiiiiiii`iiiiiiiiciiiiiiiiiiiccccciccicicciiccccciaillcccciiciccclcccccccccccccc`cclclccillccllcliibilikaicllcclccccclcccclcccccllccllcclcl",
|
||||
"jjcjjjjjjjjljjjjjjjjjjjjjjjjljjjljjjjjjjjjjjljjjjjljjcjjjljjljjljjjljjljljjjlljllljlllcljllllllllllllcclllllllllclllcclccibccclclcclcclcllicicccccccclcccccccciciicciccciaaiciccciiiiiiii`ciiiiii`iiiii`ic`iiiiiiii`ii`iiiiiiiiii`iiiiiciiiii`i`iiiii`ii`iiiciiiiiiiiiiiiiiciiiciiciciiccicciiiiiicicc`cccccccicccccicciiccicccicclilccccccclccccclccllcccilcccclcciclccciclcclccclccclclllcllcllccllcccclaacccl",
|
||||
"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjljljjjjjjjlljjjjljljjjjjljjljjljljlljljlljlllllljajljljlllllllllllllllcllllllllclccilcicclc`clalcclclclcclcccicclclccccciiccicciccciciiiiiiciib`iiiiiiiiiii`iiii``i`i`iiiiiiii`iiiiiiiiiiiiiiiiiibaiiici`iiiiibiiiii`iiiic`kaiiiiiiiiiiiiiciiiciiiciiciciccicciiiiciiiciccicicccccccciclcccccciiccccaciclclcccciilcccclcclcclcllclilacclcccclccclclcccccclccclclccllcclllllkblllc",
|
||||
"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjljjljjjljjjjjljljjjjjjjljljjljjljljlllljljljljjjjjljllljcjllllllllllllllllllllccclclabclccccciccccllclclcclcclclccccccccciiaiiicciciiicccccciiiiiiiiiciiiiiicii`i`i``i`iiiii`iiiiiiiiiiiiiiiiiiiiiibiciiiicciiii`iiiiiiiiiie`i``ic`iiiiiiiiiciiciciiciciciciciiiciic`cccclcccccccccciccccccciccciicilcillcccccclciccccclclccclibaili`lillccccciicliccccccclcccllallclliiiclcliilcll",
|
||||
"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjljjljjjjjjjjljjljjjljjjjjljjljljlllllljllljlclllllljlllllllllllllllllllllllllcccclccliiccccciccccclclcclccccccclcciccccciacciciiiccci`iiiiciiiiiiiiiiiiiii`i`c``````i``iiiiciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii`kciiiiiiiiii`c`iciciiiiiiciiiiiiciccicicicciciiiiii`ifcccciccicccccccccccccccclccccccclcclccclccclclclcllilclcclcllclcliilclclclccicccccccccllllcecclclliaacllcllclc",
|
||||
"jjjjjjjjjjljjjjjjjjjjjjjjjjjjjjjjljljjjljjjjlljjljjjljljjlijjllllllllllllljljajlljlalllllllllllllllllllllccccclllccclclccccccccccclcccccc`clcccccccccccicacicciciciciiiiiiib`iiciiiii`c`iiii``iii``ii``ciiiiiiciiiiciiiii`biii`iiiiciiiiciiicib`iiiiiiiiiiiiiiiiicii```cccciciciciiiiiiiciiiciiccccccccccciicciccccccccccccciccccclccclcccllccclclc`ccclcclcccccclcccllclccclclllcllcliccllclmccclcccl`lclclclll",
|
||||
"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjljjjljjjlljjjllljlljjjljljjjljljlcllllljcljjcljlllijllllllllllllllilcllcccccllicllllclcllcclliccccclccclcccccccccccccccc`iciicicciiiaiciciicl`ici`iiiiiiii`ii`i`ii``iiiiiiiiiiiiiii`iiiiiaciiciiiiiiiciiiciiiiiiicici`ciiciiiiciicciiiciiciciiiciiiiiii`cbi`liicicccccccccclccccccccclclccccccclcilccllccccllcclcccclcclclclllllcllllcllllllclcllccccclllcllilllclllclilillccll",
|
||||
"jjjjjjjljljjjjjjjjjjjjjjjjjjljjjjljljjjjjjjjlljjljlllljllljllljlcljjljljcjlllljcljllllcllllllllllim`lljccllcclcbacllcllclccliclcccclccccccccccccccicciciciiciiciiiiiibiiiib``iiii`i`iiaii`ii`iiiiiciiiiiiiiiiicciiiiiii`iiiiiciiiiciciici`cciiciciiiiib`c`aaicciicicciccccciiiiiiiicciiicciilccccclcccccccccccclccccccclccliccccclclclcillccccllcclclccilcccclclcclcccclclclclllcllllcclllllllclllcllcllclcll`cc",
|
||||
"jjjjjjjjjjjjjjjjjjjjijljjjjjjjljjljjljjjljjjjjjcjljljlcjjlcljlljkclllllllcllllljllllllljllllllllllliiccccclllllcccllcclcclclclcicccccclcclcccccccicccciicciciiciiiicc`ciii`ciiiiiiiiii``ii`iiiiiiiicii`i`i`iii`iicic`ii``iiiiiiiiiiciciciiiicc`ciicici`cc`iiiciciicicciicicci`iiiiiciciicicccibiccccccclcccccclclcclclcclccicclclcicclikclcllclllcllcllclccccllclclcliclci`cllclllillliccclcllclclbilllclllclcal",
|
||||
"jjjjjjcbljjcajjjjjjjljjjljljjjjjljjjjjjljljjljjjlljcjllljlilllllaljlljjl`mllljcillllclllllllllllcllclllciiilccclllclclclcclckaclccccccccclccccccccciiciciiciiciiciiiiii`ic`ii`ii`ii`````i`iiiiiiiiciiciiiiiiiiiiic`ibiiciiiiiiiiicicicicccicicicciciccccicccciiicccciccciccciiiiiiiiciccii`cicbicciccciiciclcccccccclcclcccccllcclllliclclcccccclcclcllclcccclcllclclccllc`lllcllcll`llllllcllllllilllllllclcclc",
|
||||
"jjjjjjjljjjlijjjjjjjjljjjjjjjjljjjjjlljjjjljjljljljajljljlljlljcljjlllllljlljijjlllllllllllllllcjcllllaclclllllcccclccclllccclcccccccccccccccccii``a`cccciciciiiiic`i`baba`iiii`ii```ii`ii`iiiiiiiiicciiccciciiiic`ia`iccii`c`iiciciccccccccbcccccic`iciciiiiccciccicicccccccccciiiiciccccccciccccccccccciicii`a``icccccccilclclciaa`iiccciclllcllclcllcllcccllllclllcllllclclcllllamiccaclllllccllllccllclcllcl",
|
||||
"ljjjjjjjjljjjjjjjjljljnjjljljljjljllcjljjjljjjlbjllblljljjjljlcljclljlljlljclikllljlllllllllllllcljclccccccccllclllllcccccclcclcccciccciccciabbkakbnaccici`iciiiiiiic`bbnnnnkbaa``iiii`ciiiiicici``ic``ciiiaiiiiiiiciiciciiiiiiicccciciciiccbcciiccccccciccciicicicicccccccccicccicccccccliccicliiccccici```iabkbaccccccccclccclciammnbbbaaicclcclclclclllllllllllclllllclllllllllccijlakillcllllllclllllllcjcll",
|
||||
"jjljjjjjjljjjjjljjjjjjjljjjjjjljjjjjljjjljjljljjljjijjljljl`liklljljllllllillljlllllllllllllllllllclllccccllccclcccccllcclcclccccccccciii`abnnbknmnmblciiibiiciicik`i`nbkmnmmnmnnk``i`niiiiciiiiciicccicccibciciiiciciccciciiciccicicccccccciccccccicc`ccccicibfcccccccicccccccccccccccclc`cclcclcci`abbbbaii`nnk`ccccccclllc`cciiknnnnbbakbkkicllclllclclllllclclllcllllclllllllllllclccllcllllllllkalllcljclll",
|
||||
"jljjljjjjjljjjliljjljjjjjcljjjjjjljljljljlljjjljljljlljlljlijblljljlljljllcjllllllliklllllllllcllllclccccccclclcccclccclccclcccclccciiaa`babnmnnmnnmkjiiccacciiiiiiiiakkknmmmmmnmnkkbbaiibciiccciciiccccccccccciciicicciccccccciicccccccccccciiiilicicccccccciiiilcccccci`ailciclcccclcccckbcllclciabbkkb`icianmnkcccclllclccccii`ammmnbabknkkaa`iillclllcjcclllllcllli`lllllllllclclllclllllllllllllljcllclllll",
|
||||
"jjjljjljlljljjjljjjjjjljcejjlljlljjjjjjjjjjjjlljjljljljljljllkijlllllllcjkllllcllllcallllllllllllclcclilcclclclcllcccllccccccccccc`bk```baabnmnmmmfmklciiciiiiiciiciiakbbknnmnmnnnkbbbbaknicciiiicccciiiccicciccccciicciiccicccccccccccccccccccccicililccccccciiccicccccciiclcclcccclilclliclccli`abbbnkkacciaknmkllllllclllcccii`amnnnnbbakbk`i`aaa`ccicclllcclcljclllclllllllllllllclllccllcllcjcj`alllllllcll",
|
||||
"jjjjljljljjjjjjjjljljjjjljjjjljjjjlllljlljjlljjlljljljlllllljilljllljlciacjlljb`llllclllcllllcclclllccciccclclcccclcccccclccllc`aabnkii`bbabbnnnnnmnbljiiiciiiiii`i`i`kkkbknmmmnmnnbbknkak`iccccicicccccccccccccicccccibccccccclcciccccccccccccciciicni`ccccccccccccccclcclccclcclacclcclclliiciabbbbbbnb`cc`bkknnlllllclcllccc`iiamnknnnkaaknaiiabbabbkkcccclccjcclllllllllllllllillllllcllcccllllccelllccclicl",
|
||||
"jljjjjjljjjljljljjjjjjljjjjjljbjljjjjjjljjljjlljjljljlljljjljljlllllljlllclllcjllllllllllllcllllll`ccilicccclclc`illcccccccci`bnbaakk``abbb``knbnmmkbllciii`i`i`i`i``akbbbbkmmnnnnbbkkkabnmnb`icccccccciccccccccccccccc`ccccccccciicccccccccccciccccciilcccccccclcclclclcclcclccclicllcllcc`aiiabbbkkbakacl`bnnknklccllllcclciiii`bmnknmmbaabka``akaaaakkicllclccibclllllllllllllc`lllllllcllcllllllcjlccclcc`ll",
|
||||
"jjjjljljjjjjjjjjljjljjjljlljjjljljljljljljlljljlljllljlljlcjllllllllllllljcjllmclllljcllllccllllcclcccccclcccccccccclccccciibnmmaaabbbbbbbb``bmbbnmnbljc`ii`ib`iikb``bnkbabbknmmmkbnnkbbbkmmkkaccccccccccccccccccccccclccccclccclcicccclclccclciic`lccciccccccccclclilccclcclcllcllllc`cc`abaliabkkkkkabiciabnmnfnlllllcllllii`i`i`nkbbmmnbbabaakbbba`iknbbbciclcl`llljcllllllllllllllllllllcllllclljclcclllclll",
|
||||
"jljjjjjjljjljljjjjjjlljjljjljjjljjjljljliljljljljlljlljllllllljljljllllllllcllallllclllllcbkbaclcciillclcccccccclcccccccciaaaknknbai`bbbbbbb`bmnkmnnalliii`i`aiii`ii``bbbbbbnmmnmmbkkkbbbbnmnnnbaiccccccccccccccccclcccillcccclclccllcclcclclccccclciliccclclclcclclcllclcclclcllcilclbaabb`icaakbbknkbaii`abknmnbclllccllllii`iiiibabbbkkkaa`abbbbkbaaknnkmnalclllclclllllllllllljllllllllccllclljlclclllclclll",
|
||||
"jjjljjjjjjljjljljlljjjljlicjljlllljljli`cccjl`cjljlljlllljllllllllllllllljcjlllllllllllllliclclclcmbclicccccccclccccccci`bkbbbbbbaaaabbkbbbbabnmfnbacljici`iiii`ici`iiiaabbbkmmnmnbbbababbnnmknnkbiclc`acccccccclccccclccclccclcllclccccccclccccccicllciccccccccllcclilccllclclclcjccababbicc`bbbbbkknbac`ababbaicllllllllllcii`i`iiiababbbaaaabbbkabbabnnnmmfna`acclclllllllllllllllllllllllllclcalllllclclllll",
|
||||
"jjjjjjljjljjjjjl`ailjljjjljjljjljlc`aabkbaba`aiclljllljljcb`ljlllllllllllclllclillllclllllcllclcililclkclcccccccccccccannbabbbbaaaabbbbkkkkbbkmnbiljlllciiiiic`i`i`iiillcakbbknfnkbbnbkbabbkmnnnknnbilccccclccccccccclcaacllcllccclclllcllclccccclclccccccccclllcclclbclclllcllllccl`aaabaicabkkbbkkknka``bkbbilljlllllllllcciiaaijlljcabaaaaaabbbkkkbbknmnnmnnmbillccjlllllllllljlllcllllllllllllllllclllccllll",
|
||||
"jljljljjljjlljljcjljjljljjlljljc`bbknnkkkkkkkbbbbbcjllljllllllllllllljlllllllllcclllclllllclllcacclcccclcliliclcclcc`mfnnmkbkkbaai`a`aakmkkbikmmlllljllciiii`iiii`iin`iljcbbdbnmnbbbmknnkaaakmkmmnbbbilclclclclcclclk`abilcaclclcllclcclicccccclillcccclilccclclllclllclllcclllcllibbbaaailiakkkkbbnkkk`bbbaballllcllllllcllci`a`lljlllcba`c`a`aakmbkbabmmnnmnnmbacllccllllljllllllllbjlljljllllllclllllllclllll",
|
||||
"jljjjljljjljjljjljljljjjjljjlc`akkkkbkmmnnmnkbkkbkb`cjjllllllllllllllcllllllclacjcllllflclllclc`cclliiicclccclciaciabkkmnmmkkka`cc`a`akbnkkb`knkjllljlll``iiii`aiiiiicccllakkkkkkbbbnnmnmkaabnmnkbbkkbiccccliacllillilccccllli`llllcllllcccclllcailllllcllclcclcclccllllclllllllliabka`i`clibbkknbbkknkbkkbbbillllllllllllllc```llllljjlb`cci``abbknkbianmnnmmnnnallilllljllllcjllljllllllcllllllllllcllllllijjl",
|
||||
"ljljjjjjljjljjljljjjjjlljljjibbkmnnkknnfffmnnknnnkbaa`clllllllllllllllllclilllllcccllclclcllccccccclcccccccclcic`cannbbmnnmnbaiiii``akkdknkaabmblljllllciiiabknmniiiiiijljannkkkbbbkkmmnmk``bbkkbbkkkkkaclcclclclclcllclbilcclllillllccllccclclcclcliccll`llilcclllllllclllllllliabba````ccabbbkknbbkkbknkbbbiljcljcljcbnkbabballlljlllc`iii`a`bkbbknbabnnnnmnnnnalcicilllllljllllllljclljljllljljjclllllllla`ll",
|
||||
"llljljljjljjljljjlj`ljljljlikbbmnfnnmmnfffmnmnmmmkkbkbiiljlllllllllllllciaiclcllllllclcllclccccclcccclcclaclcilc``bknnbkmnnnka`bba`adbkbbkbaabmkcljllllciicbnmnnkiiiiicljcanmnmnkkbbkmnnn`ibbabbbknkabknbclclllclllcllclcllllllcllcclllllilllilllllliclllllcjliccllclllclclllccci`aa`i`aii`bnkbkkkbabaakbnnkkacllllllc`knmkbbbbljjjjjlj``abba``bkkabkaaaknmnmnnnbacli`acllljllllljlllllllllljlbblljllljcllclabll",
|
||||
"jljljljljjljljjljjl`jjljjcabkkbefmmfnfefefffmffmfmfnkkbaillllljlllllcllll`llllllajiclllclcccccclcclcccccc`lciccakbbbknkbnnnmnnnnbaabbbbkbb`iadmmaclllllcclcaknkmmkiiiiicc`knkmmmbkbnnnnnbi`bkbbkbkbbbaakkaiclcclclllcclllcclllllllllllcll`ill`cllcllcllcikllillc`cccclclllllcciii`aa``iii`akkkkbaaaaiakkbknknkaallllcabkknnkabkallllllibkmka`aaabkbbai`akmmnmnnmballcibbillcljllllljlljljlllljcjlllljlllcjlllljl",
|
||||
"jlljljjjjljljjljlljljlajl`bkkkkmffffffeffefffmmfffmmnmkbbillllllllllllllcjcllclllilllilclcccccccllclcccccccclcakmnbbbbbkbkmnnmmbabnkbbbkk`cc`bmmmb`ciia`iii`aabnnmaa`c`abkknmnmmbbknmmnkbiababbbaba`ba`aakk`clclllllciccllllcllclllllllllclllllllllclllclllllllliclclcclcclli`aaaaaa`iclc`bbnnkbaiiiibnbnbbknkbb`ccci`knnknnkbbbb`cjjikfmnbabnnbakkk`li`knmnmnnnb`icccaabclilljll`llllllllljllcljlljlljlllllljal",
|
||||
"ljljjllljljjljljjjljlabliakknmknmfffefmffefefffffffffnmkkailllllllllllialclcllilcllc`jicccccicccccccclcccciccbnnknnkbbkbbknnnmnbbkmmnkbbbiccabnnmmnknkb`ccii`abmnbbbmknnmmnmmmnmkbkkfmnkaa`aabaaa``ia`akbbkkacllccllliillllllllljiaaillclllclllcclllllllllllllclclllllcllcciaaabkbb`iicciabbkkba`iiiaknbmkbbkkbabknbabnknkknmkkbkabbkmnknnabnmmkbbbbiliabnmmnnnnbbaicii`akallllljilljjllllicljjlljljcljljllllcbl",
|
||||
"jljllllcjjljljljlljlljllbbnnmmffffeffeefeefefeeffmmefmmknkbclllllllclllclllclclccccccicccicccclcccccccccclccbnmnnnnmmnbbbbbmnnkknmnnfnbb`i`aabnmmmmnnnbaiii`abbkkbkkknkmmfkmnmmmnkkknnmnaaabkkbaaiii`bknbkbkbcllclclclblllclllllllllllllclllllllcjllclcllllllllllllllllllliabbaaaaa````a`abbkba`a```abbknnkbbbkknkkk`bnmnmnnknnmkbkbabnmnnbnmknfnka`iiaabnmmmnnnnbaci``aabkaljllljlljcljllljllllljlliljlljlljjll",
|
||||
"llljljjjljljjljljljjljc`bkbmnfffefeeeefeefeefffeefffmmnnmnkaclllclllclllllclccccccclccccccciccccccliccclbccanmnmmmnknmnbkbbkmnnnnfmmnmnbi`abbaknmnmnnkb``iai`aa`aabknmmnmnnnmnmmmbkbkfnnkbakmnabaabaabnakbbkbbilllllllllllllllllllllllllllllllllllcjallllllllllllllllllllinkbabbba`iaaaa`akbb``````abbbbkfmbabnmmnbakknmmnmnmnnnmkbbbbknnnnnnnmnnmbiiabbakknmmnnkb`````iaa`ailjlljljlljlljlljljlllljljljiclllljl",
|
||||
"jljljljljljljljljjllljlbknkfnffffefeeeeefeeeeefeeeefffmmnkkbillllllllllclijcclclclccclclccccccccicinacciiibnmmnnnmnnnmnkbkbamnkmnmmnmmnabdaabbbbmmnnnba``iaii``ii`bnknmnnmnmmmmnnkkbbknmmkbknnbkkbbbabnbbkkbbnaclllllllllllllllllllllllclllllllllllcllllccclllllliclllllikfkbaaaaa``aba```baa`a`aaaabbbbkmnnknmnnkbbknnnnmmmnnnnnnnkbbbknnnnmmmnnnabaaakabbnnmnnba`````c``i`iicjlllljllllljllllijjcjlllllcjjjllj",
|
||||
"lljljjljljljljljlcjjllkbknmfnffffeeefeeeeeeeeeefeeefffffmnkkbclllllcl`llllccccklllclclcclcccclcccccilccccbmmnmmnmnmnnnmmkkbbnnnbknmmnmkkmkaabbbaknnkkbaa```c``iiiabkbmmmmnmnnnnmmmkkkkknmnbnmkbkkkaa`bbbbbkkbnkacllljcllllllllllllllllllllllllllllllallllllllllll`cjlljlabkbab`aaa`iaba``abaaaa`aabkkkkkknnnmmnkbabnnnnnnmnnnmnknmnmkbbbnkkbnnnnnkbnnabbbbbbnnnkkaaiii`iaiciaailjjlll`bialjlljjclljljajjljjlljll",
|
||||
"jlljjljljjljlljlcjllljanbmmfnffefeefefeeeeeeeeeeeeeeeeffmfnnk`clcllllaclllcclllclcllccciclcccccccccclicc`mmnnnmmnmnnnknmfbbbbdba`abbdbabkaaaabkbbnnnkbaa``ic`iiiaaabbmnbkkbbdbbkbbabkknmnmkmnnabkkbabbkbkbnkkkbb`llcjllllllllllljllllllllllllllllljlllclllljlllljlllcjl`kbbbbbaaaa```a```abaab`ii``aabbabbbbbkkai`bmnnmmmbbkbkmnnnnmka`aaa``aabbbbaknbabbkbbknmkb``a`ii``iiiaaacllijlcklllbljlljljlljijlljla`ljj",
|
||||
"ljjllljljljljlljljjljibbknffmfeffeeeeeeeeeeeeeeeeeefeffemfmnkbclllcllclcicbcclillccccclcccccccccclcciclinmnnmnmnnnmmnnnnnnkaai``lllllcllllcllc`abknmnac`i`clclliaaaabnalllclclcclcllcc`kmmnnnkbbbkbkknkknkkkbbaa`iccclljlllljllllljllllljllllllllacljljlllllllllljllcliabnnbaaabbaa``````aababllllllcllllcllcciii`bnnnnnncllllnnnnnnnilcllllllcllllciadkbkkbbnnnb`i``iciilc`aaaaclealljllcecllljjjljljjljljjjjll",
|
||||
"jjljljjjlljljljlljllclbbmnmffeefeeeeeeeeeeeeeeeeeeeeefefffmkkb`lclcllllclicciclccclccllccccccccccicccciknmnnmnnmmnnnmnnnkmnbiia`lllllllllllllllliaknnb`i`aclllli``i`abilllllllljllllllliknnnnkbbbbbbknnnkknkbkaiiaillljlllllllljlljlllllllljllllcjjlllcllllllljlllljlcabbbba`babbba```iaaaakkbllllllllllllllclicadkmnmnknlllllmmmnnnmijlllllllllllllccibbkkkkbknna`i```icli``i`aaclljjljljlljjlllljljlljjllllllj",
|
||||
"ljljljllljljljlljifccibbmmfffeffeefeeeeeeeeeeeeeeeefefeffffnknaccclccclcccicclcllllclcccccccccccccccccanmnnnknnmnnmnmmmnnnnbi`nilllcllllllllllllliabbkb`aacllll```iiabillllllcllllllllllibnmnnbabbbknnnnnnknbkaiib`ijljcljlljljllllcljcljlllljll`cjlcjjlljllljlllllllibbka``bbbkbba`i``abbbknbcclclllllllclllllladnnnmnnncllllnnnnnnnallllllllllllllllc`bkknbbakbbaaaaaiiii```ciaalllllljljljljjjl`jljllljjjjjjl",
|
||||
"ljljljl`llljlljljlcclaakmnfffffeeeeeeeeeeeeeeeeeeeeefefefffmnnacccccllccilcclclccci`cclccccccccccccccinknnmkkmmknnnnnmmmmnbaaakicclc``ai````illlllibbaabaalcllc`aai`abilllciada```aicllllannnmkbbbknnkkkkkbnbk````aklllllljlllllljlillijllljlllljlllllcjlljllllljljllbknbaa`kkbbkbai``abbbbbnbilclcccici`icccccllaknnnkkn`lclcknnfnmndlllc`````aaaaccclldbnnbbbabbaaaa`a`ai`aaiibb`jlljljllljljlll`ljljjjjjlljlj",
|
||||
"jjljjljcjljlljlllllllcbnnmneemefeeeeeeeeeeeeeeeeeeeeefeeffmmnbbiccciccccccclcclcccccccccliclicccccicibknnnnnnnnnmnnnnnnmmkabbbbiliclnmmkkkbbkalcclcbbbbaaallllc`ab``abcllllaknffnnnkalllllnkmnbkbbkkknnkkkkkbb```i`alljllllljlljlllilljlljllljlljlllljllljlljljlllljakbkkkaabnmbababbbbkbbbbkacllccciiii``aablllccnkknnnkillcldnnnmnmblllc`kkkknmmnblcillbnnkbbbbabba```aaaaaaa`aabcjlljljljlljljjljjjljlljjjljj",
|
||||
"lljlljljlljljlljlllllibnkmnmffefefeeeeeeeeeeeeeeeeeeefffeffmmkkaccccclcillcllclclccccccci`icicccciciakkbknkknnnnnknnnnmnnbadbkkilclcnnmkkbbkkbllllcabbkabblcllcaabaabkilcclakknnnkbkbcilllkbbbbbbbbkbkkbkkbbbaa`iaaaallljjllljljljlclljlllljlllllljljljlbcjllljljjj`nnkbknbbabkbaabkbkkbbbbbbalcllcciabb``bnnilclckkknkkniccccannnnnnalllc`bbbbnnmmnillcldbdnkdabbbbaaaabaabab`aabb`ljlljljljljljljljljjljjljljl",
|
||||
"jjljllljljllllccjcljlcbmknnnfefeefeeeeeeeeeeeeeeeeeeeefffemmnkk`cclccli`clbcblilccccccccciccccciial`kkkkknkknnnnnkknnmnnbdaabbkclllcknmnkbkmn`cclliaabbbbbcllclabkdaabilllcbkkkmnkakaliilibbbakbbkbkkbbkkbkkba``ibbaailllljlllllllllljlljljlljljlllillllljlljlljllcaknnbbkkbaaa``abkkkkbbabaa`cllcci`abkkabkkclllcbkknkknilllcannnnnk`clcc`bkbabmnnkllccldkkbkb`abbbbbkbbbbbbbbaabknajljlljljljljljljjljljllljll",
|
||||
"ljlljjjljljljlccjlllccamnnnnfemeefeeeeeeeeeeeeeeeeeeeeffmffmfnbacclclllillil`cclcclccccclccccciia`canbkknnnnmnnnmnnknnmkkiidnbbclccl`aa``i``illclc`abbbkkbcllllbbkb``b`llcl````a`a`illicl`bbbbkkabbbbbabbbbkb``i``aaaalljlljjljjljljllljljlljllljlcalljlljllljlibjcbkmkmkbab``iiabbbkbbkbabbaailllcci``iii`icllcl`kkknnnm`cllcannnnnb`lllli```i`ab`ccllccnfnnkdbabbbbkkbakbabkbaiabnkijjljljljljljljjljljlllljlj",
|
||||
"lljlljcjlljlljclclljclamnnknnenefeeeeeeeeeeeeeeeeeeeeefemffmmnb`clcllcllcclccclicccccccccccccciiicinnkknknmnnnnnmnmnnnnkbcc`mnklccllllcllllclccll`kkkkbbkkclclcbbkbaabillclcclllclllllllidbbkbnkbkbbkkbkbbkbaii`aiabbklljlllljlljlllljljlljljljlljlcjljllljjjljljlbbannnmba`ii`akbbbbbbbbbkaad`lllclllllllcljlllidmkbnnmn`cllcannnnnb`llccclllllllccllcldkmmnnmkkbbbbkbbbbbbbbbb`babkaljljljljjljljjljllljljljjl",
|
||||
"jjljlljljllljllljjcc`l`bnmnnkeffefeeeeeeeeeeeeeeeefeeeeemffnnnb`llclccccclccclciclccccccccicccciccknknkkknnkkkbknnnmnmnka``dnkkllclccllllllcllll`kmnkkbkkkclcllbkabbabclllllllllljlllllibkkabbnkknkbbbbabbkbai`aa`abkkbjljljljljljljljljljljljljljjlljljjlljlicjliakkkmnnkkacc`kkkkbbaababnkabalccclllllcllllllcdnnkkmnkkallll`nnnnnballiclllllllllllll`akkkmmnnkkbkkbbbabbabbbabbbbmnclljljljljljjljljljljljjjj",
|
||||
"alljaklllljlllllllllllibknmnneefefeeeeeeeeeeeeeeeeefeeeffmfnmkbicccllclllclcliibcccccccciciiiiiic`nmnnnknnnbbbbkkknknmnkbbkkkbdccclcccllcijcjlcbnmnmnbbkbklllllbkbabbbilcclclllllcllc``kknnbbbkknmnbkkbabbbaa`aaabbabkncljlljjljllljljljljljlljljljljlllljljljjllkbbaannkknac`bkkkkkbbbbbknkbb`lclllllllllcllcibnmnkkmkkb`ccccannnmkbkllllclllllcllllidkbbknnnnnnkkbkkkbbbbbbbbaabbkmmaljjljjljjljljljljjjjjljjl",
|
||||
"ljjl`ajljlllljlljllllliinbmnmmefefeeeeeeeeeeeeeeeeeeeeffmnmnnkblclccclccclilillccccccciciciiiicccamnmnknmnkbknnnkbbkkmmknmnmkballclc`aacl`ccibknnmnnmnkbbkclcclkbbbbab`lllc```aaab`iakkkbnmnkbbkkknbbkkbkbaii`babbbbakb`jlaaljllljljljjljljljljljljljljjjlljjljj`nkbbabkknk`cbkkbbkkbbabnkbbbb`lcllcaailllll`bbmmmknnnkkballlcibkkmnnmllclci`iiaaabbkknkbkbnnnnnnnnbbbbbbbbbkabbabkmnmmcljljljjljjljlljljljljjjj",
|
||||
"lllljljlllbllljllllllllcaknknmffeffeeeeeeeeeeeefeefeefemmfnnnkacclccclclcccccccccccccccccciii`ciabnmmmnnnnbknnmnmmnkkkknnnmkdballcclbmn`llcll`nknmnknkmnbdlcllcbkbbbbk`lcllkkkknnmnkbbknbnknkbkbnkbbbkbakkaiabaabbbbbbabjljcljljlljjljljljljjlljljljljljljjljjclannbbaanbkacikmnkkbbkkbbnnnkbaacclcibbbilcclcaknmnmknmkbbklllccmkkbnkmclclcai``abbnnknnnkbkkknnnnnknkkbbbbbabkbbkbknmmkaljjlljjjlllljjjjjljjajlj",
|
||||
"jljljccjllljllllljllilll`bbnmmfffefefeeeeeeeeeeeefffefenmfmnkbiclccclcccccccccccccccccccciiiiiii`bbknnnnknbbmnmnnnnnnkkkmnkaad`lcllcbkmk`cllll`knmnmnknnnkllllinbbkmnn`clllbnkknknnnkkkkbknnnkbbkkkbkb`iaba`abbbbbknnbbbllilljllljljljljjljjljljljljljjljjlljia`bnkbb`akab`aaknnnnbkbbaabnnbbbdllliibbbailllclabnnnmkbkkbkclcccmnnkkkniclcl`i`akbbknknknnbbkknnmnkknnkbbbabbkbbnknnnnmnnljljjjljljljljljjjjljjlj",
|
||||
"klljljjclljlljllllll`cllcakbmmmfefmffeeeeeeeeeeeeefeeffmmfnnbailclccccclccccccccccccccccciiici`iabbbbkkbkkbnmnnknmnnnnnkkkbdab`lcccibknkn`clillakmnnmnkkmkllccinmnknmncjcccknnkkknmmnnbbkbnknnbbbkbabaciaaaabaabaknmnnbbilijljljlljjljjljljjljljjljjljljljjjljjaknkbbaaba``bknnnmnkkbbabbknkbbblllccbbbbailllcc`bkbkkbkbkklclccnnmnnknillcc`c`abbbknnnnnmkbkkknnnnnnnnnkmkbkmnknnmnknnmm`lljjjljjljljjjjljjcjljj",
|
||||
"ljlllllljlcljcllllllillll`bbkkmmfffffefffeeeeefeeefefffmmmnkb`ccacclcliccclccccccccicciciiciciaibbbkbkbbakbmmbnnnknnnnnnkkkbbaiclllcbnmknncllllldmfknmnknkllllikbknnnniilllknnkkknnnmmnbkbnknnkkabbbaccaaaaabbabknnnnnnkallljjljjljljjljjljjlljljjjjljjljjjljlcbknkkkbbda`aknnnnnmnkbbbbbbbkbbalcclcknkkbaicllil`bkbbbkdmnlllclnknnnnk`llclii`bbabknkkknnbbbkknnnmnnknnnnnnkbkkknnknnmkkbjjjljjjljljljljjjanjjjj",
|
||||
"llmjjljllllllilljlllllllllikbbnmmmfffffefeeeeffeefffmffmmnkbaicclcccccclccccccccccccccciiiiicc``bbkkknkbakbnnknknnkkknnnmnbbbaclcccibnmnmnncllclldmnnmnnnnllclckkkbkmmilllcknnnnbkknmfnnbkknkknnkabaic`bbbabbbbknmnknnnnkljjljljljjjljjljjljjijljljljljjjlljjj`ikkkbnkbaaadnnnkknmmkbbbbbbbkbballlclbbbbbabclllcidnkbbbbnmlccilnkkkknn`llccciabaabnmnnkmnnbbbbnknmmnkkkknmnkbbkbbnnnmnnnflljjljajljljjjjjljjjjjj",
|
||||
"illllllllljllclllllllclllll`bbkmnmmfefeffeffefefmeffmffmknkaiclcclclcccccccccccccccicciciicici`aabbbkknkbabknnnkkkknkkkkkknkb`clcllibknnnmkkcllllcdkmfmnnkllllcbbbbabbclcllknnnnkkknnmnbbkkmnknnnkb`c`bbkbbbbbbbknnnnmnknlljljjljjljjljjljjljcjjjjjjjjljljjjllibkkkknnbaabknmnkkkkknkbkkkbbkknklcclcbkbbakdbilllliakkbabkncllllnnnkknkalllliiaaabbbnnnknmnkbbbkbknmmnkkknkbbkbbaabbknnkkniljjjjljjjljljjjjjljjlj",
|
||||
"lcljlljlllllljlllllllclllillabbnknmmfmfffffffffffmefmnnnkkaicclcilccbcccccccccicciccciciiciiii`babbbbbbkkakkkmnnknkkkkkkknmnda`clllibbbbbakbacllcl`knmnnnklllc`nmb``bbcllclknnnnnnkknnkbbbknnkknnmna`bbbkbbbbbabkknnnnnnncjjjjjjjljjjjjljjljjjljjljljljljjljjj`anknnmnbbabknmmnnkabnnknmkkbaknkcllllbbkbbakaaillclibkbbbbkiclcckkkknkkaclll`bbkkbaabbkabkbbbabbkkbnmmnnkknmmkkkb`abbkkkbkbjjlljjjljljjjjjjjjjljj",
|
||||
"cbjcjllljlllllllllllcllllllclcbbkkmnmnffffffemmmfnmnmknkkbiccccclccliclcccccccciccciccciiiiciciabaabaaabkbnkknnnkkkkknnnknkdakndbkbabbbbbnbkbbaaa`bkbkmfnmbkkbbnna`ammakaaamnnnkkkkkknnkkakknkkkkmnaabakkbbabbbkknnnnnnmkajjljljjjjljljjjjjjljiljjjjjjjjjljjcccknknknnbbdknnnmmnbbbknmmnnnkkbbbabababbbbbkkkbaaa`aiabakdnkdbdbbkbkkkkkkab``bnnnnbkbbbbbbkbkkbbabbbbnnmknnmknmmm``bnmkbkbknjjjjljjjljljljjljjj`jj",
|
||||
"lljljlllllllllllllcllllllllllc`abbkknkmfmmfmfknfmmnnnkkba`cclliliccccncccccciicciccciciciiiiii`bbkbaaabbkbnnbkmkkkkkkbkbkkd`bknknnmnkabbnbkkbknbbbbbbbknmnnnnmnbkiannmnnnknnmnnkkkkkkkknnkkknnkknnnbbabbbkbbbbnkbknnmmmmnbcjjjjjjjljjjjlj`jjjlljjjjllljljljlliiknnnnnnkkbkknknfnkknknnnmmnmnmkkbbknkbaabbnknkbbbbaa`bbkbnkbkmnkkkkbbkbkkaabmkknnnnbbakkbkkkkkbakbbbdbmmnmkmnkbbcdnnmnknbkma`ijjjjjjljjjjljjjjljj",
|
||||
"ljcbaljllllllllllclllllllclcllcci`bbnbkbnknnmkknkkmkkba`ilccilcclcicl`cccciclcliccicicic`icici`nkkkbaabbkbknkbkfnnkkbbkkbbaannknnnnnnbkbkmkknnkkabaaabbbknnnnmfnk`annnmmnnnnnmnnknnknkknnkkknnnkkkkkkbabkkbbbbbkkknmmnmmfkjjljjlljjjlcljjljjjljjljljjjljjlljii`nknnnmmkbbbbnnnmnknknknnnnnmnmnnnkkkkkbaabkmmnbbnbbaabbkbkkkkknkkkkbkkkkdabknknnnnnnbbbkkkbkkkkbaadbbbkknkkmmfkkibnknnnnknmajjjljjljljljjjjjjjjjj",
|
||||
"lljci`cjlllllllllclllllllllccllllc``bbkkkkknknnkbnkba`icccccc`ccccccclcccccccaciciciciciiiiiiiankkmkbbbbbkbbkbbknnnnnkkkbaaknkknnnmmmkbbbnkbknkkbbabbbbbbkmmnmmmb`kmknnnmnknknnnkknnnnknknnkkknnnnkkmnkbbbbbkbbnnkkmmnnnnmjc`ljjjjjjjljjjjlj`jljjjljljjlljlj`c`nnknnnmkbbaabkbbknmnnknknnnnnmnmmnkbnkbbbkbnmnnknnkbbbbbbbkkbknnnnknkbkk`akkkknknnmnnbbknkbkkkkbaaabbabbknmnnmnk`kkknnnnnnbillljjljjjljjjjjjjjljj",
|
||||
"jlljcillllllllllclclllllcllllcccclcliiaabbbbbkbabaaiiiiccccccacccclciciccccciaiccicicicici`iiibnnkfnknbbbkaaknkbnnnmnnnkkbknnnkknnnnmkbbbbkbbkkbaaabbbbbbknmnknkbbknnnnnmnnnnnmmnnknknkkkmnnbkknkkkknnkbbbbkknbkkkknnnkknfjjjjjljjlljjjjljjj`jjljljjlljijjjjccaknnkkknnkb`iaabknnmnnnnknnnnnnnnnmnbkkkabkbknmnkkfnkkkbbbabbbbbknnmnnknkaknknnkknnmnnbbbbkabkbbbadaabbaabnmnknkkaknnnnnnnnfkljcjljljljjjjjjjjjjjj",
|
||||
"llllcjllllllcllllclllclclclclclcccclclcliiiai``icccccccccccibcccccccccccciciiiiciciciciciiiciinmnkmmnmkkbbbbbabbnnnmknnnkkknknnnnnnnnkkbabbbbkka`aabbbbbabnnnnkknnkmnnmmnmnnmmmnmmnnkkkknnnmkbkknnknnnnnkkkkbmmkkkkkkkkkbnjjjljjjljjjljljlljajljjjjljljjjljjjc`kmnnkknnnba```akmnnnnmnnnnknnnnnnmnkkkkbbkkknnnmknmmmnbbbkbbbbbknnmkknnkknknnknnnnnkkkbabbbbkkbiabbbbbbbdnnkkmbknnknnmnnmkmbjinijljljjjjjjjjjjjjj",
|
||||
"llljllllllllllllccclllcllclclllcllcccccccccclcccccccclcccccc`lccccicciccciccicciciciciiiiii`ickmmnmnmnbbbbbclciicccilcciliiilciccicccccclcclicllllcclcccllciiciciiciiiiicciiiicci`iiclliiiciiccciiiicciiiccccamknkkbkbkkkblljljjljjjjjjjjjjljljjlljjljjjjjjlllinmmnnnknmkaacccciiiciiiiiiiciiiciiiicccclciiicc`cciccillccclclciiciclicliicccliiciccccccclccccllllciccccliiciiiakkknnmmnmnnkciijljjjjjjjjjjjjjjjj",
|
||||
"ljlcljlllllllllllclllcllllccccccccclccllcccccccccccccccccccclccccccccicccicci`iiciiiicicii`a`ikmnmmmnkbabbijjjjjjjjljljjjjjljjjjjljjjjjjjjljljjjjjjjjjljjjljjjjjjljjljjjjjjjjljjjjljjjjjljjjljjjljjjjjjjjjjjjinnnkkbbbbbkbjjjjjjlljjjjjjjjljjljljjljajjjjjjljccknnnnknnmkbacjjjjjljjjjjljjljjljjjjljjjjjjjjljjljjljjjljjjjjjjjjjjljjljjjljjjjjljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlikkbknnmnnmkncjljjjljjjjjjjjjjjjjj",
|
||||
"llllllcllllllllcclclclclccllclclclcclcccccclilccccccccccilicciccicccccciciciibiciciciiciiia``immmmnnmknnkkillljcccjljclljlllccjijljcllljljlljjljljjljlcjlllllllllcllljlcjljjljllljjlclljllilljllclljlcicjclclcknkkkkkabbbkljjjjljjjjjjjjjjjljjljjjjjjjjjjjjjjcianmnnnknmnbacjllclcjcjcjcjllllllllljllllccjlllllljljllcjjllllljlljljjljljjjjlljjjllllllllcjllljllclljjllljljjllabbbbbknknmkn`jjljjjjjjjjjjjjjjjjj",
|
||||
"lllllljcllcllllccclllclcclclclclcccccccccmkcccilccccccccccccccicccciccccciciiaiiciiiiiiiciii`immmnmnnmmnnkclnmfffffffeeffmmffmmffmfffffmmffffeffemfffffmmmffffffffffffffffmmmffffffmffmmfffffmffffmffmmmmffmmkkmnnkbbnkabkjailjjjjjjjjjjjjjjjjjjjjjjjljjjjjjlcibknmknnnnmkdidkkkmnnnnmmmnkknkkkkkkkknkkkkkknknknnkkkkkkbkbknknnkkknnkkkbkkbbbbbkkbbbbbbbbnkkbbkbkbbkkkabbkbkda`dbbbbbbkbnmnljljljjjj`jljjjjjjjjj",
|
||||
"jlllllcbccnnclclllklclllllcclcclcllccclcciclclciccccccicccccicaiccccciciicciciciiicicicii`ii`innmmnnnmfnmnilmffffeffffffffffffmffmmffffmmfffffffffffmfmmmmffffefffeffeffmffmmmfffmmmffffffffffffffffffmmfffffnbnnkkbbkkkbaljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlcibbmmnknnmkka`bnknmmnnnnnnknnnkkkkkbkknnkbkkknknknnkkkkkkbbbkkkkkkkkkkknnkkkkbbbbkbbbbbkbbbkkkbbbkkkkkkbbbbkkbba`bbabbbabaknniljjjjljjjjjjjjjjjjj`",
|
||||
"c`iljllllliclclclkicllicllccccccccccccccaaiciclcccciclilcicccc`cciciccciciiaiiciiiciciiiii`i``nmmnkknmmmmmilmmmfffffmmffffffmmffmfmmfffmfmmfffffemmffffmmfffffffffffffffmffmmnmffmnmmfmmfeffffffffefffmmfffffkbknnmkbbknkbljjjjjjjjjjllcjjjjjjjjjjjjjjiljjjjliibknmkknnnmnnabkkkmnmnkkknknnkkkkknkkkkknkkkbkknknnkkkkkkbbkkbkkkbkbkkkkkkbkkbbbbkbbbbbkbkkkkkkbkbkbkbkkbbbkbkba`bbbbbbaabkknbjljjjjj`jjjjjjjjijjj",
|
||||
"lljlcclllllllcccclcllcllccclclcccccclccccccclciccccccciccciccaccccccicicciibiiiciiiiiii`i``i``nmnnnkknmmmnicffffffffmmmmfffmmffmffmmfffffmmmffffffmefefmfffffffnfmmmmmmmmffffffffmmmfffffffffffmefffmmffffffmnbbnnmmkbbbknjjjjjjjjjjjjjjjjjjijjjjjjjjjljjjjjliidbnmnnnknmnnaaknmnnnkkkknknnkkknkkkkbknnknkkbbkknnkkkkkkbbnkknnbbbbkbkkbbbkkkkbkkkbbbbkkkkkbkkbkbkkkbbkbkbkbkkaiabbabkkkbbbbajjjjjjjbljjjjjjjljjj",
|
||||
"llllllllcjccjlcllcclalccclclaccccccccccccccccccccciccicicccicbcicicicicicic`iciiiiiiii`iii`ii`nnnnnnknmmnmccmffffffmfmfmffffmffmfffmfeffmfmmffffffmfffmmmmfffffmmmmmmmmmmffffefffffmmffffmfffffffffmmfffefffmnkbkkmmnkbbbkjjjjjjjjjjjjjjljjjjjjjjjjjjjjjjjjjci`bbkmmnkknnnn`annnnnnnnkkknkkkknkkkkkkknnknbkbkkkkkkkkkkkkbnkkkkkbkbbbbbbbbkbknnkkbkbkbkbkbbbkbbbkkkbbbkkkkkkkbbibababbkkkkba`ljjjjjjjjjjjjjjjljjj",
|
||||
"llllllcllclliccclllclccllccik`lc`ccicccccclccccccccciclccicccciciciciciciiccciiiciiiiiiiii`ii`nmnkkkknnmnnlcmmmmffmfmffffffmmffmmfffefffmffmfffmmmnmmmmfmfffffmmmfmmmfmmmfffffmmffffmmfffmmfffffffmmmfffmefmnnkkbbknnnkbabjjjjjjjjjjjjjjijjjjjjjjjjjjjjjjjjjlc`kkkbknnnkmnnaakkknknknnkknnkkknkkkkknmnnkkkkkkkkkbbkbbkkkbkkkkkbkbkbbbbkbbbkbkkkbkbkbkbbbkkbkbbkkkbbbbkbbkkbbba`abbbaabknkkb`ljjjjjjjjjjjjjjjcjjj",
|
||||
"cllcclllllccccclclclccllcclliccciclcccccciccciccicccicaccciciciiciciciciiciiiiiiiii`i`iiiiiiibnmkkkkkknnnmcifmfmmmmmfmmffffmfffffffeffffmffffefmmfmmffmfmfefmmmmmmfmfmmmnfmmmmnmmffffffefmfffmfffmmmmmmnmfmnmnbkbbbkknnnkbljjcjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjli`bmbbbknmkkkkbannnknkkkkkknnnknnnkkknnnnkkkknknkkkkbkbkkkbkbkkkbbbbkkbkkbbbbbbbbbbbkbkbkkkkbbkkbkbkbbbbbabbkbabb`abbbbaaabkkkbljjjjjjjjjdcjjjjjjjj",
|
||||
"lccllcilclllccclllclcccccccclcclccccc`biccccccc`ccicicfiiccciiliiciciciiciiciiciiii``iii`iiiibnmmnkkknnnkklcmmmmmmmmmmmmefffffefffffmmffffmfffffnfmfffnfmfffmmmmfffmfmmmffmnmmmmmnmmfffffmfffnmfnmnmnnmmmfnmfnbkkkkkkknnnmljjljjjjjjjjjjjjjjjjjjjjjjjjljjjjjlciamkba`knnnnbb`nknkkkkkkkkknmkknmnnnkkkkkknknknknnkkkkkknkkbknbbbkkbkbbbbbbkkbbbbbbbbbbbkkkbakkbbbbbbabbababbbbb`aba`aaaabbbbbjjjjljjjjjjjjjjjjjjj",
|
||||
"lclccc``cllccclclccclccclcccccccccccccccbaiccci`cicicciicciciciciciciciiiiaiiii````ii`iiii`i``nmmnnkknnmnklammffmfmmmmmmmmffffmffffffffeffffemmmmffffffmmffmmmmffmffmmmmfffmmnmmnfmmmffffffffffmmmmnmnmmmfffmmnkkkknkbkmnnjjjjjjjjljjjjjjjjjjjjjjjjjjjjjjjjjcccbnbbabbbnnknn`nnknnkkkkkkkkknnnkknnnnknkkknnkkbkbbkkkkkkkkkkbbbbkkbkbkbbbkkkbbbbbbbbbbbkkkkbkkkbbbbabbabbbkbbkbbbnbi`ii`abkbbjjjjeajjjjjjjjjjjjjj",
|
||||
"ccllllcclclcclcclcllcclccccclcccccccccciciicicccilckciciiciciciciiciiicicii`i`iiii`iiiiii`ii``nnmnnnnnmnnklammfffmfmmmmmmmffmmmmffmfffmfffmffnmmmfmfmfmmnmmmmmmmmmmfmmnmmmmnmmmmmmmnnmmmefffmnmfnnnnmnnmnnffmmkbbkkkbabmnkljljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjl``abkbkbbbknnmm`knknnknkkkkkkknkkkkkkbkkkkknnnknbkbbkkkbbbbbbbkbbbbkkbkkkbbbbbbbbbbbbbbbbbbbkkkbbbkbbbbabbaabbbkbaakbiiii`aabbkcljjjjjjjjjjljjjjdkj",
|
||||
"clllclclimalccllcclclcccclcccccccccccccccicccciiiciiccicciciciciiciiiiic`iakciiiiiiiiii`ii`iiakmmnnnnnnmnkjanmmfffmfmmmnmmmmmnmmmmmmmmmmfeffmmfmmffmmffmmmmmmmmmmmffmmmmmmmmmmmmmnmmmnnmmfffffmnmnmmmnmnnmffmnnbbbbbbabnmmcjjjj`jjjjjjjjjjjjjjjjjjjjjjjjjcljlii`knkbbbkkbnnn`kknnnnkkkkkbkknkbbkkkkbbkkbknnknkkbkkkkbkkkbbbbkbbbbbbkbkbbbbbbbbbbbbbbbababbkbkbbbbabbbbababbbbb``ka`icc``aabkljjjjjjjjjjjjjjjjjjj",
|
||||
"lclcllcccclcllcclc`kcclcclccclcacicciliccccccccccicciciciciciciciiiciciiii`i`iiiiiii`iiaiii`iakmnmnmnnnnnblbmmfmfffmmmmmmfmmmmmffmmnmnmfmffmmmmmmfmmmffnfmmmmnmnmmmmmmmmmmmmmmnmmmmmmmnmmmmffmmmmmmmmmnnffmfmnnnbbbkkbbbbbcjjjjiljjjljjjjjjjjjjjjjjjjjjjjljjlc`aknnkkbbkbbbk`knnnnnnnkkkkkkkkkkkkkkkkkbbkbnkkkkkbkkkbkkkkbbkbbbbbbbbbbkbbkbkbbbbbbbbbbbbbkbbbkbbababbbbbbbbbkba`bb``lciaabkncjjjjjjjjjjjjjjjjjjj",
|
||||
"llllllccccllcclccccciclccclc`iliccclccicicciiicccicciiciciiciiiiciiiiiii`iicii`c`iiiiii`iii``annmmnnnmnnnbjbmffffmfmmmnnmmmmmmmfmmffmmmnmmfmmfmmmmfnmfmmnmnmmmmffmnmnmmmnmmmmmmmmnnmmnmmfmknffmknnmmmnmmffffnmnnnkbbkbbba`ljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjli`annnnnkbbbb`aiknnknknkkkkkkkkkbkknkkbkbkkbkkkkbkkbkkbbbbkbbbbbbbkkkkbbbbbbbbbbbbbbbbbbbbabkbbbkbbbbbabbbakbkbbbb`kbailciankkn`jjjjjjjjjjjljjjjjjj",
|
||||
"clllccllllccjcilccllnacllicanaclccn`ccikaicccciicci`cciciciciciiii`iiii`ib`iiiciiiii`iiiii`i`knmmmnmnnmmmblkffffmfmmmmmmmnmmmmmmmmmmmmmnfmfnmffmmmmfmmfmmmfnmmffffmnmmmmmnmnmmnmmmnmmmmfnffffmffmmnmnmmfffffmnnnnnkbbakn``jjjjajji`jjjjjjjjjjjjjljjjjjjjjjjjl`i`nnnnnnbka`ciinnnnnknkkkbkbbkkkkkkkbkkbkbkkkbkbbkkbbkkkkbkkkkbbbnknkbbbbbbbbbbbbbbbbbbbbbkbbbbkbbbbbbbabbbkkkkka`kb`clciannkk`jjjjjjjjjjjjjjjjjjj",
|
||||
"clclcclccclicllclcccacciccciicciicacccli`cccccccicimiiciiiciiiiii`i`i`i`iicii`iii`iiii`ii`ii`knnmnnnmmnmmblkmffmfmmmmnmmnmmmmmmfmnmmnmfffmfmmfmmmmmfmffffffmmffmffmnmmmmmmmmmmmmmmmnmmfmfmmmmmffffmmmnmffmffmmnnmnnkbbknblijjljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjiiannnknkbbi`ciinnnnnkkkkkkkkkkkkkkkkkkkkbkkkkkkkkkbbkkkkkknkkkbkkkkkkbbbkbbbbbbbbbbbbbbbbbbbkkbbbkbkbbbbbbbbkbbbbibbicci`kknnnajjjjjjjjjjjjjjjjjjj",
|
||||
"llcllclclcjcccclclcclcccbcccccccccicicicccciciiccccicciiciicicii`iii``iiiiiiicii`a`iii`iiiiiinnnnnmnnmnmnbjkmffmmmmmmmmmmmmmmmmmmmffffeffnmmffmmmmmmmnffmffnmffmmmmnnmmmmmmmmmmmmmmnnmmnnmmfmmmmmnmnnmmmmmmmmnmnnmnnkbbba`jijjjjjjjjjjjjjjjjjjjjjjjjjjjjljjjl`iaknmkkb`iiii``nnnkkkkkkkkkkkkkbbkkbbkknnmnkkkkkkkbkbkkbbbkkkkkkknkkkbbbbbkbbbbkbbbbbbbabbbbabkkbabbbbbabakbbbbbb`ab`````nnnkk`jjjjjjjjjjjjjjjjjjj",
|
||||
"lcllccccccclclcccccccccciccccccccccccicciciccciciiciciciiciciiiiaiia`iiiiiiiiiii```i`iii`iiiikkkbmmmnmmnnalnfmmmnmmnmmmmmmmmnmmnmffmffmffffmmfmnmmmmmnmffmfmffffffmmmnnmnnmmmmmmmmmmnnnmmmmmmmnmmmmmmmnnmnnmmmnnmkmnnkabi`jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjii`nnnka`ic`a``innknkkkkkkbkkkkkkkkbkkkknkkkknkkkkbbkkbkbbbkkkkkbknbkkbbbbbbbbbbbbbbbbbbbababbkbbbbbbabbbbbabbabbbcibbai`akkmkkbjjjjjjjjjjjjjjjjjjj",
|
||||
"lccllccclclccclccccccccccccicccc`ciliciccccciccccciciciciciiiii`faiii`iiiiii`ii`ii`ii`iiiiiiikmnkbmmnmmnfalkmmfmmffnmnmmmmmmmmfmffffffnmfmfmffmmmmmmmmmfmfffffffmffmmmmmmmmmmnnmnnnnmmmmnmmmmmmmmmmmmnnmnnnmmmmnnmnnnkba`ajjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj`i`nnbbaa`iaaa`inkkkkknkkkkkkkkkbkkkkkknknnbkkkkknkkkbkbbkbkkbbkkkkbkkknbbbbbbbbkbbbbbbabbbbbbbbbbbbbbbbbbabbababa``bba`aabbbnfkjjjjjjjjjjjjjjjjjjj",
|
||||
"clcllclllclccclcclcccccccccclciccicccccciciiiciiciciciiciiiiii`iicciiiiiiiiiiiiiiiiiii`iiiii`nnmbbkmnmmnk`jnnmmmffmmnmnmmnmmnmfmmmfffffmfmfmffnmmmnmmmmfnfmfmfffffffmnnmmmmnmmnmmmnmnmmmmmmmmmmnmmmmmmmfnnnnnnknnfkkknn``aljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjji``nnnbbbaaabaaikknkknnkbkbkkkkkkbkknkkknnnkkkkkkkbbbbbbbkkbkkkknkknkkkkbbbbbkbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbabba`aba`abbbkbakkjjjjjjjjjjjjjjjjjjj",
|
||||
"lclclccccccllccccccccccccciciccclic`cciiiciiiiciiiicicciiiiiiiciii`iiiiiiii`iii`ii`i`iii`ii`akbmnabnnnmnb`jffffmfffmmmnmmnmmmmfmfmmmffffffffffmfnmmnmmmfmffmmfffmmfmmmmmmnnmmmmmmmmnmnmnmmmmmmmnmnnnmfmmfmmmmnknnmnkknkaabjlljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlic`bkmkbbbabbaainnnknnnkkkkbkkkkkkknkkkkkkknkknkkkkkkkbbbbbbnnkkkbnnkbbbkbbbbbbbbbbkbbbbbbbbbbbbbbbabbbabbbkbbbbbba`baaabkbnbbkbccjjjjjjjjjjjjjjjjj",
|
||||
"clcccclcall`lcclccccccccccccbiciicicccicccciicciciciciiii`iiiiiiiiccii`iiiiii`ii`iiiiiiiiiciabbkbbbbmmnnn`jffmmfmfmmmmnfmmmfffffffmmmfffmfffffffffmnmnnmfffmmmffffmmmmnnmnmmfmfmnmmmmmmmmnmnnnnnmnnmmmmmmfmmmnnknknkknbbbkljjjjjjjljjjjjjjjjjjjjjjjjjjjjjjjjj`iabknnnkknnkbbinnnnnnnkkkkkkkkknnknnkkkkkkkkkkknnknnkkbkbbbnkkkbbkkkkkkbbbbbbbbkkkbkbbbbbbbbbbbbbabbabbbbbbbbbbbbaabababbbbmnkbljjjjjjjjjjjjjjjjjj",
|
||||
"clclclcl`lcmcccccccccccccciikiiiii``iiicicciiccicicicii`iiiiiiiii```iiiiii`iiiiii`ii`iiiiiii`bbbbkbbmmnmmilmfnmmmmmmmmmmmmffffffffmmffmmffmmfmffmmmmmmmffmfnmmffffmmmmnnmmmffmmmmnmmmmmmmnmnmnmmmfffnnnnmnnmmnnkkknnkkbkbkljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjji``mnkkknnmmkbbiknnnkkkknnkkkknknnnnnnnkkkkkkknkkkkkkkkbkbkbkbkkbbbkkbkbkbbbbbbkbkkbbbbbbbbbbbbbabbbbbbbbbbbabbabba`b`bkkkkabmmbljjjjjjjjjjjjjjjjjj",
|
||||
"clcccllclcikcc`cccccccciiciib`iiiiabibiiiiiiciiiiiiiiiiiiiiiiiiiiiiciiiiiiii`i`iiiiiiiiiiiic`kbkbbbbnmnnmicmfffmmmfmfmnmfmmfffffmmmmffmffffmmnmmmmmmffmmmmmnmfffnmmmmfffmffffmnmmmmmmmnnmmnmmmmmmffmmnmmnmmnmnnnkkknkkdbbkljjjjjjjjjjljjjjjjjjjjjjjjjjjjjjjjji``mnkbbkknkkbaiknnnkbkknkkkknkknnknkkkkknnnknkkbkbbbkbkkkkkkkkkbbkkkbbbbkkbkbkkkbbbbbbbbbbbbbbabbkbbbkbbbbabababaaiiibknnkkknnnijjjjjjjjjjjjjjjjjj",
|
||||
"cclcclcclccclcnicccccciiiiiiciii`ca`iaiciiiciiiiiiiii`iiiiiiiiiiiiii`ic`i`iiiii`iii`iiiiiiii`bknbkkbbnmnnilnfffnmmmmmmmffmfffffmmfnmffffffnmfnmfmfffffmnffmmnfmmmfmmfmmmmffffmmmmmmnmnmmnmmmmmmfmnnnmmnnmnmnnkknkkbnnkbbnbljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjii`kmnkbbkkbbbbiknnnkknkkkkkknkknnnknkbkkkkkkknbkkkkkkkkknnkbkkbbbkbbbkkkbkbbbkknkbbbkbbbbbbbbbbbbkbbbbbbabbbbbabbalilbkkkknnnnmijjjjjjjjjjjjjjjjjj",
|
||||
"lccclccclcccccccccccciiiiiiiiciiiiii`i`iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii`ii`iiiiiiiiiiciankbbkbbbkkmmccnfffffffmffffmmnmmmmfmmmfffffmmfffmfffmmfffmmffffffnmmfffmmmfmfffmmmnfmnmmmnmnnmffmnnnnnnnnmmnmmnnnkknnkkbkkkknljjjjajjjjjjjjjjjjjjjjjjjjjjjjjjjjjc`iknmnbbbkbbba`bnmnnnnnnnnnnnkkkkbnkbkkknkkkkknnkbkknkkkkkbkknnkkbkbkkkbkbkkbbkkbkbbkbbbbbbababkbbabbaabbbaabbbaaalccankknkbnbkajjjjjjjjjjjjjjjjjj",
|
||||
"lclliclcccccccccccccciiia`ccciiicickkiiiiiiii`ii`iiiiiiiiiiiiiiiiiiiii`ii`iiii`ai`iiiiii`ii``mnkkbbbabkkklcnnffffffffefffmmnfffmffffmmmmfmfmmnmmffmnmmmffffffmmmmmmmmmffmfffffmmmmnmnnmnmmmmnnnnnnmmmnnkmmmnmnbbknnkbbknnnljjjjjjjjjjjjjjljjjjjjjjjjjjjjjjjjjia`kbnmnbbbbbkaabknnnnmnnnnnnnkkkknkkknkkknkkbkbkkkkknkkkkknnkkkknkkbbkbkbbkkkkkkkkkbbbbbbbbbbbbbbbababbbabbbbbbkbalciakkknnknkkdjjjjjjjjjjjjjjjjjj",
|
||||
"cclibccaccclcccccccciiicaccciiicic`aai`iiiiiiiiiiiiiiciii`iiiiiii`i`iii`iii`ii`iiiiiiiiciccc`knknkkkbaaa`lifmfmmmfffffffmmnmmffmmfmmmmmmffmfmfffffmfmmmfmfmmnnfnfmmmmnfffffffmmmnmnmmnmmmfmnnmfmfmmfffmmmnmnmnkkbkkkabkknncjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjc``kbknmnbbknnkabnkkbnnnnmnnnnnkkknknnnnkknbknkkkbkkkkkkkkkkbkkkbbbkbkbbbkbbkkkkkbbbbbbbbbabbbbbbbakbkbkkkbabbabbbkci`akknkknkkkajjjjjjjjjjjjjjjjjj",
|
||||
"cclc`lcccccccccccccciiiccciiicciicac`ii`ii`i`iiiiiiiiiiiiiiiiiii`iiii`ii`iiiiiiiiiiiiiiciiiiakkknnmnba``ij`mmmmmffffmmnmnmfmmffmfffffmmmffmmmmnmnffffmmmmfnmmmfffnmfnnffmmmmmmmmmnmnnmmfmmnnnffffmmmmmmnmnnnmnknkbabkkkbbkljjjjjjjjjjjjjjjjjjljjjjjjjjjjjjjjji`ikkkkkmmnnnfnbbnknknnnnkknkkkkkkknkkkknnnbknnkkkkbkkknknkbkkkkbbbbkkkbkbbkkkkbbbbbbbbbabbbbkkababkbkbbbbbbbbbbabki`abkkkkkknnkbjjjjjjjjjjjjjjjjjj",
|
||||
"lcllccclcccccccccciiiiiccciicciiciciiiiiiii`iiiiiciiiiiiiiiiiiiiii`iiiiii`bb`iiii`iiiciiiccibnkkbknbba`cijafmmfmfffmmmnmnnmffmffffffffffffmmmmffmffffmmnmfnnmnfmfmmfnnmnmmnnnnmmmnnnmmmmmnnnfmmmnmmfffnnnmmffmknkbabbbkkkkljjjjjjjjjjjjjjjjjjjjjjjjjjjjj`ljjjca`bknkknmnmnnmbannnknkkkkknkbkkkkknnknnnknknkkkbkknkkkkkkkkbbkbbbbbkbbkkbbbbbbbbabbbbbbbbbbkbbabbbbbbbbbkbkbaabkkbaakkkkbbbkknnnjjjjjjjjjjkjjjjjlj",
|
||||
"cccclcccccccccccccccciiiiciicciccici`ii`i`i`iiiiiiiiiiiiiiiiiii`iiiii`iiiiiicci`iiiiciiiiiciakkkknkaaa`i`jamfmmmmmmfmmnnfnnmffmfmfmfmmffffffffffffmmmfmmmmnmmnfmmmmfmnmnnmmmmmnnmnnmmmmnnnnmfmmnffmmfmmmnnmmmnnnmkbkbbknnbljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjji`ikkknkbkmnnkkbannkkknknnkkbkbkbkknnnnnkkknknnknknkkkkkkkkkbbbkkbbbkkbbkbbabbbbbbbbbbbabbbbbbaabkkbbkkkbkbbbbbbkbbaakkkkkkkbbbknjjjjjjjjjjjjjjjjjj",
|
||||
"clcccilcccccccciiciciiicccciciicic`iii``ii`iiiiiciiiiiiiii`iii`ii`iiiiiiiiii`iiiiiiiiiiiiiiibkknnkaaaa`abjanmnnfmmmfmmnnmmnmmmmmffmmnnmmffffmmnnfmfmfffmffmffmmmmfmmnmmnmmmmmnmnnmmmfmnnnnmmmmmfmmnnnnmmnmmnmmnmmnkkkkkkkkljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjc``kbkkkbknmnkkbannkknkkkkkbkkkbkkknkkkkkbbkkknnkkkkbkknkkkkknnkkkkbbbkkbbbbbbbbbbbbbbbbbbbbbabbbbkbbbbbbabbbbbbabbaaknknkknkkbkkljjjjjjjjjjjjjjjjk",
|
||||
"lcccbf`cccccciiaccccciiiiciccciiiiim`iaii`iiiciiiiiiiiiiiii`iiiiiii`i`iii`iciiiiiiii```iiiicabbbkb`iba`abjamfnnmfmmmmmmfnffmmmmnnmmmmnmfmmmmmnnnnfffmmfffnmmmfnmmmmnnnmmmmmmnmnmnnnmmnnnnmfmnmmmnnnnnnnnmmfmffmnnmmnkknbbbljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjl`ibabbkkkbnnkbkakkbkkkkknkkknkkknknkbbkkkbbkkbkkbkbbbknnkkkkkkbkkkbkbbkbbbbkbbkkbbbabbbbbbbbabbkbbakbabbabbbabbkkka`knknnmnnnbnkljjljjjjjjjjjjjjjj",
|
||||
"k`ii`icclccccciccciicc`ccicicciiciicibniiiiiiiiiiiiiiii`caci`ii`i`iiiiiiiiiiiiciiciiiniiiiic`b`abaiiaaabbjbmmmmmnnnmmmfffffmfmnnmnffmnnnmmmnnnmnnmffmmmffmmffmmmnmfmmmnmmmmnnnmnfffmnnmmffmmmnmnnnnmmnmfnmmfmnnmnmmnnkkknbcjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjci`akkbkkkbbbmkkanknnkkbkkknnkknnknbbbbnknkbkbkkkbbkbbbkkknbkkbbkkkbbbkknkbbbbkbbbbbbbbkkbbabkbbbbbkbbaaabbabbbbbbbaakknnnkbknnkbijjjjjjjjjjjjjjjjj",
|
||||
"ilcciccciccccccciccccii`iiiiciiciiiiiiai`iiiiiiiiiiii`ic`ii`iiaciiiiiiiiiiiciiiiii`iiaiiiccaabaab`iiaabbblkfmmfmmnmmmfmmfffmmnnmnnmmffmmffffmmmmmmmmmmmnmnmmmnnmmmnmmnnmnnnnmmnmmmnmnnmfnmmfmnnnnnnmmmmmmmmmmnnnmmnmnnnkbk`jjjjjjjjjjajjjjjjjjjjjjjjjjjjjjjjjc`iabnkkkbbbbkkk`knnnnbbkknnnnnmnbkbkkkbkknkkkknkkkbbbbkkkkbbkbkbbkbbbbbbbbbbbbbbbbbbbbbbbabbkkbkbkababbbbbkkbbbbbbb`knnnnkbbkkkkijjjjjjjjjjjjjjjjj",
|
||||
"cccciciclccicliaccccciliiicciiiiiii`iiiiiiiiiiiiifkiikaiiiiii`c`iiiii`aai`c`iiiiiiiiiciiiac`bb`aacc`bbkkalkmnmfmnnnnmmmnfffnnnnmnmmmmmmmmmnmmmnmmffffmmffmmmmmmmnnnffmnmnnmmfmmmnnmmmnmmnnmnnnnnnnmnffmmnmnnmmnfmnmmnmnnkbljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjli`bbbbkkkkkbkkk`knkkkkkbbkbkbknnkbbkbbbkkkbkkkkkbkkkkkkkkkkkkkkbbkbkkbbbknbbbbbbbbkbbbbkkbbbbbbbbabbbbbbbbbkbbbbabaannnknnbbknkk`jjjjjjjjjjjjjjjjj",
|
||||
"cciccicccccccciicciciiiiiciiiiiiiiiii`iiiiiiiiiiiic`iicii``ii`iiiiiiiii`iaikiiiiiiiciciiikilab`a`ciakkbk`jnmnmmmmmnmmffmmfmnnmmnnmfmnmmfmmmnmmffmmmfmfmmfmmmmmmfnnmffmnmnnknnnknmmfffmnnnnnnnmmmnmfmnmnmnnnnnnmmnmmnnnnnmkljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjic`bkbbbbkkbbnkk`kkknnnnkbnnnknnkbkbbbkknkbkknkkbkbkkkkkkkkkkkkkbkkbkbbbbkkbbbbabbbbbbbbkkkkbbbaabbbbbbbbbbbbbabbaba`knnnnmkbmmnndjjjjjjjjjjjjjjjjj",
|
||||
"ccccccciccccciclcicicia`aiiiicciii`iiai`iiiiiiiic`iikb```ii`eic`iiiiiciccnicbiciiccciciciiickai``c`bnkkkajnmmmmmmnmmmfmmmmmnmmmnnmfmmmffmmnnmmfmnmmfmfmfmnmmnmmnnmfmmmfffnnmnnnmmmfffnnnnnnfffmmmmfmnnmnmfmnnnnmmnkknnnnnn`jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlicibnnnkbbkkbnkk`nknnkkkkknnnkkkkbkbbkbnnkkbkkkkkbkkkkbbbkkkkkbbkkbbbbbbkkbkkkbbbabbabkkkkkbbbbbkkkkkbbbkbbbabbbbbbb`aaknnknkmmnnbjjjjjjjjjjjjjjjjj",
|
||||
"cclicciiccccccciccciccbib`ciiiiiiiiii`iiiiiiiiii`iiia`ica`iciin`iiii`iii``cinciccicccccciccinic``aaknnkkajnmfmmnnnnnnnnnnmnnmfmmffmfmmmmnmfmmmmnmmmffffmmmmfmnmnnmffmmmnmnnnnnnmmmmmnmnnmffffmmmmfmmmmmmnmmmnmnnmnnkknnnkn`jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjiciibkmnkkkkkkkkk`nmkkbbkbbkbbbbkbbkkkkkkkknkkkkbbkbkkbbbkkkknkbkkkbkkbbbkkkkbkbbbbbbbbkbbkbababkbkbkbbbkkbbbbbbbbbbb`baabnnnkmnnkkjjjjjjjjjjjjjjjjj",
|
||||
"cclcccciaicccccciic`icacaiciiii`ii`iiiiiiiiiiiiiiiii`ii`i`i`ciaiiiiiiiiciliaf`ilcciccccccicckic`abkknnnnajmmmnnmmmmnmnmnnnnnmfmmnnnmffffmffffmmnnnmmmmmmmnffmmfmnmfffmmnmmfmmmffmmnmnmmffmmmnnmnfmmmfmmmnmmnmnnnnnmkbbknmkijjjjjjjbjjjjjjjjjjjjjjjjjjjjjjjjjlciibbkknnkknbkkbikkkknknkkkkkkkkbbkkknkbkkknnnnkknkkkbbbkkkbkkkkkkbbbkbbbkkbbbbkbbbkbkkbbbbbbkkkbbbbbbbbkbbbkbbbbbbbakkbbknmnmnnnkjjjjjjjjjjjjjjjjj",
|
||||
"ccccciciiiicciccccciiciiii`iiiiiiiiiii`iiiiiiiiiiii```ii`iiiiiiiiiiiiii`cicia`aiicicccccciciaca`aknkknnn`jfmmnnmmnmmmnmmnnnnmnnmmmnnmnmffffffnnnnmmmfmfmnmmfmmmmfmmmmmnmnmffmmmnnnmmmmmfnnnnmfmnmmmfmmnmmnnnnnkknmnkabkknnijjjijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjci`akkkkknnbknkkannbnkkkkkkkkkbkbknbkbkbkbbkbkkkknkbbbbbbbbkkkkbbbnkkbkknkkkbkbkkkkbbbbbbbkkbbbabbbbbbbbkkkbbbbbabbb`bnnbbknmmnnkbjjjjjjjjjjjjjjjjj",
|
||||
"cccccciiicccccicicicciiiii``biiii`ii`a`iiiiiiiiiiii`iiiia`ii``iciccici`ciicci`icbicccccccici`i`aknknnnnn`jffnnfmmnmnmmmnnnmmmmmnfmmmnmmmnmmffnmnnnmnnnnfnmmfmmmfmnmmmnnnmnnnmmmmmnmmfmmfnnnnmfmmmmmnnmmfnmnnmnmkknnkbbbbkkcjjjjjjjjjjjjjjjjjjjjjjjljcljjjjjjjci`abkkkknkmbnkn`nkkkkkkkkkkknkbkkkbkkknkkbkkkkbbkmkkbbbbbbbbkbbbknkbkkbbbkbkbbbbbbkkkbakkbkkkbbaabbkbkbabbbbkbbbbbbaannnkbbnnmnnnjjjjjjjjjjjjjjjjj",
|
||||
"ccccccciicicicciciaaiccc`iii`iiiiiiiii`iiiiiiiii``iiiii`aiiiaa``ciiiiiiccciciiicilcclcccccciaabkkknnnnnn`jfmnnmnmmnnmmnnnnmmmmfmnnmmfnmfnmmffmmmmnmnnnmmnnnmmnnmmmmmmfffmnmmmmmmmnmmfmmmmnnnnmmnmnnnnmnnnnnmnmmnbnnbbkkbakijjjjcljjjjjjjjjjjjjjbljcjjljjjjjjcjiaakbkkbnknnnmm`nkkkkkkkkkkkbbbkkkkkkkkbknbkkkkbbkkkkkbkbbbbbkbbbkbbbbkbkkbkbkbbbbbbbkbbbkbbkkbkabkbkbbbbabbbbabbbaabnnnnbbbknmnnljjjjjjjjjjjjjjjj",
|
||||
"lciccciiciciccicciiiiiciii```i``i`iiiiiiiiiiii`iii`ii``b`iiiiiicicicciiiciccccccccicccccccciabkkknnnnnnnilnnnmnmnnnnnnnmnffmmmmmnmmfmnmffmmmfmfmnmmmnnnmmmmmnmmnnnnmnmmmnnmmmnmmmmmmmmnnmmmmfffmmmmnnmmnmmnnnnnnbkbbbkbbabcjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj``iabkbkbkkknknn`kkkkkkkkbkbkbkkknkknkkbkknbkknkkknkknbbkkbbbbbkbbbbbbbbbbkbbkkbbbkbkkbkkkbkbbabkbkbbbbbbaabkbbbbbbaaannnmnbbbkknmcjjjjjjjjjjjjjjjj",
|
||||
"iiiccciiiiciciccicicccci``iiii`ii`iiiiiiiiii`iii`i`iiii`iiiiiciiiciciiiiciicccccci`ilccccccaabkknnnnnnnnclmnnmnnnnnnnnmnmfmmmnnmmmmmmnmmmmmmfmmmnnmnmnnnmmmnnmmmnnnnnnnnmnnnffmnmnmmmnnnfmmnmmmmmmmnmmffmmnmnkkknkbkkbabbbcjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjli`abkbkbkkknkkkckkbkkbkbkbkbkkknkkkkbbknkkkbkkkkknkkkbbbkbbbbbkbkkbkkbbbbbbbbbbbbbbkkbbbkbkabbkkbbbknkbkkkbbkkbbbabaamnnnnkbbabbncjjjjj`ljjjjjjjjj",
|
||||
"ciicciiiiiiiciicccciiiamb`i`i````iiiiiiiii`iii`iiii`iiciiiiiiiiiiciiiiiciiiccccccciccclccli`kkmmknknknnnccmnnfnnnnnnnnmfnmfnmnnnmmmmmmnnmnmmmmmmnnnmnnnnnnnnmmmmfmnnnnnmnnnmffmmmmmmnnnnnnnnnnmmnfmmnmmfmnnnnnkkkbbkkbabbbcjjjjjbjjjjjjjjjjjjjjjjjcjjjjjjjjjjcci`bbkbbkbkkkbkckkkkkkbbbbbkkkknkkbbbbnnkkkkbkkbbkkkkkbbbbbbbbbbbbbbkkbbbbbbbbbabkkbbbbbbkbabbbbababbbbbbbabkkbbaababnnmnmnbbbbab`jjjjjijjjjjjjjjj",
|
||||
"ccccciiciiiiiiiiiiciiccaiii`iiii`iiiiiiiiiii`i`i`iii`i`iiiiiiicciiciii`iiiiiciccclcclccccccaknmmmmnnnkknlcmnnmnnnnnnnnmfmfmmmnnnfmmmffmmmmnnnmnfnmnnmnmnnnnnnmmfnnnmmmnnnmmmnmmmmfmmnknnnnnnmmmfmmmnnmmmmknnnnkbabbbabaakaljjjjjjjjjjjjjjjjjjcjjjjjjjjjjjj`jjli``bkbbbkbkknkkckkkkkbkbkbbkknnknnkbbkkkkknkkkkkbbbbbkkbbbkbbbbabbbkbkbbbbbbbbbbbbkkkkkkkkbdbaabbbkbbbkkbbbbbbbabbabakmnnnkkbkkbbijjjjjjjljjjjjjjj",
|
||||
"cccciciiiiiiiiiiciiab`icci`a`ic`i`iii`ii`iiiii`i`iiiicciciiicciiiccicibiiiccccccicccccclcccanmnmmmmnkkkklimnnmnnnnnnnmfffffmnnnnfnnnmffffnmnnmnmmmnmnnnmnnnmmnmmnnmffmmnmmmnnnmmfmnmmnmmmmmnnnnnmmnmmmnmnnnnknkbabkbbbabbaljjjjjjjjjjjbjjjjjjjjjjjjjjjjjjjjijliiabbkbbkkbkkkb`kkkkkkbbkbbknnnnkkkbkbkbbkknkkkkkbbbbkkbkbbbbbbbbbbbbkbbbbkbbbbbbbbbbkbkbbbbbkkbbbbbbbbbbbbbbbbabbba`bnnnnknnbkbb`jjjjjjjjjjjjjjjj",
|
||||
"ccccccciiiiiiiiii`iiiiii``iiiiciiiiiii`iiiiii`i`iiiiiiiiiiiciiicciiaicaicciiccccclcclcclllcafmnfnmnnnnnnlcmfnmnmnnnnnmmfmmnnnnnnnnnnmmmmmnmnmfnnfmnnnnnnnnnmnknnnnnnnnnmmnnnnmfmmnnnnmmmmnmnnnmfnnmmmnnmnknkknbbbbbkbaaaaaljjjjjjjjjjjljjji`jjjjjjjjjjjcljjjjj`iabkkkbkkkkkmaaknkkkkbkbbkknnkkkkbbbbnbbbkkkkkbkbnkkbkkkbbbbbbbbkbbbbbabbbbbbbbbbbbbkkbbbbbkbbbbbabbkbabkbbbbbbaaaa`aknnnmnkknbbajjjjjjjjjjjjjjjj",
|
||||
"icccci`cciciiiiiii`iiiiiii``iiiiii`iiiii`i```iii``ci`ciiiiiccicicccciciiicicccccccclccccclikmmnmnmnnnnnklammnnknnnnnnnnnmmmnnknmnnnnnnmmmmmmfnnmnmmmmnmnmnnnmmnnnnnnnnnnnnmmmmmfnnnnnfnmmnnnnnkmmnnnmmnnmnmnnkbbabbba`aaailjjcjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjliiakbknkkkbknnk`nkkbbkkbkbbbkknkkbbkbkbkbbbkkkkbknbnbbbkbnkbbbkbkbbbbbbbbbabbbbbbbkbbbbbbbabkkkbbbbbbbbbabbbabbbbbaaibbbbknmmknkabjjjjjjjjjjjjjjjj",
|
||||
"icciccccciicci`bi``i`iii`i``ciiiciiiiiiiiiiiii`aci`iiiciiiiiiiccciicccccccciciccccccccclclcbnnmmnnnnnnnklaffmnnmnnnnnnmmmmmnnnmmnnknmmmmnnmmfnnnnnmmnmnnnmnnmnmnknmnnmmnmmfmmnnnnnnmmfmmnnnnnnnmmmmmnnnkmnnnnkbababaa`aaicjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjliiakkabkkkkknnnannkkbbkbbkbkkkknkkkbbnbbbbbbkkkkkkbkkbbbkkkkbbbbbbbbbbbabbbbbbbkkkbbbbbabbbkbbbbabbbabkkbbabbabbbabb`abbbkknmmmkbb`ljjjjjjjjjjjjjj",
|
||||
"macciiiicicciii`iii`i`i`i`knai`c`iii`iii`ii`ii`aaciiafiiiciiiciacciccccciciiccclccclccllclcaknnmmnnmnnnnjbmffmnnmnnnnnmmmfnmnnmfmnknmmmnmnmnnnmnmmnmmmnnnnnnnnnnnmmmnmmnnmmnnnnnnnnnnnnnnnmnnnmnnnmnnnknnnnnnkabaaaai```iiljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjiiakbaakkknnnmnankmnkkkkkkbbkkkkkkkbbnkkbbnkkkkbbbbbkbkbnkkkbbbbabbbbbbbkkkkbbbbbbbbbbbbbbabbbbabbabbbbabkabababbbbb`abbbbbknmmnbbljjjjjjjjjjjjjjj",
|
||||
"biccclcciicciccii`iiii`iii``ci`ia`iiiii`iii`iii`c`iiii`ciiicccibccciciciiiiiiicccccclccclclabkkkmnnmmnmklanmmnnnmnnnnnnmmfmnnnnmmnknmmnnmnmnnmfmmnmmmmmnnknknnnnmmmmmmnnmnnmmmmmmnmknmmmnmmmmmnnnnnmnnnnknnnmkabbaa```a`iiljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlii`kkbabkbkknmnakknkkbkkkkbbkknkkkkbbnkkbbkkbbbkkkbbknkbkbbkkbabbbbbbbbbkkbbbbbkbbbbbbbbbbbbbbkbbbbkbbbabbabbababbbb`abbbbbabknkkajjjjjjjjjjjjjjjj",
|
||||
"cciiiiiicciiccib`iii`ii`i`````ic`ii`iii`i`i`iiiiiiiciiciicciiciiiccciiiciiciccilcclclcllcll``aaknmmnmnmblbnnmnnmmnmnnnnmmmmmnknnmnnnnnnnnnmnmnfnknnnnknnnnnnnnnnnnmmnmnmnmnnmmmmmnfnfmmnnnnmmmmnnnnknnnknnkknkabbaaaabba``cjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjii`baaaabakkbknakkkkbkkkkkkbbkknkkkbbbkkkbbbbbbbkkbbkkbbbbbbbbbbbbbbbkbkbbbkbkbbbkbbkkbbbbbkbbbbbbkkbbabaabaaaabaaaa`i```aabaknnbacjjjjjjjjjjjjjjl",
|
||||
"icccciccicciic`b```iiiiii``iiiiiiiii`iii`iiii`iiicii`cicciiciicccccccicciicicciclcclclcllcli``akkmmmnmnbjbnmmnmnmmmmnnnnmmmmnnnkmnnnnnnnkknnnnnnnnnnnknnmnnnnmmmnmmnnnnnnknknnnmmnmnnnnnnnknmmnnkkkknnkknnnknkabbaaabbkabaijjjjjjjjjjjjjjjjjjjjjjjjjjjljjjjjjjcci`ii`abbkkbkkabnkknknknknkbbkknnkkbbbkkbbkkbbbbbkkbkbbbbbbbabbbbbbkbkkkkbbkbbababbbbkbbbbbbabbabbkbabaababbbbbbabaiciii`aabbnnkacjjjjjjjjjjjjjjj",
|
||||
"liiicciiiicciiii`i`iiiii``ii``iii`iiii`i`iiiiiiiki`cciciciiccccicccccccccicciiaicccllcllclcaaabknmmnmnnbjkmmfnnnmmfmmnnknmmfmnmnnnnnnnnnnnnnnnnmnnnnnnnnnnnnnnnmmmmnnmmknnnknnmmnnknnmmfmnnmmmnmnnnnnmmnnnnkkbabaaaabkkbnaijjjjjjjjljjjjjjjjjjjjjjjjjjjjjjjjjjilcic``bkbkkkkbaankkkbkkkkkkkbbkknnkkbkbkbbbkkbbbkkbbbbkbbbbabbbbbabbbbbkbbbbbbbbababbkbbabbkkkbbbbkkkbbbbbabbbbabaaalccciabbbkkkbijjjjjjjjjjjjjjj",
|
||||
"icciciccciiciiiiii`iiiiiii`iii`iiiii`i`iii`iiiiiiic`ciiiiicciicccciccccccilcclilclclclccllcbbbbmmmmmmnnbjkmmmnknnmmnmmmnmfmfmmmfnnmmmmnnknmnmnnmnnnnnnnnnnnnnnnnmmmmmmmmnnnnnnnmnnnmnmnnnnknnmmnmnnnnnnnnnnnnkbb`i`aabnnkaijjjjjjjjljjjjjjjjjjjjjjjjjjjjjjjjjjcllcc`abbbabbkbaannkbbbkkkkkkkkkkknknnkbkbkkkbbbbkbbkbnbbbbbbbbbbbbbbbbkkkkkkkbbbbbabbbababbbabbabbbbbbbbabbbbabbbab`lllciibbabbbbijjjjjjjjjjjjjjj",
|
||||
"ccciciicciiciii``c`i`cii``iiiii`ikbn`iiii`iiiiiiiciiiiiccakaiccccccccccciccccclccllcllclllcbbbnmmmmmmnnajmmmnnnnnnmmnnnmnmmmmmmmmnnnnmmnnnmnmmmknmmnknmnnknknnmnmnmmmnnnmnknnnnnnkkmmmnnmnmnnnnknkknmmmnmnmkkkaaii``bkkkbaijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjicllccaakbbbann`bnnkbbkkknkkkkbkknnkknkkbbbbkkbbbbbkkbbbkbbbbbbbbabbbbkkbbbkbbbbbabbabbbabbkkbbbbbbabbbaaabbbbbbbbaaalccc`abkbbbabajjjjjjjjjjjjjjj",
|
||||
"ciiil`ciciciciiii`iiiii`ii```iiii`ia`i`iic`ci`iiiiiicciiiciccccciccccccccccllcclcccllclclccbbbnnnnnmmnn`lnmnknnnnnnmmnmnnmfmmmmmmknkknnknnmnmmmnmnnmmnnnnnnnmnnnnknnnnmmnnknnnnnnnnmmnnnmnnnnnnknnnknmnnknnnmka`i``abbknaaijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjicjcii`bkbkkknmaankbkbkbbknkkkkbknnnknkbbbbbbbbbkkbkkkbbbkkbbbbbbbbbkkbabbbbbbkbbabbbbbbbbbbbbbbbbabbbabbaabbbbaabbbblli``bkbbbbaaajjjjjjjjjjjjjjj",
|
||||
"ccciina`iicicii`iaiiiiiii``i`iiii`i``ii`i`a`iic`iciciiccciicciccccccclcccccccclclclccllclciabkmnnnnmmnm`jnnnnknnkknmmmmknmfmmnmfmnnnnnmnnmmnnmmmmmmmmnknnnnnmmmnnnnnmmmfkknnkknnmmmmnnnnmnmnnnnknkkknnnmnnnnmna````bbknbaaijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjljjcila`i`bkbknnnnaabbkkkbbbbnkkkbbkkkkkkknkbbbkkbbbkbkbnkkkkbbbbbbbbbbkkbbabbkbkkbaabababbbbbbbabbkbbbaaabababbbbbbabbbllababkbbbbbbbjjjjjjjjjjjjjjj",
|
||||
"iiccik`iiciacii`ibiiii`iii```i`ii`i`iciiiiiiiciciiiiiiiiiccciccccccccccccclccllcieillclllciabknnnnnnnnnilknnnnnnnnmmnmmnnmmmmmmmnnkknmmmmnnnnnmmnfmmnmmknnnnnmmnnnmmmmmmnnknnknnmnnmnnnnnmmnnknnknknkmmmmnkknkaaa`abakkaab`jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjicca`iibbbknnnnb`bkbkbbkkkkkknkkknknnkkkbbbbbkkkbbbbbbkkkkbkkkbbbbbkbbbbkbkkkbkbabbbabbbbkbbbabbbbbbabbaabbabbbbbbaablcabbbkkbbbbbbjjjjjjjjjjjjjjj",
|
||||
"ciccccicciibiiiiiaiiiiiiiii`i`i``iii```iiiiiiiiiciiiccciciccccicilclcicccilclclclccclclcll`kknnnnmnnnnn`jnknnnnkmmmmnmmmnmmmmmmmmnnnknnnnnknnnnmnnmnnfmmmmnnmnnnmmnnnmmnnnnnknknnmnmmnnknmnnknknnnmnnmmnnnnkkkabaaabbaaibk`jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjliccb`iibbbbknknk`kkkkbknknkbnnkbkkknkkkkkbbbkkkkbkbakkkbbkbbkkkbbbkbbbbbkbbbbbkbbbababbbbbbbkbabbbbaabbabbbbbbbbaaabbcibbabbkbbaabbljjjjjjjjjjjjjj",
|
||||
"ciciiciicii`iii`i`ii`iiiii`iii``i``iaaai`iici`ciiicc`iccciiiccclccicccciiaillcclcjlallllll`knnnmnmmnnnn`lnnnnnnnmnnnnmmnnnnnnmnnmfmnmmnnnnknnmmmnnmmmmnmmmnmknkkmmnnnmmmnnkknnnnmmmnmmnknnnknnknnnmmnmmnnnmnnkbbb`abba`abkijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjiicnk`cakbbknknkabkbkbkkkbkbkkkbbbbkbkkkkkkkbkkbbbbkbkkkbbkkkkkkkkbbbabbkkdkkbkkbabbbbbbbbbkbbabbbabbabbbbbbbbbbabbbaiiabbabkbabbbbjjjjjjjjjjjjjjj",
|
||||
"icciiciciicccii`iiiiiiiiiii`i````iiii`iikiiiabiiiiccaa`ibicbbicicc`iccc`ibcclclllacjclllll`bkknmmmnnnnnilnnnnknnnnnnnmmknnknnnnnnmnmmmnnnnnmnmnnmmmmnknnnnknnkknmmmmmmmmknknnmmmmnmnmnnnnnnknnknnnnnnmnnnnmnknkaiiiab`abbk`jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjji`cnnic`bbkbknkk`bkkbbkkbkkkknkkbkkkkbkbkkkkkkkbbbkbbnbnbbkbbbbbbbbbbbabkkkkkkkbbababbbkbkbbbbbabbabbbabbbbabbbbabbab`ibbabbbbbbbkbljjjjjjjjjjjjjj",
|
||||
"cciiciciciiii`iiii`iii`i`i`iiii`````iiiiiiciiiicciii`iccciccccicccilccccc`lclllcclcllcllll`bbkbknmnnnnnicnnnnknmnnnnnnnnnnnnnnnnkmmmmmnnknnmnmnnnmmnknnnnnnmnnknknmmmnmnnnknnnmnnnmnnnnnnmnknmnnnnnknnnkkbnmnmbilcci``abkkijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjic`kb``akmbakkknakkbbbbkbknbbkbbbbbbbkbbbkkkkbbbbkkkkbbbkkbbbabbbbkbbbbbbbkkbkkbabbbbkkbkbkbbbbbbkbabbbaababbbaaabbbb`ibkabbbbkbbabljjjjjjjjjjjjjj",
|
||||
"iciciiiiiccci`i`iiiiiiiiii``i``i``iiiiiiiiiiciciiacciilccccciicciccccccclclclcllllllllllcl`abbbknmmnmnnlcnnkknnnnmnknnnnknnnnnnmmmnmmknnnffmmmnnnmnkknnnknnknnnnnkknnnnnkknnnmmnnmmnnnmnnnnmmmnknknnmnnnnkmnnnii`ciccikkbbijjjjjjjljjjjjjjjjjjjjjjjjjjjjjjjjjjic`bb``bkknbbbnnakkbbkkkkkbbbkkbbkbkbbbknkbkkbbbbnkkkbbbkkbabbbbbbbbbbbbababbbbababbbbbbbbbbbkbbakbbbbbbbabkbbbaabbbb``bbkaknbbkkakijjjajjjjjjjjjj",
|
||||
"cicciccia``ii``i`i`iiiii`i```i```i`iiiiiciiiiiiic`ciccaiciicciicicccccccclclcllclllllllcjcabbbknnmnmnnnlinnnnknmnnnknnnnnmnmmnmnmmnmnkknknmnmnnmknnnknnnknnnkknknnnknnknnnnmmmmmnmnnnnnmnnmnmnnnnnnmmmnnnnnknk`c`iiciiabbbijjjjjjjjjjjjjjjjcjjjjjjjjjjjjjjjjjjci`bb``bkkkkbbkkakbkbbkkkkbbbkkkbkkkkkkkkkkkkbbbbkkkkkkbbbbbbbabbbbababbbbabbbabbbbkbkkbkbbbabbbbbbbbbbbabbbbbbbabbab``babbbkkbbkkbijjjljjjjjjjjjj",
|
||||
"cciciiiciiciii``i`i`i`i`ii`````i`iiiiiii`iicicccciciicb`ciiicicicicccccclcllclllllllllllclakknmnmnnmnmmlinknkknmmnnmnkkmnnnmnmnnmnkmmnnmnmmnmmnmmnnmmkknnnnkknknnnnnnnnknnknnnnnnnnnnknmnmmmnnknknmmnnnnkknkkkiciiclcc`ank`jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjic`kb`bbbkkkkbbk`bkbbkkknkkkkkbknbbknkkbkkkkbbbbbkbkkkkkbkbbbbbbbbbbbabbbbbkabbbbbbbbbbkbbbbaabbbkkbbbababbbbbbabaaabaibabbbbkkbbnkajjjjjjjjjjjjjj",
|
||||
"ciciciciiciiiiiiii`i`i``a`i```i`iiiiiiiiicic`iiiiccccci`iicccciccicciclccllclllcllcllcll`c`bbbmfmnnmmmnl`nknnkkmnnnmmnnmmnknnnnknnnkkkkknmmmnmnnmmnmnnkknnnnkknknnnnnmnnnmnnnmnnnnnnnknnnnmmnnknknnnnnnkkknknk`iicclcciakkajjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlli`bbbknkkkkkkbbibbkbbbkkkbnkkkkkbbbbbbbkbbbbbbbbkkkkbbbbkbkbbbabkkbbbbbbbbbbbbbbbbbbbbbabbbbbabbkbkbbbabbbbbbabaabakaikaabkbkkbbkkajjjjjjjjjjjjjj",
|
||||
"cciciciciiiiiiiiiii````ibaiiiii`iiiiiiiiiciabiiliccciiiiccccccccccciclcllclllcllllllllllcjbnkbbknkmmmnmj`nnnnnknnnnnmmnmnnkknnnnknnkknnnnmmnnnkknnnnnnnnnnnnnknkknnkknnnnmmnmmnmknmnknnnmmnnnnknnnnknnkkknnnmkaiiccici`abbbjjjjjjjjjljjjcajjjjjjjjjjjjjjjjjjjjcciabbknkkkkkkkb`kkkkbbkkbkkkkkkkbbbbbbbbbbbbbbbkkkbbbbbbbkbbbbbbkbbababbbbbabbbkkbbbbbbbbbbbabbbbbbbbaabbbbabaaabbaba`nbabbkkkkbbkkjjjjjnljjjjjjj",
|
||||
"iiciciciiciiiii`iiiiiii`a`iiiiiiiiiiiiiib`iciciiiciiiibiccccccccccccclcllllclllllccllllllcbbbkkbkkkmnmnlannmnknnknknnmmnmnkknnnmnknnmmnfmnnnknnnknknnmmnknnnnnknknkkknnnmmmnnnnknnmkknnnmnnnnnnknnkkknkkknknnb`icc`ai`a`aa`jjjjjjjjjljjjjjjjjjjjjjjjjjjjjjjjjjlci`abbknkkkknnk`kkkkkbkbbbbkkkkkkbbbbkkkbbbbkbkkkbbbbbbbbabkkkbbaabbbbabaababbbbkbbkbbabbbbabbbbbbbbbabbbaaaabaabaabbikkbakkbbnkbbbljjjjajjjjjjjj",
|
||||
"iiciciiiiiiiiiiiiiiii`iiiii`i`iiiiiiiiii`ccciiciiiiiccalcccccccccclclc`lcllllllllcclllllllbbbnbabbbknmkjannmnnnknnknnmmmmnnnnknmfnmnnnkkmnnnnnnnkkkkknnkknknnnnkknknknknnnmnnnnknnnnknmmmnnnknnnnkkkkkkknnnnnk`cc`ab`a`cii`jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlciaabbkknkkknnkakkkkkkbbkbbkkkkkkbbbbkkkkkkkkbbkbbkbbbbbabbbbbbbbbbbbbbababbabbbbbbbbbbbbbabakbkbbbabbbabaaabaabbabbaiakbabbbbbkankijjjjjjjjjjjjj",
|
||||
"iiicciciciiiiiiiiii`iii`ii`iii`iiiiiiiiciiiiciiiicciccliccciicclcllclcaclcllclllllclllllllbabbdkdddbnnklannnknnkknknnnnmmnnnkknmmmmnnfnnnknnnnnknnknnnnnkknnnnnkkkknkknnnnnnnnmknnnnmnnnmnnkkknnkkkkkkkknnnknb`c`bkbba`i``ijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjcibbbkkbknknkkn`kkbkkbbbbbkkbkkkbkkbbbknkkbkkbbbbbbbbbbbbbbbbbbbbbkbbbbbbabababbakbbbkabbbbkbbbkkbababbbaabaaaabbkaaa`bnabbkkbabbbkcjjjjjjjjjjjjj",
|
||||
"ciiiiciiiiciiiiiiiiii``i`iiiiiii`iiiiiiiciiciiicicccicccililccccclccllllllclllllllllbllllikkabbbbbkbkmblanmnknnknnnkknnnnnnnmmnmmnnnnnnnnnnnknnnnknnnnnnnnnknnnknnnkknnnkkkknnknknmnkknnnnknknnbkkkkkkkknmkkkb`ibknnkbaa``cjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjli`akkbbkbknnnnnibkbbbbkbkbbbkkbkkkkkkknkkbkbbbbbbbbbbbbbbbbbbbbbabbbbbabbbbbbbbbababbbabbbkabbbbababbbaaabbaaaakbbaaa`bnbbbbnkkbbbbljjjjjjjjjjjjj",
|
||||
"icciccicicii`c`ii`i``cc`ii`iii`ai`iic`iiciiciiiiccccccccclcccclcllciilclllllllllllllcjcllannkbbbkkbaknajknnkkkkkknnknmnnnnnnknnmnnnnnnnknnkkkkkkkknkknkkkknnnnkkmnnkkkkknkkknnnnnknnnknknkknknnnkkkkkkkknnmnnk`aknknknkb`d`jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjl``aknkbbkknnnkkikkbbbbbbbbkbbbkbbbbbbbkkkbbbbkbbbbbbbbbbbbbabbabbbbbbbabkbbaaaabaaababbbabbaabababbaabbbaaaaababbkbbb`ankabbknkbbkbijjjljjjjjjjjj",
|
||||
"iccici`c`ciii`kiiiiiiiai`iiiiii`ii`iiiccicciiicccciccccc`mlclclclccccllcllllclllllllllail`bkkbaknkbabkijnnkknknnkkkkknnmnnkkknnmkkkknnnnnknknnkknnnnnkknknnnknkkmmmnnnnkkkknnnnnkkknknkknkkkknnkknnnnnnnnmmnkbaknnnknfnbbnbjjjjjljjjjlcjjjjjjjjjjjjjjjjjjjjjjjl``bnnknkkbkknkk`kbkbkbbbkbkbbkkkbbbbbbkbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbkkbbbbbbbbbbbkbbbbabbaabbbabbbaaabbdbbbbbbbaa`amkbbbknknkbbijjjjjjjjjjjjj",
|
||||
"ciiiiia`ci`bna`iii`iibfiii``i`iiii`iiiiiiiciiicccccicccclccl`cilcllllllcclllccllllllll``liabbabkkkkbbbilknkknnknnnkkknnnknnnkknnkkknknknknknknknnnnnnknknnnkknnmmnnkkkkknknknnnmknmnkknnnnnmmmnkkknknkknknnkkbbnnnknmmkdakbjjjjjjjjjjjljjjjjjjjjjjjjjjjjjjjjjjli`bnknnnkkbbkkmabbbkbkbbkbbbbbkkbkbbbbbbbbbbkbbbbbbbbbbbbbbbbbbbbbababbbkbbbabaabababbbbabbabbbbabbbbabbababbbaabaabaaamnabbkkkkkkkijjjjjjjjjjjjj",
|
||||
"c`icciiciiciiiii`ii`ian`i```iiiaiciiciibiciiiicccccccccccccinlclclcccccllllclclllljcljlilibbbbbbaabkkb`jbkkknkknknkkknnnkknkkkkknkknnkkkkkknknnknnnnkkknknnkknnmmmnnkkknnnnnnnkknnnmnknnkkknnnkbkknnkkkkkkknnkbkkknmnkbbknkjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjl`i`bknknmkkbbbk`bbbbbbkbbkbbbkbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbababbbabbbkkknbababkkbkbbbbkabbabbbabbbbbbaaabbaaabaababa`nkbabbkkkknbaljjjjjjjjjjjj",
|
||||
"ibaiiiiiik`ciai`iiiiii`iii`iiii`iciiiciaiiciiccicccccccccllililcclllcclllllllllllclllllllibkbkndaabnkb`jknnkkkknkknnnnkkknknkkkknnnnnknkknkknnnnkkknknknknnnnnnnknnnnkkknmnnnnnnnnkkknnnnnnknmnmknnnkkkkkkkknnbnnknmnbbnnnncjjjjjjjjjjjjjjjjjjl`jjjjjjjjjjjjjjl``abkkkknmkbbbbibbbbbkbbbkbbkbbbkbbbbbbbbbbbbbbbabbbbbbbbbbbabbbabbbbbbbbbkbbbabbbbbbbabbbabbabbabbabbbbabbbaabbaaabaaikbbbabbkkbbbbjjjjjjjjjjjjj",
|
||||
"c`iciiiii`i`iiii`a`ii`iiii`iiiiciiiiicciiiiicccccccccccclicjillccllcllcllllllllljlljllljlanmnnnbabnnnbclknnnnnnnkkknnkkkknknknnnnkknkkknnknnknnnknknnnnnknnnnnnnnnnnnnmmnnmnnnnnnkbkknnknnkkknnnnnnnkkkkkkbkkkbnknnkbbkmmnkjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjl`iakkkmnkknkkbbibkkkkkkbbbbbbbbbbbbkbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbkbbbbbkbbbbbkbkbbbbbaababbbbbaabbbbbbabaaaababaaaikbababbbkkkkbjjjjjjjjji`lj",
|
||||
"iiiiiciii`iiiiiiiii`iii``i`ii`i`iiicciiciiicicccccccccicc`ciiilallccllcllllllllllllllllllannmnkbbmkkfkljknnmfnnknkkkkkknkkknnnnnknkkkkkknnkknkknkkkknnnnkknnnmmmnnknkknmmmmmmnnnbknnkkmnnnkknnnnnnkkkkkkkknnkkbnknnbbakmnmbjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjl`iiaknnnnknnmnkcakknkbkbkbbbbbbbbbbbbkbbbbbbbabbbbbbbbbbababbbkbabbbbkkkbbbbbabkkbkbkbbaabaaabbbbbbaabbbbbbbaabaaabbabikbbbbaabbknbkjjjjjjjjjjjjj",
|
||||
"iiiiiiiiiiiiiiiii`i````ii```ii`iiicicici`iicccccccccccclcclclcclclclllllcllllbllljcbcljllannnnbaknnmnncjnmnnnkkkkkknnkkknnnnnkkkkkkkknnnnknnknkknknnnkkkknmnnnnnmmnnnnnnnnnkkkkkkkkkkkkknnnkknnnnknnnkkknkknnb`knkkbdbnmnmbjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlii`abbkkknnkkmk`kknkkbbbbbbkbbbbbbbkkbbbbbabbbbbbbbbabbbbbbbbbbbbakkbbbbkkbbbkbkbkbbabaababbaaababbabakbbabbbaabbbababcanbaabbabkknkjjjjjjjjjjjjj",
|
||||
"ciciiiiiiiiiii`i`i```i`i`icc``i`iiiiiiiiicciciccccclccccccclcccllllllclllllllijllllijllllaknkkabkkknmnclmnknknkbnknnnnkkkkkknnknkkkknknknnkknkkkkknnkkkkkknnkknfnmnnknnnnnkkkkknkkkkkkkbkknmnnnkkkknkkkkknkkkbabnkkkbknnfnmjijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlii`akdbbbbkmmk`cabbbbbbbbbkkkbbbbbbbbbbbabbbbbbbbbbbbbabbbbbbbaabbbbabbbkbbbbbbbbbbaaabbbaaaabaaabbbkbbaaaaabbbaadababiabbbabaaabbkbljjjjjjjjjjjj",
|
||||
"iiiiiiiiiiiii`i````iiiiiiii`baiiiiiiiicccccccccccccccccclclclcclclllcccllllllllllllljlljlbknkbankabknncckknknnnmnnnnmnkkknknkkkkkkknnnkknkknkkknknnnnnnnkkkkkknmknnnkkknknnnnnnknkkkkkkknkknnnnnnnnnnnknkkkkkkbknkkkknnnmnajjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjiciakbkbkkkbbbaiakbkkkkbkkbkkkbbbbbbbbbbbbbbbbbbbbbbbbbababkbbbbbabbaabkbbbbaaabababbbbababbbabababbbkbbbbbbbbabbabaabc`aaaaaaaabkknijjjjjjjjjjjj",
|
||||
"iiiiiiii``i`ii`i``i`i`iii`cciiia`i`i`iiiiiccccccccclccccccclccccclcllilllllllllllllllllllkmkkkknbdabkklcknmmnnnnnkknnnkkkkkknknkkkknknnkkkkkkkkkkknnkknknkkkkkkmkkkkkkknnnnnnkkkknnkknnnnkkkknmnnnkkkbkkknkkbkbnmnnnkknmnnajjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjliiibbbbbbkka`caabkkbkkkkbkbbbkbbbbbbbbbbbbbbbbbbbabababbabbbbbbbbbababbbbaabbabbbbbbkbbaabbabbbbbbbbaabbbbaaaabaababaacc`iaaaa`aabkkijjjjjjjjjjjj",
|
||||
"lllllllllllllllllllljlllllllllllllllllljlljlljljlljljljljjljjljljjljjljjljjjljjjljjjljjjjknknmnnbbbbkklcnnnnnnkknkknnnkbkkknkkkknknknkknkkkkkkknnnmnnnmnnnnnknnnkkkkkknnmnnkkkkkkknknkmmnknkknnkkbkkkkkkkkbkkbbnnmmkkkkmmnkjljjjjjjljljjjjjjljljjjjjjjjjjjjjjjli``bbbbbbbaiiiaaakbkbbkbkbbbkbbabbbbbbbbbbbbkbbbbbbbbbbbbbbbbbbkbkbbbbbkbbababbbkbbbaaabbbbabbbbbbbabbbbaaaaaaababaaaaiccii`ii``aaab`jjjjjjjjjjjj",
|
||||
"ljljljljljljjljlljljlljljjljjjljjjjjjjljljlljljljjjjljljlljljljjljlllllljllljllljlljljjljbbknmmnkbbbbblinnnnnnnnknkknnnnkkkkknknknkkknkkkkkkknkknknnkknknnmnnnmnkkkkkknnnnkkkkknkkkknnnnknnknnnkkkknnnkkkbkkbbakmmkbbbbknnkjjjlljlljljllljljjljlllllllljlljljll`cibabaaa`cliaba`kkkkkbbkbbbbbkbbbbbbbbbbbbbbbbbbbababbbbbkkbbbbbkkbbbkbbbaababbbkbaabaabaabbbbbbababbkababbbbbbaaaaaaiciiicci```aad`ljllllllljlj",
|
||||
"ljlljlljljljljljlllljljljljllljllllhllllljljljjjlllljllllllljljljjljjljljlljjjljllllllljlddknmmnkbkbbbj`mmmnkknnnknkknnnkkkkkkkknkkkkkkkkkknkknknknnnnnnnnnnnnnnknkkbkknnkkknkkkkkbkknnknnkkkknkkknnkkbkkkbkkkaknnbbbbbbknnjljljljllllljllllljlljljljljlllllljl```bbaa`cjlcabbakknkkbkkkbbkbbkkbbbbbbbbbbbbbbbababbbbbbbbbbbbbbbbbkbkbbbbbaaabbabbbbbbaaaaabbbbbbbbaabaababbaaaaaaaab`c``icci`aaaa`iljjjljjljljl",
|
||||
"jlljlljlllhllhlhlljhlllljlljlljllhjljhjllhlllllhljljllhjllllhllhlhllhjllljhjlhjlhjjljlljlbkmmmmnmbkbkbj`knknnnnnnnknkknnkkkkkknkkkkkkkkkkkkknnknkkbnnnmnnnknkkkkknnnkknmmkkbkkkbkkkbknnnkkknkbkkkkkkkbkkknkknnbkmnkbbbabbadllllllhlllljhjhjljlljlllllllhjlllllc```bba`clliakkbabbbkbbbkkbkkbbbkbbbbbbbbbbbbbbbbbbbbbbbbbbabbbkkbbbbbbbabbbbbabbbbaaaabababaaabbababaaabaaaaaaaaababbaaiaa``i`a`add`cljhljlljljll",
|
||||
"lljhjhlhjllllllllhlljlljhjlljllllllhlllhjllhllljlllljljlljljlllllllllhlllhllljljlllllljljnknmnmmmnkkbal`kkknnnkkkkknkknmkkkkkkkkmnkkkkkkkknmnkknnkkbkkkkkkknknknknnnknnnnkkkkbkkkkkkkbkkkkkkknkbkkkkkknnnmnkknnknmnbbbkbbbbljljljjljljhjljlhlhllhjhlllllljljllli``kkaiclc`bbkkkbbbbkkkkbbbbkbbkkbbbbabbbkbbababbabbkkbabbbaabbabbabbbbbbbbkbabbbbbbaaabaabaaabbbaababaaababaabbbbbbabacbbaaa`i`abb`iljlllljhjljj",
|
||||
"llllljljlhllhlllhjllhjhllhlllllljhjljhjlllhjllhlhjhlhlhlhlhlhjhjlljhjljlljlllhlhllhllhllhkknmknmmnkkbbj`nnnnnnnnkkkknnkmnnmnkkkkkkkkkkkkkknnkkkkkkkkkkknkkkkkkkkknmnnnnnkkkkkkkkkkkkbkknkknnnkkknknknnnnknkknmnnnnnbbbbbdbdjlljhlhlhlhlllhlllllljljjhjllllllljhiiiba``ic`bnkbbkbbbkbkkbkbbbkbbbkkkkbbbbbababbbbabbbbbabbbbabbbbbbbbabaabbbkbbbkbbbaabaabaaabaaababbbbbbbabbbbbbbbbababiababba``add`iljhjllljhjhl",
|
||||
"llhllhjhjllljhjhjlhjllllllllhjhlhllhlllhjljhljljllljlljljljhlllhlhllhlhlhlhlljllljljlllllkbnmkknmmnkkalakknnkkkknknnkkkkmnnnnnnkkkbkkkknkknnkkkkkkkkkknkkkkkkkkknnmnnnnnkkbkbkbkbkbkkbkkkknnkkkkbkknnkkkknknknbkbkbbbabbbkbhllhllljljljhjjljlljhllhlllhlllhjhlli`i````a`abnnkbb`bkkkbbbbbkbbbbbbkkbbkbbbbabababbbbbkbbbaaabaaaabbaababbbbbkbbkbbaaaaaabaabaaabababbabaaaaabbbbaabaabbbibabnnk`iaaa``llljhjhllllj",
|
||||
"lllllhlllhllhlllhlllhlhlhjhjlllljlljlhjlllllllhlhlhlhlhlhlhlllllljlljljljlljlhjhjhjhllllckbbkkbknfmkbalannnnkkbknkkknkkknkbknnnkkkkkkknnnnnnnnkkkknnkkkkkkkkkkkkkknnnnnkbkkkkkkkkkkkkkknkkkkkbbkkkkkbkkbkkknnnbbbbbbabbbbbbllllllhlhlhljhlllllhjljljhjljhlllllhiiciiiaaabbnnmnk`kkkkbbbakbbbkbbbbbbbbkbbbbababbkbbkbbbbbbbbbbbabababbabaabbbbbbbaababaaaaabbababbabaaaaaaaaaaaaaabbbbbiabannnb``addahlllllljljll",
|
||||
"jhjhjllhlllhllhlllhllllllllhjhjlllllljhjhjhjhljlllllllhlllllhlhllhlhlhlhlllhljhlllllllllhbbbbbkbknkkb`jamnnnnkkkkkkknnnnnkkkkknkkkkkkkknnnnnnkkkknnnnkkkkkkkkkkkkkkkkkkkkkkkkkkkbkkkknnknnkbkkkkkbkbkkbkbkbnnnkkkkkbbbbkbbdljhjhjljljlllllhlllllhlhllhlhljhlllli`lli`aabbkmmnnmakkkkbbbbbbbbkkkkbbbbbkbbbbbbbbbbbbkbbbkabbkbbbbbababbbaabababaaaababaabaabaabbbbbbaabababaaaababaaabbaibbaknmka`abbbillllllllllj",
|
||||
"llljhjhjlllllllllhlllhlhlhllllhlhlhlhllhjllljlllljhjhljljllllllhllllhllllhlllhljlhllllllibdbbbbknkabkajbnnnnnnnkkbkknnnmkkkkkkknkkbkbkknnknmnnnnknnnnkkkkkkkkkkkkkkkkkkbkbkkbkbkbbkkkkknnkbkkkkbkkkkkkkkkkknnkbknkkkkbbbbkdlllllllhlhlhlhlljllllllllljljllllllliilc`abaabbknnnn`kkkkkkkkbabbbkkkbbbbbbbbbbababbbkbbkbkkbbbbbbbabababaabbabaaababaababaaaaaabababbbaaababaabbabaaaaaabb`abknkkka`abbbcljlljljllll",
|
||||
"lllhjllllljhjhllljhllllllllhllllllllllllhlhlhlhlhlllljhlhllllljllllljlhjhjllllhlhllhllllibdkbabknnbbkalknnnnmmnnnkkkkknnkbbkknnknkkkkkkkkknnnnnnknnnkkkkkkkkkkkkkkbkkkkkkkkkkkkkbkkbknnknkkkkkkbkkkkkkkbbkbbkkbkkkkkbkbbkkkllhjhllljljljlllhlllhllhlhlhlhlllllhiic`aabbbbbbnmmn`kkbkkkkbbbbbbbbbbbbbbbbbkbbabbbbbbkbbkbbbbkbkbbbbbbaabbabababababaaabababaaabbbbbabaaaaaaaaabaaabaaaab`annnkbka`abbdilllllhllllh",
|
||||
"lhlllhlhlhllllhjhlljljllllllllllhjhjhjhllllllllllllhlhllllhllhlhlhlhlhjllhjhlhllllllllll`ddbddaknmkkb`jnmnnknnkkkkkbkknnkknnkknnnkkkkkkknkknkbkknnnnnnnknnnkbkkkkkkkkkkkkkbkbkbkkkkknnnnnnkkbbbkkkkkkkkkkkbkbkbbkkbbbkkbkkbhllllhlllhlhlhllllllljljljlllljhjlll`ciakakbbkbbbknnakkkbkkkbbbkabbbkaabbbbkkbbbbbbbbbbbbbabbbkbbbkbabbbbababbabababbbbababaababbbbbbbbbbaaaababaaaabaaab`aibnmnkbnb`abbb`ljhlllllhll",
|
||||
"lllhllllhllhlhlllllhlhlhlhllllllllllllllllhlhllhjlljllllllllhllhlhlhlhhhlhhlhlhhhhhhhhhlodddddddknmkdglknknnnnkkkkkkkkkkkkkkknnmkkkknkkbnkkknkknmnnnnnnknkkkkknbkkkkkknnknkkkkkkkkbnnknnnknnnnkbkbkbbbkbkkkbbbbbbkkbbkkkbkkljhlljlhlllllljhjhlllhlhlhlhllhllhlh`i`ababkbbkmbknmakkkbbkbbbbbbbbbabbbbabbbkbbbbbbabbbbbbbbbbbkbbbbbbbbbaabbababbbbbbbabaabbaabbbabbbabbbbaaaaaaaaabaaaa``annnnkbb`bbad`llllhlljlll",
|
||||
"hlhllhlhllhlllhlhllllllllllllllhjhlllhjhlljhjhjhlhlhlhlhlhhhlhhhhhhhhhlhhllhhhhhhhhhhhhhhhhhhhhhghghhhhggghhghhhhhhgg`g`g`o`dddbddbbkkkkkkknnnkmnnmnnnkbnnnkbbbkbkbknkkbnknkkkknnkkkkkknnnnnmnkkkbkbkkkkbkkbkkbbbbkkkknnknklljhjhlljljhjllllljllljlllllhllhllllii`dbbbbbkbnnbkncbbbknkbabbkbbabbbbbbbbbbkbbbbabbbababbbbbbkkbkbbbbbbbabaababbbabababababbababbbbkbbbbbbaaaaaaabaaaabaa``mnmkkbb`bbdddllhllhlhlhl",
|
||||
"ljllllllhllhlhllhlhhlhhlhhhhhhhlhlhhhlhhlhhlhhhhhhhhhhhhhhhhgghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghghhghghhhhhhhhhhhhhhhhhhhhhhhchhhco`oddkknnmnnkknnnkknkkbbkkkkkkbkkkkkkkknmnnnnnnnnnkkbkbkbkbbkkbkkkkbbbkknkbknkkhlllhllhlhllhlhlhlhllhlhlllllllljhjlii`abbbbakbmnkkkibbbbkbbbbbkbbbabbbbbbakbkbbbkbabaabbabbkbbkbbkbbbbbbbbbbbaaaaabaaababaabbaabbbbbbbbbbbbabaaadaaaaaaabaa`knnkbdaadd`ddhlhlhlhlllh",
|
||||
"lhlhlhlhlhllhlhlhhlhhlhhhlhhlhhhhhhhhhhhhhhhhhhhhhhhgghhggggogoogggghhhhhhhhggggggghhhhhhhhhhhhhhhhhhlghhhhhhhhhgghghhhhlhhhhhghghhhhhhhhhhhhhhhhhhgho`oknknmnnmnkkkbkkkkkkkkkkkkknnnkknnnnnnnkbkbbbkbkbkkkbkkbbkkknnkkkkkblllhllllhlllhlllllllhllllhlhlhjhlllh`i`abbabbbknnnkn`bbbabbbbknkkkbkkbbbbbbbkbbbkkbdbbbbbbbbbbbbkbbkbbabbbbbbbbbaabaabbaabababbbbbbdabbbbbbddadddddddddddddd`kmkdd`higio`ghhhhhhhhhhh",
|
||||
"lhlllhllhlhlhlhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhgggghgggggggggggggghghhhhhhhhhhhhhhhhlljhlhhhhhhhhhhhhhhhhhhgggghhhhghggghghhhhhgghhhhhhhgghhhhghhhlhlhhhhhh`oddnnnnkkkkbkkkkkkkkkbkkknnnnnnnnkbkkkbbkkkbkbkbkbbbbbkkkkbkdblhlllllljhlljhlllllllllllljllllljhlli``aaabbanbnnknncaabbbbbbbbbbabbbbbkkbkbbbbbkkdbbdabbbbabbbbbbbkbabbbbbbbkkbbbbbababbbababaaabdbbkbkkbkdddd`oig`og`ghhhhhhhghhhhghhhhhhhhghhhgghh",
|
||||
"hhhhhhhhhhhhhhhhghgggggggggggggggggggghghghggggghghghggggogggggogggggghhhhhhggoggggghhghhghggggghhhhhhhhhghghhhhgggggghghhhhgggggggggggghhhhhgghhhhghhhhllhhhhhglhgiodddnknnnnnkkkkkknnnkknnkkbbbbbkkbbkbkkkkkkbbbbbbbbdbbdlljhjhjhlljhllllllllllllllhlhjlllljli`i`baabbbbnnkkblbkkkbbbbkbbbbbbbbbbkbbbbbbbkbdabbdddabbbbbbbabbbbbbbabbabbbkbabbbbabbbbbbbdddddkddd`oihhlhhhhghgggghhhhhhhhhghhhhhhhghghghghgggg",
|
||||
"hhhhhhhhhhhhhhghggggghghgghghghgggggggghgggggggggghhhhhhggggggggggggggggggggghhhghghhhhhhhhhhhhhgggghhhhghgggghghggggggggggggggggggghhhhhhghghhhhhhhgghhhhhhhhhhhhlhlhhhhhh`ddkkddbbkkkkkknkkkbkkkkbkkkbbbkbbkknnnnnkbbbkkkllhlllhllhlllhlhlhlhllhllhlllhlhlhlhiii`abbbbakkbba`ibbbbkbbkbbbababbkbbabbkkbbkbdbdbbabbbbbkkbkbbbkbbbbbbbbbabbkkbbbkbkbbdbbddd``o`ohhhhhhhhhhhhhhhlhhhhghggghhhhgghhhggggggggghgggg",
|
||||
"gggggggogggggggggggggggggggggggggggghgggggggggggghghgghhhggggghgggggghhhhhggghhghhhhhhhhhhhhhgggghgggggghhhhhghghhhhghhhghghhhhhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhlhhghhhhhhhhhhhhhhhcg`bknnnnnnnnnnnknnnbbbbbbabkknnnnbbbkmnklllllllllllhllljllljlllllljhjllljlll`i`abababkaa`ii````aababbkkkkkkknnkbbbbbbbkbbabbnbkmnnmknknkkbkkkbbbbbkkkkbbkkddkkddd`gcglhhhhhhhhhhhhhhhhghghhhghhhgggggghghhhhhghhhgggghhhhhhhh",
|
||||
"ggoggogogogoggggoggogoggggggghggggggghhgggggggggggggghghgggggggggggghghhhhhhhghhgghghhhhghgggggggggggghghgggghghhhhhhhhhhhhhhhghghhhhhghhhhhhhhlhhhhhhhhhhhhhhhhlhhhhhhlhhhhhhhlhlhhh`ddknnnknnnkknbnnnkabbbbbknnmnnnnnknnnhlllhjhjhjljlllhlllhllllllllllllhljhi`idkkbbabaiciiiccciabbabbknbbkkkkkbabbbbbbbbaabnnkkkmkknnnnkbbknkbdkkkknkkddo`ooggghhhghhhhhggggghghgghhhhhhhgghgggggggggghgggghggogghggghhhhggg",
|
||||
"ggogoggoggggggoggggggggggggghggghgggggggggggggggghhgghgggggggggghhhhhhhhhhhhhhhhhhhlhhhhhhhhhhhhhhhhhhhhhghhghghhhhhhhhghghhhghgggghhhhhhhhhhhhhhhhhhgghhhhhhhhhhhhhhhhhhhhhhhhhhhhlhhhhhgddknnkkknknnkbbkkbbbkmnnnnnnnnnnncjhjlllllhlhlllljllljhjllllllllljllli`ibkkbbba`i`aaiccc`aka``abbkbkkkknnbkbaaabkbabbnnkbkknnnknnnkdddmkddo`gghhhhhhhchghhghhhghggggghgghhhhggghhhhhhhhhhggggghgggogogggghhhhhhhghgggg",
|
||||
"hghghghghghhhhhhhghhhggghhghgggggogggggggggogggghghhgghgggggggggggghhhhhhhhhhghhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhghhhhhhhhggghhhhhhhhhhhhhhhhghghhhhhghhhhhhhhhhghghghhhhhhhhhhhhhhlhhhhhgddbkmmmnkakkkbbbkbbbbbbnnmmnnhlllhjhljlljhjhlhlllhllhjhlllllhlhjhi`idbnkkkb```aa`ii``i```i`abbbbknbnkkbaaabbbbbabkmnkbbnnnmnkddo`oghhhhhgghhghhhhgghggghghgggggggggggghghgggghhhhhgogogggggghggggggghgghhghhhhhhhg",
|
||||
"hhhghhhhhhhhhhhhhhhhghhghgggggggggggoggogoggggggghgghhgghggggggggghhhhhhhhhhghhghhhhhhhhhhhhhhghhhhghggghhhhhhhhhhgggggghhhhhgghghghhghhhhhhhhhhgghhhghhhhhhhhhhggggggggggghhhhhhhhhlhhhhlhhhhhhhhgdddbbbbbabkkkkbbaabkknmnllhllhllhlhllhllllhllllllllhlhllllhli`iabkknkbaaaa`aa```aa`icl`akkkkkkkkka`abaabbbbbbkndddndkd`oghhhhhhhhhhhhhghghhhghggggggghgggggoggggooggghhgogggghghhhgggggggggghhghghgghgghghggh",
|
||||
"ggghghhhhhhhlhhhhgggggghgggghghghggggggoggggggggggghhghhhgggggghhhhhhhhhhghhhhghghhhhhhlllhhhhhhhhhhhhhhhhhhhhhhgghggggggghgggggggggggggggghgggghhhhggghghghhhhhgghghhhhhgghghhhhlhhhhhlhhhhlhhhlhlhhhhi`dkdddbbknkkkkkknnmlllhlllhlllhllhlhllhlhlhlhllllhlhlll````bbbbbabbaaabka`akkbicliannkkkbkkba`abbbdkkkbdkkdo`ghhhhhhhhhggghghhggggghggggghhgghghhggggoggghhhhghhhhhhhghgghhhhggohghhhhhgggogogggggggghgh",
|
||||
"hghghghhhhhhhhhhhhgggggggghghghggggghggggggggggggggggggghhhhghghhhhhhhhgghggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhghggggggghghhhghggghghghhhhhhhhhhhhhhhhhhghhhhhhlhhhgggghhhhhhhhhhhhhhhhhhhhhhhlhhlhllhhhhh`dkkdkbbbbbbbkknlhlchlhllhllhlllllhlllllhllhlhlllhlhi`i`bbbbbbbbbabbbbaakkaiiliaknkkbkbbaddbddddddddohhhhhhhhhhhhhhhhggggggggggghhhhhggghghhhhgggoggggggggggghgggggggghghhhhhhhhhghggggggggggggghhhhh",
|
||||
"gggggghghhhhhhhhggggggghhhghhhghhhgggggggggggggggogggggghgghgggggggggghhhhhhggggggggghhhhhhhhhhhgggghggghhhhhhhghgggggghhhhhhghghhhhhhhhhhhhhhhghhhghhhhhhhhhhhhhhhlhhhhgghgghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhgdnmnnnkbbbkblllllhlchlchlchlhllhlhchlchllchcllcliiiabakbbkbaaaaabaaakaaicciabknbbkbaddbddo`gggghhhhhhhhggggggghhgggggoggggggggogggggghghhhhghgggghhhhghhhhhggggggggggggggggggggggogoogggggggggggg",
|
||||
"ghhhhhhhhhhhhghggggggghhhhhhhhhhgggggggggggggoggggggggghggggghghhhhhhhhhhhggghggghgghghghhhhhhhhhhhhhhhhhhhhhghggggggggghghghhghggghhhhllllhhhhgghgggghgghghhhhhhlhhhhhhhgghhhhhhhhhhhhhhhhhhhhhhhhhlhhhhlhlhhlhh`dknmkkbbdlllhlchllhllchllchlchllclllchlllhchlgciabbkbbbbabbbabbabbaailcc`abkkbd`iiihhhhhhhhgghghghgggggggggghhghggggoggogggggggghhhhghgggggggggggghggggghhgggggghggggghggggogogogggggggggghhhh",
|
||||
"hhhhhhggggggghghhhhhhhhhhhhhhhhhhhhhhhhhhggggggohggggggggghhhhhhhhhhhhggggggggghghghghhhhhhhhhhhlhlhlhhhhhhgggggggggghghghhghhhhhhhhhhhlhhhhhhhggghhhhhhhhhhghghhhhhhhgggghhhhhhhhhhhhhhhhhhhhlllhhhhhhhhhhhlhhhllhlgakmkdglhlllllclcclllchllchlchlhchllhcllllccciabbabbbbbbababbaaaiiiiii`ddd`dgghhghhggghhhghhgggggggggggggggggggggogggggghhhhhhgggggggghhhhhhgghgggggggggggoggggghghggggggggggggggggghhghgggg",
|
||||
"hhgggggggggghhhhhhhhhhlhhhhhhhhhhlhhhhhhgghghhhhhhhhhgggghghhhhhhhhhhhgggggggghgggggggggggggghhhhhhhhhhhhgggggggggggggggghhhhhhhhhghhhhhhlhhhhhhgghhhhjljllhhgggghghhhhghghgghhhhhhlhhhhhhhhhhhhlhlhhhhhhhhhhhhhhhhhhhhg`gchllhlhlljjjjljjljljllllllllllllhllhllhidbbaabaabbkkbbbbaa````igioihhhhghghhhghhgggggggggghhhhgggggggghhhgghgggggghghhgghhhhggggggogggggggggggghggggggoggggggoggghhhhhhhhhhhhhgggggggg",
|
||||
"ggggggogggghghhhhhhhhhhhhhhhhhhhhhhhhggghghhhghhhhhhghghgghghhhhhhhhhgggggggggghgggggggggggghghhhhhhhhhgggggggggggghgggghhhghhhhhghghhhhhhhhhhhhhgghhlhjhjhhhhgghhhhhhhhhhghghghhhhhhhhhhhhhlllhhhhhhhhhhhhhhhhhhhhhhjhlhlhlhlhjjjjjjjjjjjjjjjjjjjjjjjjjjljllllhiiidbababbabbbknnkkdido`hhhhhhhhhhghgghghggghhgghgggggggggoggggoggggogggggoggggghgggggghggggggghgggggghhghggggogogghhggggggggggghhhggggggghggggg",
|
||||
"ogogoggggggggggghghggggghhhghggghghghggggghghhhghghghhgggggggggghhhhghgggggggggggggggggggghgggggggghggggggggggggggghghhhhghhhhhhggghhhhhhhhhhhhhhgghhhhhhlhjhhhhhhhhghhhhhhhhghhhhhhhhhhhhhhhhhlhhhhhhhhhhhhlhhhhhhhjhhhlhlhlhllljjjjjjjjjjjjjjjjjjjjjjjjjjjjjjc`iibbbbbaaakbdkkkddighhhhhhhhhghgggggggghgghhhhghgggggggggggggggggogggggoggggggggghggggggggggggggogogghghhgggggggghhhhhhhhgghghhghghghhhgggggogo",
|
||||
"ggogogogggggghhhhhhhhhhhhhghgghhghhhghhhgggggghhghgggghggggghhhhhhhghhhhgggggggggggggggghhghgggggghghghhghhhhgggggghghhghhhhhhggghghhhhhhhhhhhhhgghghhljhjhhhhhhhhghghgghhhhhhhghhhhhhhhlhhhhhhhhhhhhhghhhhhhhhhhhhhhhllhhhhlhlllljjjjjjjjjjjjjjjjjjjjjjjjjjjjlli``bababbddddddogggghhhhhghghgghgggggggghggghggggggggggoggoggggggggggggggggghgggggggggggggggggogggggghghghgggggogghhhhhhggggggggggggogogggoggogo",
|
||||
"oogogogogogghgghhhhhhhhhhhhhhhhhhhhhhhgggggggggghghhhghghghhhhhhhhghgghghhhghhhhhhhhhhhhhghggggghgghghgghgghghhhgghghhghghhhhhhghhhhhhhhhhhhhhhhghghhhhhlhhhhhhhghhhhghhhhhhhhhhhhhhhhhhlhhlhhhhhhhhgghhhghhhhhhhhhhhhhhlhhhhhhhhlhlljjjjjjjjjjjjjjjjjjjjjjjjjjjiiibabbdbd`oghhhhghhghhohhhgggggghghgggghgggggggggggggogggggggogoggggggggogghhggggogoogggggogggggogggggggggggggggggghhgggggggggggggggggggogoogoo",
|
||||
"ggogoggggggggghhhhhhhhhhhhhhhhhhhhgggggghhghhhhhhhhhhhhhhhhhhhhhgghggggggghhghhhhhhghggggggghggghghghghgghhhhhghhhghhghghggggggghhhhhhhhhghgggggghhhhhhhhhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhghhhlhhhhhlhhhhhlhlhlhhhlhjljjjjjjjjjjjjjjjjjjjjjjjjl```kbbd`ggihhhhgggghhghhghhghhhhggggggghgggggghhghggggggoogggggggggggggggoggggggggghhggogggggoggghhhhhhhgggggghgghghgggggggogogggggggggggggggogg",
|
||||
"ggggggogggggghhhhhhhhlllhlhhhhhhgghhhhhhghhhhhhhhhhhhhhhhhhhhhhhhghghghghhhhhhhhhhhhhghggghghghghhhhhhghhhhhhhhhhhhhhhhgghhggghhghghhhhgghgggggggghhhhhhhhhhhghghhhhhhhhhhhhhhhhllhhhhhhhhhhhhhhhhhhhhgghhhhhhhhhhhhhhhlhhhhlhhhhhhhlhlhjjjjjjjjjjjjjjjjjjjjjjlhi``ddihhhhhhhghhhghhhghhghhhhhhggggggggggggghhghgghgggggggogghhhghhgooogggogggggggggggggogoggggggogggggoggghghhhghhggogggghhhhghgggggggggggogggg",
|
||||
"gggggggghhhhhhhhhlhhhhhhhhhhhhghghhghghhhghghhhhhhhhhhhhhhhhhhgghgggghghhghhhhhghgggggggghgggggggggggghhhhhhhhhhhhhhhghhhggggggggggghghghghggggghhhhhhlhhhhhhhghhhhhhhhhhhhghghhhhhhhhhhhhghhhhghhhhhhhhhhhhhhhhllhhhhhhhhhhlhhhhhhhlhlhlhjjjjjjjjjjjjjjjjjjhlhcgggghghhhhhgghghgghgghgggggghhhhgggggghggggghhhgghhgggggogoggggghggghhgoogogoogggooogogogoggogogogogoggghhgggghhhhhghhgoghghhghhhhhhhgggoogggggh",
|
||||
"ghghhhhhhhhhlhhhhhhhhhhhghhhhghhghghhghghhghggghhhhhhhhhhhhhghhhgghghghggghghghghghhghhghggghghgggggggghhhhhlhlhhhhhhhghhhhghggggggghghghgghgggggghhhhhhhhhghhhhhhhhhghhgghgggghhhhhhhhhghhhhhghhhhhhhhhhhhhhhhhhhllhhhhhhhhhhhhhhhhhhhlhlllljjjjjjjjjjjjljlhllhhghhghghhghgggghgghggggghhhhhhhhhghggggghgggggggghhggggogggogogggggggggggggggoggogggggggggggogoggghggggggghggggogggggggggoggggggoggggggggggggggg",
|
||||
"hhhhhhhlhhhhhhhhhhhhhhhhhhghghghghghggggggggggggghhhhhhhhghghggggghghhghhhhhhhhghggghgghghhggggggggggggghhhhhhhhhhhhhhhhghgggghghgghghhghghgghggghhhhhhhhgggghghghghgghghghghhhhhhhhhlhhhhhghhghhhhhhhhhhhhhhlhhhhhhhhhhhhhhhhhlhhhhhlhhhlhhhhjljjjjjjllhhhhhhhhhhhggggogghhghhhggggggggggggghhhhhgghggghgggggggghhhhgggggggogoggggggggggggogogoggggggggggggggggggggggogggggggggogggggggoggggggghggghggggggggggg",
|
||||
"hhhhhhhhhhhhhhhhhhhhhhhhhghhggggggggggggggggoggggggghghhghghghgghgghghhhhhhhhhhhghghgggggghghhhghggggghghhhhhhhhhhhhhhghhghhhghghgggghhghghghhhhhhghhhhghghgggggghggghghhhhhhhhhhhhhhhhhhhgggghhhhhhhhllhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhlhhlhlhhhlljjhjhlhlhhhhhhggggggggggggggggggggooggggggggggggggghghggggoggghgghhggggggggogogggooogggggoggogogogoggghghghhggggggggggooghhhhhgogggooggggogggghhhggggggghghghg",
|
||||
"hhhhhhhghhhhhhhhhhhhhhhhghggggggggghhhghgggggggggghhghhhgghghghghghghhhhhhhhhgggggggghhghghghgghgggggggggggghhhhhhhhhhhhhhhhhhhggggghhhhhhhhghhhhhhhhhhgghghhhhghgghgghghghghhhhhhlhlhlhhhhhhhghhhhhhhhhhhhhhhhlhhhhhhghghhhhhhhhhhhhhlhhlhlhhlhhlhlhlhhhhhghhggggogggogggggghggggggghhggggggghgggggggggghggogggghghhggogggoggggoogggggggoggggggoggggggggggggggggggggggogggghhhghgggggggogoggggggggggggoggghhhhh",
|
||||
"hhhhhhhhhhhhhhhhhhhhhhhggggggggggghghhhghhgggggggggghhghhhhghghggghhhhhhhhhhhghgggggggggghghghgggggogggggghhhghggghgghghhhhhhhhghgghghhhhhhhghghhhhhhghggghghhhhhhghghhghhghhhhhhhhlhjhlhhhhhhghhhhhhhhhhhhhhhhhhhhhhghhghghhhhhhhhhhhhlhlhhhhhhhhhlhhhgghggggggggghggghggghghhggoggghhhggggggggggghhgggghggggggghhhhgggogoggogoggggggggggghghgggggoggggogoogggggogggoggggghggggggoogogggggggghghghggogogogoggog",
|
||||
"hhhhhhhhhhhhhggggggggggggggggghghghhhhhhgggggogggghgghhhhhhggggghghhhhhhhhhhghgggggggggghghhghgggogogggghhhhhggghggghghghhhhgggggghhhhhhhhhghggghhhhhhhghgghhhhhhhhhhhhhhhhhghhhhhhhhhhhhhhhhgghhghhhhhhghhhhhhhhhhhhgghhhhghhhlhhhhhhhhhhhhhhhhllhhlhhhhggggggoghghggoggoggggggggggghhgggggghggghghgggggggggggghhhhhgoogoggoggggooggghggggggggghggogoggggggggggggoggggggghghhhhggggggoggghgggggggggooooogogoggg",
|
||||
"hghhhhhhhhhhggggggggggghhhhhhhhhhhhhhhhgghgggggggghghhhhhghghghhhhhhhhhhhhhggggggggggghhhhghhggggggggghghghgghhghghgggggghggghghgghhhhhhhhhhgggggghhhhhhhhhhgghghhhhhhhhhhhhhhhhlhhhhhhhhhhhhggghhhhhhhgghghhhhhhghghhhghghhhhhhhhhhhhhhhlhlhlhhhhlhhhhhgggggggggghgggggoggggggggggghhhggghggggggggggggggoogggghhhhgoggggggggggggogghhhggggogghhghggghggghgggggggggogooogghhhghhhhhggggghhgggogogogoogogoogogogg",
|
||||
"ghghhhhhgggggggghhhhhhhhhhhhhhhhhhhhhhgghgggghghghghghgggggghhhhhhhhhhhhhhggggggggghghghggggghghgghhhhhhhhhhggggggggggggggghgghggghghhhhhhhgghghhhhghhhhhhhhhhhhhhhghhhhhhhhhhllhlhhhhhhhhhhhhghghhgggghhhhhhhhhhhhghghhghhhghhhhhhhhhhlhhhlhlhhlhhhhhhlghhggoggggggogghggogggggggghhghghggghgghggoggogggggggoogggggggggogoggogogggogghhggogghhhhhggggghhggggoooooooogggoggggghhghhhgghggggggogoghgghgggggoggggg",
|
||||
"ghghggggggggggggghghhhhhhhhhlhhhhhhhhhhhgghggghggggggggghghhghghhhhhhhghhggggggggggggggggggggggghhghghhhhhhghgghghggggogggggggggggghhhhhhggggghghhhhghhhhhhhhhhhggghhhhhlhlhlhhlhhhhhhhhhhhhhghghghhhghhgghhhhlhlhhhghghhhghhhhhhhhhhhhhhhhlhhhhhhhlhhhhhlhhhggoggggggooggggoggggggghhhhggggghgggggggggggggogogghgggggghhggggggghhgggggogoggggggggggggggggggggogogoggooggggggggggggggogoggggoggggggggghggggogggg",
|
||||
"hgggggghghggghghgghghhhhhhhhhhlhhhhhhhhghghhhghgggggghhhghghghhhhhhghghgghghhgggoogogogggghghhgghgghghghghghgghgggggggggggghggggggggghhggggghghhhhghghggghghhhhhhhghhhhhhlhlhlhhhhhhghhhlhhhhhgghhhhhhgghhhhhhhhhhhhhhhghghhhhhhhhhhhghhhhhhhhhhlhhhhhhhlhhhhhhhgggggghhggooggggggoggggggggghghhgooggggogogggggggggghhhhhhgggoghhhggogooggggggggggggogghhggogogoggoggggogggggggggggogogggooogoggoggggggggoggoggg",
|
||||
"ghghghhghhhhhghgggggghhhhhhhlhhhlhhhhhghghghhghggggggghhgggghgggggghhhhhhhhggggggggoggggghghhhhghgggggggggggggggggggggoggghghghgggggggghggggggggghhhhghghgghhhhhhhghhlhhlhhlhlhhhhhghhhlhllhhhhhhhhhhhhhhhhhhhhhhhhhhhgggghhhhhhhhlhhhhhhhlhlhhhlhhhhhhhhlhhhhhhhhggggggogoggggggggggggggghggghgggoogogoggoogogggggghhhhhhgggggggggggogggggggooggogoggghgggoogoogoggogogoggghgggggggggggghggggggggggggggoggogogg",
|
||||
"hhhhhhhhhghghggggggghhhhhhhhhhhhhhhhhhgggggggggggggghgggghgggghghghhhhhhhhgggggggoggggghhhhhhhhhghgghghhggggggggggggggggggggggggggghghghgghghgghhhhghghgghhhhhhhhggghhlhlhlhlhlhhhghhhhhlhlhhhhhhhhhhhhhhhhhhhhhhhhhhgggghhhhhhhlhhlhlhhlhhlhhhhhhhllhhhhlhhhhhhhhggggghggghggghgghhgggghhggggghggggoggggoggggggggogggghhhgghggggghgggggghgggggggggggggggooggogggggogogoggggghggggoooogoggggggggggggggggggoggggg",
|
||||
"hhhhhhhhghggggggggghghhhhhhhhhhhhhhhhggggggggggggggggggggggghghghhhhhhhggggggggoggggghhhhhhhhhhhhghgghggggggghghggggogggogggggghgghggghghghgggggggghghhhhhhhlllhhhghhhhhlhhlhlhhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhghhhhhgghhjljhlhhlhlhhlhhhhhhlhhhhlhjhhlhhjhhhhhggghhhoghhgggggghhggggogggghhggggggggoggggggggggggggoggghgggggghhggogggghgggggogggggoggggghghghhhgggggggggggggoggggggggggggogggoggggggogogggg",
|
||||
"hhhhggggggggggggggghhhhhhhhhhhhhhhhggggggggggggghhhghghghghgghgghhhghgggghgggggggggghhhhhhhhhhhhghghggghgghhhhhghgggggggggggghggghgghgghhhgghgghghhgghghhhlllhlhhhhhhhhhhhhhhhhhhhgghhhhhhhhhhhhlllhlhhhhhhhhhghhhhhhhhhhhhhhhlhjhlhhlhhhhhhhhhlhlhhhhllhhlhjhllhhlhlhggggogooggggggggogggggoggggggooggogggggggggggggggggggghggggggggogoggggggooogogggggggggghghhhhhhhhhhhhggggggggoggghhhhhggggogggghggggoooogg",
|
||||
"gggggghggggggggggghgghhhhhhhhhhghgghghggggggggghggggghghggghggghghggghghhhghgggghghhghhhhhhhhhhghhhghggggggghhghghgggggogoggggghgghghghhghghgghghhhghghhhhlhhlhlhhhhhhhhhhhhhhhhhhhghhhhhhhgghhhhlhjhlhlhhhhhhhhhhhhhhhhhhhhhhhhlljlhhhlhhhhhhhhhhlhjhhhjhlhhhgjhhhhhhhhoggoogggoogghggghgggggggggoggggogoggoogggggghgghggghggggggogogogoooggghggoggggggggghhhhhhhhhhhhhhhhggghgggogoggghhhhhggogoghhhhhhgggggog"
|
||||
};
|
||||
44
sys/amiga/nethack.cnf
Normal file
44
sys/amiga/nethack.cnf
Normal file
@@ -0,0 +1,44 @@
|
||||
# NetHack 3.7 Amiga Configuration
|
||||
#
|
||||
# For a full list of options, see the opthelp file or press '?'
|
||||
# then 'o' during gameplay.
|
||||
|
||||
# *** DISPLAY MODE ***
|
||||
#
|
||||
# Tile mode (graphical tiles, recommended):
|
||||
OPTIONS=windowtype:amiv
|
||||
#
|
||||
# Text mode (uses hack.font line-drawing characters):
|
||||
#OPTIONS=windowtype:amii
|
||||
#OPTIONS=symset:AmigaFont
|
||||
|
||||
# *** GENERAL OPTIONS ***
|
||||
OPTIONS=time,showexp,lit_corridor
|
||||
OPTIONS=boulder:0
|
||||
OPTIONS=autopickup,pickup_types:$"=/!?+
|
||||
OPTIONS=catname:Kaori
|
||||
|
||||
# *** MENU COLORS ***
|
||||
# Colour-code inventory items by BUC status and value.
|
||||
OPTIONS=menucolors
|
||||
MENUCOLOR=" blessed "=green
|
||||
MENUCOLOR=" holy "=green
|
||||
MENUCOLOR=" uncursed "=cyan
|
||||
MENUCOLOR=" cursed "=red
|
||||
MENUCOLOR=" unholy "=red
|
||||
MENUCOLOR=" cursed .* (being worn)"=red&underline
|
||||
MENUCOLOR=" cursed .* (wielded)"=red&underline
|
||||
MENUCOLOR="loadstone"=red&underline
|
||||
MENUCOLOR="gold piece"=brown
|
||||
MENUCOLOR="worthless"=brown
|
||||
MENUCOLOR="wand of wishing"=magenta
|
||||
MENUCOLOR="magic lamp"=magenta
|
||||
MENUCOLOR="magic marker"=magenta
|
||||
MENUCOLOR="bag of holding"=magenta
|
||||
MENUCOLOR="amulet of life saving"=magenta
|
||||
MENUCOLOR="cloak of magic resistance"=magenta
|
||||
MENUCOLOR="silver dragon scale"=cyan
|
||||
MENUCOLOR="gray dragon scale"=cyan
|
||||
MENUCOLOR="speed boots"=magenta
|
||||
MENUCOLOR="luckstone"=green
|
||||
MENUCOLOR="unicorn horn"=green
|
||||
1456
sys/amiga/winamenu.c
Normal file
1456
sys/amiga/winamenu.c
Normal file
File diff suppressed because it is too large
Load Diff
1677
sys/amiga/winami.c
Normal file
1677
sys/amiga/winami.c
Normal file
File diff suppressed because it is too large
Load Diff
57
sys/amiga/winami.p
Normal file
57
sys/amiga/winami.p
Normal file
@@ -0,0 +1,57 @@
|
||||
/* NetHack 3.6 winami.p $NHDT-Date: 1433806595 2015/06/08 23:36:35 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Gregg Wonderly, Naperville, IL, 1992, 1993 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
/* winami.c */
|
||||
void amii_raw_print(const char *);
|
||||
void amii_raw_print_bold(const char *);
|
||||
void amii_start_menu(winid , unsigned long );
|
||||
void amii_add_menu(winid, const glyph_info *, const anything *, char, char, int, int, const char *, unsigned int);
|
||||
void amii_end_menu(winid , char , const char * , const char *);
|
||||
char amii_select_menu(winid );
|
||||
void amii_update_inventory(int);
|
||||
void amii_mark_synch (void);
|
||||
void amii_wait_synch (void);
|
||||
void amii_setclipped (void);
|
||||
void amii_cliparound(int , int );
|
||||
void amii_askname (void);
|
||||
void amii_player_selection (void);
|
||||
void flush_output (void);
|
||||
void amii_destroy_nhwindow(winid );
|
||||
int amii_create_nhwindow(int );
|
||||
void amii_init_nhwindows (void);
|
||||
int amii_get_ext_cmd(void);
|
||||
char amii_yn_function(const char * , const char * , char );
|
||||
void amii_addtopl(const char *);
|
||||
void TextSpaces(struct RastPort * , int );
|
||||
void amii_putstr(winid , int , const char *);
|
||||
void amii_putsym(winid , int , int , CHAR_P );
|
||||
void amii_clear_nhwindow(winid );
|
||||
void amii_exit_nhwindows(const char *);
|
||||
int amii_nh_poskey(coordxy *, coordxy *, int *);
|
||||
int amii_nhgetch (void);
|
||||
void amii_get_nh_event (void);
|
||||
void amii_remember_topl (void);
|
||||
int amii_doprev_message (void);
|
||||
void amii_display_nhwindow(winid , boolean );
|
||||
void amii_display_file(const char * , boolean );
|
||||
void amii_curs(winid , int , int );
|
||||
void amii_print_glyph(winid, coordxy, coordxy, const glyph_info *, const glyph_info *);
|
||||
void DoMenuScroll(int , int );
|
||||
void DisplayData(int , int , int );
|
||||
void SetPropInfo(struct Window * , struct Gadget * , long , long , long );
|
||||
void kill_nhwindows(int );
|
||||
void amii_cl_end(struct amii_WinDesc * , int );
|
||||
void cursor_off(winid );
|
||||
void cursor_on(winid );
|
||||
void amii_getret (void);
|
||||
void amii_getlin(const char * , char *);
|
||||
void getlind(const char * , char * , const char *);
|
||||
void amii_suspend_nhwindows(char * );
|
||||
void amii_resume_nhwindows(void);
|
||||
void amii_bell(void);
|
||||
void EditColor(void);
|
||||
void DrawCol( struct Window *, int, UWORD * ) ;
|
||||
void DispCol( struct Window *w, int idx, UWORD * ) ;
|
||||
void SetBorder(struct Gadget *) ;
|
||||
void port_help (void);
|
||||
void dismiss_nhwindow(winid) ;
|
||||
1110
sys/amiga/winchar.c
Normal file
1110
sys/amiga/winchar.c
Normal file
File diff suppressed because it is too large
Load Diff
199
sys/amiga/windefs.h
Normal file
199
sys/amiga/windefs.h
Normal file
@@ -0,0 +1,199 @@
|
||||
/* NetHack 3.6 windefs.h $NHDT-Date: 1432512795 2015/05/25 00:13:15 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#include <exec/types.h>
|
||||
#include <exec/memory.h>
|
||||
#include <exec/io.h>
|
||||
#if !defined(_DCC) && !defined(__GNUC__)
|
||||
#include <dos.h>
|
||||
#endif
|
||||
#include <exec/alerts.h>
|
||||
#include <exec/devices.h>
|
||||
#include <exec/execbase.h>
|
||||
#include <devices/console.h>
|
||||
#include <devices/conunit.h>
|
||||
#include <graphics/gfxbase.h>
|
||||
#include <intuition/intuition.h>
|
||||
#include <intuition/intuitionbase.h>
|
||||
#include <libraries/gadtools.h>
|
||||
#include <libraries/dosextens.h>
|
||||
#include <libraries/asl.h>
|
||||
/* stddef.h is included in the precompiled version of hack.h . If we include
|
||||
* it here normally (through string.h) we'll get an "illegal typedef" later
|
||||
* on. This is the easiest way I can think of to fix it without messing
|
||||
* around with the rest of the #includes. --AMC
|
||||
*/
|
||||
#if defined(_DCC) && !defined(HACK_H)
|
||||
#define ptrdiff_t ptrdiff_t_
|
||||
#define size_t size_t_
|
||||
#define wchar_t wchar_t_
|
||||
#endif
|
||||
#include <ctype.h>
|
||||
#undef strcmpi
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#if defined(_DCC) && !defined(HACK_H)
|
||||
#undef ptrdiff_t
|
||||
#undef size_t
|
||||
#undef wchar_T
|
||||
#endif
|
||||
|
||||
#ifdef IDCMP_CLOSEWINDOW
|
||||
#ifndef INTUI_NEW_LOOK
|
||||
#define INTUI_NEW_LOOK
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef HACK_H
|
||||
#include "hack.h"
|
||||
#endif
|
||||
#include "wintype.h"
|
||||
#include "winami.h"
|
||||
#include "func_tab.h"
|
||||
|
||||
#ifndef CLIPPING
|
||||
CLIPPING must be defined for the AMIGA version
|
||||
#endif
|
||||
|
||||
#undef LI
|
||||
#undef CO
|
||||
|
||||
/*#define TOPL_GETLINE /* Don't use a window for getlin() */
|
||||
/*#define WINDOW_YN /* Use a window for y/n questions */
|
||||
|
||||
#ifdef AZTEC_C
|
||||
#include <functions.h>
|
||||
#else
|
||||
#ifdef _DCC
|
||||
#include <clib/dos_protos.h>
|
||||
#include <clib/exec_protos.h>
|
||||
#include <clib/console_protos.h>
|
||||
#include <clib/layers_protos.h>
|
||||
#include <clib/diskfont_protos.h>
|
||||
#include <clib/gadtools_protos.h>
|
||||
#else
|
||||
#include <proto/dos.h>
|
||||
#include <proto/exec.h>
|
||||
#include <proto/console.h>
|
||||
#include <proto/layers.h>
|
||||
#include <proto/diskfont.h>
|
||||
#include <proto/gadtools.h>
|
||||
#include <proto/asl.h>
|
||||
#endif
|
||||
|
||||
/* kludge - see amirip for why */
|
||||
#undef red
|
||||
#undef green
|
||||
#undef blue
|
||||
#ifdef _DCC
|
||||
#include <clib/graphics_protos.h>
|
||||
#else
|
||||
#include <proto/graphics.h>
|
||||
#endif
|
||||
|
||||
#ifdef _DCC
|
||||
#define __asm /* DICE doesn't like __asm */
|
||||
#endif
|
||||
|
||||
#ifdef _DCC
|
||||
#include <clib/intuition_protos.h>
|
||||
#else
|
||||
#include <proto/intuition.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef SHAREDLIB
|
||||
#include "NH:sys/amiga/lib/libmacs.h"
|
||||
#endif
|
||||
|
||||
#ifdef INTUI_NEW_LOOK
|
||||
#include <utility/tagitem.h>
|
||||
#endif
|
||||
|
||||
#define WINVERS_AMII (strcmp("amii", windowprocs.name) == 0)
|
||||
#define WINVERS_AMIV (strcmp("amiv", windowprocs.name) == 0)
|
||||
#define WINVERS_AMIT (strcmp("amitty", windowprocs.name) == 0)
|
||||
|
||||
/* cw->data[x] contains 2 characters worth of special information. These
|
||||
* characters are stored at the offsets as described here.
|
||||
*/
|
||||
#define VATTR 0 /* Video attribute is in this slot */
|
||||
#define SEL_ITEM 1 /* If this is a select item, slot is 1 else 0 */
|
||||
#define SOFF 2 /* The string starts here. */
|
||||
|
||||
#undef NULL
|
||||
#define NULL 0L
|
||||
|
||||
/*
|
||||
* Versions we need of various libraries. We can't use LIBRARY_VERSION
|
||||
* as defined in <exec/types.h> because some of the libraries we need
|
||||
* don't have that version number in the 1.2 ROM.
|
||||
*/
|
||||
|
||||
#define LIBRARY_FONT_VERSION 34L
|
||||
#define LIBRARY_TILE_VERSION 37L
|
||||
|
||||
/* These values are just sorta suggestions in use, but are minimum
|
||||
* requirements
|
||||
* in reality...
|
||||
*/
|
||||
#define WINDOWHEIGHT 192
|
||||
#define SCREENHEIGHT 200
|
||||
#define WIDTH 640
|
||||
|
||||
/* This character is a solid block (cursor) in Hack.font */
|
||||
#define CURSOR_CHAR 0x90
|
||||
|
||||
#define FONTHEIGHT 8
|
||||
#define FONTWIDTH 8
|
||||
#define FONTBASELINE 8
|
||||
|
||||
#define MAPFTWIDTH 8
|
||||
#define MAPFTHEIGHT 8
|
||||
#define MAPFTBASELN 6
|
||||
|
||||
/* If Compiling with the "New Look", redefine these now */
|
||||
#ifdef INTUI_NEW_LOOK
|
||||
#define NewWindow ExtNewWindow
|
||||
#define NewScreen ExtNewScreen
|
||||
#endif
|
||||
|
||||
#define SIZEOF_DISKNAME 8
|
||||
|
||||
#define CSI '\x9b'
|
||||
#define NO_CHAR -1
|
||||
#define RAWHELP 0x5F /* Rawkey code of the HELP key */
|
||||
|
||||
#define C_BLACK 0
|
||||
#define C_WHITE 1
|
||||
#define C_BROWN (WINVERS_AMIV ? 11 : 2)
|
||||
#define C_CYAN (WINVERS_AMIV ? 2 : 3)
|
||||
#define C_GREEN (WINVERS_AMIV ? 5 : 4)
|
||||
#define C_MAGENTA (WINVERS_AMIV ? 10 : 5)
|
||||
#define C_BLUE (WINVERS_AMIV ? 4 : 6)
|
||||
#define C_RED 7
|
||||
#define C_ORANGE 3
|
||||
#define C_GREY 6
|
||||
#define C_LTGREEN 8
|
||||
#define C_YELLOW 9
|
||||
#define C_GREYBLUE 12
|
||||
#define C_LTBROWN 13
|
||||
#define C_LTGREY 14
|
||||
#define C_PEACH 15
|
||||
|
||||
/* Structure describing tile files */
|
||||
struct PDAT
|
||||
{
|
||||
long nplanes; /* Depth of images */
|
||||
long pbytes; /* Bytes in a plane of data */
|
||||
long across; /* Number of tiles across */
|
||||
long down; /* Number of tiles down */
|
||||
long npics; /* Number of pictures in this file */
|
||||
long xsize; /* X-size of a tile */
|
||||
long ysize; /* Y-size of a-tile */
|
||||
};
|
||||
|
||||
#undef MAXCOLORS
|
||||
#define MAXCOLORS 256
|
||||
|
||||
148
sys/amiga/winext.h
Normal file
148
sys/amiga/winext.h
Normal file
@@ -0,0 +1,148 @@
|
||||
/* NetHack 3.6 winext.h $NHDT-Date: 1432512794 2015/05/25 00:13:14 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
extern int reclip;
|
||||
|
||||
#ifdef CLIPPING
|
||||
extern int clipping;
|
||||
extern int clipx;
|
||||
extern int clipy;
|
||||
extern int clipxmax;
|
||||
extern int clipymax;
|
||||
extern int xclipbord, yclipbord;
|
||||
#endif
|
||||
|
||||
extern int CO;
|
||||
extern int LI;
|
||||
extern int scrollmsg;
|
||||
extern int alwaysinvent;
|
||||
|
||||
#ifndef SHAREDLIB
|
||||
extern unsigned short amii_defpens[20];
|
||||
extern struct amii_DisplayDesc
|
||||
*amiIDisplay; /* the Amiga Intuition descriptor */
|
||||
extern struct window_procs amii_procs;
|
||||
extern struct window_procs amiv_procs;
|
||||
extern unsigned short amii_initmap[AMII_MAXCOLORS];
|
||||
extern unsigned short amiv_init_map[AMII_MAXCOLORS];
|
||||
extern unsigned short amii_init_map[AMII_MAXCOLORS];
|
||||
extern int bigscreen;
|
||||
extern int amii_numcolors;
|
||||
extern long amii_scrnmode;
|
||||
extern winid amii_rawprwin;
|
||||
extern struct Screen *HackScreen;
|
||||
extern char Initialized;
|
||||
/* These have already been defined elsewhere (and some are conflicting)
|
||||
* ... going ... going once ... going twice ....
|
||||
* extern const char *roles[];
|
||||
* extern struct Library *ConsoleDevice;
|
||||
* extern char toplines[ TBUFSZ ];
|
||||
* extern NEARDATA winid WIN_MESSAGE;
|
||||
* extern NEARDATA winid WIN_MAP;
|
||||
* extern NEARDATA winid WIN_STATUS;
|
||||
* extern NEARDATA winid WIN_INVEN;
|
||||
* extern winid WIN_OVER;
|
||||
* extern struct GfxBase *GfxBase;
|
||||
* extern struct Library *DiskfontBase;
|
||||
* extern struct IntuitionBase *IntuitionBase;
|
||||
* extern struct Library *LayersBase;
|
||||
*/
|
||||
extern int amii_msgAPen;
|
||||
extern int amii_msgBPen;
|
||||
extern int amii_statAPen;
|
||||
extern int amii_statBPen;
|
||||
extern int amii_menuAPen;
|
||||
extern int amii_menuBPen;
|
||||
extern int amii_textAPen;
|
||||
extern int amii_textBPen;
|
||||
extern int amii_otherAPen;
|
||||
extern int amii_otherBPen;
|
||||
#else
|
||||
extern WinamiBASE *WinamiBase;
|
||||
#endif
|
||||
/* All kinds of shared stuff */
|
||||
extern struct TextAttr Hack160;
|
||||
extern struct TextAttr Hack40;
|
||||
extern struct TextAttr Hack80;
|
||||
extern struct TextAttr TextsFont13;
|
||||
extern struct Window *pr_WindowPtr;
|
||||
extern struct Menu HackMenu[];
|
||||
extern struct Menu *MenuStrip;
|
||||
extern struct NewMenu GTHackMenu[];
|
||||
extern APTR *VisualInfo;
|
||||
extern unsigned char KbdBuffered;
|
||||
extern struct TextFont *TextsFont;
|
||||
extern struct TextFont *HackFont;
|
||||
extern struct IOStdReq ConsoleIO;
|
||||
extern struct MsgPort *HackPort;
|
||||
|
||||
extern int txwidth, txheight, txbaseline;
|
||||
#ifdef SUPERBITMAP_MAP
|
||||
extern struct BitMap amii_vbm;
|
||||
#endif
|
||||
|
||||
/* This gadget data is replicated for menu/text windows... */
|
||||
extern struct PropInfo PropScroll;
|
||||
extern struct Image Image1;
|
||||
extern struct Gadget MenuScroll;
|
||||
|
||||
/* This gadget is for the message window... */
|
||||
extern struct PropInfo MsgPropScroll;
|
||||
extern struct Image MsgImage1;
|
||||
extern struct Gadget MsgScroll;
|
||||
|
||||
extern struct TagItem tags[];
|
||||
|
||||
extern struct win_setup {
|
||||
struct NewWindow newwin;
|
||||
UWORD offx, offy, maxrow, rows, maxcol, cols; /* CHECK TYPES */
|
||||
} new_wins[];
|
||||
|
||||
extern UWORD scrnpens[];
|
||||
/* The last Window event is stored here for reference. */
|
||||
extern WEVENT lastevent;
|
||||
extern const char winpanicstr[];
|
||||
extern struct TagItem scrntags[];
|
||||
extern struct NewScreen NewHackScreen;
|
||||
|
||||
extern int topl_addspace;
|
||||
extern char spaces[76];
|
||||
extern int wincnt; /* # of nh windows opened */
|
||||
extern struct Rectangle lastinvent, lastmsg;
|
||||
|
||||
typedef struct {
|
||||
UWORD w, h;
|
||||
WORD x, y;
|
||||
UBYTE nPlanes;
|
||||
UBYTE masking;
|
||||
UBYTE compression;
|
||||
UBYTE reserved1;
|
||||
UWORD transparentColor;
|
||||
UBYTE xAspect, yAspect;
|
||||
WORD pageWidth, pageHeight;
|
||||
} BitMapHeader;
|
||||
|
||||
typedef enum {
|
||||
COL_MAZE_BRICK,
|
||||
COL_MAZE_STONE,
|
||||
COL_MAZE_HEAT,
|
||||
COL_MAZE_WOOD
|
||||
} MazeType;
|
||||
extern struct PDAT pictdata;
|
||||
extern struct Hook fillhook;
|
||||
extern struct TagItem wintags[];
|
||||
#ifndef SHAREDLIB
|
||||
#ifndef __GNUC__
|
||||
void __asm LayerFillHook(register __a0 struct Hook *hk,
|
||||
register __a2 struct RastPort *rp,
|
||||
register __a1 struct FillParams *fp);
|
||||
#else
|
||||
#ifdef __PPC__
|
||||
struct EmulLibEntry LayerFillHook;
|
||||
#else
|
||||
void LayerFillHook(void);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
extern int mxsize, mysize;
|
||||
2373
sys/amiga/winfuncs.c
Normal file
2373
sys/amiga/winfuncs.c
Normal file
File diff suppressed because it is too large
Load Diff
103
sys/amiga/winkey.c
Normal file
103
sys/amiga/winkey.c
Normal file
@@ -0,0 +1,103 @@
|
||||
/* NetHack 3.6 winkey.c $NHDT-Date: 1432512794 2015/05/25 00:13:14 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#ifndef CROSS_TO_AMIGA
|
||||
#include "NH:sys/amiga/windefs.h"
|
||||
#include "NH:sys/amiga/winext.h"
|
||||
#include "NH:sys/amiga/winproto.h"
|
||||
#else
|
||||
#include "windefs.h"
|
||||
#include "winext.h"
|
||||
#include "winproto.h"
|
||||
#endif
|
||||
|
||||
int
|
||||
amii_nh_poskey(coordxy *x, coordxy *y, int *mod)
|
||||
{
|
||||
struct amii_WinDesc *cw;
|
||||
WETYPE type;
|
||||
struct RastPort *rp;
|
||||
struct Window *w;
|
||||
/* No entry log for nh_poskey -- too noisy (called constantly) */
|
||||
|
||||
if (cw = amii_wins[WIN_MESSAGE]) {
|
||||
cw->wflags &= ~FLMAP_SKIP;
|
||||
if (scrollmsg)
|
||||
cw->wflags |= FLMSG_FIRST;
|
||||
cw->disprows = 0;
|
||||
}
|
||||
|
||||
if (WIN_MAP != WIN_ERR && (cw = amii_wins[WIN_MAP]) && (w = cw->win)) {
|
||||
cursor_on(WIN_MAP);
|
||||
} else
|
||||
panic("no MAP window opened for nh_poskey\n");
|
||||
|
||||
rp = w->RPort;
|
||||
|
||||
while (1) {
|
||||
type = WindowGetevent();
|
||||
if (type == WEMOUSE) {
|
||||
*mod = CLICK_1;
|
||||
if (lastevent.un.mouse.qual)
|
||||
*mod = 0;
|
||||
|
||||
/* X coordinates are 1 based, Y are 1 based. */
|
||||
*x = ((lastevent.un.mouse.x - w->BorderLeft) / mxsize) + 1;
|
||||
*y = ((lastevent.un.mouse.y - w->BorderTop - MAPFTBASELN)
|
||||
/ mysize) + 1;
|
||||
#ifdef CLIPPING
|
||||
if (clipping) {
|
||||
*x += clipx;
|
||||
*y += clipy;
|
||||
}
|
||||
#endif
|
||||
return (0);
|
||||
} else if (type == WEKEY) {
|
||||
lastevent.type = WEUNK;
|
||||
return (lastevent.un.key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
amii_nhgetch(void)
|
||||
{
|
||||
int ch;
|
||||
struct amii_WinDesc *cw = amii_wins[WIN_MESSAGE];
|
||||
/* No entry log for nhgetch -- too noisy (called constantly) */
|
||||
|
||||
if (WIN_MAP != WIN_ERR && amii_wins[WIN_MAP]) {
|
||||
cursor_on(WIN_MAP);
|
||||
}
|
||||
if (cw)
|
||||
cw->wflags &= ~FLMAP_SKIP;
|
||||
|
||||
ch = WindowGetchar();
|
||||
return (ch);
|
||||
}
|
||||
|
||||
void
|
||||
amii_get_nh_event(void)
|
||||
{
|
||||
/* nothing now - later I have no idea. Is this just a Mac hook? */
|
||||
}
|
||||
|
||||
void
|
||||
amii_getret(void)
|
||||
{
|
||||
int c;
|
||||
|
||||
raw_print("");
|
||||
raw_print("Press Return...");
|
||||
|
||||
c = 0;
|
||||
|
||||
while (c != '\n' && c != '\r') {
|
||||
if (HackPort)
|
||||
c = WindowGetchar();
|
||||
else
|
||||
c = getchar();
|
||||
}
|
||||
return;
|
||||
}
|
||||
151
sys/amiga/winproto.h
Normal file
151
sys/amiga/winproto.h
Normal file
@@ -0,0 +1,151 @@
|
||||
/* NetHack 3.6 winproto.h $NHDT-Date: 1433806597 2015/06/08 23:36:37 $ $NHDT-Branch: master $:$NHDT-Revision: 1.9 $ */
|
||||
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/* winreq.c */
|
||||
void EditColor(void);
|
||||
void EditClipping(void);
|
||||
void DrawCol(struct Window *w, int idx, UWORD *colors);
|
||||
void DispCol(struct Window *w, int idx, UWORD *colors);
|
||||
void amii_change_color(int, long, int);
|
||||
char *amii_get_color_string(void);
|
||||
void amii_getlin(const char *prompt, char *bufp);
|
||||
void getlind(const char *prompt, char *bufp, const char *dflt);
|
||||
int filecopy(char *from, char *to);
|
||||
char *basename(char *str);
|
||||
char *dirname(char *str);
|
||||
|
||||
/* winstr.c */
|
||||
void amii_putstr(winid window, int attr, const char *str);
|
||||
void outmore(struct amii_WinDesc *cw);
|
||||
void outsubstr(struct amii_WinDesc *cw, char *str, int len, int fudge);
|
||||
void amii_putsym(winid st, int i, int y, CHAR_P c);
|
||||
void amii_addtopl(const char *s);
|
||||
void TextSpaces(struct RastPort *rp, int nr);
|
||||
void amii_remember_topl(void);
|
||||
long CountLines(winid);
|
||||
long FindLine(winid, int);
|
||||
int amii_doprev_message(void);
|
||||
void flushIDCMP(struct MsgPort *);
|
||||
int amii_msgborder(struct Window *);
|
||||
void amii_scrollmsg(register struct Window *w,
|
||||
register struct amii_WinDesc *cw);
|
||||
|
||||
/* winkey.c */
|
||||
int amii_nh_poskey(coordxy *x, coordxy *y, int *mod);
|
||||
int amii_nhgetch(void);
|
||||
void amii_get_nh_event(void);
|
||||
void amii_getret(void);
|
||||
|
||||
/* winmenu.c */
|
||||
void amii_start_menu(winid window, unsigned long);
|
||||
void amii_add_menu(winid, const glyph_info *, const anything *, CHAR_P, CHAR_P,
|
||||
int, int, const char *, unsigned int);
|
||||
void amii_end_menu(winid, const char *);
|
||||
int amii_select_menu(winid, int, menu_item **);
|
||||
int DoMenuScroll(int win, int blocking, int how, menu_item **);
|
||||
void ReDisplayData(winid win);
|
||||
void DisplayData(winid win, int start);
|
||||
void SetPropInfo(struct Window *win, struct Gadget *gad, long vis, long total,
|
||||
long top);
|
||||
|
||||
/* amiwind.c */
|
||||
struct Window *OpenShWindow(struct NewWindow *nw);
|
||||
void CloseShWindow(struct Window *win);
|
||||
int ConvertKey(struct IntuiMessage *message);
|
||||
int kbhit(void);
|
||||
int amikbhit(void);
|
||||
int WindowGetchar(void);
|
||||
WETYPE WindowGetevent(void);
|
||||
void amii_cleanup(void);
|
||||
#ifndef SHAREDLIB
|
||||
void Abort(long rc);
|
||||
#endif
|
||||
void CleanUp(void);
|
||||
void flush_glyph_buffer(struct Window *w);
|
||||
void amiga_print_glyph(winid window, int color_index, int glyph);
|
||||
void start_glyphout(winid window);
|
||||
void amii_end_glyphout(winid window);
|
||||
struct NewWindow *DupNewWindow(struct NewWindow *win);
|
||||
void FreeNewWindow(struct NewWindow *win);
|
||||
void bell(void);
|
||||
void amii_delay_output(void);
|
||||
void amii_number_pad(int state);
|
||||
#ifndef SHAREDLIB
|
||||
void amiv_loadlib(void);
|
||||
void amii_loadlib(void);
|
||||
#endif
|
||||
void preserve_icon(void);
|
||||
void clear_icon(void);
|
||||
|
||||
/* winfuncs.c */
|
||||
void amii_destroy_nhwindow(winid win);
|
||||
int amii_create_nhwindow(int type);
|
||||
void amii_init_nhwindows(int *, char **);
|
||||
void amii_setdrawpens(struct Window *, int type);
|
||||
void amii_sethipens(struct Window *, int type, int attr);
|
||||
void amii_setfillpens(struct Window *, int type);
|
||||
void amii_clear_nhwindow(winid win);
|
||||
void dismiss_nhwindow(winid win);
|
||||
void amii_exit_nhwindows(const char *str);
|
||||
void amii_display_nhwindow(winid win, boolean blocking);
|
||||
void amii_curs(winid window, int x, int y);
|
||||
void kill_nhwindows(int all);
|
||||
void amii_cl_end(struct amii_WinDesc *cw, int i);
|
||||
void cursor_off(winid window);
|
||||
void cursor_on(winid window);
|
||||
void amii_suspend_nhwindows(const char *str);
|
||||
void amii_resume_nhwindows(void);
|
||||
void amii_bell(void);
|
||||
void removetopl(int cnt);
|
||||
void port_help(void);
|
||||
void amii_print_glyph(winid win, coordxy x, coordxy y, const glyph_info *glyphinfo, const glyph_info *bkglyphinfo);
|
||||
void amii_raw_print(const char *s);
|
||||
void amii_raw_print_bold(const char *s);
|
||||
void amii_update_inventory(int);
|
||||
void amii_mark_synch(void);
|
||||
void amii_wait_synch(void);
|
||||
void amii_setclipped(void);
|
||||
void amii_cliparound(int x, int y);
|
||||
void amii_set_text_font(char *font, int size);
|
||||
BitMapHeader ReadImageFile(const char *, struct BitMap **);
|
||||
void FreeImageFile(struct BitMap **);
|
||||
BitMapHeader ReadTileImageFiles(void);
|
||||
void FreeTileImageFiles(void);
|
||||
|
||||
/* winami.c */
|
||||
#ifdef SHAREDLIB
|
||||
int __UserLibInit(void);
|
||||
void __UserLibCleanup(void);
|
||||
#endif
|
||||
void amii_askname(void);
|
||||
void amii_player_selection(void);
|
||||
void RandomWindow(char *name);
|
||||
int amii_get_ext_cmd(void);
|
||||
char amii_yn_function(const char *query, const char *resp, char def);
|
||||
void amii_display_file(const char *fn, boolean complain);
|
||||
void SetBorder(struct Gadget *gd);
|
||||
/* malloc/free provided by stdlib.h */
|
||||
|
||||
#ifdef SHAREDLIB
|
||||
/* amilib.c */
|
||||
void amii_loadlib(void);
|
||||
void amiv_loadlib(void);
|
||||
void CleanUp(void);
|
||||
void setup_librefs(WinamiBASE *base);
|
||||
#else
|
||||
void Abort(long rc);
|
||||
#endif
|
||||
|
||||
win_request_info *amii_ctrl_nhwindow(winid, int, win_request_info *);
|
||||
|
||||
/* amirip.c */
|
||||
void amii_outrip(winid tmpwin, int how, time_t when);
|
||||
|
||||
/* winchar.c */
|
||||
void SetMazeType(MazeType);
|
||||
int GlyphToIcon(int glyph);
|
||||
#ifdef OPT_DISPMAP
|
||||
void dispmap_sanity(void);
|
||||
int dispmap_sanity1(int);
|
||||
#endif
|
||||
1011
sys/amiga/winreq.c
Normal file
1011
sys/amiga/winreq.c
Normal file
File diff suppressed because it is too large
Load Diff
485
sys/amiga/winstr.c
Normal file
485
sys/amiga/winstr.c
Normal file
@@ -0,0 +1,485 @@
|
||||
/* NetHack 3.6 winstr.c $NHDT-Date: 1432512795 2015/05/25 00:13:15 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#ifndef CROSS_TO_AMIGA
|
||||
#include "NH:sys/amiga/windefs.h"
|
||||
#include "NH:sys/amiga/winext.h"
|
||||
#include "NH:sys/amiga/winproto.h"
|
||||
#else
|
||||
#include "windefs.h"
|
||||
#include "winext.h"
|
||||
#include "winproto.h"
|
||||
#endif
|
||||
/* Put a string into the indicated window using the indicated attribute */
|
||||
|
||||
void
|
||||
amii_putstr(winid window, int attr, const char *str)
|
||||
{
|
||||
int fudge;
|
||||
int len;
|
||||
struct Window *w;
|
||||
register struct amii_WinDesc *cw;
|
||||
char *ob;
|
||||
int i, j, n0, bottom, totalvis, wheight;
|
||||
static int wrapping = 0;
|
||||
|
||||
|
||||
/* Always try to avoid a panic when there is no window */
|
||||
if (window == WIN_ERR) {
|
||||
window = WIN_BASE;
|
||||
if (window == WIN_ERR)
|
||||
window = WIN_BASE = amii_create_nhwindow(NHW_BASE);
|
||||
}
|
||||
|
||||
if (window == WIN_ERR || (cw = amii_wins[window]) == NULL) {
|
||||
iflags.window_inited = 0;
|
||||
panic(winpanicstr, window, "putstr");
|
||||
}
|
||||
|
||||
w = cw->win;
|
||||
|
||||
if (!str)
|
||||
return;
|
||||
amiIDisplay->lastwin = window; /* do we care??? */
|
||||
|
||||
/* NHW_MENU windows are not opened immediately, so check if we
|
||||
* have the window pointer yet
|
||||
*/
|
||||
|
||||
if (w) {
|
||||
/* Set the drawing mode and pen colors */
|
||||
SetDrMd(w->RPort, JAM2);
|
||||
amii_sethipens(w, cw->type, attr);
|
||||
} else if (cw->type != NHW_MENU && cw->type != NHW_TEXT) {
|
||||
panic("NULL window pointer in putstr 2: %d", window);
|
||||
}
|
||||
|
||||
/* Okay now do the work for each type */
|
||||
|
||||
switch (cw->type) {
|
||||
case NHW_MESSAGE:
|
||||
if (WINVERS_AMIV)
|
||||
fudge = 2;
|
||||
else {
|
||||
/* 8 for --more--, 1 for preceeding sp, 1 for putstr pad */
|
||||
fudge = 10;
|
||||
}
|
||||
|
||||
/* There is a one pixel border at the borders, so subtract two */
|
||||
bottom = amii_msgborder(w);
|
||||
|
||||
wheight = (w->Height - w->BorderTop - w->BorderBottom - 3)
|
||||
/ w->RPort->TxHeight;
|
||||
|
||||
if (scrollmsg || wheight > 1)
|
||||
fudge = 0;
|
||||
|
||||
amii_scrollmsg(w, cw);
|
||||
|
||||
while (isspace(*str))
|
||||
str++;
|
||||
strncpy(gt.toplines, str, TBUFSZ);
|
||||
gt.toplines[TBUFSZ - 1] = 0;
|
||||
|
||||
/* For initial message to be visible, we need to explicitly position
|
||||
* the
|
||||
* cursor. This flag, cw->curx == -1 is set elsewhere to force the
|
||||
* cursor to be repositioned to the "bottom".
|
||||
*/
|
||||
if (cw->curx == -1) {
|
||||
amii_curs(WIN_MESSAGE, 1, bottom);
|
||||
cw->curx = 0;
|
||||
}
|
||||
|
||||
/* If used all of history lines, move them down */
|
||||
if (cw->maxrow >= iflags.msg_history) {
|
||||
if (cw->data[0])
|
||||
free(cw->data[0]);
|
||||
memcpy(cw->data, &cw->data[1],
|
||||
(iflags.msg_history - 1) * sizeof(char *));
|
||||
cw->data[iflags.msg_history - 1] =
|
||||
(char *) alloc(strlen(gt.toplines) + SOFF + 4);
|
||||
strcpy(cw->data[i = iflags.msg_history - 1] + SOFF
|
||||
+ (scrollmsg != 0),
|
||||
gt.toplines);
|
||||
} else {
|
||||
/* Otherwise, allocate a new one and copy the line in */
|
||||
cw->data[cw->maxrow] = (char *) alloc(strlen(gt.toplines) + SOFF + 4);
|
||||
strcpy(cw->data[i = cw->maxrow++] + SOFF + (scrollmsg != 0),
|
||||
gt.toplines);
|
||||
}
|
||||
cw->data[i][SEL_ITEM] = 1;
|
||||
cw->data[i][VATTR] = attr + 1;
|
||||
|
||||
if (scrollmsg) {
|
||||
cw->curx = 0;
|
||||
cw->data[i][2] = (cw->wflags & FLMSG_FIRST) ? '>' : ' ';
|
||||
}
|
||||
|
||||
str = cw->data[i] + SOFF;
|
||||
if (cw->curx + strlen(str) >= (cw->cols - fudge)) {
|
||||
int i;
|
||||
char *ostr = (char *) str;
|
||||
char *p;
|
||||
|
||||
while (cw->curx + strlen(str) >= (cw->cols - fudge)) {
|
||||
for (p = ((char *) &str[cw->cols - 1 - cw->curx]) - fudge;
|
||||
!isspace(*p) && p > str;)
|
||||
--p;
|
||||
if (p < str)
|
||||
p = (char *) str;
|
||||
|
||||
if (p == str) {
|
||||
/* p = (char *)&str[ cw->cols ]; */
|
||||
outmore(cw);
|
||||
continue;
|
||||
}
|
||||
|
||||
i = (long) p - (long) str;
|
||||
outsubstr(cw, (char *) str, i, fudge);
|
||||
cw->curx += i;
|
||||
|
||||
while (isspace(*p))
|
||||
p++;
|
||||
str = p;
|
||||
|
||||
#if 0
|
||||
if( str != ostr ) {
|
||||
outsubstr( cw, "+", 1, fudge );
|
||||
cw->curx+=2;
|
||||
}
|
||||
#endif
|
||||
if (*str)
|
||||
amii_scrollmsg(w, cw);
|
||||
amii_cl_end(cw, cw->curx);
|
||||
}
|
||||
|
||||
if (*str) {
|
||||
if (str != ostr) {
|
||||
outsubstr(cw, "+", 1, fudge);
|
||||
cw->curx += 2;
|
||||
}
|
||||
while (isspace(*str))
|
||||
++str;
|
||||
outsubstr(cw, (char *) str, i = strlen((char *) str), fudge);
|
||||
cw->curx += i;
|
||||
amii_cl_end(cw, cw->curx);
|
||||
}
|
||||
} else {
|
||||
outsubstr(cw, (char *) str, i = strlen((char *) str), fudge);
|
||||
cw->curx += i;
|
||||
amii_cl_end(cw, cw->curx);
|
||||
}
|
||||
cw->wflags &= ~FLMSG_FIRST;
|
||||
len = 0;
|
||||
if (scrollmsg) {
|
||||
totalvis = CountLines(window);
|
||||
SetPropInfo(w, &MsgScroll,
|
||||
(w->Height - w->BorderTop - w->BorderBottom)
|
||||
/ w->RPort->TxHeight,
|
||||
totalvis, totalvis);
|
||||
}
|
||||
i = strlen(gt.toplines + SOFF);
|
||||
cw->maxcol = max(cw->maxcol, i);
|
||||
cw->vwy = cw->maxrow;
|
||||
break;
|
||||
|
||||
case NHW_STATUS:
|
||||
if (cw->data[cw->cury] == NULL)
|
||||
panic("NULL pointer for status window");
|
||||
ob = &cw->data[cw->cury][j = cw->curx];
|
||||
if (disp.botlx)
|
||||
*ob = 0;
|
||||
|
||||
/* Display when beam at top to avoid flicker... */
|
||||
WaitTOF();
|
||||
{ int slen = strlen((char *) str);
|
||||
if (slen > cw->cols) slen = cw->cols;
|
||||
Text(w->RPort, (char *) str, slen);
|
||||
}
|
||||
if (cw->cols > strlen(str))
|
||||
TextSpaces(w->RPort, cw->cols - strlen(str));
|
||||
|
||||
(void) strncpy(cw->data[cw->cury], str, cw->cols);
|
||||
cw->data[cw->cury][cw->cols - 1] = '\0'; /* null terminate */
|
||||
cw->cury = (cw->cury + 1) % 2;
|
||||
cw->curx = 0;
|
||||
break;
|
||||
|
||||
case NHW_MAP:
|
||||
case NHW_BASE:
|
||||
if (cw->type == NHW_BASE && wrapping) {
|
||||
amii_curs(window, cw->curx + 1, cw->cury);
|
||||
TextSpaces(w->RPort, cw->cols);
|
||||
if (cw->cury < cw->rows) {
|
||||
amii_curs(window, cw->curx + 1, cw->cury + 1);
|
||||
TextSpaces(w->RPort, cw->cols);
|
||||
cw->cury--;
|
||||
}
|
||||
}
|
||||
amii_curs(window, cw->curx + 1, cw->cury);
|
||||
Text(w->RPort, (char *) str, strlen((char *) str));
|
||||
cw->curx = 0;
|
||||
/* CR-LF is automatic in these windows */
|
||||
cw->cury++;
|
||||
if (cw->type == NHW_BASE && cw->cury >= cw->rows) {
|
||||
cw->cury = 0;
|
||||
wrapping = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case NHW_MENU:
|
||||
case NHW_TEXT:
|
||||
|
||||
/* always grows one at a time, but alloc 12 at a time */
|
||||
|
||||
if (cw->cury >= cw->rows || !cw->data) {
|
||||
char **tmp;
|
||||
|
||||
/* Allocate 12 more rows */
|
||||
cw->rows += 12;
|
||||
tmp = (char **) alloc(sizeof(char *) * cw->rows);
|
||||
|
||||
/* Copy the old lines */
|
||||
for (i = 0; i < cw->cury; i++)
|
||||
tmp[i] = cw->data[i];
|
||||
|
||||
if (cw->data) {
|
||||
free(cw->data);
|
||||
cw->data = NULL;
|
||||
}
|
||||
|
||||
cw->data = tmp;
|
||||
|
||||
/* Null out the unused entries. */
|
||||
for (i = cw->cury; i < cw->rows; i++)
|
||||
cw->data[i] = 0;
|
||||
}
|
||||
|
||||
if (!cw->data)
|
||||
panic("no data storage");
|
||||
|
||||
/* Shouldn't need to do this, but... */
|
||||
|
||||
if (cw->data && cw->data[cw->cury]) {
|
||||
free(cw->data[cw->cury]);
|
||||
cw->data[cw->cury] = NULL;
|
||||
}
|
||||
|
||||
n0 = strlen(str) + 1;
|
||||
cw->data[cw->cury] = (char *) alloc(n0 + SOFF);
|
||||
|
||||
/* avoid nuls, for convenience */
|
||||
cw->data[cw->cury][VATTR] = attr + 1;
|
||||
cw->data[cw->cury][SEL_ITEM] = 0;
|
||||
Strcpy(cw->data[cw->cury] + SOFF, str);
|
||||
|
||||
if (n0 > cw->maxcol)
|
||||
cw->maxcol = n0;
|
||||
if (++cw->cury > cw->maxrow)
|
||||
cw->maxrow = cw->cury;
|
||||
break;
|
||||
|
||||
default:
|
||||
panic("Invalid or unset window type in putstr()");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
amii_scrollmsg(struct Window *w, struct amii_WinDesc *cw)
|
||||
{
|
||||
int bottom, wheight;
|
||||
|
||||
bottom = amii_msgborder(w);
|
||||
|
||||
wheight =
|
||||
(w->Height - w->BorderTop - w->BorderBottom - 3) / w->RPort->TxHeight;
|
||||
|
||||
if (scrollmsg) {
|
||||
if (++cw->disprows > wheight) {
|
||||
outmore(cw);
|
||||
cw->disprows = 1; /* count this line... */
|
||||
} else {
|
||||
ScrollRaster(w->RPort, 0, w->RPort->TxHeight, w->BorderLeft,
|
||||
w->BorderTop + 1, w->Width - w->BorderRight - 1,
|
||||
w->Height - w->BorderBottom - 1);
|
||||
}
|
||||
amii_curs(WIN_MESSAGE, 1, bottom);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
amii_msgborder(struct Window *w)
|
||||
{
|
||||
register int bottom;
|
||||
|
||||
/* There is a one pixel border at the borders, so subtract two */
|
||||
bottom = w->Height - w->BorderTop - w->BorderBottom - 2;
|
||||
bottom /= w->RPort->TxHeight;
|
||||
if (bottom > 0)
|
||||
--bottom;
|
||||
return (bottom);
|
||||
}
|
||||
|
||||
void
|
||||
outmore(struct amii_WinDesc *cw)
|
||||
{
|
||||
struct Window *w = cw->win;
|
||||
|
||||
if ((cw->wflags & FLMAP_SKIP) == 0) {
|
||||
if (scrollmsg) {
|
||||
int bottom;
|
||||
|
||||
bottom = amii_msgborder(w);
|
||||
|
||||
ScrollRaster(w->RPort, 0, w->RPort->TxHeight, w->BorderLeft,
|
||||
w->BorderTop + 1, w->Width - w->BorderRight - 1,
|
||||
w->Height - w->BorderBottom - 1);
|
||||
amii_curs(WIN_MESSAGE, 1, bottom); /* -1 for inner border */
|
||||
Text(w->RPort, "--more--", 8);
|
||||
} else
|
||||
Text(w->RPort, " --more--", 9);
|
||||
|
||||
/* Make sure there are no events in the queue */
|
||||
flushIDCMP(HackPort);
|
||||
|
||||
/* Allow mouse clicks to clear --more-- */
|
||||
WindowGetchar();
|
||||
if (lastevent.type == WEKEY && lastevent.un.key == '\33')
|
||||
cw->wflags |= FLMAP_SKIP;
|
||||
}
|
||||
if (!scrollmsg) {
|
||||
amii_curs(WIN_MESSAGE, 1, 0);
|
||||
amii_cl_end(cw, cw->curx);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
outsubstr(struct amii_WinDesc *cw, char *str, int len, int fudge)
|
||||
{
|
||||
struct Window *w = cw->win;
|
||||
|
||||
if (cw->curx) {
|
||||
/* Check if this string and --more-- fit, if not,
|
||||
* then put out --more-- and wait for a key.
|
||||
*/
|
||||
if ((len + fudge) + cw->curx >= cw->cols) {
|
||||
if (!scrollmsg)
|
||||
outmore(cw);
|
||||
} else {
|
||||
/* Otherwise, move and put out a blank separator */
|
||||
Text(w->RPort, spaces, 1);
|
||||
cw->curx += 1;
|
||||
}
|
||||
}
|
||||
|
||||
Text(w->RPort, str, len);
|
||||
}
|
||||
|
||||
/* Put a graphics character onto the screen */
|
||||
|
||||
void
|
||||
amii_putsym(winid st, int i, int y, CHAR_P c)
|
||||
{
|
||||
amii_curs(st, i, y);
|
||||
Text(amii_wins[st]->win->RPort, &c, 1);
|
||||
}
|
||||
|
||||
/* Add to the last line in the message window */
|
||||
|
||||
void
|
||||
amii_addtopl(const char *s)
|
||||
{
|
||||
register struct amii_WinDesc *cw = amii_wins[WIN_MESSAGE];
|
||||
|
||||
while (*s) {
|
||||
if (cw->curx == cw->cols - 1)
|
||||
amii_putstr(WIN_MESSAGE, 0, "");
|
||||
amii_putsym(WIN_MESSAGE, cw->curx + 1, amii_msgborder(cw->win), *s++);
|
||||
cw->curx++;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
TextSpaces(struct RastPort *rp, int nr)
|
||||
{
|
||||
if (nr < 1)
|
||||
return;
|
||||
|
||||
while (nr > sizeof(spaces) - 1) {
|
||||
Text(rp, spaces, (long) sizeof(spaces) - 1);
|
||||
nr -= sizeof(spaces) - 1;
|
||||
}
|
||||
if (nr > 0)
|
||||
Text(rp, spaces, (long) nr);
|
||||
}
|
||||
|
||||
void
|
||||
amii_remember_topl(void)
|
||||
{
|
||||
/* ignore for now. I think this will be done automatically by
|
||||
* the code writing to the message window, but I could be wrong.
|
||||
*/
|
||||
}
|
||||
|
||||
int
|
||||
amii_doprev_message(void)
|
||||
{
|
||||
struct amii_WinDesc *cw;
|
||||
struct Window *w;
|
||||
char *str;
|
||||
|
||||
|
||||
if (WIN_MESSAGE == WIN_ERR || (cw = amii_wins[WIN_MESSAGE]) == NULL
|
||||
|| (w = cw->win) == NULL) {
|
||||
panic(winpanicstr, WIN_MESSAGE, "doprev_message");
|
||||
}
|
||||
|
||||
/* When an interlaced/tall screen is in use, the scroll bar will be there
|
||||
*/
|
||||
/* Or in some other cases as well */
|
||||
if (scrollmsg) {
|
||||
struct Gadget *gd;
|
||||
struct PropInfo *pip;
|
||||
int hidden, topidx, i, total, wheight;
|
||||
|
||||
for (gd = w->FirstGadget; gd && gd->GadgetID != 1;)
|
||||
gd = gd->NextGadget;
|
||||
|
||||
if (gd) {
|
||||
pip = (struct PropInfo *) gd->SpecialInfo;
|
||||
wheight = (w->Height - w->BorderTop - w->BorderBottom - 2)
|
||||
/ w->RPort->TxHeight;
|
||||
hidden = max(cw->maxrow - wheight, 0);
|
||||
topidx = (((ULONG) hidden * pip->VertPot) + (MAXPOT / 2)) >> 16;
|
||||
for (total = i = 0; i < cw->maxrow; ++i) {
|
||||
if (cw->data[i][1] != 0)
|
||||
++total;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
topidx -= wheight / 4 + 1;
|
||||
if (topidx < 0)
|
||||
topidx = 0;
|
||||
SetPropInfo(w, &MsgScroll, wheight, total, topidx);
|
||||
DisplayData(WIN_MESSAGE, topidx);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (--cw->vwy < 0) {
|
||||
cw->maxcol = 0;
|
||||
DisplayBeep(NULL);
|
||||
str = "\0\0No more history saved...";
|
||||
} else
|
||||
str = cw->data[cw->vwy];
|
||||
|
||||
amii_cl_end(cw, 0);
|
||||
amii_curs(WIN_MESSAGE, 1, 0);
|
||||
amii_setdrawpens(amii_wins[WIN_MESSAGE]->win, NHW_MESSAGE);
|
||||
Text(w->RPort, str + SOFF, strlen(str + SOFF));
|
||||
cw->curx = cw->cols + 1;
|
||||
|
||||
return (0);
|
||||
}
|
||||
346
sys/amiga/xpm2iff_host.c
Normal file
346
sys/amiga/xpm2iff_host.c
Normal file
@@ -0,0 +1,346 @@
|
||||
/* xpm2iff_host.c - host-side .xpm -> Amiga BMAP IFF converter.
|
||||
* Copyright (c) 2026 by Ingo Paschke.
|
||||
* NetHack may be freely redistributed. See license for details.
|
||||
*
|
||||
* Adapted from sys/amiga/xpm2iff.c, Copyright (c) 1995 by Gregg Wonderly.
|
||||
* Rewritten for host-side cross-compilation using POSIX file I/O with
|
||||
* explicit big-endian output instead of AmigaOS IFFParse library calls.
|
||||
*
|
||||
* Input: an XPM2 file, 1 char per pixel.
|
||||
* Output: a BMAP IFF file readable by sys/amiga/winchar.c (tomb.iff).
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/* ------------------------------------------------------------------
|
||||
* XPM screen descriptor and color translation table
|
||||
* ------------------------------------------------------------------ */
|
||||
|
||||
static struct {
|
||||
int Width;
|
||||
int Height;
|
||||
int Colors;
|
||||
int BytesPerRow;
|
||||
} XpmScreen;
|
||||
|
||||
/* Translation table: indexed by the single XPM character code.
|
||||
* slot = output palette index (0-based)
|
||||
* flag = 1 if this entry is valid
|
||||
* r,g,b = RGB components (0-255) */
|
||||
static struct {
|
||||
unsigned char flag;
|
||||
unsigned char r, g, b;
|
||||
int slot;
|
||||
} ttable[256];
|
||||
|
||||
/* ------------------------------------------------------------------
|
||||
* XPM parsing
|
||||
* Adapted directly from sys/amiga/xpm2iff.c (already POSIX).
|
||||
* ------------------------------------------------------------------ */
|
||||
|
||||
static FILE *xpmfh;
|
||||
|
||||
#define XBUFSZ 2048
|
||||
static char xbuf[XBUFSZ];
|
||||
|
||||
/* Read the next quoted line from the XPM file.
|
||||
* Returns a pointer to the content between the first pair of double-quotes,
|
||||
* or NULL on EOF. Trailing ", and whitespace are stripped. */
|
||||
static char *
|
||||
xpmgetline(void)
|
||||
{
|
||||
char *bp;
|
||||
do {
|
||||
if (fgets(xbuf, XBUFSZ, xpmfh) == NULL)
|
||||
return NULL;
|
||||
} while (xbuf[0] != '"');
|
||||
|
||||
/* strip trailing <",> and whitespace */
|
||||
for (bp = xbuf; *bp; bp++)
|
||||
;
|
||||
bp--;
|
||||
while (isspace((unsigned char)*bp))
|
||||
bp--;
|
||||
if (*bp == ',')
|
||||
bp--;
|
||||
if (*bp == '"')
|
||||
bp--;
|
||||
bp++;
|
||||
*bp = '\0';
|
||||
|
||||
return &xbuf[1];
|
||||
}
|
||||
|
||||
/* Open an XPM file and parse its header + color table.
|
||||
* Populates XpmScreen and ttable[].
|
||||
* Returns 1 on success, 0 on failure. */
|
||||
static int
|
||||
fopen_xpm_file(const char *fn)
|
||||
{
|
||||
int temp;
|
||||
char *xb;
|
||||
|
||||
xpmfh = fopen(fn, "r");
|
||||
if (!xpmfh)
|
||||
return 0;
|
||||
|
||||
/* read dimensions header: "W H Colors 1" */
|
||||
xb = xpmgetline();
|
||||
if (!xb)
|
||||
return 0;
|
||||
if (sscanf(xb, "%d %d %d %d",
|
||||
&XpmScreen.Width, &XpmScreen.Height,
|
||||
&XpmScreen.Colors, &temp) != 4)
|
||||
return 0;
|
||||
if (temp != 1) {
|
||||
fprintf(stderr, "xpm2iff_host: only 1 char/pixel XPM files supported\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* read color map: "%c c #rrggbb" */
|
||||
{
|
||||
int ccount = 0;
|
||||
while (ccount < XpmScreen.Colors) {
|
||||
char idx;
|
||||
int r, g, b;
|
||||
xb = xpmgetline();
|
||||
if (!xb)
|
||||
return 0;
|
||||
if (sscanf(xb, "%c c #%2x%2x%2x", &idx, &r, &g, &b) != 4) {
|
||||
fprintf(stderr, "xpm2iff_host: bad color entry: %s\n", xb);
|
||||
return 0;
|
||||
}
|
||||
ttable[(unsigned char)idx].flag = 1;
|
||||
ttable[(unsigned char)idx].r = (unsigned char)r;
|
||||
ttable[(unsigned char)idx].g = (unsigned char)g;
|
||||
ttable[(unsigned char)idx].b = (unsigned char)b;
|
||||
ttable[(unsigned char)idx].slot = ccount;
|
||||
ccount++;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------
|
||||
* Bitplane packing
|
||||
* ------------------------------------------------------------------ */
|
||||
|
||||
static char **planes;
|
||||
|
||||
#define SETBIT(plane, plane_offset, col, value) \
|
||||
do { \
|
||||
if (value) \
|
||||
planes[plane][plane_offset + ((col) / 8)] \
|
||||
|= (char)(1 << (7 - ((col) & 7))); \
|
||||
} while (0)
|
||||
|
||||
static void
|
||||
conv_image(int nplanes)
|
||||
{
|
||||
int row, col, planeno;
|
||||
|
||||
for (row = 0; row < XpmScreen.Height; row++) {
|
||||
char *xb = xpmgetline();
|
||||
int plane_offset;
|
||||
if (!xb)
|
||||
return;
|
||||
plane_offset = row * XpmScreen.BytesPerRow;
|
||||
for (col = 0; col < XpmScreen.Width; col++) {
|
||||
int color = (unsigned char)xb[col];
|
||||
int slot;
|
||||
if (!ttable[color].flag) {
|
||||
fprintf(stderr, "xpm2iff_host: bad image data at row %d col %d\n",
|
||||
row, col);
|
||||
continue;
|
||||
}
|
||||
slot = ttable[color].slot;
|
||||
for (planeno = 0; planeno < nplanes; planeno++)
|
||||
SETBIT(planeno, plane_offset, col, slot & (1 << planeno));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------
|
||||
* Big-endian IFF output helpers
|
||||
* ------------------------------------------------------------------ */
|
||||
|
||||
static FILE *iff_out;
|
||||
|
||||
static void
|
||||
wr32(uint32_t v)
|
||||
{
|
||||
fputc((v >> 24) & 0xff, iff_out);
|
||||
fputc((v >> 16) & 0xff, iff_out);
|
||||
fputc((v >> 8) & 0xff, iff_out);
|
||||
fputc( v & 0xff, iff_out);
|
||||
}
|
||||
|
||||
static void
|
||||
write_chunk(const char *id, const void *data, uint32_t size)
|
||||
{
|
||||
fwrite(id, 1, 4, iff_out);
|
||||
wr32(size);
|
||||
fwrite(data, 1, size, iff_out);
|
||||
if (size & 1)
|
||||
fputc(0, iff_out);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------
|
||||
* main
|
||||
* ------------------------------------------------------------------ */
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int i, nplanes, colors;
|
||||
uint32_t pbytes, plne_size, form_size;
|
||||
|
||||
if (argc != 3) {
|
||||
fprintf(stderr, "Usage: %s source.xpm destination.iff\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!fopen_xpm_file(argv[1])) {
|
||||
fprintf(stderr, "%s: failed to open or parse XPM file\n", argv[1]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* nplanes = ceil(log2(Colors)) */
|
||||
nplanes = 0;
|
||||
i = XpmScreen.Colors - 1;
|
||||
while (i > 0) { nplanes++; i >>= 1; }
|
||||
|
||||
colors = 1 << nplanes;
|
||||
|
||||
XpmScreen.BytesPerRow = ((XpmScreen.Width + 15) / 16) * 2;
|
||||
pbytes = (uint32_t)XpmScreen.BytesPerRow * (uint32_t)XpmScreen.Height;
|
||||
|
||||
/* Allocate zero-initialised bitplane buffers */
|
||||
planes = malloc(nplanes * sizeof(char *));
|
||||
if (!planes) { perror("malloc"); return 1; }
|
||||
for (i = 0; i < nplanes; ++i) {
|
||||
planes[i] = calloc(1, pbytes);
|
||||
if (!planes[i]) { perror("calloc"); return 1; }
|
||||
}
|
||||
|
||||
/* Pack pixel data into bitplanes */
|
||||
conv_image(nplanes);
|
||||
fclose(xpmfh);
|
||||
|
||||
/* Open output IFF file */
|
||||
iff_out = fopen(argv[2], "wb");
|
||||
if (!iff_out) { perror(argv[2]); return 1; }
|
||||
|
||||
/* Pre-compute FORM size:
|
||||
* 4 (BMAP type tag)
|
||||
* 8 + 20 (BMHD)
|
||||
* 8 + 4 (CAMG)
|
||||
* 8 + colors*3 (CMAP; colors is a power of 2, so colors*3 is even)
|
||||
* 8 + 28 (PDAT: 7 x uint32_t)
|
||||
* 8 + nplanes*pbytes (PLNE; pbytes is always even)
|
||||
*/
|
||||
plne_size = (uint32_t)nplanes * pbytes;
|
||||
form_size = 4
|
||||
+ (8 + 20)
|
||||
+ (8 + 4)
|
||||
+ (8 + (uint32_t)colors * 3)
|
||||
+ (8 + 28)
|
||||
+ (8 + plne_size);
|
||||
|
||||
/* FORM header */
|
||||
fwrite("FORM", 1, 4, iff_out);
|
||||
wr32(form_size);
|
||||
fwrite("BMAP", 1, 4, iff_out);
|
||||
|
||||
/* BMHD chunk */
|
||||
{
|
||||
uint8_t bmhd[20];
|
||||
uint8_t *p = bmhd;
|
||||
uint16_t w = (uint16_t)XpmScreen.Width;
|
||||
uint16_t h = (uint16_t)XpmScreen.Height;
|
||||
|
||||
p[0] = w >> 8; p[1] = w & 0xff; p += 2; /* w */
|
||||
p[0] = h >> 8; p[1] = h & 0xff; p += 2; /* h */
|
||||
memset(p, 0, 4); p += 4; /* x=0, y=0 */
|
||||
*p++ = (uint8_t)nplanes; /* nPlanes */
|
||||
*p++ = 0; /* masking: none */
|
||||
*p++ = 0; /* compression: none */
|
||||
*p++ = 0; /* reserved1 */
|
||||
p[0] = 0; p[1] = 0; p += 2; /* transparentColor */
|
||||
*p++ = 100; /* xAspect */
|
||||
*p++ = 100; /* yAspect */
|
||||
p[0] = 0; p[1] = 0; p += 2; /* pageWidth (not used) */
|
||||
p[0] = 0; p[1] = 0; p += 2; /* pageHeight (not used) */
|
||||
|
||||
write_chunk("BMHD", bmhd, 20);
|
||||
}
|
||||
|
||||
/* CAMG chunk: HIRES | LACE = 0x00008004 */
|
||||
{
|
||||
uint8_t camg[4] = { 0x00, 0x00, 0x80, 0x04 };
|
||||
write_chunk("CAMG", camg, 4);
|
||||
}
|
||||
|
||||
/* CMAP chunk: built from ttable (no color reordering for XPM images) */
|
||||
{
|
||||
uint8_t *cmap = calloc(colors, 3);
|
||||
if (!cmap) { perror("calloc"); return 1; }
|
||||
for (i = 0; i < 256; i++) {
|
||||
if (ttable[i].flag) {
|
||||
int s = ttable[i].slot;
|
||||
cmap[s * 3 + 0] = ttable[i].r;
|
||||
cmap[s * 3 + 1] = ttable[i].g;
|
||||
cmap[s * 3 + 2] = ttable[i].b;
|
||||
}
|
||||
}
|
||||
write_chunk("CMAP", cmap, (uint32_t)colors * 3);
|
||||
free(cmap);
|
||||
}
|
||||
|
||||
/* PDAT chunk: 7 x uint32_t big-endian
|
||||
* nplanes, pbytes, across=0, down=0, npics=1, xsize=Width, ysize=Height */
|
||||
{
|
||||
uint32_t vals[7];
|
||||
uint8_t pdat[28];
|
||||
uint8_t *p = pdat;
|
||||
|
||||
vals[0] = (uint32_t)nplanes;
|
||||
vals[1] = pbytes;
|
||||
vals[2] = 0; /* across: not a tile sheet */
|
||||
vals[3] = 0; /* down */
|
||||
vals[4] = 1; /* npics */
|
||||
vals[5] = (uint32_t)XpmScreen.Width;
|
||||
vals[6] = (uint32_t)XpmScreen.Height;
|
||||
|
||||
for (i = 0; i < 7; i++) {
|
||||
p[0] = (vals[i] >> 24) & 0xff;
|
||||
p[1] = (vals[i] >> 16) & 0xff;
|
||||
p[2] = (vals[i] >> 8) & 0xff;
|
||||
p[3] = vals[i] & 0xff;
|
||||
p += 4;
|
||||
}
|
||||
write_chunk("PDAT", pdat, 28);
|
||||
}
|
||||
|
||||
/* PLNE chunk: concatenated bitplane data */
|
||||
fwrite("PLNE", 1, 4, iff_out);
|
||||
wr32(plne_size);
|
||||
for (i = 0; i < nplanes; ++i)
|
||||
fwrite(planes[i], 1, pbytes, iff_out);
|
||||
if (plne_size & 1)
|
||||
fputc(0, iff_out);
|
||||
|
||||
fclose(iff_out);
|
||||
|
||||
for (i = 0; i < nplanes; ++i) free(planes[i]);
|
||||
free(planes);
|
||||
|
||||
printf("tomb.iff: %dx%d, %d colors (%d planes), %u bytes/plane\n",
|
||||
XpmScreen.Width, XpmScreen.Height, colors, nplanes,
|
||||
(unsigned)pbytes);
|
||||
return 0;
|
||||
}
|
||||
@@ -810,7 +810,7 @@ EM_JS(void, js_helpers_init, (), {
|
||||
// used by update_inventory
|
||||
function displayInventory() {
|
||||
// Asyncify.handleAsync(async () => {
|
||||
return _display_inventory(0, 0);
|
||||
return _repopulate_perminvent();
|
||||
// });
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ II. There once was a time when people built NetHack right on their DOS machine.
|
||||
a DOS-extender (for including in msdos packaging) from:
|
||||
http://sandmann.dotster.com/cwsdpmi/csdpmi7b.zip
|
||||
and Lua from:
|
||||
http://www.lua.org/ftp/lua-5.4.6.tar.gz
|
||||
http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
||||
|
||||
If you want the DOSVGA build, to support higher resolutions and Unicode
|
||||
symbols, you also need:
|
||||
@@ -123,7 +123,7 @@ Appendix B - Common Difficulties Encountered
|
||||
|
||||
For example:
|
||||
make CROSS_TO_MSDOS=1 package
|
||||
( cd src ; make LUA_VERSION=5.4.6 nethack )
|
||||
( cd src ; make LUA_VERSION=5.4.8 nethack )
|
||||
make[1]: Entering directory '/home/johndoe/NHsource/src'
|
||||
mkdir -p ../targets/msdos ; make ../targets/msdos/exceptn.o ;
|
||||
make[2]: Entering directory '/home/johndoe/NHsource/src'
|
||||
|
||||
@@ -56,7 +56,7 @@ endif
|
||||
# Location of LUA
|
||||
#
|
||||
# Original source needs to be obtained from:
|
||||
# http://www.lua.org/ftp/lua-5.4.6.tar.gz
|
||||
# http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
||||
#
|
||||
# This build assumes that the LUA sources are located
|
||||
# at the specified location. If they are actually elsewhere
|
||||
@@ -276,27 +276,27 @@ VOBJ02 = $(O)ball.o $(O)bones.o $(O)botl.o $(O)calendar.o $(O)cfgfile
|
||||
VOBJ03 = $(O)cmd.o $(O)coloratt.o $(O)date.o $(O)dbridge.o $(O)decl.o
|
||||
VOBJ04 = $(O)detect.o $(O)dig.o $(O)display.o $(O)do.o $(O)do_name.o
|
||||
VOBJ05 = $(O)do_wear.o $(O)dog.o $(O)dogmove.o $(O)dokick.o $(O)dothrow.o
|
||||
VOBJ06 = $(O)drawing.o $(O)dungeon.o $(O)eat.o $(O)end.o $(O)engrave.o
|
||||
VOBJ07 = $(O)exper.o $(O)explode.o $(O)extralev.o $(O)files.o $(O)fountain.o
|
||||
VOBJ08 = $(O)getpos.o $(O)glyphs.o $(O)getline.o $(O)hack.o $(O)hacklib.o
|
||||
VOBJ09 = $(O)insight.o $(O)invent.o $(O)isaac64.o $(O)lock.o $(O)mail.o
|
||||
VOBJ10 = $(O)main.o $(O)makemon.o $(O)mcastu.o $(O)mdlib.o $(O)mhitm.o
|
||||
VOBJ11 = $(O)mhitu.o $(O)minion.o $(O)mkmap.o $(O)mklev.o $(O)mkmaze.o
|
||||
VOBJ12 = $(O)mkobj.o $(O)mkroom.o $(O)mon.o $(O)mondata.o $(O)monmove.o
|
||||
VOBJ13 = $(O)monst.o $(O)mplayer.o $(O)mthrowu.o $(O)muse.o $(O)music.o
|
||||
VOBJ14 = $(O)o_init.o $(O)objects.o $(O)objnam.o $(O)options.o $(O)pickup.o
|
||||
VOBJ15 = $(O)pline.o $(O)polyself.o $(O)potion.o $(O)quest.o $(O)questpgr.o
|
||||
VOBJ16 = $(O)pager.o $(O)pray.o $(O)priest.o $(O)read.o $(O)rect.o
|
||||
VOBJ17 = $(O)region.o $(O)report.o $(O)restore.o $(O)rip.o $(O)rnd.o
|
||||
VOBJ18 = $(O)role.o $(O)rumors.o $(O)save.o $(O)selvar.o $(O)sfstruct.o
|
||||
VOBJ19 = $(O)shk.o $(O)shknam.o $(O)sit.o $(O)sounds.o $(O)sp_lev.o
|
||||
VOBJ20 = $(O)spell.o $(O)stairs.o $(O)steal.o $(O)steed.o $(O)symbols.o
|
||||
VOBJ21 = $(O)sys.o $(O)teleport.o $(O)strutil.o $(O)termcap.o $(O)timeout.o
|
||||
VOBJ22 = $(O)topl.o $(O)topten.o $(O)trap.o $(O)u_init.o $(O)uhitm.o
|
||||
VOBJ23 = $(O)utf8map.o $(O)vault.o $(O)track.o $(O)vision.o $(O)weapon.o
|
||||
VOBJ24 = $(O)were.o $(O)wield.o $(O)windows.o $(O)wintty.o $(O)wizard.o
|
||||
VOBJ25 = $(O)wizcmds.o $(O)worm.o $(O)worn.o $(O)write.o $(O)zap.o
|
||||
VOBJ26 = $(O)light.o $(O)dlb.o $(REGEX)
|
||||
VOBJ06 = $(O)drawing.o $(O)dungeon.o $(O)earlyarg.o $(O)eat.o $(O)end.o
|
||||
VOBJ07 = $(O)engrave.o $(O)exper.o $(O)explode.o $(O)extralev.o $(O)files.o
|
||||
VOBJ08 = $(O)fountain.o $(O)getpos.o $(O)glyphs.o $(O)getline.o $(O)hack.o
|
||||
VOBJ09 = $(O)hacklib.o $(O)iactions.o $(O)insight.o $(O)invent.o $(O)isaac64.o
|
||||
VOBJ10 = $(O)lock.o $(O)mail.o $(O)main.o $(O)makemon.o $(O)mcastu.o
|
||||
VOBJ11 = $(O)mdlib.o $(O)mhitm.o $(O)mhitu.o $(O)minion.o $(O)mkmap.o
|
||||
VOBJ12 = $(O)mklev.o $(O)mkmaze.o $(O)mkobj.o $(O)mkroom.o $(O)mon.o
|
||||
VOBJ13 = $(O)mondata.o $(O)monmove.o $(O)monst.o $(O)mplayer.o $(O)mthrowu.o
|
||||
VOBJ14 = $(O)muse.o $(O)music.o $(O)o_init.o $(O)objects.o $(O)objnam.o
|
||||
VOBJ15 = $(O)options.o $(O)pickup.o $(O)pline.o $(O)polyself.o $(O)potion.o
|
||||
VOBJ16 = $(O)quest.o $(O)questpgr.o $(O)pager.o $(O)pray.o $(O)priest.o
|
||||
VOBJ17 = $(O)read.o $(O)rect.o $(O)region.o $(O)report.o $(O)restore.o
|
||||
VOBJ18 = $(O)rip.o $(O)rnd.o $(O)role.o $(O)rumors.o $(O)save.o
|
||||
VOBJ19 = $(O)selvar.o $(O)sfstruct.o $(O)shk.o $(O)shknam.o $(O)sit.o
|
||||
VOBJ20 = $(O)sounds.o $(O)sp_lev.o $(O)spell.o $(O)stairs.o $(O)steal.o
|
||||
VOBJ21 = $(O)steed.o $(O)symbols.o $(O)sys.o $(O)teleport.o $(O)strutil.o
|
||||
VOBJ22 = $(O)termcap.o $(O)timeout.o $(O)topl.o $(O)topten.o $(O)trap.o
|
||||
VOBJ23 = $(O)u_init.o $(O)uhitm.o $(O)utf8map.o $(O)vault.o $(O)track.o
|
||||
VOBJ24 = $(O)vision.o $(O)weapon.o $(O)were.o $(O)wield.o $(O)windows.o
|
||||
VOBJ25 = $(O)wintty.o $(O)wizard.o $(O)wizcmds.o $(O)worm.o $(O)worn.o
|
||||
VOBJ26 = $(O)write.o $(O)zap.o $(O)light.o $(O)dlb.o $(REGEX)
|
||||
|
||||
SOBJ = $(O)msdos.o $(O)pcsys.o $(O)tty.o $(O)unix.o \
|
||||
$(O)video.o $(O)vidtxt.o $(O)pckeys.o
|
||||
@@ -324,7 +324,7 @@ ALLOBJ = $(VOBJ) $(SOBJ) $(TILOBJ) $(TILOBJ2) $(VVOBJ)
|
||||
|
||||
#===============-=================================================
|
||||
# LUA library
|
||||
# Source from http://www.lua.org/ftp/lua-5.4.6.tar.gz
|
||||
# Source from http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
||||
#=================================================================
|
||||
|
||||
LUASRC = $(LUATOP)/src
|
||||
@@ -416,6 +416,7 @@ GLOBAL_H = $(PCCONF_H) $(INCL)/coord.h $(INCL)/global.h
|
||||
HACK_H = $(CONFIG_H) $(INCL)/context.h $(DUNGEON_H) \
|
||||
$(DECL_H) $(DISPLAY_H) $(INCL)/sym.h \
|
||||
$(INCL)/defsym.h $(INCL)/mkroom.h $(INCL)/objclass.h \
|
||||
$(INCL)/mcastu.h \
|
||||
$(INCL)/trap.h $(INCL)/flag.h $(RM_H) \
|
||||
$(INCL)/vision.h $(INCL)/wintype.h $(INCL)/engrave.h \
|
||||
$(INCL)/rect.h $(INCL)/hack.h $(REGION_H) \
|
||||
@@ -1388,6 +1389,7 @@ $(TARGETPFX)drawing.o: drawing.c $(CONFIG_H) ../include/color.h \
|
||||
../include/objects.h ../include/wintype.h ../include/sym.h
|
||||
$(TARGETPFX)dungeon.o: dungeon.c $(HACK_H) ../include/dgn_file.h \
|
||||
../include/dlb.h
|
||||
$(TARGETPFX)earlyarg.o: earlyarg.c $(HACK_H)
|
||||
$(TARGETPFX)eat.o: eat.c $(HACK_H)
|
||||
$(TARGETPFX)end.o: end.c $(HACK_H) ../include/dlb.h
|
||||
$(TARGETPFX)engrave.o: engrave.c $(HACK_H)
|
||||
@@ -1399,6 +1401,7 @@ $(TARGETPFX)files.o: files.c $(HACK_H) ../include/dlb.h ../include/wintty.h \
|
||||
$(TARGETPFX)fountain.o: fountain.c $(HACK_H)
|
||||
$(TARGETPFX)hack.o: hack.c $(HACK_H)
|
||||
$(TARGETPFX)hacklib.o: hacklib.c $(HACK_H)
|
||||
$(TARGETPFX)iactions.o: iactions.c $(HACK_H)
|
||||
$(TARGETPFX)insight.o: insight.c $(HACK_H)
|
||||
$(TARGETPFX)invent.o: invent.c $(HACK_H)
|
||||
$(TARGETPFX)isaac64.o: isaac64.c $(CONFIG_H) ../include/isaac64.h
|
||||
@@ -1406,7 +1409,7 @@ $(TARGETPFX)light.o: light.c $(HACK_H)
|
||||
$(TARGETPFX)lock.o: lock.c $(HACK_H)
|
||||
$(TARGETPFX)mail.o: mail.c $(HACK_H) ../include/mail.h
|
||||
$(TARGETPFX)makemon.o: makemon.c $(HACK_H)
|
||||
$(TARGETPFX)mcastu.o: mcastu.c $(HACK_H)
|
||||
$(TARGETPFX)mcastu.o: mcastu.c $(HACK_H) ../include/mcastu.h
|
||||
$(TARGETPFX)mdlib.o: mdlib.c $(CONFIG_H) ../include/permonst.h \
|
||||
../include/align.h ../include/monattk.h ../include/monflag.h \
|
||||
../include/monsters.h ../include/objclass.h \
|
||||
|
||||
@@ -15,7 +15,7 @@ if [ -z "$GCCVER" ]; then
|
||||
fi
|
||||
|
||||
if [ -z "$LUA_VERSION" ]; then
|
||||
export LUA_VERSION=5.4.6
|
||||
export LUA_VERSION=5.4.8
|
||||
fi
|
||||
|
||||
if [ ! -d "$(pwd)/lib" ]; then
|
||||
|
||||
@@ -449,7 +449,7 @@ filesize_nh(char *file)
|
||||
* Chdrive() changes the default drive.
|
||||
*/
|
||||
void
|
||||
chdrive(char *str)
|
||||
chdrive(const char *str)
|
||||
{
|
||||
#define SELECTDISK 0x0E
|
||||
char *ptr;
|
||||
|
||||
@@ -174,28 +174,28 @@ term_curs_set(int visibility)
|
||||
return;
|
||||
|
||||
if (!visibility) {
|
||||
if (!iflags.grmode) {
|
||||
if (!iflags.grmode) {
|
||||
txt_hide_cursor();
|
||||
#ifdef SCREEN_VGA
|
||||
} else if (iflags.usevga) {
|
||||
vga_hide_cursor();
|
||||
} else if (iflags.usevga) {
|
||||
vga_hide_cursor();
|
||||
#endif
|
||||
#ifdef SCREEN_VESA
|
||||
} else if (iflags.usevesa) {
|
||||
vesa_hide_cursor();
|
||||
}
|
||||
} else if (iflags.usevesa) {
|
||||
vesa_hide_cursor();
|
||||
}
|
||||
#endif
|
||||
} else if (visibility) {
|
||||
if (!iflags.grmode) {
|
||||
if (!iflags.grmode) {
|
||||
txt_show_cursor();
|
||||
#ifdef SCREEN_VGA
|
||||
} else if (iflags.usevga) {
|
||||
} else if (iflags.usevga) {
|
||||
vga_show_cursor();
|
||||
#endif
|
||||
#ifdef SCREEN_VESA
|
||||
} else if (iflags.usevesa) {
|
||||
} else if (iflags.usevesa) {
|
||||
vesa_show_cursor();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
vis = visibility;
|
||||
|
||||
@@ -128,6 +128,7 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/
|
||||
|
||||
choose_windows(DEFAULT_WINDOW_SYS);
|
||||
|
||||
|
||||
#if !defined(AMIGA) && !defined(GNUDOS)
|
||||
/* Save current directory and make sure it gets restored when
|
||||
* the game is exited.
|
||||
@@ -147,6 +148,10 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/
|
||||
if (dir == (char *) 0)
|
||||
dir = exepath(argv[0]);
|
||||
#endif
|
||||
#if defined(AMIGA) && defined(HACKDIR)
|
||||
if (dir == (char *) 0)
|
||||
dir = HACKDIR;
|
||||
#endif
|
||||
#ifdef _MSC_VER
|
||||
if (IsDebuggerPresent()) {
|
||||
static char exepath[_MAX_PATH];
|
||||
@@ -666,7 +671,7 @@ nhusage(void)
|
||||
|
||||
#ifdef CHDIR
|
||||
void
|
||||
chdirx(char *dir, boolean wr)
|
||||
chdirx(const char *dir, boolean wr)
|
||||
{
|
||||
#ifdef AMIGA
|
||||
static char thisdir[] = "";
|
||||
|
||||
@@ -43,7 +43,10 @@
|
||||
*
|
||||
* Modified 05 Jan 2024 to avoid K&R function declarations, marked KR_PROTO.
|
||||
*
|
||||
* $NHDT-Date: 1432512787 2015/05/25 00:13:07 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $
|
||||
* Modified 09 Apr 2026 to change mode variable from (int) to (unsigned int)
|
||||
* to match prototype of sscanf %o.
|
||||
*
|
||||
* $NHDT-Date: 1775744389 2026/04/09 14:19:49 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.21 $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@@ -99,7 +102,7 @@ int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
FILE *in, *out;
|
||||
int mode;
|
||||
unsigned int mode;
|
||||
char dest[128];
|
||||
char buf[80];
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ ARFLAGS = rcs
|
||||
# The Qt and Be window systems are written in C++, while the rest of
|
||||
# NetHack is standard C. If using Qt, uncomment the LINK line here to get
|
||||
# the C++ libraries linked in.
|
||||
CXXFLAGS = $(CCXXFLAGS) -I. -I$(QTDIR)/include $(QTCXXFLAGS)
|
||||
CXXFLAGS ?= $(CCXXFLAGS) -I. -I$(QTDIR)/include $(QTCXXFLAGS)
|
||||
CXX ?= g++
|
||||
MOC ?= moc
|
||||
MOCPATH ?= $(QTDIR)/bin/$(MOC)
|
||||
@@ -502,7 +502,7 @@ TARGET_HACKLIB = $(TARGETPFX)hacklib.a
|
||||
MAKEDEFS = ../util/makedefs
|
||||
|
||||
# -lm required by lua
|
||||
LUA_VERSION ?=5.4.6
|
||||
LUA_VERSION ?=5.4.8
|
||||
LUABASE = liblua-$(LUA_VERSION).a
|
||||
LUALIB = ../lib/lua/$(LUABASE)
|
||||
LUALIBS = $(LUALIB) -lm $(DLLIB)
|
||||
@@ -517,9 +517,9 @@ HACK_H = ../src/hack.h-t
|
||||
HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
|
||||
botl.c calendar.c cmd.c coloratt.c dbridge.c decl.c detect.c dig.c display.c \
|
||||
dlb.c do.c do_name.c do_wear.c dog.c dogmove.c dokick.c dothrow.c \
|
||||
drawing.c dungeon.c eat.c end.c engrave.c exper.c explode.c \
|
||||
drawing.c dungeon.c earlyarg.c eat.c end.c engrave.c exper.c explode.c \
|
||||
extralev.c files.c fountain.c hack.c hacklib.c \
|
||||
getpos.c glyphs.c insight.c invent.c isaac64.c light.c \
|
||||
getpos.c glyphs.c iactions.c insight.c invent.c isaac64.c light.c \
|
||||
lock.c mail.c makemon.c mcastu.c mdlib.c mhitm.c \
|
||||
mhitu.c minion.c mklev.c mkmap.c mkmaze.c mkobj.c mkroom.c mon.c \
|
||||
mondata.c monmove.c monst.c mplayer.c mthrowu.c muse.c music.c \
|
||||
@@ -571,6 +571,7 @@ HACKINCL = align.h artifact.h artilist.h attrib.h botl.h \
|
||||
color.h config.h config1.h context.h coord.h cstd.h decl.h \
|
||||
defsym.h display.h dlb.h dungeon.h engrave.h extern.h flag.h \
|
||||
fnamesiz.h func_tab.h global.h warnings.h hack.h lint.h mextra.h \
|
||||
mcastu.h \
|
||||
micro.h mfndpos.h mkroom.h monattk.h mondata.h monflag.h monst.h \
|
||||
monsters.h nhmd4.h obj.h objects.h objclass.h optlist.h patchlevel.h \
|
||||
pcconf.h permonst.h prop.h rect.h region.h savefile.h selvar.h sym.h \
|
||||
@@ -597,21 +598,21 @@ HOBJ = $(TARGETPFX)allmain.o $(TARGETPFX)alloc.o \
|
||||
$(TARGETPFX)dlb.o $(TARGETPFX)do.o $(TARGETPFX)do_name.o \
|
||||
$(TARGETPFX)do_wear.o $(TARGETPFX)dog.o $(TARGETPFX)dogmove.o \
|
||||
$(TARGETPFX)dokick.o $(TARGETPFX)dothrow.o $(TARGETPFX)drawing.o \
|
||||
$(TARGETPFX)dungeon.o $(TARGETPFX)eat.o $(TARGETPFX)end.o \
|
||||
$(TARGETPFX)engrave.o $(TARGETPFX)exper.o $(TARGETPFX)explode.o \
|
||||
$(TARGETPFX)extralev.o $(TARGETPFX)files.o $(TARGETPFX)fountain.o \
|
||||
$(TARGETPFX)getpos.o $(TARGETPFX)glyphs.o $(TARGETPFX)hack.o \
|
||||
$(TARGETPFX)insight.o $(TARGETPFX)invent.o $(TARGETPFX)isaac64.o \
|
||||
$(TARGETPFX)light.o $(TARGETPFX)lock.o $(TARGETPFX)mail.o \
|
||||
$(TARGETPFX)makemon.o $(TARGETPFX)mcastu.o $(TARGETPFX)mdlib.o \
|
||||
$(TARGETPFX)mhitm.o $(TARGETPFX)mhitu.o $(TARGETPFX)minion.o \
|
||||
$(TARGETPFX)mklev.o $(TARGETPFX)mkmap.o $(TARGETPFX)mkmaze.o \
|
||||
$(TARGETPFX)mkobj.o $(TARGETPFX)mkroom.o $(TARGETPFX)mon.o \
|
||||
$(TARGETPFX)mondata.o $(TARGETPFX)monmove.o $(TARGETPFX)monst.o \
|
||||
$(TARGETPFX)mplayer.o $(TARGETPFX)mthrowu.o $(TARGETPFX)muse.o \
|
||||
$(TARGETPFX)music.o $(TARGETPFX)nhlua.o $(TARGETPFX)nhlsel.o \
|
||||
$(TARGETPFX)nhlobj.o $(TARGETPFX)nhmd4.o \
|
||||
$(TARGETPFX)objects.o $(TARGETPFX)o_init.o \
|
||||
$(TARGETPFX)dungeon.o $(TARGETPFX)earlyarg.o $(TARGETPFX)eat.o \
|
||||
$(TARGETPFX)end.o $(TARGETPFX)engrave.o $(TARGETPFX)exper.o \
|
||||
$(TARGETPFX)explode.o $(TARGETPFX)extralev.o $(TARGETPFX)files.o \
|
||||
$(TARGETPFX)fountain.o $(TARGETPFX)getpos.o $(TARGETPFX)glyphs.o \
|
||||
$(TARGETPFX)hack.o $(TARGETPFX)iactions.o $(TARGETPFX)insight.o \
|
||||
$(TARGETPFX)invent.o $(TARGETPFX)isaac64.o $(TARGETPFX)light.o \
|
||||
$(TARGETPFX)lock.o $(TARGETPFX)mail.o $(TARGETPFX)makemon.o \
|
||||
$(TARGETPFX)mcastu.o $(TARGETPFX)mdlib.o $(TARGETPFX)mhitm.o \
|
||||
$(TARGETPFX)mhitu.o $(TARGETPFX)minion.o $(TARGETPFX)mklev.o \
|
||||
$(TARGETPFX)mkmap.o $(TARGETPFX)mkmaze.o $(TARGETPFX)mkobj.o \
|
||||
$(TARGETPFX)mkroom.o $(TARGETPFX)mon.o $(TARGETPFX)mondata.o \
|
||||
$(TARGETPFX)monmove.o $(TARGETPFX)monst.o $(TARGETPFX)mplayer.o \
|
||||
$(TARGETPFX)mthrowu.o $(TARGETPFX)muse.o $(TARGETPFX)music.o \
|
||||
$(TARGETPFX)nhlua.o $(TARGETPFX)nhlsel.o $(TARGETPFX)nhlobj.o \
|
||||
$(TARGETPFX)nhmd4.o $(TARGETPFX)objects.o $(TARGETPFX)o_init.o \
|
||||
$(TARGETPFX)objnam.o $(TARGETPFX)options.o $(TARGETPFX)pager.o \
|
||||
$(TARGETPFX)pickup.o $(TARGETPFX)pline.o $(TARGETPFX)polyself.o \
|
||||
$(TARGETPFX)potion.o $(TARGETPFX)pray.o $(TARGETPFX)priest.o \
|
||||
@@ -642,7 +643,11 @@ DATE_O = $(TARGETPFX)date.o
|
||||
all: $(GAME)
|
||||
@echo ""
|
||||
|
||||
pregame:
|
||||
create_responsefiles:
|
||||
echo $(CC_COMPILER_SWITCHES) >$(CC_RESPONSEFILE)
|
||||
echo $(CXX_COMPILER_SWITCHES) >$(CXX_RESPONSEFILE)
|
||||
|
||||
pregame: $(RESPONSEFILES)
|
||||
$(PREGAME)
|
||||
|
||||
$(GAME): pregame $(MAKEDEFS) $(LUALIB) $(WAVS) $(SYSTEM)
|
||||
@@ -807,7 +812,8 @@ tags: $(CSOURCES)
|
||||
clean:
|
||||
-rm -f *.o $(HACK_H) $(CONFIG_H)
|
||||
-rm -f monstr.c vis_tab.c ../include/vis_tab.h #obsolete generated files
|
||||
true; $(CLEANMORE)
|
||||
-true; $(CLEANMORE)
|
||||
true; $(CLEAN_CC_RESPONSEFILE) $(CLEAN_CXX_RESPONSEFILE)
|
||||
|
||||
spotless: clean
|
||||
-rm -f a.out core $(HACKLIB) $(GAMEBIN) Sys*
|
||||
@@ -890,6 +896,7 @@ $(HACK_H): $(CONFIG_H) ../include/align.h ../include/artilist.h \
|
||||
../include/decl.h ../include/defsym.h ../include/display.h \
|
||||
../include/dungeon.h ../include/engrave.h ../include/flag.h \
|
||||
../include/hack.h ../include/lint.h ../include/mextra.h \
|
||||
../include/mcastu.h \
|
||||
../include/mkroom.h ../include/monattk.h ../include/mondata.h \
|
||||
../include/monflag.h ../include/monst.h ../include/monsters.h \
|
||||
../include/nhlua.h ../include/obj.h ../include/objclass.h \
|
||||
@@ -1158,6 +1165,7 @@ $(TARGETPFX)drawing.o: drawing.c $(CONFIG_H) ../include/defsym.h \
|
||||
../include/sym.h ../include/wintype.h
|
||||
$(TARGETPFX)dungeon.o: dungeon.c $(HACK_H) ../include/dgn_file.h \
|
||||
../include/dlb.h
|
||||
$(TARGETPFX)earlyarg.o: earlyarg.c $(HACK_H)
|
||||
$(TARGETPFX)eat.o: eat.c $(HACK_H)
|
||||
$(TARGETPFX)end.o: end.c $(HACK_H) ../include/dlb.h
|
||||
$(TARGETPFX)engrave.o: engrave.c $(HACK_H)
|
||||
@@ -1171,6 +1179,7 @@ $(TARGETPFX)getpos.o: getpos.c $(HACK_H)
|
||||
$(TARGETPFX)glyphs.o: glyphs.c $(HACK_H)
|
||||
$(TARGETPFX)hack.o: hack.c $(HACK_H)
|
||||
$(TARGETPFX)hacklib.o: hacklib.c $(HACK_H)
|
||||
$(TARGETPFX)iactions.o: iactions.c $(HACK_H)
|
||||
$(TARGETPFX)insight.o: insight.c $(HACK_H)
|
||||
$(TARGETPFX)invent.o: invent.c $(HACK_H)
|
||||
$(TARGETPFX)isaac64.o: isaac64.c $(CONFIG_H) ../include/isaac64.h
|
||||
@@ -1178,7 +1187,7 @@ $(TARGETPFX)light.o: light.c $(HACK_H)
|
||||
$(TARGETPFX)lock.o: lock.c $(HACK_H)
|
||||
$(TARGETPFX)mail.o: mail.c $(HACK_H) ../include/mail.h
|
||||
$(TARGETPFX)makemon.o: makemon.c $(HACK_H)
|
||||
$(TARGETPFX)mcastu.o: mcastu.c $(HACK_H)
|
||||
$(TARGETPFX)mcastu.o: mcastu.c $(HACK_H) ../include/mcastu.h
|
||||
$(TARGETPFX)mdlib.o: mdlib.c $(CONFIG_H) ../include/align.h \
|
||||
../include/artilist.h ../include/attrib.h \
|
||||
../include/context.h ../include/defsym.h ../include/dlb.h \
|
||||
|
||||
@@ -85,7 +85,7 @@ VARDAT = $(VARDATD) $(VARDATND)
|
||||
#CHGRP = chgrp
|
||||
|
||||
# Lua version
|
||||
LUA_VERSION = 5.4.6
|
||||
LUA_VERSION = 5.4.8
|
||||
|
||||
#
|
||||
# end of configuration
|
||||
@@ -440,6 +440,8 @@ update: $(PRECHECK) $(GAME) recover $(VARDAT) spec_levs sys/unix/sysconf
|
||||
touch $(VARDIR)/perm $(VARDIR)/record
|
||||
# sysconf, but only if it does not exist
|
||||
true; $(SYSCONFENSURE)
|
||||
# other steps from hints file
|
||||
true; $(POSTUPDATE)
|
||||
# and a reminder
|
||||
@echo You may also want to install the man pages via the doc Makefile.
|
||||
|
||||
|
||||
@@ -394,8 +394,10 @@ $(TARGETPFX)sf-version.o: ../src/version.c $(HACK_H)
|
||||
$(TARGETPFX)sf-worm.o: ../src/worm.c $(HACK_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(SFFLAGS) -o $@ -c ../src/worm.c
|
||||
|
||||
sftags: sftags.o $(HACKLIB)
|
||||
$(CLINK) $(LFLAGS) -o $@ sftags.o $(HACKLIB) $(LIBS)
|
||||
sftags: sftags.o $(HACKLIB) $(TARGETPFX)sf-alloc.o $(TARGETPFX)panic.o
|
||||
$(CLINK) $(LFLAGS) -o $@ sftags.o \
|
||||
$(TARGETPFX)sf-alloc.o $(TARGETPFX)panic.o \
|
||||
$(HACKLIB) $(LIBS)
|
||||
sftags.o: sftags.c $(HACK_H)
|
||||
$(CC) $(CFLAGS) -c sftags.c
|
||||
../include/sfproto.h: sf.tags sftags
|
||||
|
||||
@@ -202,12 +202,14 @@
|
||||
BAE8015627B99CAE002B3786 /* lstrlib.c in Sources */ = {isa = PBXBuildFile; fileRef = BAE8013427B99CAD002B3786 /* lstrlib.c */; };
|
||||
BAE8015727B99CAE002B3786 /* lzio.c in Sources */ = {isa = PBXBuildFile; fileRef = BAE8013527B99CAD002B3786 /* lzio.c */; };
|
||||
BAE8015A27B9C872002B3786 /* date.c in Sources */ = {isa = PBXBuildFile; fileRef = 5439B3BB275AADC600B8FB2F /* date.c */; };
|
||||
F50818312F6F564300D2AAFA /* iactions.c in Sources */ = {isa = PBXBuildFile; fileRef = F50818302F6F564300D2AAFA /* iactions.c */; };
|
||||
F5457B212DED146B00039D83 /* hacklib.c in Sources */ = {isa = PBXBuildFile; fileRef = F5457B202DED146B00039D83 /* hacklib.c */; };
|
||||
F5457B2C2DED16F200039D83 /* libhacklib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5457B1C2DED143E00039D83 /* libhacklib.a */; };
|
||||
F5457B2D2DED171800039D83 /* libhacklib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5457B1C2DED143E00039D83 /* libhacklib.a */; };
|
||||
F5857AA22DED026700A8CB4F /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 31B8A32721A238010055BD01 /* version.c */; };
|
||||
F5857AA42DED032D00A8CB4F /* cfgfiles.c in Sources */ = {isa = PBXBuildFile; fileRef = F5857AA32DED032C00A8CB4F /* cfgfiles.c */; };
|
||||
F5857AA62DED03BB00A8CB4F /* sfbase.c in Sources */ = {isa = PBXBuildFile; fileRef = F5857AA52DED03BB00A8CB4F /* sfbase.c */; };
|
||||
F5E66A222F7D4B30000E30B7 /* earlyarg.c in Sources */ = {isa = PBXBuildFile; fileRef = F5E66A212F7D4B30000E30B7 /* earlyarg.c */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -561,40 +563,41 @@
|
||||
54FB2B4A246310A600397C0E /* symbols.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = symbols.c; path = ../../src/symbols.c; sourceTree = "<group>"; };
|
||||
54FCE8282223261F00F393C8 /* isaac64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = isaac64.c; path = ../../src/isaac64.c; sourceTree = "<group>"; };
|
||||
BAE8010A27B97760002B3786 /* libnhlua.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libnhlua.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
BAE8011427B99CAB002B3786 /* lopcodes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lopcodes.c; path = "../../lib/lua-5.4.6/src/lopcodes.c"; sourceTree = "<group>"; };
|
||||
BAE8011527B99CAB002B3786 /* linit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = linit.c; path = "../../lib/lua-5.4.6/src/linit.c"; sourceTree = "<group>"; };
|
||||
BAE8011627B99CAB002B3786 /* lobject.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lobject.c; path = "../../lib/lua-5.4.6/src/lobject.c"; sourceTree = "<group>"; };
|
||||
BAE8011727B99CAC002B3786 /* loslib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = loslib.c; path = "../../lib/lua-5.4.6/src/loslib.c"; sourceTree = "<group>"; };
|
||||
BAE8011827B99CAC002B3786 /* lcorolib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lcorolib.c; path = "../../lib/lua-5.4.6/src/lcorolib.c"; sourceTree = "<group>"; };
|
||||
BAE8011927B99CAC002B3786 /* lutf8lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lutf8lib.c; path = "../../lib/lua-5.4.6/src/lutf8lib.c"; sourceTree = "<group>"; };
|
||||
BAE8011A27B99CAC002B3786 /* ltable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ltable.c; path = "../../lib/lua-5.4.6/src/ltable.c"; sourceTree = "<group>"; };
|
||||
BAE8011B27B99CAC002B3786 /* ltablib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ltablib.c; path = "../../lib/lua-5.4.6/src/ltablib.c"; sourceTree = "<group>"; };
|
||||
BAE8011C27B99CAC002B3786 /* llex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = llex.c; path = "../../lib/lua-5.4.6/src/llex.c"; sourceTree = "<group>"; };
|
||||
BAE8011D27B99CAC002B3786 /* lcode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lcode.c; path = "../../lib/lua-5.4.6/src/lcode.c"; sourceTree = "<group>"; };
|
||||
BAE8011E27B99CAC002B3786 /* lua.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lua.c; path = "../../lib/lua-5.4.6/src/lua.c"; sourceTree = "<group>"; };
|
||||
BAE8011F27B99CAC002B3786 /* ldo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ldo.c; path = "../../lib/lua-5.4.6/src/ldo.c"; sourceTree = "<group>"; };
|
||||
BAE8012027B99CAC002B3786 /* ldump.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ldump.c; path = "../../lib/lua-5.4.6/src/ldump.c"; sourceTree = "<group>"; };
|
||||
BAE8012127B99CAC002B3786 /* lparser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lparser.c; path = "../../lib/lua-5.4.6/src/lparser.c"; sourceTree = "<group>"; };
|
||||
BAE8012227B99CAC002B3786 /* lstate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lstate.c; path = "../../lib/lua-5.4.6/src/lstate.c"; sourceTree = "<group>"; };
|
||||
BAE8012327B99CAC002B3786 /* lapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lapi.c; path = "../../lib/lua-5.4.6/src/lapi.c"; sourceTree = "<group>"; };
|
||||
BAE8012427B99CAC002B3786 /* ldebug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ldebug.c; path = "../../lib/lua-5.4.6/src/ldebug.c"; sourceTree = "<group>"; };
|
||||
BAE8012527B99CAC002B3786 /* lstring.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lstring.c; path = "../../lib/lua-5.4.6/src/lstring.c"; sourceTree = "<group>"; };
|
||||
BAE8012627B99CAC002B3786 /* ltm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ltm.c; path = "../../lib/lua-5.4.6/src/ltm.c"; sourceTree = "<group>"; };
|
||||
BAE8012727B99CAC002B3786 /* lmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lmem.c; path = "../../lib/lua-5.4.6/src/lmem.c"; sourceTree = "<group>"; };
|
||||
BAE8012827B99CAC002B3786 /* lvm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lvm.c; path = "../../lib/lua-5.4.6/src/lvm.c"; sourceTree = "<group>"; };
|
||||
BAE8012927B99CAC002B3786 /* lfunc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lfunc.c; path = "../../lib/lua-5.4.6/src/lfunc.c"; sourceTree = "<group>"; };
|
||||
BAE8012A27B99CAC002B3786 /* lgc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lgc.c; path = "../../lib/lua-5.4.6/src/lgc.c"; sourceTree = "<group>"; };
|
||||
BAE8012B27B99CAD002B3786 /* lundump.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lundump.c; path = "../../lib/lua-5.4.6/src/lundump.c"; sourceTree = "<group>"; };
|
||||
BAE8012C27B99CAD002B3786 /* lbaselib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lbaselib.c; path = "../../lib/lua-5.4.6/src/lbaselib.c"; sourceTree = "<group>"; };
|
||||
BAE8012D27B99CAD002B3786 /* ldblib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ldblib.c; path = "../../lib/lua-5.4.6/src/ldblib.c"; sourceTree = "<group>"; };
|
||||
BAE8012E27B99CAD002B3786 /* lauxlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lauxlib.c; path = "../../lib/lua-5.4.6/src/lauxlib.c"; sourceTree = "<group>"; };
|
||||
BAE8012F27B99CAD002B3786 /* liolib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = liolib.c; path = "../../lib/lua-5.4.6/src/liolib.c"; sourceTree = "<group>"; };
|
||||
BAE8013027B99CAD002B3786 /* lctype.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lctype.c; path = "../../lib/lua-5.4.6/src/lctype.c"; sourceTree = "<group>"; };
|
||||
BAE8013127B99CAD002B3786 /* luac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = luac.c; path = "../../lib/lua-5.4.6/src/luac.c"; sourceTree = "<group>"; };
|
||||
BAE8013227B99CAD002B3786 /* loadlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = loadlib.c; path = "../../lib/lua-5.4.6/src/loadlib.c"; sourceTree = "<group>"; };
|
||||
BAE8013327B99CAD002B3786 /* lmathlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lmathlib.c; path = "../../lib/lua-5.4.6/src/lmathlib.c"; sourceTree = "<group>"; };
|
||||
BAE8013427B99CAD002B3786 /* lstrlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lstrlib.c; path = "../../lib/lua-5.4.6/src/lstrlib.c"; sourceTree = "<group>"; };
|
||||
BAE8013527B99CAD002B3786 /* lzio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lzio.c; path = "../../lib/lua-5.4.6/src/lzio.c"; sourceTree = "<group>"; };
|
||||
BAE8011427B99CAB002B3786 /* lopcodes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lopcodes.c; path = "../../lib/lua-5.4.8/src/lopcodes.c"; sourceTree = "<group>"; };
|
||||
BAE8011527B99CAB002B3786 /* linit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = linit.c; path = "../../lib/lua-5.4.8/src/linit.c"; sourceTree = "<group>"; };
|
||||
BAE8011627B99CAB002B3786 /* lobject.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lobject.c; path = "../../lib/lua-5.4.8/src/lobject.c"; sourceTree = "<group>"; };
|
||||
BAE8011727B99CAC002B3786 /* loslib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = loslib.c; path = "../../lib/lua-5.4.8/src/loslib.c"; sourceTree = "<group>"; };
|
||||
BAE8011827B99CAC002B3786 /* lcorolib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lcorolib.c; path = "../../lib/lua-5.4.8/src/lcorolib.c"; sourceTree = "<group>"; };
|
||||
BAE8011927B99CAC002B3786 /* lutf8lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lutf8lib.c; path = "../../lib/lua-5.4.8/src/lutf8lib.c"; sourceTree = "<group>"; };
|
||||
BAE8011A27B99CAC002B3786 /* ltable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ltable.c; path = "../../lib/lua-5.4.8/src/ltable.c"; sourceTree = "<group>"; };
|
||||
BAE8011B27B99CAC002B3786 /* ltablib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ltablib.c; path = "../../lib/lua-5.4.8/src/ltablib.c"; sourceTree = "<group>"; };
|
||||
BAE8011C27B99CAC002B3786 /* llex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = llex.c; path = "../../lib/lua-5.4.8/src/llex.c"; sourceTree = "<group>"; };
|
||||
BAE8011D27B99CAC002B3786 /* lcode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lcode.c; path = "../../lib/lua-5.4.8/src/lcode.c"; sourceTree = "<group>"; };
|
||||
BAE8011E27B99CAC002B3786 /* lua.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lua.c; path = "../../lib/lua-5.4.8/src/lua.c"; sourceTree = "<group>"; };
|
||||
BAE8011F27B99CAC002B3786 /* ldo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ldo.c; path = "../../lib/lua-5.4.8/src/ldo.c"; sourceTree = "<group>"; };
|
||||
BAE8012027B99CAC002B3786 /* ldump.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ldump.c; path = "../../lib/lua-5.4.8/src/ldump.c"; sourceTree = "<group>"; };
|
||||
BAE8012127B99CAC002B3786 /* lparser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lparser.c; path = "../../lib/lua-5.4.8/src/lparser.c"; sourceTree = "<group>"; };
|
||||
BAE8012227B99CAC002B3786 /* lstate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lstate.c; path = "../../lib/lua-5.4.8/src/lstate.c"; sourceTree = "<group>"; };
|
||||
BAE8012327B99CAC002B3786 /* lapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lapi.c; path = "../../lib/lua-5.4.8/src/lapi.c"; sourceTree = "<group>"; };
|
||||
BAE8012427B99CAC002B3786 /* ldebug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ldebug.c; path = "../../lib/lua-5.4.8/src/ldebug.c"; sourceTree = "<group>"; };
|
||||
BAE8012527B99CAC002B3786 /* lstring.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lstring.c; path = "../../lib/lua-5.4.8/src/lstring.c"; sourceTree = "<group>"; };
|
||||
BAE8012627B99CAC002B3786 /* ltm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ltm.c; path = "../../lib/lua-5.4.8/src/ltm.c"; sourceTree = "<group>"; };
|
||||
BAE8012727B99CAC002B3786 /* lmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lmem.c; path = "../../lib/lua-5.4.8/src/lmem.c"; sourceTree = "<group>"; };
|
||||
BAE8012827B99CAC002B3786 /* lvm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lvm.c; path = "../../lib/lua-5.4.8/src/lvm.c"; sourceTree = "<group>"; };
|
||||
BAE8012927B99CAC002B3786 /* lfunc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lfunc.c; path = "../../lib/lua-5.4.8/src/lfunc.c"; sourceTree = "<group>"; };
|
||||
BAE8012A27B99CAC002B3786 /* lgc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lgc.c; path = "../../lib/lua-5.4.8/src/lgc.c"; sourceTree = "<group>"; };
|
||||
BAE8012B27B99CAD002B3786 /* lundump.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lundump.c; path = "../../lib/lua-5.4.8/src/lundump.c"; sourceTree = "<group>"; };
|
||||
BAE8012C27B99CAD002B3786 /* lbaselib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lbaselib.c; path = "../../lib/lua-5.4.8/src/lbaselib.c"; sourceTree = "<group>"; };
|
||||
BAE8012D27B99CAD002B3786 /* ldblib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ldblib.c; path = "../../lib/lua-5.4.8/src/ldblib.c"; sourceTree = "<group>"; };
|
||||
BAE8012E27B99CAD002B3786 /* lauxlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lauxlib.c; path = "../../lib/lua-5.4.8/src/lauxlib.c"; sourceTree = "<group>"; };
|
||||
BAE8012F27B99CAD002B3786 /* liolib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = liolib.c; path = "../../lib/lua-5.4.8/src/liolib.c"; sourceTree = "<group>"; };
|
||||
BAE8013027B99CAD002B3786 /* lctype.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lctype.c; path = "../../lib/lua-5.4.8/src/lctype.c"; sourceTree = "<group>"; };
|
||||
BAE8013127B99CAD002B3786 /* luac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = luac.c; path = "../../lib/lua-5.4.8/src/luac.c"; sourceTree = "<group>"; };
|
||||
BAE8013227B99CAD002B3786 /* loadlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = loadlib.c; path = "../../lib/lua-5.4.8/src/loadlib.c"; sourceTree = "<group>"; };
|
||||
BAE8013327B99CAD002B3786 /* lmathlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lmathlib.c; path = "../../lib/lua-5.4.8/src/lmathlib.c"; sourceTree = "<group>"; };
|
||||
BAE8013427B99CAD002B3786 /* lstrlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lstrlib.c; path = "../../lib/lua-5.4.8/src/lstrlib.c"; sourceTree = "<group>"; };
|
||||
BAE8013527B99CAD002B3786 /* lzio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lzio.c; path = "../../lib/lua-5.4.8/src/lzio.c"; sourceTree = "<group>"; };
|
||||
F50818302F6F564300D2AAFA /* iactions.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = iactions.c; path = ../../src/iactions.c; sourceTree = "<group>"; };
|
||||
F515A6F32DED074D006E1F63 /* sfctool.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = sfctool.c; path = ../../util/sfctool.c; sourceTree = "<group>"; };
|
||||
F515A6F52DED0916006E1F63 /* date.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = date.c; path = ../../src/date.c; sourceTree = "<group>"; };
|
||||
F515A6F62DED0916006E1F63 /* sfbase.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = sfbase.c; path = ../../src/sfbase.c; sourceTree = "<group>"; };
|
||||
@@ -632,6 +635,7 @@
|
||||
F54C1AE42E43D22A006CAA8E /* sfprocs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = sfprocs.h; path = ../../include/include/sfprocs.h; sourceTree = "<group>"; };
|
||||
F5857AA32DED032C00A8CB4F /* cfgfiles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cfgfiles.c; path = ../../src/cfgfiles.c; sourceTree = "<group>"; };
|
||||
F5857AA52DED03BB00A8CB4F /* sfbase.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = sfbase.c; path = ../../src/sfbase.c; sourceTree = "<group>"; };
|
||||
F5E66A212F7D4B30000E30B7 /* earlyarg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = earlyarg.c; path = ../../src/earlyarg.c; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
||||
@@ -691,6 +695,8 @@
|
||||
3189576821A1FCC100FB2ABE = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F5E66A212F7D4B30000E30B7 /* earlyarg.c */,
|
||||
F50818302F6F564300D2AAFA /* iactions.c */,
|
||||
F515A73B2DED0B47006E1F63 /* hacklib.c */,
|
||||
F5457B202DED146B00039D83 /* hacklib.c */,
|
||||
F515A72A2DED0A7C006E1F63 /* sftags.c */,
|
||||
@@ -1570,6 +1576,7 @@
|
||||
"$(NH_DAT_DIR)/bigrm-10.lua",
|
||||
"$(NH_DAT_DIR)/bigrm-11.lua",
|
||||
"$(NH_DAT_DIR)/bigrm-12.lua",
|
||||
"$(NH_DAT_DIR)/bigrm-13.lua",
|
||||
"$(NH_DAT_DIR)/bigrm-2.lua",
|
||||
"$(NH_DAT_DIR)/bigrm-3.lua",
|
||||
"$(NH_DAT_DIR)/bigrm-4.lua",
|
||||
@@ -1872,6 +1879,7 @@
|
||||
31B8A41321A23F650055BD01 /* version.c in Sources */,
|
||||
31B8A3BB21A238060055BD01 /* allmain.c in Sources */,
|
||||
31B8A39521A238060055BD01 /* windows.c in Sources */,
|
||||
F5E66A222F7D4B30000E30B7 /* earlyarg.c in Sources */,
|
||||
31B8A38621A238060055BD01 /* mondata.c in Sources */,
|
||||
31B8A41921A244940055BD01 /* objects.c in Sources */,
|
||||
31B8A3AA21A238060055BD01 /* wizard.c in Sources */,
|
||||
@@ -1979,6 +1987,7 @@
|
||||
31B8A38421A238060055BD01 /* do_name.c in Sources */,
|
||||
31B8A3C421A238060055BD01 /* apply.c in Sources */,
|
||||
31B8A3F721A23DD10055BD01 /* unixres.c in Sources */,
|
||||
F50818312F6F564300D2AAFA /* iactions.c in Sources */,
|
||||
31B8A3BD21A238060055BD01 /* files.c in Sources */,
|
||||
31B8A39221A238060055BD01 /* do_wear.c in Sources */,
|
||||
31B8A3E521A238B30055BD01 /* dlb.c in Sources */,
|
||||
@@ -2189,7 +2198,7 @@
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../include";
|
||||
LUA_VERSION = 5.4.6;
|
||||
LUA_VERSION = 5.4.8;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
@@ -2272,7 +2281,7 @@
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../include";
|
||||
LUA_VERSION = 5.4.6;
|
||||
LUA_VERSION = 5.4.8;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
|
||||
@@ -104,7 +104,8 @@ additional interfaces. See below.
|
||||
| | | | support in your build. |
|
||||
| | | | |
|
||||
| | | | One possible way: |
|
||||
| | | | brew install Qt |
|
||||
| | | | brew install pkg-config |
|
||||
| | | | brew install Qt6 |
|
||||
|----------+-------+-----------------+--------------------------------------|
|
||||
| Linux | tty | WANT_WIN_TTY | |
|
||||
| (Ubuntu) | | | |
|
||||
|
||||
@@ -49,7 +49,10 @@ make musl=1 Build with settings appropriate for linking with
|
||||
musl libc, instead of glibc. This causes
|
||||
NOCRASHREPORT to be defined, and avoids the use
|
||||
of 'col' during the build.
|
||||
|
||||
make resp=1 Place the majority of the compiler switches into
|
||||
a response file to de-clutter the build compiler
|
||||
command lines and eliminate some of the
|
||||
unsightly wrapping that occurs.
|
||||
make CROSS_TO_MSDOS=1 package Cross-compile for an MSDOS target package.
|
||||
make CROSS_TO_WASM=1 Cross-compile for a WASM target.
|
||||
make CROSS_TO_MIPS=1 Cross-compile for a mips target.
|
||||
|
||||
@@ -55,6 +55,7 @@ CFLAGS+=-Wall -Wextra \
|
||||
CFLAGS+=-pedantic
|
||||
CFLAGS+=-Wmissing-declarations
|
||||
#CFLAGS+=-Wformat=2
|
||||
#CFLAGS+=-Wdiscarded-qualifiers
|
||||
|
||||
# these are left out of the C++ flags
|
||||
CFLAGS+=-Wformat-nonliteral
|
||||
@@ -98,6 +99,7 @@ CXX=clang++ -std=gnu++11
|
||||
# clang-specific follows
|
||||
CLANGGTEQ12 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 12)
|
||||
CLANGGTEQ14 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 14)
|
||||
CLANGGTEQ21 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 21)
|
||||
ifeq "$(CLANGGTEQ12)" "1"
|
||||
CFLAGS+=-Wimplicit-fallthrough
|
||||
endif
|
||||
@@ -109,6 +111,9 @@ else
|
||||
# older versions complain about things newer ones don't without this
|
||||
CFLAGS+=-Wno-missing-field-initializers
|
||||
endif
|
||||
ifeq "$(CLANGGTEQ21)" "1"
|
||||
CFLAGS+=-Wno-deprecated-octal-literals
|
||||
endif
|
||||
# none
|
||||
endif # clang-specific ends here
|
||||
|
||||
@@ -230,6 +235,20 @@ ifeq "$(C23)" "1"
|
||||
HAVECSTD=c2x
|
||||
endif
|
||||
|
||||
ifeq "$(c2x)" "1"
|
||||
HAVECSTD=c2x
|
||||
endif
|
||||
ifeq "$(C2X)" "1"
|
||||
HAVECSTD=c2x
|
||||
endif
|
||||
|
||||
ifeq "$(c2y)" "1"
|
||||
HAVECSTD=c2y
|
||||
endif
|
||||
ifeq "$(C2Y)" "1"
|
||||
HAVECSTD=c2y
|
||||
endif
|
||||
|
||||
ifneq "$(HAVECSTD)" ""
|
||||
CSTD = -std=$(HAVECSTD)
|
||||
endif
|
||||
|
||||
@@ -57,14 +57,14 @@ dospkg: dodata dosfonts $(GAMEBIN) $(TARGETPFX)recover.exe ../dat/nhtiles.bmp
|
||||
cp ../sys/share/NetHack.cnf $(TARGETPFX)pkg/NETHACK.CNF
|
||||
cp ../sys/msdos/sysconf $(TARGETPFX)pkg/SYSCONF
|
||||
cp ../doc/nethack.txt $(TARGETPFX)pkg/NETHACK.TXT
|
||||
cp $(DOSFONT)/ter-u16b.psf $(TARGETPFX)pkg/TER-U16B.PSF
|
||||
cp $(DOSFONT)/ter-u16v.psf $(TARGETPFX)pkg/TER-U16V.PSF
|
||||
cp $(DOSFONT)/ter-u18b.psf $(TARGETPFX)pkg/TER-U18B.PSF
|
||||
cp $(DOSFONT)/ter-u20b.psf $(TARGETPFX)pkg/TER-U20B.PSF
|
||||
cp $(DOSFONT)/ter-u22b.psf $(TARGETPFX)pkg/TER-U22B.PSF
|
||||
cp $(DOSFONT)/ter-u24b.psf $(TARGETPFX)pkg/TER-U24B.PSF
|
||||
cp $(DOSFONT)/ter-u28b.psf $(TARGETPFX)pkg/TER-U28B.PSF
|
||||
cp $(DOSFONT)/ter-u32b.psf $(TARGETPFX)pkg/TER-U32B.PSF
|
||||
-cp $(DOSFONT)/ter-u16b.psf $(TARGETPFX)pkg/TER-U16B.PSF
|
||||
-cp $(DOSFONT)/ter-u16v.psf $(TARGETPFX)pkg/TER-U16V.PSF
|
||||
-cp $(DOSFONT)/ter-u18b.psf $(TARGETPFX)pkg/TER-U18B.PSF
|
||||
-cp $(DOSFONT)/ter-u20b.psf $(TARGETPFX)pkg/TER-U20B.PSF
|
||||
-cp $(DOSFONT)/ter-u22b.psf $(TARGETPFX)pkg/TER-U22B.PSF
|
||||
-cp $(DOSFONT)/ter-u24b.psf $(TARGETPFX)pkg/TER-U24B.PSF
|
||||
-cp $(DOSFONT)/ter-u28b.psf $(TARGETPFX)pkg/TER-U28B.PSF
|
||||
-cp $(DOSFONT)/ter-u32b.psf $(TARGETPFX)pkg/TER-U32B.PSF
|
||||
cp ../lib/djgpp/cwsdpmi/bin/CWSDPMI.EXE $(TARGETPFX)pkg/CWSDPMI.EXE
|
||||
( if [ -f ../lib/djgpp/target/bin/symify.exe ]; then \
|
||||
cp ../lib/djgpp/target/bin/symify.exe $(TARGETPFX)pkg/SYMIFY.EXE; \
|
||||
@@ -229,6 +229,113 @@ mipspkg: dodata $(GAMEBIN) $(TARGETPFX)recover
|
||||
@echo MIPS package zip file $(TARGETPFX)nh370mips.zip
|
||||
endif # CROSS_TO_MIPS
|
||||
|
||||
|
||||
ifdef CROSS_TO_AMIGA
|
||||
$(TARGETPFX)amidos.o : ../sys/amiga/amidos.c $(HACK_H)
|
||||
$(TARGETPFX)amigst.o : ../sys/amiga/amigst.c $(HACK_H)
|
||||
$(TARGETPFX)amirip.o : ../sys/amiga/amirip.c $(HACK_H)
|
||||
$(TARGETPFX)amistack.o : ../sys/amiga/amistack.c $(HACK_H)
|
||||
$(TARGETPFX)amitty.o : ../sys/amiga/amitty.c $(HACK_H)
|
||||
$(TARGETPFX)amiwind.o : ../sys/amiga/amiwind.c \
|
||||
../sys/amiga/amimenu.c $(HACK_H)
|
||||
$(TARGETPFX)winami.o : ../sys/amiga/winami.c $(HACK_H)
|
||||
$(TARGETPFX)winchar.o : ../sys/amiga/winchar.c tile.c $(HACK_H)
|
||||
$(TARGETPFX)winfuncs.o : ../sys/amiga/winfuncs.c $(HACK_H)
|
||||
$(TARGETPFX)winkey.o : ../sys/amiga/winkey.c $(HACK_H)
|
||||
$(TARGETPFX)winamenu.o : ../sys/amiga/winamenu.c $(HACK_H)
|
||||
$(TARGETPFX)winreq.o : ../sys/amiga/winreq.c \
|
||||
../sys/amiga/colorwin.c \
|
||||
../sys/amiga/clipwin.c $(HACK_H)
|
||||
$(TARGETPFX)winstr.o : ../sys/amiga/winstr.c $(HACK_H)
|
||||
$(GAMEBIN) : $(HOBJ) $(LUACROSSLIB)
|
||||
$(TARGET_LINK) $(TARGET_LFLAGS) -o $(GAMEBIN) \
|
||||
$(HOBJ) $(WINLIB) $(TARGET_LIBS)
|
||||
#
|
||||
# Host-side IFF tile conversion tools (run on Linux, produce Amiga IFF files)
|
||||
#
|
||||
AMISRC = ../sys/amiga
|
||||
|
||||
$(TARGETPFX)xpm2iff_host: $(AMISRC)/xpm2iff_host.c
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(TARGETPFX)tomb.iff: $(AMISRC)/grave16.xpm $(TARGETPFX)xpm2iff_host
|
||||
$(TARGETPFX)xpm2iff_host $(AMISRC)/grave16.xpm $@
|
||||
|
||||
$(TARGETPFX)bmp2iff_host: $(AMISRC)/bmp2iff_host.c
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(TARGETPFX)tiles16.iff: ../dat/nhtiles.bmp $(TARGETPFX)bmp2iff_host
|
||||
$(TARGETPFX)bmp2iff_host -planes 4 ../dat/nhtiles.bmp $@
|
||||
$(TARGETPFX)tiles32.iff: ../dat/nhtiles.bmp $(TARGETPFX)bmp2iff_host
|
||||
$(TARGETPFX)bmp2iff_host -planes 5 ../dat/nhtiles.bmp $@
|
||||
|
||||
AMITILES = $(TARGETPFX)tiles16.iff $(TARGETPFX)tiles32.iff $(TARGETPFX)tomb.iff
|
||||
|
||||
AMIREGEX_URL = https://github.com/garyhouston/regex.git
|
||||
AMIREGEX_SRCDIR = $(AMISRC)/regex
|
||||
|
||||
.PHONY: fetch-regex amigapkg amitiles
|
||||
|
||||
fetch-regex:
|
||||
@DSTDIR=sys/amiga/regex; \
|
||||
if [ ! -d src ]; then DSTDIR=../$$DSTDIR; fi; \
|
||||
if [ -f $$DSTDIR/regcomp.c ]; then \
|
||||
echo "BSD regex already present"; \
|
||||
else \
|
||||
echo "Fetching BSD regex from $(AMIREGEX_URL)"; \
|
||||
tmpdir=$$(mktemp -d) && \
|
||||
git clone --depth 1 $(AMIREGEX_URL) $$tmpdir && \
|
||||
cd $$tmpdir && \
|
||||
sh ./mkh -p regcomp.c > regcomp.ih && \
|
||||
sh ./mkh -p engine.c > engine.ih && \
|
||||
sh ./mkh -p regexec.c > regexec.ih && \
|
||||
sh ./mkh -p regerror.c > regerror.ih && \
|
||||
sh ./mkh -i _REGEX_H_ regex2.h regcomp.c \
|
||||
regexec.c regerror.c regfree.c > regex.h && \
|
||||
cd - > /dev/null && \
|
||||
mkdir -p $$DSTDIR && \
|
||||
for f in regcomp.c regexec.c regerror.c regfree.c \
|
||||
engine.c regex.h regex2.h cclass.h cname.h \
|
||||
utils.h regcomp.ih engine.ih regexec.ih \
|
||||
regerror.ih \
|
||||
COPYRIGHT; do \
|
||||
cp $$tmpdir/$$f $$DSTDIR/; \
|
||||
done && \
|
||||
rm -rf $$tmpdir && \
|
||||
echo "BSD regex installed in $$DSTDIR"; \
|
||||
fi
|
||||
amitiles: $(AMITILES)
|
||||
|
||||
UUDECODE = ../util/uudecode
|
||||
|
||||
../util/uudecode: ../sys/share/uudecode.c
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
amigapkg: $(AMITILES) ../util/uudecode
|
||||
mkdir -p $(TARGETPFX)pkg/tiles $(TARGETPFX)pkg/hack
|
||||
cp $(GAMEBIN) $(TARGETPFX)pkg/nethack
|
||||
cp ../dat/nhdat $(TARGETPFX)pkg/nhdat
|
||||
cp ../dat/license $(TARGETPFX)pkg/license
|
||||
cp ../dat/symbols $(TARGETPFX)pkg/symbols
|
||||
cp $(TARGETPFX)tiles16.iff $(TARGETPFX)pkg/tiles/tiles16.iff
|
||||
cp $(TARGETPFX)tiles32.iff $(TARGETPFX)pkg/tiles/tiles32.iff
|
||||
cp $(TARGETPFX)tomb.iff $(TARGETPFX)pkg/tomb.iff
|
||||
cp ../sys/msdos/sysconf $(TARGETPFX)pkg/sysconf
|
||||
cp ../doc/nethack.txt $(TARGETPFX)pkg/nethack.txt
|
||||
( cd $(TARGETPFX)pkg && ../../../util/uudecode ../../../sys/amiga/amifont8.uu && mv 8 hack/8 )
|
||||
( cd $(TARGETPFX)pkg && ../../../util/uudecode ../../../sys/amiga/amifont.uu )
|
||||
cp $(AMISRC)/nethack.cnf $(TARGETPFX)pkg/nethack.cnf
|
||||
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/dflticon.uu && \
|
||||
../../../util/uudecode ../../../sys/amiga/dflticon.uu )
|
||||
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/NHinfo.uu && \
|
||||
../../../util/uudecode ../../../sys/amiga/NHinfo.uu )
|
||||
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/NewGame.uu && \
|
||||
../../../util/uudecode ../../../sys/amiga/NewGame.uu )
|
||||
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/HackWB.uu && \
|
||||
../../../util/uudecode ../../../sys/amiga/HackWB.uu )
|
||||
touch $(TARGETPFX)pkg/record
|
||||
( cd $(TARGETPFX)pkg && zip -9r ../NH370AMI.ZIP * )
|
||||
@echo amiga package zip file $(TARGETPFX)NH370AMI.ZIP
|
||||
endif # CROSS_TO_AMIGA
|
||||
|
||||
ifdef CROSS_SHARED
|
||||
# shared file dependencies
|
||||
$(TARGETPFX)pcmain.o : ../sys/share/pcmain.c $(HACK_H)
|
||||
|
||||
@@ -38,6 +38,16 @@ override TARGETPFX = $(TARGETDIR)/
|
||||
override TARGET_LIBS=
|
||||
endif
|
||||
|
||||
ifdef CROSS_TO_AMIGA
|
||||
CROSS=1
|
||||
BUILD_TARGET_LUA=1
|
||||
CROSS_SHARED=1
|
||||
override TARGET = amiga
|
||||
override TARGETDIR=../targets/$(TARGET)
|
||||
override TARGETPFX = $(TARGETDIR)/
|
||||
override TARGET_LIBS=
|
||||
endif
|
||||
|
||||
ifdef CROSS
|
||||
override PREGAME=
|
||||
override BUILDMORE=
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
ifdef BUILD_TARGET_LUA
|
||||
#===============-=================================================
|
||||
# LUA library
|
||||
# Source from http://www.lua.org/ftp/lua-5.4.6.tar.gz
|
||||
# Source from http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
||||
#=================================================================
|
||||
LUA_VERSION ?=5.4.6
|
||||
LUA_VERSION ?=5.4.8
|
||||
LUATOP ?= ../lib/lua-$(LUA_VERSION)
|
||||
LUASRCDIR ?= $(LUATOP)/src
|
||||
LUAOBJFILES1 = $(TARGETPFX)lapi.o $(TARGETPFX)lauxlib.o \
|
||||
@@ -119,7 +119,7 @@ ifdef CROSS_TO_MSDOS
|
||||
# 2. Then
|
||||
# make CROSS_TO_MSDOS=1 WANT_WIN_TTY=1 WANT_WIN_CURSES=1 all
|
||||
#
|
||||
# Source from http://www.lua.org/ftp/lua-5.4.6.tar.gz
|
||||
# Source from http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
||||
#=================================================================
|
||||
|
||||
CFLAGS += -DCROSSCOMPILE
|
||||
@@ -188,6 +188,7 @@ MSDOS_TARGET_CXXFLAGS = -c -O $(DBGFLAGS) -I../include -I../sys/msdos -I../win/s
|
||||
PDCINCL += -I$(PDCPORT)
|
||||
PDC_TARGET_CFLAGS = $(MSDOS_TARGET_CFLAGS) -Wno-unused-parameter \
|
||||
-Wno-missing-prototypes
|
||||
ifndef SKIP_FONTS_IN_CI
|
||||
FONTVER = terminus-font-4.49.1
|
||||
FONTTOP = ../lib/$(FONTVER)
|
||||
DOSFONT = ../sys/msdos/fonts
|
||||
@@ -195,6 +196,9 @@ FONTTARGETS = $(DOSFONT)/ter-u16b.psf $(DOSFONT)/ter-u16v.psf \
|
||||
$(DOSFONT)/ter-u18b.psf $(DOSFONT)/ter-u20b.psf \
|
||||
$(DOSFONT)/ter-u22b.psf $(DOSFONT)/ter-u24b.psf \
|
||||
$(DOSFONT)/ter-u28b.psf $(DOSFONT)/ter-u32b.psf
|
||||
else
|
||||
FONTTARGETS=
|
||||
endif
|
||||
LUABIN = ../lib/lua-$(LUA_VERSION)/src/lua
|
||||
LUA_TARGET_CFLAGS = $(MSDOS_TARGET_CFLAGS)
|
||||
override TARGET_CFLAGS = $(MSDOS_TARGET_CFLAGS) $(MSDOS_PEDANTIC)
|
||||
@@ -275,7 +279,7 @@ EMCC_LFLAGS += -s ALLOW_TABLE_GROWTH
|
||||
EMCC_LFLAGS += -s ASYNCIFY -s ASYNCIFY_IMPORTS='["local_callback"]'
|
||||
EMCC_LFLAGS += -O3
|
||||
EMCC_LFLAGS += -s MODULARIZE
|
||||
EMCC_LFLAGS += -s EXPORTED_FUNCTIONS='["_main", "_shim_graphics_set_callback", "_display_inventory", "_malloc"]'
|
||||
EMCC_LFLAGS += -s EXPORTED_FUNCTIONS='["_main", "_shim_graphics_set_callback", "_repopulate_perminvent", "_malloc"]'
|
||||
EMCC_LFLAGS += -s EXPORTED_RUNTIME_METHODS='["cwrap", "ccall", "addFunction", \
|
||||
"removeFunction", "UTF8ToString", "stringToUTF8", "getValue", \
|
||||
"setValue", "ENV", "FS", "IDBFS"]'
|
||||
@@ -456,6 +460,97 @@ NCURSES_PLATFORM=MIPS
|
||||
endif # CROSS_TO_MIPS
|
||||
#=================================================================
|
||||
|
||||
#=================================================================
|
||||
|
||||
ifdef CROSS_TO_AMIGA
|
||||
#===============-=================================================
|
||||
# AmigaOS m68k cross-compile recipe
|
||||
#===============-=================================================
|
||||
# Uses an Amiga M68K cross-compiler on linux or macOS.
|
||||
#
|
||||
# Cross-compiler: https://franke.ms/git/bebbo/amiga-gcc
|
||||
# Install to /opt/amiga, then:
|
||||
# sys/unix/setup.sh sys/unix/hints/linux.370
|
||||
# make fetch-lua
|
||||
# make CROSS_TO_AMIGA=1 fetch-regex
|
||||
# make CROSS_TO_AMIGA=1 all
|
||||
# make CROSS_TO_AMIGA=1 package
|
||||
#=================================================================
|
||||
|
||||
CFLAGS += -DCROSSCOMPILE
|
||||
|
||||
#
|
||||
# Override the build tools and some obj files to
|
||||
# reflect the amiga-gcc cross-compiler.
|
||||
#
|
||||
TOOLTOP = /opt/amiga/bin
|
||||
TOOLARCH = -m68000
|
||||
override REGEXOBJ = $(TARGETPFX)posixregex.o
|
||||
AMIREGEXOBJ = $(TARGETPFX)regcomp.o $(TARGETPFX)regexec.o \
|
||||
$(TARGETPFX)regerror.o $(TARGETPFX)regfree.o
|
||||
override TARGET_CC = $(TOOLTOP)/m68k-amigaos-gcc
|
||||
override TARGET_CXX = $(TOOLTOP)/m68k-amigaos-c++
|
||||
override TARGET_AR = $(TOOLTOP)/m68k-amigaos-ar
|
||||
override TARGET_STUBEDIT=
|
||||
override TARGET_CFLAGS = -c -O2 -noixemul $(TOOLARCH) \
|
||||
-include sys/types.h \
|
||||
-I../include \
|
||||
-I../sys/amiga -I../win/share \
|
||||
$(LUAINCL) -DAMIGA -DNOTTYGRAPHICS -DNO_TERMS -DNO_SIGNAL \
|
||||
-DTILES_IN_GLYPHMAP $(PDCURSESDEF) \
|
||||
-DCROSSCOMPILE -DCROSSCOMPILE_TARGET -DCROSS_TO_AMIGA \
|
||||
-DAMIGA_VERSION_STRING=\""VER: NetHack 3.7.0"\"
|
||||
override TARGET_CXXFLAGS = $(TARGET_CFLAGS)
|
||||
LUA_TARGET_CFLAGS = $(TARGET_CFLAGS)
|
||||
ifeq "$(REGEXOBJ)" "$(TARGETPFX)cppregex.o"
|
||||
override TARGET_LINK = $(TARGET_CXX)
|
||||
else
|
||||
override TARGET_LINK = $(TARGET_CC)
|
||||
endif
|
||||
override TARGET_LFLAGS= $(TOOLARCH) -noixemul -Wl,--allow-multiple-definition
|
||||
override TARGET_LIBS += $(LIBLM)
|
||||
VARDATND += nhtiles.bmp
|
||||
override SYSSRC = ../sys/amiga/amidos.c ../sys/amiga/amigst.c \
|
||||
../sys/amiga/amimenu.c ../sys/amiga/amirip.c \
|
||||
../sys/amiga/amistack.c ../sys/amiga/amitty.c \
|
||||
../sys/amiga/amiwind.c ../sys/amiga/clipwin.c \
|
||||
../sys/amiga/colorwin.c \
|
||||
../sys/amiga/winami.c ../sys/amiga/winchar.c \
|
||||
../sys/amiga/winfuncs.c ../sys/amiga/winkey.c \
|
||||
../sys/amiga/winamenu.c ../sys/amiga/winreq.c \
|
||||
../sys/amiga/winstr.c ../sys/share/pcmain.c \
|
||||
../win/share/bmptiles.c ../win/share/giftiles.c \
|
||||
../win/share/tileset.c
|
||||
override SYSOBJ = $(TARGETPFX)amidos.o $(TARGETPFX)amigst.o \
|
||||
$(TARGETPFX)amirip.o $(TARGETPFX)amistack.o \
|
||||
$(TARGETPFX)amitty.o $(TARGETPFX)amiwind.o \
|
||||
$(TARGETPFX)winami.o $(TARGETPFX)winchar.o \
|
||||
$(TARGETPFX)winfuncs.o $(TARGETPFX)winkey.o \
|
||||
$(TARGETPFX)winamenu.o $(TARGETPFX)winreq.o \
|
||||
$(TARGETPFX)winstr.o $(TARGETPFX)pcmain.o \
|
||||
$(TARGETPFX)bmptiles.o $(TARGETPFX)giftiles.o \
|
||||
$(TARGETPFX)tileset.o \
|
||||
$(AMIREGEXOBJ)
|
||||
override WINLIB=
|
||||
override LUALIB=
|
||||
override LUALIBS=
|
||||
override TOPLUALIB=
|
||||
override DLLIB=
|
||||
override WINOBJ=
|
||||
override GAMEBIN = $(TARGETPFX)nethack
|
||||
override PACKAGE = amigapkg
|
||||
override PREGAME += mkdir -p $(TARGETDIR) ;
|
||||
override CLEANMORE += rm -r $(TARGETDIR) ;
|
||||
#
|
||||
# Rule for files in sys/amiga
|
||||
$(TARGETPFX)%.o : ../sys/amiga/%.c
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) -o$@ $<
|
||||
# Rule for BSD regex in sys/amiga/regex
|
||||
$(TARGETPFX)%.o : ../sys/amiga/regex/%.c
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) -I../sys/amiga/regex -o$@ $<
|
||||
endif # CROSS_TO_AMIGA
|
||||
#=================================================================
|
||||
|
||||
ifdef WANT_WIN_CURSES
|
||||
ifdef BUILD_PDCURSES
|
||||
# Rules for PDCurses files
|
||||
|
||||
@@ -70,34 +70,38 @@ NROFF = mandoc
|
||||
MAN2TXTPRE = -T ascii
|
||||
MAN2TXTPOST= | col -b
|
||||
else
|
||||
#detection of groff
|
||||
NROFFISGROFF := $(shell echo `nroff --version | grep "GNU groff version"`)
|
||||
#
|
||||
# Detect groff.
|
||||
NROFFISGROFF := $(shell echo `nroff --version | grep -c 'GNU.*groff.*version'`)
|
||||
#$(info NROFFISGROFF=$(NROFFISGROFF))
|
||||
ifneq "$(NROFFISGROFF)" ""
|
||||
# get the version of groff and flag if it is gt or eq to 1.23
|
||||
GROFFGE123 := $(shell expr `echo $(NROFFISGROFF) | cut -f2 -d.` \>= 23)
|
||||
# or less than 1.24
|
||||
GROFFLT124 := $(shell expr `echo $(NROFFISGROFF) | cut -f2 -d.` \< 24)
|
||||
# -Wtab -Wrange are for the sake of tmac.n.
|
||||
NROFF_FLAGS := -wall -Wtab -Wrange
|
||||
ifneq "$(GROFFLT124)" ""
|
||||
NROFF_FLAGS += -Wel -Wscale
|
||||
endif
|
||||
endif # NROFFISGROFF
|
||||
ifneq "$(NROFFISGROFF)" "0"
|
||||
# Gather groff's minor version number (register `.y`).
|
||||
GROFFMINORVERSION := $(shell printf '.tm \\n[.y]\n' | nroff 2>&1)
|
||||
#$(info GROFFMINORVERSION=$(GROFFMINORVERSION))
|
||||
# Silence warnings produced by tmac.n, which NetHack does not modify.
|
||||
NROFF_FLAGS := -wall -Wrange -Wscale -Wtab
|
||||
# groff <= 1.23 also supported an "el" warning category that was buggy.
|
||||
GROFFLE123 := $(shell expr $(GROFFMINORVERSION) \<= 23)
|
||||
#$(info GROFFLE123=$(GROFFLE123))
|
||||
ifeq "$(GROFFLE123)" "1"
|
||||
NROFF_FLAGS += -Wel
|
||||
endif # end groff less than 1.23
|
||||
endif # end NROFFISGROFF
|
||||
# $(info NROFF_FLAGS=$(NROFF_FLAGS))
|
||||
|
||||
ifneq "$(NROFFISGROFF)" "" # It's groff
|
||||
# add the -Tascii flag used by groff
|
||||
MAN2TXTPRE += -Tascii
|
||||
ifneq "$(GROFFGE123)" "" # It's groff 1.23 or greater
|
||||
#$(info GROFFGE123=$(GROFFGE123))
|
||||
# nroff in groff 1.23 supports the -P option to pass arguments to the
|
||||
# output driver. -cbou are flags to grotty(1).
|
||||
GROFFGE123 := $(shell expr $(GROFFMINORVERSION) \>= 23)
|
||||
#$(info GROFFGE123=$(GROFFGE123))
|
||||
ifeq "$(GROFFGE123)" "1"
|
||||
MAN2TXTPRE += -P -cbou
|
||||
MAN2TXTPOST=
|
||||
else
|
||||
MAN2TXTPRE += -c
|
||||
# groff less than 1.23
|
||||
endif
|
||||
endif # end groff less than 1.23
|
||||
endif # end groff-specific
|
||||
endif # not USE_MANDOC
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
# - WINOBJ0
|
||||
#---
|
||||
# User selections could be specified as combinations of any of the following:
|
||||
# WIN_WANT_TTY=1, WIN_WANT_CURSES=1, WIN_WANT_QT=1, WIN_WANT_X11=1
|
||||
# WANT_WIN_TTY=1, WANT_WIN_CURSES=1, WANT_WIN_QT=1, WANT_WIN_X11=1
|
||||
# The selections will all be linked into the same binary.
|
||||
#
|
||||
# Assuming you have the prerequisite packages mentioned above, you can
|
||||
|
||||
33
sys/unix/hints/include/response.370
Normal file
33
sys/unix/hints/include/response.370
Normal file
@@ -0,0 +1,33 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# NetHack 3.7 response.370 $NHDT-Date: 1668359835 2022/11/13 17:17:15 $ $NHDT-Branch: NetHack-3.7 $
|
||||
|
||||
ifeq "$(RESP)" "1"
|
||||
USE_RESPONSEFILE=1
|
||||
endif
|
||||
ifeq "$(resp)" "1"
|
||||
USE_RESPONSEFILE=1
|
||||
endif
|
||||
ifeq "$(RESPONSE)" "1"
|
||||
USE_RESPONSEFILE=1
|
||||
endif
|
||||
ifeq "$(response)" "1"
|
||||
USE_RESPONSEFILE=1
|
||||
endif
|
||||
|
||||
ifeq "$(USE_RESPONSEFILE)" "1"
|
||||
RESPONSEFILES=create_responsefiles
|
||||
CXXFLAGS = $(CCXXFLAGS) -I. -I$(QTDIR)/include $(QTCXXFLAGS)
|
||||
CC_COMPILER_SWITCHES := $(subst \,\\,$(CFLAGS))
|
||||
CC_COMPILER_SWITCHES := $(subst ",\",$(CC_COMPILER_SWITCHES))
|
||||
CXX_COMPILER_SWITCHES := $(subst \,\\,$(CXXFLAGS))
|
||||
CXX_COMPILER_SWITCHES := $(subst ",\",$(CXX_COMPILER_SWITCHES))
|
||||
CC_RESPONSEFILE=../src/nethack_cc.rsp
|
||||
CXX_RESPONSEFILE=../src/nethack_cxx.rsp
|
||||
CFLAGS=@$(CC_RESPONSEFILE)
|
||||
CXXFLAGS=@$(CXX_RESPONSEFILE)
|
||||
CLEAN_CC_RESPONSEFILE=rm -f $(CC_RESPONSEFILE);
|
||||
CLEAN_CXX_RESPONSEFILE=rm -f $(CXX_RESPONSEFILE);
|
||||
endif
|
||||
|
||||
#end of response.370
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -390,13 +390,15 @@ endif #?WANT_SOURCE_INSTALL
|
||||
INSTDIR=$(HACKDIR)
|
||||
VARDIR = $(HACKDIR)
|
||||
|
||||
ifneq "$(CCISCLANG)" ""
|
||||
# gdb may not be installed if clang is chosen compiler so the game
|
||||
# won't start in that case due to a sysconf error. Comment out
|
||||
# relevant lines in sysconf.
|
||||
POSTINSTALL+= sed -i -e 's;^GDBPATH=/usr/bin/gdb;\#GDBPATH=/usr/bin/gdb;' \
|
||||
ifdef MAKEFILE_TOP
|
||||
TESTGDBPATH=/usr/bin/gdb
|
||||
POSTINSTALL+= test -f $(TESTGDBPATH) || \
|
||||
sed -i -e 's;^GDBPATH=/usr/bin/gdb;\#GDBPATH=/usr/bin/gdb;' \
|
||||
-e 's;PANICTRACE_GDB=1;PANICTRACE_GDB=0;' $(INSTDIR)/sysconf;
|
||||
endif
|
||||
POSTUPDATE+= test -f $(TESTGDBPATH) || \
|
||||
sed -i -e 's;^GDBPATH=/usr/bin/gdb;\#GDBPATH=/usr/bin/gdb;' \
|
||||
-e 's;PANICTRACE_GDB=1;PANICTRACE_GDB=0;' $(INSTDIR)/sysconf;
|
||||
endif #MAKEFILE_TOP
|
||||
|
||||
ifeq '$(USE_NONOSTATICFN)' '1'
|
||||
CFLAGS += -DNONOSTATICFN
|
||||
@@ -448,6 +450,10 @@ MANDIR=/usr/share/man/man6
|
||||
#-INCLUDE multisnd2-pre.370
|
||||
#
|
||||
|
||||
#
|
||||
#-INCLUDE response.370
|
||||
#
|
||||
|
||||
#-POST
|
||||
|
||||
#
|
||||
|
||||
@@ -281,12 +281,12 @@ WINLIB += $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig \
|
||||
pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --libs)
|
||||
endif # WANT_WIN_QT5
|
||||
ifdef WANT_WIN_QT6
|
||||
QTCXXFLAGS += -std=c++17 -I $(QTDIR)/include -I $(QTDIR)/include/QtCore \
|
||||
-I $(QTDIR)/include/QtMultimedia
|
||||
QTCXXFLAGS += $(sort $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig \
|
||||
pkg-config Qt6Gui Qt6Widgets Qt6Multimedia --cflags))
|
||||
MOC = moc
|
||||
MOCPATH = $(QTDIR)/share/qt/libexec/moc
|
||||
WINLIB += -F $(QTDIR)/Frameworks -framework QtCore -framework QtGui \
|
||||
-framework QtWidgets -framework QtMultimedia
|
||||
WINLIB += $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig \
|
||||
pkg-config Qt6Gui Qt6Widgets Qt6Multimedia --libs)
|
||||
endif # WANT_WIN_QT6
|
||||
VARDATND0 += nhtiles.bmp rip.xpm nhsplash.xpm
|
||||
# XXX if /Developer/qt exists and QTDIR not set, use that
|
||||
@@ -461,6 +461,9 @@ SYSCONFENSURE = (if ! test -f $(INSTDIR)/sysconf ; then \
|
||||
#
|
||||
#-INCLUDE multisnd2-pre.370
|
||||
#
|
||||
#
|
||||
#-INCLUDE response.370
|
||||
#
|
||||
|
||||
ifdef MAKEFILE_TOP
|
||||
.PHONY: bundle
|
||||
|
||||
@@ -26,17 +26,11 @@ extern struct passwd *getpwuid(int);
|
||||
#endif
|
||||
extern struct passwd *getpwnam(const char *);
|
||||
#ifdef CHDIR
|
||||
static void chdirx(const char *, boolean);
|
||||
void chdirx(const char *, boolean);
|
||||
#endif /* CHDIR */
|
||||
static boolean whoami(void);
|
||||
static char *lopt(char *, int, const char *, const char *, int *, char ***);
|
||||
boolean whoami(void);
|
||||
static void process_options(int, char **);
|
||||
static void consume_arg(int, int *, char ***);
|
||||
static void consume_two_args(int, int *, char ***);
|
||||
static void early_options(int *, char ***, char **);
|
||||
ATTRNORETURN static void opt_terminate(void) NORETURN;
|
||||
ATTRNORETURN static void opt_usage(const char *) NORETURN;
|
||||
ATTRNORETURN static void scores_only(int, char **, const char *) NORETURN;
|
||||
|
||||
#ifdef SND_LIB_INTEGRATED
|
||||
uint32_t soundlibchoice = soundlib_nosound;
|
||||
#endif
|
||||
@@ -128,12 +122,14 @@ main(int argc, char *argv[])
|
||||
if (!dir)
|
||||
dir = nh_getenv("HACKDIR");
|
||||
#endif /* CHDIR */
|
||||
program_state.early_options = 1;
|
||||
#ifdef ENHANCED_SYMBOLS
|
||||
if (argcheck(argc, argv, ARG_DUMPGLYPHIDS) == 2)
|
||||
exit(EXIT_SUCCESS);
|
||||
#endif
|
||||
/* handle -dalthackdir, -s <score stuff>, --version, --showpaths */
|
||||
early_options(&argc, &argv, &dir);
|
||||
program_state.early_options = 0;
|
||||
#ifdef CHDIR
|
||||
/*
|
||||
* Change directories before we initialize the window system so
|
||||
@@ -325,93 +321,6 @@ main(int argc, char *argv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char ArgVal_novalue[] = "[nothing]"; /* note: not 'const' */
|
||||
|
||||
enum cmdlinearg {
|
||||
ArgValRequired = 0, ArgValOptional = 1,
|
||||
ArgValDisallowed = 2, ArgVal_mask = (1 | 2),
|
||||
ArgNamOneLetter = 4, ArgNam_mask = 4,
|
||||
ArgErrSilent = 0, ArgErrComplain = 8, ArgErr_mask = 8
|
||||
};
|
||||
|
||||
/* approximate 'getopt_long()' for one option; all the comments refer to
|
||||
"-windowtype" but the code isn't specific to that */
|
||||
static char *
|
||||
lopt(
|
||||
char *arg, /* command line token; beginning matches 'optname' */
|
||||
int lflags, /* cmdlinearg | errorhandling */
|
||||
const char *optname, /* option's name; "-windowtype" in examples below */
|
||||
const char *origarg, /* 'arg' might have had a dash prefix removed */
|
||||
int *argc_p, /* argc that can have changes passed to caller */
|
||||
char ***argv_p) /* argv[] ditto */
|
||||
{
|
||||
int argc = *argc_p;
|
||||
char **argv = *argv_p;
|
||||
char *p, *nextarg = (argc > 1 && argv[1][0] != '-') ? argv[1] : 0;
|
||||
int l, opttype = (lflags & ArgVal_mask);
|
||||
boolean oneletterok = ((lflags & ArgNam_mask) == ArgNamOneLetter),
|
||||
complain = ((lflags & ArgErr_mask) == ArgErrComplain);
|
||||
|
||||
/* first letter must match */
|
||||
if (arg[1] != optname[1]) {
|
||||
loptbail:
|
||||
if (complain)
|
||||
config_error_add("Unknown option: %.60s", origarg);
|
||||
return (char *) 0;
|
||||
loptnotallowed:
|
||||
if (complain)
|
||||
config_error_add("Value not allowed: %.60s", origarg);
|
||||
return (char *) 0;
|
||||
loptrequired:
|
||||
if (complain)
|
||||
config_error_add("Missing required value: %.60s", origarg);
|
||||
return (char *) 0;
|
||||
}
|
||||
|
||||
if ((p = strchr(arg, '=')) == 0)
|
||||
p = strchr(arg, ':');
|
||||
if (p && opttype == ArgValDisallowed)
|
||||
goto loptnotallowed;
|
||||
|
||||
l = (int) (p ? (long) (p - arg) : (long) strlen(arg));
|
||||
if ((l > 2 || oneletterok) && !strncmp(arg, optname, l)) {
|
||||
/* "-windowtype[=foo]" */
|
||||
if (p)
|
||||
++p; /* past '=' or ':' */
|
||||
else if (opttype == ArgValRequired)
|
||||
p = eos(arg); /* we have "-w[indowtype]" w/o "=foo"
|
||||
* so we'll take foo from next element */
|
||||
else
|
||||
return ArgVal_novalue;
|
||||
} else if (oneletterok) {
|
||||
/* "-w..." but not "-w[indowtype[=foo]]" */
|
||||
if (!p) {
|
||||
p = &arg[2]; /* past 'w' of "-wfoo" */
|
||||
#if 0 /* -x:value could work but is not supported (callers don't expect it) */
|
||||
} else if (p == arg + 2) {
|
||||
++p; /* past ':' of "-w:foo" */
|
||||
#endif
|
||||
} else {
|
||||
/* "-w...=foo" but not "-w[indowtype]=foo" */
|
||||
goto loptbail;
|
||||
}
|
||||
} else {
|
||||
goto loptbail;
|
||||
}
|
||||
if (!p || !*p) {
|
||||
/* "-w[indowtype]" w/o '='/':' if there is a next element, use
|
||||
it for "foo"; if not, supply a non-Null bogus value */
|
||||
if (nextarg && (opttype == ArgValRequired
|
||||
|| opttype == ArgValOptional))
|
||||
p = nextarg, --(*argc_p), ++(*argv_p);
|
||||
else if (opttype == ArgValRequired)
|
||||
goto loptrequired;
|
||||
else
|
||||
p = ArgVal_novalue; /* there is no next element */
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
/* caveat: argv elements might be arbitrarily long */
|
||||
static void
|
||||
process_options(int argc, char *argv[])
|
||||
@@ -573,272 +482,8 @@ process_options(int argc, char *argv[])
|
||||
return;
|
||||
}
|
||||
|
||||
/* move argv[ndx] to end of argv[] array, then reduce argc to hide it;
|
||||
prevents process_options() from encountering it after early_options()
|
||||
has processed it; elements get reordered but all remain intact */
|
||||
static void
|
||||
consume_arg(int ndx, int *ac_p, char ***av_p)
|
||||
{
|
||||
char *gone, **av = *av_p;
|
||||
int i, ac = *ac_p;
|
||||
|
||||
/* "-one -two -three -four" -> "-two -three -four -one" */
|
||||
if (ac > 2) {
|
||||
gone = av[ndx];
|
||||
for (i = ndx + 1; i < ac; ++i)
|
||||
av[i - 1] = av[i];
|
||||
av[ac - 1] = gone;
|
||||
}
|
||||
--(*ac_p);
|
||||
}
|
||||
|
||||
/* consume two tokens for '-argname value' w/o '=' or ':' */
|
||||
static void
|
||||
consume_two_args(int ndx, int *ac_p, char ***av_p)
|
||||
{
|
||||
/* when consuming "-two arg" from "-two arg -three -four",
|
||||
the *ac_p manipulation results in "-three -four -two arg"
|
||||
rather than the "-three -four arg -two" that would happen
|
||||
with just two ordinary consume_arg() calls */
|
||||
consume_arg(ndx, ac_p, av_p);
|
||||
++(*ac_p); /* bring the final slot back into view */
|
||||
consume_arg(ndx, ac_p, av_p);
|
||||
--(*ac_p); /* take away restored slot */
|
||||
}
|
||||
|
||||
/* process some command line arguments before loading options */
|
||||
static void
|
||||
early_options(int *argc_p, char ***argv_p, char **hackdir_p)
|
||||
{
|
||||
char **argv, *arg, *origarg;
|
||||
int argc, oldargc, ndx = 0, consumed = 0;
|
||||
|
||||
config_error_init(FALSE, "command line", FALSE);
|
||||
|
||||
/* treat "nethack ?" as a request for usage info; due to shell
|
||||
processing, player likely has to use "nethack \?" or "nethack '?'"
|
||||
[won't work if used as "nethack -dpath ?" or "nethack -d path ?"] */
|
||||
if (*argc_p > 1 && !strcmp((*argv_p)[1], "?"))
|
||||
opt_usage(*hackdir_p); /* doesn't return */
|
||||
|
||||
/*
|
||||
* Both *argc_p and *argv_p account for the program name as (*argv_p)[0];
|
||||
* local argc and argv impicitly discard that (by starting 'ndx' at 1).
|
||||
* argcheck() doesn't mind, prscore() (via scores_only()) does (for the
|
||||
* number of args it gets passed, not for the value of argv[0]).
|
||||
*/
|
||||
for (ndx = 1; ndx < *argc_p; ndx += (consumed ? 0 : 1)) {
|
||||
consumed = 0;
|
||||
argc = *argc_p - ndx;
|
||||
argv = *argv_p + ndx;
|
||||
|
||||
arg = origarg = argv[0];
|
||||
/* skip any args intended for deferred options */
|
||||
if (*arg != '-')
|
||||
continue;
|
||||
/* allow second dash if arg name is longer than one character */
|
||||
if (arg[0] == '-' && arg[1] == '-' && arg[2] != '\0'
|
||||
&& (arg[3] != '\0' && arg[3] != '=' && arg[3] != ':'))
|
||||
++arg;
|
||||
|
||||
switch (arg[1]) { /* char after leading dash */
|
||||
case 'b':
|
||||
#ifdef CRASHREPORT
|
||||
// --bidshow
|
||||
if (argcheck(argc, argv, ARG_BIDSHOW) == 2){
|
||||
opt_terminate();
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case 'd':
|
||||
if (argcheck(argc, argv, ARG_DEBUG) == 1) {
|
||||
consume_arg(ndx, argc_p, argv_p), consumed = 1;
|
||||
#ifndef NODUMPENUMS
|
||||
} else if (argcheck(argc, argv, ARG_DUMPENUMS) == 2) {
|
||||
opt_terminate();
|
||||
/*NOTREACHED*/
|
||||
#endif
|
||||
} else if (argcheck(argc, argv, ARG_DUMPMONGEN) == 2) {
|
||||
opt_terminate();
|
||||
/*NOTREACHED*/
|
||||
} else if (argcheck(argc, argv, ARG_DUMPWEIGHTS) == 2) {
|
||||
opt_terminate();
|
||||
/*NOTREACHED*/
|
||||
} else {
|
||||
#ifdef CHDIR
|
||||
oldargc = argc;
|
||||
arg = lopt(arg,
|
||||
(ArgValRequired | ArgNamOneLetter | ArgErrSilent),
|
||||
"-directory", origarg, &argc, &argv);
|
||||
if (!arg)
|
||||
error("Flag -d must be followed by a directory name.");
|
||||
if (*arg != 'e') { /* avoid matching -decgraphics or -debug */
|
||||
*hackdir_p = arg;
|
||||
if (oldargc == argc)
|
||||
consume_arg(ndx, argc_p, argv_p), consumed = 1;
|
||||
else
|
||||
consume_two_args(ndx, argc_p, argv_p), consumed = 2;
|
||||
}
|
||||
#endif /* CHDIR */
|
||||
}
|
||||
break;
|
||||
case 'h':
|
||||
case '?':
|
||||
if (lopt(arg, ArgValDisallowed, "-help", origarg, &argc, &argv)
|
||||
|| lopt(arg, ArgValDisallowed | ArgNamOneLetter, "-?",
|
||||
origarg, &argc, &argv))
|
||||
opt_usage(*hackdir_p); /* doesn't return */
|
||||
break;
|
||||
case 'n':
|
||||
oldargc = argc;
|
||||
if (!strcmp(arg, "-no-nethackrc")) /* no abbreviation allowed */
|
||||
arg = nhStr("/dev/null");
|
||||
else
|
||||
arg = lopt(arg, (ArgValRequired | ArgErrComplain),
|
||||
"-nethackrc", origarg, &argc, &argv);
|
||||
if (arg) {
|
||||
gc.cmdline_rcfile = dupstr(arg);
|
||||
if (oldargc == argc)
|
||||
consume_arg(ndx, argc_p, argv_p), consumed = 1;
|
||||
else
|
||||
consume_two_args(ndx, argc_p, argv_p), consumed = 2;
|
||||
}
|
||||
break;
|
||||
case 's':
|
||||
if (argcheck(argc, argv, ARG_SHOWPATHS) == 2) {
|
||||
gd.deferred_showpaths = TRUE;
|
||||
gd.deferred_showpaths_dir = *hackdir_p;
|
||||
config_error_done();
|
||||
return;
|
||||
}
|
||||
/* check for "-s" request to show scores */
|
||||
if (lopt(arg, ((ArgValDisallowed | ArgErrComplain)
|
||||
/* only accept one-letter if there is just one
|
||||
dash; reject "--s" because prscore() via
|
||||
scores_only() doesn't understand it */
|
||||
| ((origarg[1] != '-') ? ArgNamOneLetter : 0)),
|
||||
/* [ought to omit val-disallowed and accept
|
||||
--scores=foo since -s foo and -sfoo are
|
||||
allowed, but -s form can take more than one
|
||||
space-separated argument and --scores=foo
|
||||
isn't suited for that] */
|
||||
"-scores", origarg, &argc, &argv)) {
|
||||
/* at this point, argv[0] contains "-scores" or a leading
|
||||
substring of it; prscore() (via scores_only()) expects
|
||||
that to be in argv[1] so we adjust the pointer to make
|
||||
that be the case; if there are any non-early args waiting
|
||||
to be passed along to process_options(), the resulting
|
||||
argv[0] will be one of those rather than the program
|
||||
name but prscore() doesn't care */
|
||||
scores_only(argc + 1, argv - 1, *hackdir_p);
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
break;
|
||||
case 'u':
|
||||
if (lopt(arg, ArgValDisallowed, "-usage", origarg, &argc, &argv))
|
||||
opt_usage(*hackdir_p);
|
||||
break;
|
||||
case 'v':
|
||||
if (argcheck(argc, argv, ARG_VERSION) == 2) {
|
||||
opt_terminate();
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
break;
|
||||
case 'w': /* windowtype: "-wfoo" or "-w[indowtype]=foo"
|
||||
* or "-w[indowtype]:foo" or "-w[indowtype] foo" */
|
||||
arg = lopt(arg,
|
||||
(ArgValRequired | ArgNamOneLetter | ArgErrComplain),
|
||||
"-windowtype", origarg, &argc, &argv);
|
||||
if (gc.cmdline_windowsys)
|
||||
free((genericptr_t) gc.cmdline_windowsys);
|
||||
gc.cmdline_windowsys = arg ? dupstr(arg) : NULL;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* empty or "N errors on command line" */
|
||||
config_error_done();
|
||||
return;
|
||||
}
|
||||
|
||||
/* for command-line options that perform some immediate action and then
|
||||
terminate the program without starting play, like 'nethack --version'
|
||||
or 'nethack -s Zelda'; do some cleanup before that termination */
|
||||
ATTRNORETURN static void
|
||||
opt_terminate(void)
|
||||
{
|
||||
config_error_done(); /* free memory allocated by config_error_init() */
|
||||
|
||||
nh_terminate(EXIT_SUCCESS);
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
|
||||
ATTRNORETURN static void
|
||||
opt_usage(const char *hackdir)
|
||||
{
|
||||
#ifdef CHDIR
|
||||
chdirx(hackdir, TRUE);
|
||||
#else
|
||||
nhUse(hackdir);
|
||||
#endif
|
||||
dlb_init();
|
||||
|
||||
genl_display_file(USAGEHELP, TRUE);
|
||||
opt_terminate();
|
||||
}
|
||||
|
||||
/* show the sysconf file name, playground directory, run-time configuration
|
||||
file name, dumplog file name if applicable, and some other things */
|
||||
ATTRNORETURN void
|
||||
after_opt_showpaths(const char *dir)
|
||||
{
|
||||
#ifdef CHDIR
|
||||
chdirx(dir, FALSE);
|
||||
#else
|
||||
nhUse(dir);
|
||||
#endif
|
||||
opt_terminate();
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
|
||||
/* handle "-s <score options> [character-names]" to show all the entries
|
||||
in the high scores file ('record') belonging to particular characters;
|
||||
nethack will end after doing so without starting play */
|
||||
ATTRNORETURN static void
|
||||
scores_only(int argc, char **argv, const char *dir)
|
||||
{
|
||||
/* do this now rather than waiting for final termination, in case there
|
||||
is an error summary coming */
|
||||
config_error_done();
|
||||
|
||||
#ifdef CHDIR
|
||||
chdirx(dir, FALSE);
|
||||
#else
|
||||
nhUse(dir);
|
||||
#endif
|
||||
#ifdef SYSCF
|
||||
iflags.initoptions_noterminate = TRUE;
|
||||
initoptions(); /* sysconf options affect whether panictrace is enabled */
|
||||
iflags.initoptions_noterminate = FALSE;
|
||||
#endif
|
||||
#ifdef PANICTRACE
|
||||
ARGV0 = gh.hname; /* save for possible stack trace */
|
||||
#ifndef NO_SIGNAL
|
||||
panictrace_setsignals(TRUE);
|
||||
#endif
|
||||
#endif
|
||||
(void) whoami(); /* set up default plname[] */
|
||||
|
||||
prscore(argc, argv);
|
||||
|
||||
nh_terminate(EXIT_SUCCESS); /* bypass opt_terminate() */
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
|
||||
#ifdef CHDIR
|
||||
static void
|
||||
void
|
||||
chdirx(const char *dir, boolean wr)
|
||||
{
|
||||
if (dir /* User specified directory? */
|
||||
@@ -905,7 +550,7 @@ chdirx(const char *dir, boolean wr)
|
||||
#endif /* CHDIR */
|
||||
|
||||
/* returns True iff we set plname[] to username which contains a hyphen */
|
||||
static boolean
|
||||
boolean
|
||||
whoami(void)
|
||||
{
|
||||
/*
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
used if symbols are set up to run them. Or if you have them but do not
|
||||
have symbols set up, you may edit spec_lev.com to have it run them.
|
||||
If neither of those situations applies, spec_lev.com will default to
|
||||
copying pre-genearated versions of the appropriate files (dgn_lex.c,
|
||||
copying pre-generated versions of the appropriate files (dgn_lex.c,
|
||||
lev_lex.c, dgn_yacc.c, lev_yacc.c, dgn_comp.h, and lev_comp.h) from
|
||||
[.sys.share] into [.util]*.c and [.include]*.h.
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Last tested with VSI C x86-64 V7.5-009 (GEM 50XBR) on OpenVMS x86_64 V9.2-2.
|
||||
[.dat] -- data files
|
||||
[.doc] -- documentation files
|
||||
[.include] -- C header files
|
||||
[.lib.lua546] -- Lua distribution from https://www.lua.org/
|
||||
[.lib.lua548] -- Lua distribution from https://www.lua.org/
|
||||
[.src] -- primary source files
|
||||
[.sys] -- parent for [.sys.*]
|
||||
[.sys.share] -- files shared by several ports, including VMS
|
||||
|
||||
@@ -149,9 +149,9 @@ HACK_H = $(SRC)hack.h-t
|
||||
HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
|
||||
botl.c calendar.c cfgfiles.c cmd.c coloratt.c dbridge.c decl.c detect.c \
|
||||
dig.c display.c dlb.c do.c do_name.c do_wear.c dog.c dogmove.c dokick.c \
|
||||
dothrow.c drawing.c dungeon.c eat.c end.c engrave.c exper.c \
|
||||
dothrow.c drawing.c dungeon.c earlyarg.c eat.c end.c engrave.c exper.c \
|
||||
explode.c extralev.c files.c fountain.c getpos.c glyphs.c hack.c \
|
||||
hacklib.c insight.c invent.c light.c lock.c \
|
||||
hacklib.c iactions.c insight.c invent.c light.c lock.c \
|
||||
mail.c makemon.c mcastu.c mhitm.c mhitu.c minion.c \
|
||||
mklev.c mkmap.c mkmaze.c mkobj.c mkroom.c mon.c mondata.c \
|
||||
monmove.c monst.c mplayer.c mthrowu.c muse.c music.c o_init.c \
|
||||
@@ -198,9 +198,9 @@ HOBJ1 = allmain.obj,alloc.obj,apply.obj,artifact.obj,attrib.obj, \
|
||||
coloratt.obj,dbridge.obj,decl.obj,detect.obj,dig.obj,display.obj, \
|
||||
dlb.obj,do.obj,do_name.obj,do_wear.obj
|
||||
HOBJ2 = dog.obj,dogmove.obj,dokick.obj,dothrow.obj,drawing.obj, \
|
||||
dungeon.obj,eat.obj,end.obj,engrave.obj,exper.obj,explode.obj, \
|
||||
dungeon.obj,earlyarg.obj,eat.obj,end.obj,engrave.obj,exper.obj,explode.obj, \
|
||||
extralev.obj,files.obj,fountain.obj,getpos.obj,glyphs.obj,hack.obj, \
|
||||
hacklib.obj,insight.obj,invent.obj
|
||||
hacklib.obj,iactions.obj,insight.obj,invent.obj
|
||||
HOBJ3 = light.obj,lock.obj,mail.obj,makemon.obj,mcastu.obj, \
|
||||
mhitm.obj,mhitu.obj,minion.obj,mklev.obj,mkmap.obj,mkmaze.obj, \
|
||||
mkobj.obj,mkroom.obj,mon.obj,mondata.obj,monmove.obj
|
||||
@@ -519,6 +519,7 @@ dokick.obj : dokick.c $(HACK_H)
|
||||
dothrow.obj : dothrow.c $(HACK_H)
|
||||
drawing.obj : drawing.c $(HACK_H) $(INC)tcap.h
|
||||
dungeon.obj : dungeon.c $(HACK_H) $(INC)dgn_file.h $(INC)dlb.h
|
||||
earlyarg.obj : earlyarg.c $(HACK_H)
|
||||
eat.obj : eat.c $(HACK_H)
|
||||
end.obj : end.c $(HACK_H) $(INC)dlb.h
|
||||
engrave.obj : engrave.c $(HACK_H)
|
||||
@@ -529,6 +530,7 @@ files.obj : files.c $(HACK_H) $(INC)dlb.h $(INC)wintty.h #zlib.h
|
||||
fountain.obj : fountain.c $(HACK_H)
|
||||
hack.obj : hack.c $(HACK_H)
|
||||
hacklib.obj : hacklib.c $(HACK_H)
|
||||
iactions.obj : iactions.c $(HACK_H)
|
||||
insight.obj : insight.c $(HACK_H)
|
||||
invent.obj : invent.c $(HACK_H)
|
||||
light.obj : light.c $(HACK_H)
|
||||
|
||||
@@ -24,9 +24,9 @@ WINSHIM=[-.win.shim]
|
||||
WINCHAIN=[-.win.chain]
|
||||
|
||||
# Lua location relative to src
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
LUAVER=548
|
||||
LUADOTVER=5.4.8
|
||||
LUAUNDERVER=5_4_8
|
||||
LUAINC=[-.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[-.lib.lua]lua$(LUAVER).olb
|
||||
LUASRCDIR =[-.lib.lua.lua$(LUAVER).src]
|
||||
|
||||
@@ -25,9 +25,9 @@ WINSHIM=[-.win.shim]
|
||||
WINCHAIN=[-.win.chain]
|
||||
|
||||
# Lua location relative to src
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
LUAVER=548
|
||||
LUADOTVER=5.4.8
|
||||
LUAUNDERVER=5_4_8
|
||||
LUAINC=[-.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[-.lib.lua]lua$(LUAVER).olb
|
||||
LUASRCDIR =[-.lib.lua.lua$(LUAVER).src]
|
||||
|
||||
@@ -35,9 +35,9 @@ WINSHIM=[-.win.shim]
|
||||
WINCHAIN=[-.win.chain]
|
||||
|
||||
# Lua
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
LUAVER=548
|
||||
LUADOTVER=5.4.8
|
||||
LUAUNDERVER=5_4_8
|
||||
# Lua location relative to src
|
||||
LUAINC=[-.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[-.lib.lua]lua$(LUAVER).olb
|
||||
@@ -117,10 +117,10 @@ HACK_H = $(addsuffix .h, $(addprefix $(INCL), $(CONFIGBASEH) $(HACKBASEH)))
|
||||
HACKFILES := allmain alloc apply artifact attrib ball bones botl \
|
||||
calendar cfgfiles cmd coloratt dbridge decl detect \
|
||||
dig display dlb do do_name do_wear dog dogmove dokick \
|
||||
dothrow drawing dungeon eat end engrave exper explode extralev \
|
||||
files fountain getpos glyphs hack hacklib insight invent isaac64 \
|
||||
light lock mail makemon mcastu mdlib mhitm mhitu minion mklev \
|
||||
mkmap mkmaze mkobj mkroom mon \
|
||||
dothrow drawing dungeon earlyarg eat end engrave exper explode \
|
||||
extralev files fountain getpos glyphs hack hacklib iactions \
|
||||
insight invent isaac64 light lock mail makemon mcastu mdlib mhitm \
|
||||
mhitu minion mklev mkmap mkmaze mkobj mkroom mon \
|
||||
mondata monmove monst mplayer mthrowu muse music \
|
||||
nhlua nhlsel nhlobj objnam o_init objects \
|
||||
options pager pickup pline polyself potion pray \
|
||||
@@ -735,6 +735,7 @@ $(TARGETPFX)getpos.obj: getpos.c $(HACK_H)
|
||||
$(TARGETPFX)glyphs.obj: glyphs.c $(HACK_H)
|
||||
$(TARGETPFX)hack.obj: hack.c $(HACK_H)
|
||||
$(TARGETPFX)hacklib.obj: hacklib.c $(HACK_H)
|
||||
$(TARGETPFX)iactions.obj: iactions.c $(HACK_H)
|
||||
$(TARGETPFX)insight.obj: insight.c $(HACK_H)
|
||||
$(TARGETPFX)invent.obj: invent.c $(HACK_H)
|
||||
$(TARGETPFX)isaac64.obj: isaac64.c $(CONFIG_H) $(INCL)isaac64.h
|
||||
|
||||
@@ -54,9 +54,9 @@ WINSHIM=[.win.shim]
|
||||
WINCHAIN=[.win.chain]
|
||||
|
||||
# Lua macros
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
LUAVER=548
|
||||
LUADOTVER=5.4.8
|
||||
LUAUNDERVER=5_4_8
|
||||
LUAINC=[.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[.lib.lua]lua$(LUAVER).olb
|
||||
LUASRCDIR =[.lib.lua.lua$(LUAVER).src]
|
||||
|
||||
@@ -30,9 +30,9 @@ WINSHIM=[-.win.shim]
|
||||
WINCHAIN=[-.win.chain]
|
||||
|
||||
# Lua location relative to here
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
LUAVER=548
|
||||
LUADOTVER=5.4.8
|
||||
LUAUNDERVER=5_4_8
|
||||
LUAINC=[-.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[-.lib.lua]lua$(LUAVER).olb
|
||||
LUASRCDIR =[-.lib.lua.lua$(LUAVER).src]
|
||||
|
||||
@@ -28,9 +28,9 @@ $ ! one, use "" in the earlier one's position, such as
|
||||
$ ! $ @[-.sys.vms]vmsbuild "" "" "" "" "TTY+CURSES"
|
||||
$ !
|
||||
$ ! Lua Version
|
||||
$ luaver = "546"
|
||||
$ luadotver = "5.4.6"
|
||||
$ luaunderver = "5_4_6"
|
||||
$ luaver = "548"
|
||||
$ luadotver = "5.4.8"
|
||||
$ luaunderver = "5_4_8"
|
||||
$
|
||||
$ decc_dflt = f$trnlnm("DECC$CC_DEFAULT")
|
||||
$ j = (decc_dflt.nes."") .and. 1
|
||||
@@ -425,7 +425,7 @@ $ c_list = "allmain,apply,artifact,attrib,ball,bones,botl,calendar,cmd" -
|
||||
+ ",do_wear,dog,dogmove,dokick,dungeon,eat,end,engrave,exper,explode" -
|
||||
+ ",extralev,files,fountain,getpos,glyphs"
|
||||
$ gosub compile_list
|
||||
$ c_list = "hack,hacklib,insight,invent,light,lock,mail,makemon" -
|
||||
$ c_list = "hack,hacklib,iactions,insight,invent,light,lock,mail,makemon" -
|
||||
+ ",mcastu,mdlib,mhitm,mhitu,minion,mklev,mkmap,mkmaze" -
|
||||
+ ",mkobj,mkroom,mon,mondata,monmove,mplayer,mthrowu,muse" -
|
||||
+ ",music"
|
||||
@@ -453,7 +453,7 @@ $ gosub compile_list
|
||||
$ milestone "<linking...>"
|
||||
$ link /EXECUTABLE=nethack.exe vmsmain.obj,date.obj-
|
||||
+[-.src]nethack.olb/library -
|
||||
+sys$disk:[-.lib.lua]lua546.olb/library
|
||||
+sys$disk:[-.lib.lua]lua548.olb/library
|
||||
$ milestone "NetHack"
|
||||
$ if c_opt.eq.o_LINK then goto done !"LINK" only
|
||||
$special:
|
||||
|
||||
2
sys/windows/.gitattributes
vendored
2
sys/windows/.gitattributes
vendored
@@ -5,6 +5,6 @@ sysconf NHSUBST
|
||||
*.rc NHSUBST
|
||||
*.bat NHSUBST
|
||||
*.def NH_header=no
|
||||
* NH_filestag=(file%s_for_Windows_7/8.x/10/11_version)
|
||||
* NH_filestag=(file%s_for_Windows_10/11_version)
|
||||
..files NH_filegenerated=nethack.ico
|
||||
nethack.ico NH_filesgentag=(file%s_generated_by_uudecode_at_compile_time)
|
||||
|
||||
@@ -104,7 +104,7 @@ USE_LUADLL = Y
|
||||
WANT_LUAC = N
|
||||
|
||||
ifndef LUA_VERSION
|
||||
LUAVER=5.4.6
|
||||
LUAVER=5.4.8
|
||||
else
|
||||
LUAVER=$(LUA_VERSION)
|
||||
endif
|
||||
@@ -299,6 +299,18 @@ USE_DLB = Y
|
||||
#==========================================
|
||||
#==========================================
|
||||
|
||||
ifeq "$(MSYSTEM)" "MINGW32"
|
||||
arch = x86
|
||||
else
|
||||
arch = x64
|
||||
endif
|
||||
MACH := $(shell echo $$PROCESSOR_IDENTIFIER | cut -f1 -d ' ')
|
||||
MACH := $(strip $(MACH))
|
||||
# Print the detected architecture (for debugging)
|
||||
#$(info Detected Architecture:$(MACH).)
|
||||
ifeq "$(MACH)" "ARMv8"
|
||||
arch=arm64
|
||||
endif
|
||||
ifdef CI_COMPILER
|
||||
cc = gcc -c
|
||||
cxx = g++ -c
|
||||
@@ -311,16 +323,17 @@ ld = gcc
|
||||
endif
|
||||
ifeq "$(MSYSTEM)" "MINGW32"
|
||||
rc = windres --target=pe-i386
|
||||
else # MINGW64
|
||||
else # MINGW64 or arm64
|
||||
ifeq "$(arch)" "arm64"
|
||||
#rc = windres --target=pe-arm64
|
||||
rc = windres
|
||||
else
|
||||
rc = windres --target=pe-x86-64
|
||||
endif
|
||||
|
||||
ifeq "$(MSYSTEM)" "MINGW32"
|
||||
arch = x86
|
||||
else # MINGW64
|
||||
arch = x64
|
||||
endif
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Handle user settings
|
||||
#
|
||||
@@ -380,7 +393,7 @@ CLEAN_DIR = $(GAMEDIR) $(OBJ)
|
||||
|
||||
#=================================================================
|
||||
# LUA library
|
||||
# Source from http://www.lua.org/ftp/lua-5.4.6.tar.gz
|
||||
# Source from http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
||||
#=================================================================
|
||||
|
||||
OLUA = $(O)lua
|
||||
@@ -414,8 +427,15 @@ $(U)lua.exe: $(OLUA)/lua.o $(LUALIB)
|
||||
$(LUADLL): $(ULUADLL)
|
||||
cp $< $@
|
||||
|
||||
|
||||
ifeq "$(arch)" "arm64"
|
||||
lparam=-Wl,--export-all-symbols
|
||||
else
|
||||
lparam=-Wl,--export-all-symbols -Wl,--add-stdcall-alias
|
||||
endif
|
||||
|
||||
$(ULUADLL) $(LUAIMP): $(LUAOBJS) | $(OLUA)
|
||||
$(ld) $(LDFLAGS) -fPIC -shared -Wl,--export-all-symbols -Wl,--add-stdcall-alias \
|
||||
$(ld) $(LDFLAGS) -fPIC -shared $(lparam) \
|
||||
-Wl,--out-implib=$(LUAIMP) $^ -o$(ULUADLL)
|
||||
|
||||
$(LUASTATIC): $(LUAOBJS) | $(OLUA)
|
||||
@@ -455,7 +475,7 @@ CLEAN_FILE += $(NHLUAH)
|
||||
LUALIST = air Arc-fila Arc-filb Arc-goal Arc-loca Arc-strt \
|
||||
asmodeus astral baalz Bar-fila Bar-filb Bar-goal \
|
||||
Bar-loca Bar-strt bigrm-1 bigrm-10 bigrm-11 bigrm-2 \
|
||||
bigrm-12 \
|
||||
bigrm-12 bigrm-13 \
|
||||
bigrm-3 bigrm-4 bigrm-5 bigrm-6 bigrm-7 bigrm-8 \
|
||||
bigrm-9 castle Cav-fila Cav-filb Cav-goal Cav-loca \
|
||||
Cav-strt dungeon earth fakewiz1 fakewiz2 fire \
|
||||
@@ -774,6 +794,7 @@ HACK_H = $(CONFIG_H) ../include/align.h ../include/artilist.h \
|
||||
../include/decl.h ../include/defsym.h ../include/display.h \
|
||||
../include/dungeon.h ../include/engrave.h ../include/flag.h \
|
||||
../include/hack.h ../include/lint.h ../include/mextra.h \
|
||||
../include/mcastu.h \
|
||||
../include/mkroom.h ../include/monattk.h ../include/mondata.h \
|
||||
../include/monflag.h ../include/monst.h ../include/monsters.h \
|
||||
../include/nhlua.h ../include/obj.h ../include/objclass.h \
|
||||
@@ -1045,8 +1066,8 @@ fetchpdcurses:
|
||||
git submodule update ../submodules/$(PDCURSES) ; fi
|
||||
# git submodule update --remote ../submodules/$(PDCURSES) ; fi
|
||||
else # GIT_AVAILABLE no
|
||||
CURLLUASRC=http://www.lua.org/ftp/lua-5.4.6.tar.gz
|
||||
CURLLUADST=lua-5.4.6.tar.gz
|
||||
CURLLUASRC=http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
||||
CURLLUADST=lua-5.4.8.tar.gz
|
||||
|
||||
CURLPDCSRC=https://github.com/Bill-Gray/PDCursesMod/archive/refs/tags/v4.5.1.zip
|
||||
CURLPDCDST=$(PDCURSES).zip
|
||||
@@ -1211,21 +1232,21 @@ COREOBJS = $(addsuffix .o, allmain alloc apply artifact attrib ball bones botl \
|
||||
calendar cfgfiles cmd coloratt cppregex \
|
||||
dbridge decl detect dig display dlb do do_name do_wear \
|
||||
dog dogmove dokick dothrow drawing dungeon \
|
||||
eat end engrave exper explode extralev files fountain \
|
||||
getpos glyphs hack insight invent isaac64 light lock \
|
||||
earlyarg eat end engrave exper explode extralev files fountain \
|
||||
getpos glyphs hack iactions insight invent isaac64 light lock \
|
||||
mail makemon mcastu mdlib mhitm mhitu minion mklev mkmap mkmaze mkobj mkroom \
|
||||
mon mondata monmove monst mplayer mthrowu muse music \
|
||||
nhlobj nhlsel nhlua windsound o_init objects objnam options \
|
||||
pager pickup pline polyself potion pray priest quest questpgr \
|
||||
random read rect region report restore rip rnd role rumors \
|
||||
safeproc save sfbase sfstruct shk shknam sit selvar sounds sp_lev \
|
||||
save sfbase sfstruct shk shknam sit selvar sounds sp_lev \
|
||||
spell stairs steal steed strutil \
|
||||
symbols sys teleport timeout topten track trap u_init uhitm utf8map \
|
||||
vault version vision weapon were wield windmain windows windsys wizard \
|
||||
wizcmds worm worn write zap $(SOUNDLIBOBJS))
|
||||
|
||||
CFLAGSW = $(CFLAGS) $(CFLAGSXTRA) $(SOUNDLIBINCL) $(COMMONDEF) $(DLBFLG) -DTILES -D_WINDOWS -DMSWIN_GRAPHICS -DSAFEPROCS -DNOTTYGRAPHICS $(SOUNDLIBDEFS)
|
||||
CPPFLAGSW = $(CFLAGS) $(CPPFLAGSXTRA) $(COMMONDEF) $(DLBFLG) -DTILES -D_WINDOWS -DMSWIN_GRAPHICS -DSAFEPROCS -DNOTTYGRAPHICS $(SOUNDLIBDEFS)
|
||||
CFLAGSW = $(CFLAGS) $(CFLAGSXTRA) $(SOUNDLIBINCL) $(COMMONDEF) $(DLBFLG) -DTILES -D_WINDOWS -DMSWIN_GRAPHICS -DNOTTYGRAPHICS $(SOUNDLIBDEFS)
|
||||
CPPFLAGSW = $(CFLAGS) $(CPPFLAGSXTRA) $(COMMONDEF) $(DLBFLG) -DTILES -D_WINDOWS -DMSWIN_GRAPHICS -DNOTTYGRAPHICS $(SOUNDLIBDEFS)
|
||||
|
||||
ONHW = $(O)nethackw
|
||||
NHWONLY = $(addsuffix .o, mhaskyn mhdlg mhfont mhinput mhmain mhmap mhmenu \
|
||||
@@ -1327,8 +1348,8 @@ CLEAN_FILE += $(NHWTARGETS) $(NHWOBJS) $(NHWRES) $(BMPS) $(WAV)
|
||||
#==========================================
|
||||
# nethack
|
||||
#==========================================
|
||||
CFLAGSNH = $(CFLAGSU) $(CFLAGSXTRA) $(SOUNDLIBINCL) -DNO_TILE_C -DSAFEPROCS -D_LIB -DWIN32CON $(SOUNDLIBDEFS)
|
||||
CPPFLAGSNH = $(CFLAGSU) $(CPPFLAGSXTRA) -DNO_TILE_C -DSAFEPROCS -D_LIB -DWIN32CON $(SOUNDLIBDEFS)
|
||||
CFLAGSNH = $(CFLAGSU) $(CFLAGSXTRA) $(SOUNDLIBINCL) -DNO_TILE_C -D_LIB -DWIN32CON $(SOUNDLIBDEFS)
|
||||
CPPFLAGSNH = $(CFLAGSU) $(CPPFLAGSXTRA) -DNO_TILE_C -D_LIB -DWIN32CON $(SOUNDLIBDEFS)
|
||||
|
||||
ONH = $(O)nethack
|
||||
|
||||
@@ -1357,7 +1378,16 @@ $(ONH)/%.o: $(SRC)/%.c $(NHLUAH) | $(ONH)
|
||||
#==========================================
|
||||
# package
|
||||
#==========================================
|
||||
ifeq "$(arch)" "x64"
|
||||
TARGET_CPU = x64
|
||||
else
|
||||
ifeq "$(arch)" "arm64"
|
||||
TARGET_CPU = arm64
|
||||
else
|
||||
TARGET_CPU = x86
|
||||
endif
|
||||
endif
|
||||
|
||||
NHV=370
|
||||
PKGFILES = nethackrc.template Guidebook.txt license NetHack.exe NetHack.txt \
|
||||
NetHackW.exe opthelp nhdat370 record symbols sysconf.template $(notdir $(LUADLL))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -30,7 +30,7 @@ Prerequisite Requirements:
|
||||
+----------+ +------+ +----+ +----+
|
||||
| | | | | | | |
|
||||
| | | | | | | |
|
||||
lua-5.4.6 pdcursesmod share windows tty win32 lua pdcursesmod
|
||||
lua-5.4.8 pdcursesmod share windows tty win32 lua pdcursesmod
|
||||
|
|
||||
vs
|
||||
|
|
||||
|
||||
@@ -2,8 +2,8 @@ Building NetHack using the Visual Studio nmake from the command line
|
||||
|
||||
Prerequisite Requirements:
|
||||
|
||||
o Visual Studio Community Edition
|
||||
A copy of Microsoft Visual Studio Community Edition needs to
|
||||
o Visual Studio Community
|
||||
A copy of Microsoft Visual Studio Community needs to
|
||||
be installed on your machine. See:
|
||||
https://visualstudio.microsoft.com/vs/community/
|
||||
o Lua
|
||||
@@ -43,7 +43,7 @@ You can use one of the following build environments:
|
||||
+----------+ +------+ +----+ +----+
|
||||
| | | | | | | |
|
||||
| | | | | | | |
|
||||
lua-5.4.6 pdcursesmod share windows tty win32 lua pdcursesmod
|
||||
lua-5.4.8 pdcursesmod share windows tty win32 lua pdcursesmod
|
||||
|
|
||||
vs
|
||||
|
|
||||
@@ -54,7 +54,7 @@ You can use one of the following build environments:
|
||||
|
||||
/-----------------------------------------------------------\
|
||||
| Building From the Command Line Using nmake from one of the |
|
||||
| Visual Studio Community Editions |
|
||||
| Visual Studio Community versions |
|
||||
\-----------------------------------------------------------/
|
||||
|
||||
Building
|
||||
@@ -62,7 +62,7 @@ Building
|
||||
Two different versions of NetHack will be built for Windows from the
|
||||
command line using the Makefile approach:
|
||||
A tty port utilizing the Win32 Console I/O subsystem Console,
|
||||
and a curses interface in an executabled called NetHack.exe.
|
||||
and a curses interface in an executable called NetHack.exe.
|
||||
NetHack
|
||||
A Win32 native port built on the Windows API Graphical NetHack,
|
||||
and graphical curses in an executable called NetHackW.exe.
|
||||
|
||||
@@ -2,9 +2,33 @@ Building NetHack using the Visual Studio IDE
|
||||
|
||||
Prerequisite Requirements:
|
||||
|
||||
o Visual Studio Community Edition
|
||||
A copy of Microsoft Visual Studio Community Edition needs to
|
||||
be installed on your machine. See:
|
||||
o Visual Studio Community
|
||||
A copy of a version of Microsoft Visual Studio Community needs to
|
||||
be installed on your machine. Visual Studio Community can be either
|
||||
the version for Windows 11 x64 for use on machines with
|
||||
Intel/AMD64 processors, or the version for Windows 11 ARM64 for
|
||||
use on machines with ARM64 processors (Snapdragon).
|
||||
|
||||
You can opt to build for a target x64, or for a target ARM64
|
||||
on either the x64 version of Visual Studio, or on the ARM64
|
||||
version. Versions of Visual Studio, since Visual Studio 26,
|
||||
are able to compile for the native host platform and
|
||||
cross-compile to the other target platform.
|
||||
|
||||
If you want to selectively cross-compile for both x64 and ARM64
|
||||
target types, ensure that the necessary Individual Components for
|
||||
both types of target builds are selected (checked-off) in the
|
||||
Visual Studio Installer Individual Components dialog:
|
||||
|
||||
Under Compilers, build tools, and runtimes:
|
||||
o MSVC Build Tools for ARM64/ARM64EC (Latest)
|
||||
o MSVC Build Tools for x64/x86 (Latest)
|
||||
|
||||
You can use the Visual Studio Installer "Modify" button
|
||||
to add missing Individual Components after installation,
|
||||
if needed.
|
||||
|
||||
See:
|
||||
https://visualstudio.microsoft.com/vs/community/
|
||||
o Lua
|
||||
NetHack 3.7 for Windows requires 3rd party Lua source that is not part
|
||||
@@ -44,7 +68,7 @@ versions:
|
||||
+----------+ +------+ +----+ +----+
|
||||
| | | | | | | |
|
||||
| | | | | | | |
|
||||
lua-5.4.6 pdcursesmod share windows tty win32 lua pdcursesmod
|
||||
lua-5.4.8 pdcursesmod share windows tty win32 lua pdcursesmod
|
||||
|
|
||||
vs
|
||||
|
|
||||
@@ -54,10 +78,10 @@ versions:
|
||||
|
||||
|
||||
/-----------------------------------------------------------\
|
||||
| Building And Running Using Visual Studio 2019, 2022 |
|
||||
| Building And Running Using Visual Studio Community |
|
||||
\-----------------------------------------------------------/
|
||||
|
||||
When using Visual Studio Community Edition, load the provided solution
|
||||
When using a version of Visual Studio Community, load the provided solution
|
||||
file within the IDE, build the solution.
|
||||
|
||||
The Visual Studio NetHack solution file can be found here:
|
||||
@@ -66,7 +90,15 @@ The Visual Studio NetHack solution file can be found here:
|
||||
The steps are:
|
||||
1. Launch the IDE.
|
||||
2. Open the appropriate solution file in sys\windows\vs\NetHack.sln.
|
||||
3. Select the build configuration you wish to use (Release, Debug, etc.).
|
||||
3. Select the build platform and configuration that you wish
|
||||
to target (x64 or ARM64, and Release or Debug).
|
||||
(Note: If you want to target an ARM64 build from an x64 machine,
|
||||
or target an x64 build from an ARM64 machine, you need to
|
||||
first complete the build for the native machine type target.
|
||||
That's necessary to ensure that host-native versions of
|
||||
uudecode.exe, makedefs.exe, tilemap.exe, tile2bmp.exe and
|
||||
dlb.exe tools are available for execution during the build
|
||||
steps that rely on those tools.)
|
||||
4. From the build menu, select build solution.
|
||||
5. Type F5 to start debugging.
|
||||
|
||||
|
||||
@@ -98,22 +98,22 @@ cell_t undefined_cell = { CONSOLE_UNDEFINED_CHARACTER,
|
||||
CONSOLE_UNDEFINED_ATTRIBUTE };
|
||||
#else /* VIRTUAL_TERMINAL_SEQUENCES */
|
||||
cell_t clear_cell = {
|
||||
{ CONSOLE_CLEAR_CHARACTER, 0, 0, 0, 0, 0, 0 },
|
||||
{ CONSOLE_CLEAR_CHARACTER, 0, 0, 0, 0, 0, 0 },
|
||||
CONSOLE_CLEAR_CHARACTER, /* wcharacter */
|
||||
0, /* attr */
|
||||
0L, /* color24 */
|
||||
0, /* color256idx */
|
||||
"\x1b[0m", /* bkcolorseq */
|
||||
0 /* colorseq */
|
||||
0, /* attr */
|
||||
0L, /* color24 */
|
||||
0, /* color256idx */
|
||||
"\x1b[0m", /* bkcolorseq */
|
||||
0 /* colorseq */
|
||||
};
|
||||
cell_t undefined_cell = {
|
||||
{ CONSOLE_UNDEFINED_CHARACTER, 0, 0, 0, 0, 0, 0 },
|
||||
{ CONSOLE_UNDEFINED_CHARACTER, 0, 0, 0, 0, 0, 0 },
|
||||
CONSOLE_UNDEFINED_CHARACTER, /* wcharacter */
|
||||
0, /* attr */
|
||||
0L, /* color24 */
|
||||
0, /* color256idx */
|
||||
(const char *) 0, /* bkcolorseq */
|
||||
(const char *) 0 /* colorseq */
|
||||
0, /* attr */
|
||||
0L, /* color24 */
|
||||
0, /* color256idx */
|
||||
(const char *) 0, /* bkcolorseq */
|
||||
(const char *) 0 /* colorseq */
|
||||
};
|
||||
#if 0
|
||||
static const uint8 empty_utf8str[MAX_UTF8_SEQUENCE] = { 0 };
|
||||
@@ -156,7 +156,6 @@ static boolean check_font_widths(void);
|
||||
#endif
|
||||
static void set_known_good_console_font(void);
|
||||
static void restore_original_console_font(void);
|
||||
extern void safe_routines(void);
|
||||
void tty_ibmgraphics_fixup(void);
|
||||
#ifdef VIRTUAL_TERMINAL_SEQUENCES
|
||||
extern void (*ibmgraphics_mode_callback)(void); /* symbols.c */
|
||||
@@ -763,7 +762,7 @@ emit_stop_inverse(void)
|
||||
#define tcfmtstr256 "\x1b[38;5;%ldm"
|
||||
#else
|
||||
#define tcfmtstr24bit "\x1b[38:2:%ld:%ld:%ldm"
|
||||
#define tcfmtstr256 "\x1b[38:5:%dm"
|
||||
#define tcfmtstr256 "\x1b[38:5:%ldm"
|
||||
#endif
|
||||
|
||||
void
|
||||
@@ -771,7 +770,8 @@ emit_start_256color(int u256coloridx)
|
||||
{
|
||||
DWORD unused;
|
||||
static char tcolorbuf[QBUFSZ];
|
||||
Snprintf(tcolorbuf, sizeof tcolorbuf, tcfmtstr256, u256coloridx);
|
||||
Snprintf(tcolorbuf, sizeof tcolorbuf, tcfmtstr256,
|
||||
(long) u256coloridx);
|
||||
WriteConsoleA(console.hConOut, (LPCSTR) tcolorbuf,
|
||||
(int) strlen(tcolorbuf), &unused, NULL);
|
||||
}
|
||||
@@ -783,9 +783,9 @@ emit_start_24bitcolor(long color24bit)
|
||||
static char tcolorbuf[QBUFSZ];
|
||||
uint32 mcolor = COLORVAL(color24bit);
|
||||
Snprintf(tcolorbuf, sizeof tcolorbuf, tcfmtstr24bit,
|
||||
((mcolor >> 16) & 0xFF), /* red */
|
||||
((mcolor >> 8) & 0xFF), /* green */
|
||||
((mcolor >> 0) & 0xFF)); /* blue */
|
||||
(long) ((mcolor >> 16) & 0xFF), /* red */
|
||||
(long) ((mcolor >> 8) & 0xFF), /* green */
|
||||
(long) ((mcolor >> 0) & 0xFF)); /* blue */
|
||||
WriteConsoleA(console.hConOut, (LPCSTR) tcolorbuf,
|
||||
(int) strlen(tcolorbuf), &unused, NULL);
|
||||
}
|
||||
@@ -870,7 +870,8 @@ back_buffer_flip(void)
|
||||
do_anything |= do_wide_content;
|
||||
} else {
|
||||
#endif
|
||||
if (strcmp((const char *) back->utf8str,
|
||||
if (back->utf8str && front->utf8str
|
||||
&& strcmp((const char *) back->utf8str,
|
||||
(const char *) front->utf8str))
|
||||
do_anything |= do_utf8_content;
|
||||
#ifdef UTF8_FROM_CORE
|
||||
@@ -1145,7 +1146,7 @@ CtrlHandler(DWORD ctrltype)
|
||||
case CTRL_BREAK_EVENT:
|
||||
term_clear_screen();
|
||||
FALLTHROUGH;
|
||||
/* FALLTHRU */
|
||||
/* FALLTHRU */
|
||||
case CTRL_CLOSE_EVENT:
|
||||
case CTRL_LOGOFF_EVENT:
|
||||
case CTRL_SHUTDOWN_EVENT:
|
||||
@@ -1184,17 +1185,18 @@ consoletty_open(int mode UNUSED)
|
||||
really_move_cursor();
|
||||
nhUse(debugvar);
|
||||
}
|
||||
extern void set_emergency_io(void);
|
||||
|
||||
void
|
||||
consoletty_exit(void)
|
||||
{
|
||||
/* go back to using the safe routines */
|
||||
safe_routines();
|
||||
free_custom_colors();
|
||||
free((genericptr_t) console.front_buffer);
|
||||
free((genericptr_t) console.back_buffer);
|
||||
console.front_buffer = console.back_buffer = 0;
|
||||
free((genericptr_t) console.localestr);
|
||||
free((genericptr_t) console.orig_localestr);
|
||||
set_emergency_io();
|
||||
}
|
||||
|
||||
int
|
||||
@@ -1307,8 +1309,8 @@ really_move_cursor(void)
|
||||
oldtitle[39] = '\0';
|
||||
}
|
||||
Snprintf(newtitle, sizeof newtitle,
|
||||
"%-55s tty=(%02d,%02d) consoletty=(%02d,%02d)",
|
||||
oldtitle,
|
||||
"%-55s tty=(%02d,%02d) consoletty=(%02d,%02d)",
|
||||
oldtitle,
|
||||
ttyDisplay->curx, ttyDisplay->cury,
|
||||
console.cursor.X, console.cursor.Y);
|
||||
(void) SetConsoleTitle(newtitle);
|
||||
@@ -1493,7 +1495,7 @@ console_g_putch(int in_ch)
|
||||
#else /* VIRTUAL_TERMINAL_SEQUENCES */
|
||||
ccount = 0;
|
||||
WCHAR wch[2];
|
||||
boolean usemap = (ch >= 0 && ch < SIZE(console.cpMap));
|
||||
boolean usemap = (ch >= 0 && ((int) ch < SIZE(console.cpMap)));
|
||||
#endif /* VIRTUAL_TERMINAL_SEQUENCES */
|
||||
|
||||
set_console_cursor(ttyDisplay->curx, ttyDisplay->cury);
|
||||
@@ -2543,11 +2545,18 @@ void early_raw_print(const char *s)
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
DISABLE_WARNING_CONDEXPR_IS_CONSTANT
|
||||
|
||||
void nethack_enter_consoletty(void)
|
||||
{
|
||||
int width;
|
||||
#ifdef VIRTUAL_TERMINAL_SEQUENCES
|
||||
char buf[BUFSZ], *bp, *localestr;
|
||||
BOOL apisuccess;
|
||||
// DWORD unused;
|
||||
// int i = 0;
|
||||
|
||||
#endif /* VIRTUAL_TERMINAL_SEQUENCES */
|
||||
#if 0
|
||||
/* set up state needed by early_raw_print() */
|
||||
@@ -2561,13 +2570,41 @@ void nethack_enter_consoletty(void)
|
||||
GetWindowLong(console.hWnd, GWL_STYLE)
|
||||
& ~WS_MAXIMIZEBOX & ~WS_SIZEBOX);
|
||||
#endif
|
||||
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||
if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi)) {
|
||||
/* srWindow identifies the visible area; dwSize identifies the buffer
|
||||
*/
|
||||
width = csbi.srWindow.Right - csbi.srWindow.Left + 1;
|
||||
#ifdef DEBUG
|
||||
if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
fprintf(stdout, "width = %d\n", width);
|
||||
#endif
|
||||
}
|
||||
|
||||
console.hConOut = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
nhassert(console.hConOut != NULL); // NOTE: this assert will not print
|
||||
GetConsoleScreenBufferInfo(console.hConOut, &console.orig_csbi);
|
||||
//COORD screencheck = GetLargestConsoleWindowSize(console.hConOut);
|
||||
|
||||
GetConsoleMode(console.hConOut, &console.orig_out_cmode);
|
||||
console.out_cmode = console.orig_out_cmode;
|
||||
console.out_cmode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
|
||||
SetConsoleMode(console.hConOut, console.out_cmode);
|
||||
#if 0
|
||||
/* tests */
|
||||
WriteConsoleA(console.hConOut, "\033[8;;133t",9, &unused, NULL);
|
||||
for (i = 0; i < 13; ++i) {
|
||||
WriteConsoleA(console.hConOut, "0123456789", 10, &unused, NULL);
|
||||
}
|
||||
WriteConsoleA(console.hConOut, "\033[3;133ftest", 12, &unused, NULL);
|
||||
GetConsoleScreenBufferInfo(console.hConOut, &console.orig_csbi);
|
||||
/* Testing of widths != COLNO has not turned up any problems. Need
|
||||
* to do a bit more testing and then we are likely to enable having
|
||||
* console width match window width.
|
||||
*/
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
console.width = console.orig_csbi.srWindow.Right -
|
||||
console.orig_csbi.srWindow.Left + 1;
|
||||
@@ -2589,19 +2626,19 @@ void nethack_enter_consoletty(void)
|
||||
|
||||
|
||||
/* clear the entire console buffer */
|
||||
int size = console.orig_csbi.dwSize.X * console.orig_csbi.dwSize.Y;
|
||||
DWORD unused;
|
||||
set_console_cursor(0, 0);
|
||||
FillConsoleOutputAttribute(
|
||||
console.hConOut, CONSOLE_CLEAR_ATTRIBUTE,
|
||||
size, console.cursor, &unused);
|
||||
//int size = console.orig_csbi.dwSize.X * console.orig_csbi.dwSize.Y;
|
||||
//DWORD unused;
|
||||
//set_console_cursor(0, 0);
|
||||
// FillConsoleOutputAttribute(
|
||||
// console.hConOut, CONSOLE_CLEAR_ATTRIBUTE,
|
||||
// size, console.cursor, &unused);
|
||||
|
||||
FillConsoleOutputCharacter(
|
||||
console.hConOut, CONSOLE_CLEAR_CHARACTER,
|
||||
size, console.cursor, &unused);
|
||||
// FillConsoleOutputCharacter(
|
||||
// console.hConOut, CONSOLE_CLEAR_CHARACTER,
|
||||
// size, console.cursor, &unused);
|
||||
|
||||
set_console_cursor(1, 0);
|
||||
SetConsoleCursorPosition(console.hConOut, console.cursor);
|
||||
//set_console_cursor(1, 0);
|
||||
//SetConsoleCursorPosition(console.hConOut, console.cursor);
|
||||
|
||||
/* At this point early_raw_print will work */
|
||||
|
||||
@@ -2744,6 +2781,9 @@ void nethack_enter_consoletty(void)
|
||||
console.is_ready = TRUE;
|
||||
nhUse(apisuccess);
|
||||
}
|
||||
|
||||
RESTORE_WARNING_CONDEXPR_IS_CONSTANT
|
||||
|
||||
#endif /* TTY_GRAPHICS */
|
||||
|
||||
/* this is used as a printf() replacement when the window
|
||||
@@ -2756,7 +2796,7 @@ VA_DECL(const char *, fmt)
|
||||
VA_START(fmt);
|
||||
VA_INIT(fmt, const char *);
|
||||
(void) vsnprintf(buf, sizeof buf, fmt, VA_ARGS);
|
||||
if (redirect_stdout)
|
||||
if (redirect_stdout || program_state.early_options)
|
||||
fprintf(stdout, "%s", buf);
|
||||
else {
|
||||
#ifdef TTY_GRAPHICS
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
if not exist lib\* mkdir lib
|
||||
|
||||
if [%1] == [lua] (
|
||||
set LUA_VERSION=5.4.6
|
||||
set LUA_VERSION=5.4.8
|
||||
set LUASRC=../lib/lua
|
||||
set CURLLUASRC=http://www.lua.org/ftp/lua-%LUA_VERSION%.tar.gz
|
||||
set CURLLUADST=lua-%LUA_VERSION%.tar.gz
|
||||
|
||||
@@ -6,12 +6,12 @@ fi
|
||||
|
||||
if [ $1 == "lua" ]; then
|
||||
if [ -z "$LUA_VERSION" ]; then
|
||||
export LUA_VERSION=5.4.6
|
||||
export LUA_VERSION=5.4.8
|
||||
export LUASRC=../lib/lua
|
||||
fi
|
||||
|
||||
export CURLLUASRC=http://www.lua.org/ftp/lua-5.4.6.tar.gz
|
||||
export CURLLUADST=lua-5.4.6.tar.gz
|
||||
export CURLLUASRC=http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
||||
export CURLLUADST=lua-5.4.8.tar.gz
|
||||
|
||||
if [ ! -f lib/lua.h ] ;then
|
||||
cd lib
|
||||
|
||||
@@ -57,6 +57,12 @@ OPTIONS=!autopickup
|
||||
# Set the default boulder symbol to '0'
|
||||
OPTIONS=boulder:0
|
||||
|
||||
# Disable the prompt for a tutorial
|
||||
#OPTIONS=!tutorial
|
||||
|
||||
# Disable game tips
|
||||
#OPTIONS=!tips
|
||||
|
||||
# Highlight menu lines with different colors. You need to define the colors
|
||||
# with MENUCOLOR lines.
|
||||
# Toggle menucolor use on or off
|
||||
|
||||
2
sys/windows/vs/.gitattributes
vendored
2
sys/windows/vs/.gitattributes
vendored
@@ -1,2 +1,2 @@
|
||||
* NH_filestag=(file%s_for_Visual_Studio_2019_or_2022_Community_Edition_builds)
|
||||
* NH_filestag=(file%s_for_Visual_Studio_Community_builds)
|
||||
..files !NH_filegenerated
|
||||
|
||||
@@ -9,7 +9,7 @@ NHV=$(NETHACK_VERSION:.=)
|
||||
NHV=$(NHV:"=)
|
||||
|
||||
# The version of Lua we want
|
||||
LUA_VERSION=5.4.6
|
||||
LUA_VERSION=5.4.8
|
||||
CURLLUASRC=https://www.lua.org/ftp/lua-$(LUA_VERSION).tar.gz
|
||||
CURLLUADST=lua-$(LUA_VERSION).tar.gz
|
||||
|
||||
@@ -33,7 +33,7 @@ SUBMDIR=$(ROOTDIR)\$(SUBMSDIR)
|
||||
|
||||
default: fetchall
|
||||
|
||||
fetchall: libdir fetch-Lua fetch-pdcurses ..\..\..\..\include\nhlua.h
|
||||
fetchall: libdir fetch-Lua fetch-pdcurses
|
||||
|
||||
fetch-lua: fetch-actual-Lua
|
||||
|
||||
@@ -56,14 +56,6 @@ fetch-pdcurses:
|
||||
cd ..\sys\windows\vs\fetchprereq
|
||||
@echo $(PDCDIST) has been fetched into $(LIBDIR)\$(PDCDIST)
|
||||
|
||||
..\..\..\..\include\nhlua.h:
|
||||
@echo /* nhlua.h - generated by Makefile from fetchprereq.nmake */ > $@
|
||||
@echo #include "lua.h" >> $@
|
||||
@echo ATTRNORETURN LUA_API int (lua_error) (lua_State *L) NORETURN; >> $@
|
||||
@echo #include "lualib.h" >> $@
|
||||
@echo #include "lauxlib.h" >> $@
|
||||
@echo /*nhlua.h*/ >> $@
|
||||
|
||||
libdir:
|
||||
@if not exist $(LIBDIR)\*.* echo creating directory $(LIB:\=/)
|
||||
@if not exist $(LIBDIR)\*.* mkdir $(LIBDIR)
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@@ -39,10 +47,18 @@
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.31903.59
|
||||
# Visual Studio Version 18
|
||||
VisualStudioVersion = 18.0.11205.157
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetHackW", "NetHackW\NetHackW.vcxproj", "{CEC5D360-8804-454F-8591-002184C23499}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
@@ -12,6 +12,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetHackW", "NetHackW\NetHac
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB} = {63F9B82B-F589-4082-ABE5-D4F0682050AB}
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42} = {642BC75D-ABAF-403E-8224-7C725FD4CB42}
|
||||
{93F10526-209E-41D7-BBEA-775787876895} = {93F10526-209E-41D7-BBEA-775787876895}
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5} = {A3B1A65E-4B65-4B67-ADF1-0E38567013A5}
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037} = {B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
@@ -26,7 +27,7 @@ EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedefs", "makedefs\makedefs.vcxproj", "{BA3DD34C-04B7-40D0-B373-9329AA9E8945}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3} = {096FD6BB-256A-4E68-9B09-2ACA7C606FF3}
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67} = {503AE687-C33A-45ED-93AA-83967E176D67}
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5} = {A3B1A65E-4B65-4B67-ADF1-0E38567013A5}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recover", "recover\recover.vcxproj", "{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}"
|
||||
@@ -41,26 +42,28 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tile2bmp", "tile2bmp\tile2b
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3} = {096FD6BB-256A-4E68-9B09-2ACA7C606FF3}
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67} = {503AE687-C33A-45ED-93AA-83967E176D67}
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5} = {A3B1A65E-4B65-4B67-ADF1-0E38567013A5}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tilemap", "tilemap\tilemap.vcxproj", "{93F10526-209E-41D7-BBEA-775787876895}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3} = {096FD6BB-256A-4E68-9B09-2ACA7C606FF3}
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67} = {503AE687-C33A-45ED-93AA-83967E176D67}
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5} = {A3B1A65E-4B65-4B67-ADF1-0E38567013A5}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uudecode", "uudecode\uudecode.vcxproj", "{63F9B82B-F589-4082-ABE5-D4F0682050AB}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3} = {096FD6BB-256A-4E68-9B09-2ACA7C606FF3}
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67} = {503AE687-C33A-45ED-93AA-83967E176D67}
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5} = {A3B1A65E-4B65-4B67-ADF1-0E38567013A5}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetHack", "NetHack\NetHack.vcxproj", "{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC} = {0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3} = {096FD6BB-256A-4E68-9B09-2ACA7C606FF3}
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67} = {503AE687-C33A-45ED-93AA-83967E176D67}
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB} = {63F9B82B-F589-4082-ABE5-D4F0682050AB}
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5} = {A3B1A65E-4B65-4B67-ADF1-0E38567013A5}
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037} = {B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B} = {BAA70D0F-3EC7-4D10-91F0-974F1F49308B}
|
||||
EndProjectSection
|
||||
@@ -83,6 +86,8 @@ EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hacklib", "hacklib\hacklib.vcxproj", "{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67} = {503AE687-C33A-45ED-93AA-83967E176D67}
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5} = {A3B1A65E-4B65-4B67-ADF1-0E38567013A5}
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037} = {B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fetchprereq", "FetchPrereq\fetchprereq.vcxproj", "{503AE687-C33A-45ED-93AA-83967E176D67}"
|
||||
@@ -98,6 +103,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB} = {63F9B82B-F589-4082-ABE5-D4F0682050AB}
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42} = {642BC75D-ABAF-403E-8224-7C725FD4CB42}
|
||||
{93F10526-209E-41D7-BBEA-775787876895} = {93F10526-209E-41D7-BBEA-775787876895}
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5} = {A3B1A65E-4B65-4B67-ADF1-0E38567013A5}
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037} = {B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945} = {BA3DD34C-04B7-40D0-B373-9329AA9E8945}
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B} = {BAA70D0F-3EC7-4D10-91F0-974F1F49308B}
|
||||
{CEC5D360-8804-454F-8591-002184C23499} = {CEC5D360-8804-454F-8591-002184C23499}
|
||||
@@ -108,126 +115,202 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lualib", "lualib\lualib.vcx
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67} = {503AE687-C33A-45ED-93AA-83967E176D67}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nhlua_h", "nhlua_h\nhlua_h.vcxproj", "{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67} = {503AE687-C33A-45ED-93AA-83967E176D67}
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037} = {B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|ARM64 = Debug|ARM64
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|ARM64 = Release|ARM64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Debug|x64.Build.0 = Debug|x64
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Release|Win32.Build.0 = Release|Win32
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Release|x64.ActiveCfg = Release|x64
|
||||
{CEC5D360-8804-454F-8591-002184C23499}.Release|x64.Build.0 = Release|x64
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Debug|x64.Build.0 = Debug|x64
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Release|Win32.Build.0 = Release|Win32
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Release|x64.ActiveCfg = Release|x64
|
||||
{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}.Release|x64.Build.0 = Release|x64
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Debug|x64.Build.0 = Debug|x64
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Release|Win32.Build.0 = Release|Win32
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Release|x64.ActiveCfg = Release|x64
|
||||
{BA3DD34C-04B7-40D0-B373-9329AA9E8945}.Release|x64.Build.0 = Release|x64
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Debug|x64.Build.0 = Debug|x64
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Release|Win32.Build.0 = Release|Win32
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Release|x64.ActiveCfg = Release|x64
|
||||
{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}.Release|x64.Build.0 = Release|x64
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Debug|x64.Build.0 = Debug|x64
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Release|Win32.Build.0 = Release|Win32
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Release|x64.ActiveCfg = Release|x64
|
||||
{642BC75D-ABAF-403E-8224-7C725FD4CB42}.Release|x64.Build.0 = Release|x64
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Debug|x64.Build.0 = Debug|x64
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Release|Win32.Build.0 = Release|Win32
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Release|x64.ActiveCfg = Release|x64
|
||||
{93F10526-209E-41D7-BBEA-775787876895}.Release|x64.Build.0 = Release|x64
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Debug|x64.Build.0 = Debug|x64
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Release|Win32.Build.0 = Release|Win32
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Release|x64.ActiveCfg = Release|x64
|
||||
{63F9B82B-F589-4082-ABE5-D4F0682050AB}.Release|x64.Build.0 = Release|x64
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Debug|x64.Build.0 = Debug|x64
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Release|Win32.Build.0 = Release|Win32
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Release|x64.ActiveCfg = Release|x64
|
||||
{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}.Release|x64.Build.0 = Release|x64
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Debug|x64.Build.0 = Debug|x64
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Release|Win32.Build.0 = Release|Win32
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Release|x64.ActiveCfg = Release|x64
|
||||
{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}.Release|x64.Build.0 = Release|x64
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Debug|x64.Build.0 = Debug|x64
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Release|Win32.Build.0 = Release|Win32
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Release|x64.ActiveCfg = Release|x64
|
||||
{1693F852-A207-4348-8223-222C2A7FEEEB}.Release|x64.Build.0 = Release|x64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|x64.Build.0 = Debug|x64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|Win32.Build.0 = Release|Win32
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|x64.ActiveCfg = Release|x64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|x64.Build.0 = Release|x64
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Debug|x64.Build.0 = Debug|x64
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Release|Win32.Build.0 = Release|Win32
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Release|x64.ActiveCfg = Release|x64
|
||||
{503AE687-C33A-45ED-93AA-83967E176D67}.Release|x64.Build.0 = Release|x64
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|x64.Build.0 = Debug|x64
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|Win32.Build.0 = Release|Win32
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|x64.ActiveCfg = Release|x64
|
||||
{0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|x64.Build.0 = Release|x64
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Debug|x64.Build.0 = Debug|x64
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Release|Win32.Build.0 = Release|Win32
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Release|x64.ActiveCfg = Release|x64
|
||||
{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}.Release|x64.Build.0 = Release|x64
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Debug|x64.Build.0 = Debug|x64
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Release|Win32.Build.0 = Release|Win32
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Release|x64.ActiveCfg = Release|x64
|
||||
{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\config.props" />
|
||||
<Import Project="..\dirs.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>NetHack</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<Import Project="..\default.props" />
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
@@ -15,6 +9,38 @@
|
||||
<Import Project="..\console.props" />
|
||||
<Import Project="..\common.props" />
|
||||
<Import Project="..\files.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>NetHack</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OutDir>$(BinDir)</OutDir>
|
||||
</PropertyGroup>
|
||||
@@ -41,20 +67,21 @@
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/Gs /Oi- /w44774 /w45262 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DisableSpecificWarnings>4100;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Platform)'=='ARM64'">4100;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Platform)'!='ARM64'">4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32CON;NO_TILE_C;DLB;SAFEPROCS;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;SND_SOUNDEFFECTS_AUTOMAP;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<LanguageStandard_C>stdclatest</LanguageStandard_C>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>hacklib.lib;lualib.lib;kernel32.lib;dbghelp.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;winmm.lib;Winmm.lib;UserEnv.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>$(SndWavDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(SndWavDir);$(SysWindDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
@@ -86,6 +113,7 @@
|
||||
<ClCompile Include="$(SrcDir)do_wear.c" />
|
||||
<ClCompile Include="$(SrcDir)drawing.c" />
|
||||
<ClCompile Include="$(SrcDir)dungeon.c" />
|
||||
<ClCompile Include="$(SrcDir)earlyarg.c" />
|
||||
<ClCompile Include="$(SrcDir)eat.c" />
|
||||
<ClCompile Include="$(SrcDir)end.c" />
|
||||
<ClCompile Include="$(SrcDir)engrave.c" />
|
||||
@@ -98,6 +126,7 @@
|
||||
<ClCompile Include="$(SrcDir)glyphs.c" />
|
||||
<ClCompile Include="$(SrcDir)hack.c" />
|
||||
<ClCompile Include="$(SrcDir)insight.c" />
|
||||
<ClCompile Include="$(SrcDir)iactions.c" />
|
||||
<ClCompile Include="$(SrcDir)invent.c" />
|
||||
<ClCompile Include="$(SrcDir)isaac64.c" />
|
||||
<ClCompile Include="$(SrcDir)light.c" />
|
||||
@@ -189,7 +218,6 @@
|
||||
<ClCompile Include="$(SysWindDir)windmain.c" />
|
||||
<ClCompile Include="$(SysWindDir)windsys.c" />
|
||||
<ClCompile Include="$(SndWindDir)windsound.c" />
|
||||
<ClCompile Include="$(WinShareDir)safeproc.c" />
|
||||
<ClCompile Include="$(WinTtyDir)getline.c" />
|
||||
<ClCompile Include="$(WinTtyDir)topl.c" />
|
||||
<ClCompile Include="$(WinTtyDir)wintty.c" />
|
||||
@@ -231,6 +259,7 @@
|
||||
<ClInclude Include="$(IncDir)isaac64.h" />
|
||||
<ClInclude Include="$(IncDir)lint.h" />
|
||||
<ClInclude Include="$(IncDir)load_img.h" />
|
||||
<ClInclude Include="$(IncDir)mcastu.h" />
|
||||
<ClInclude Include="$(IncDir)mextra.h" />
|
||||
<ClInclude Include="$(IncDir)mfndpos.h" />
|
||||
<ClInclude Include="$(IncDir)mkroom.h" />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros">
|
||||
<VERSION_MAJOR>3</VERSION_MAJOR>
|
||||
@@ -8,7 +8,7 @@
|
||||
<NETHACK_VERSION>$(VERSION_MAJOR).$(VERSION_MINOR).$(PATCHLEVEL)</NETHACK_VERSION>
|
||||
<LUA_MAJOR_VERSION>5</LUA_MAJOR_VERSION>
|
||||
<LUA_MINOR_VERSION>4</LUA_MINOR_VERSION>
|
||||
<LUA_PATCH_LEVEL>6></LUA_PATCH_LEVEL>
|
||||
<LUA_PATCH_LEVEL>8></LUA_PATCH_LEVEL>
|
||||
<LUA_VERSION>$(LUA_MAJOR_VERSION).$(LUA_MINOR_VERSION).$(LUA_PATCH_LEVEL)</LUA_VERSION>
|
||||
<FMODROOT>$(ROOTDIR)lib\fmod\api\core\</FMODROOT>
|
||||
<FMODLIBBASENAME>fmod_vc.lib</FMODLIBBASENAME>
|
||||
|
||||
@@ -1,6 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\config.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{CEC5D360-8804-454F-8591-002184C23499}</ProjectGuid>
|
||||
<RootNamespace>NetHackW</RootNamespace>
|
||||
@@ -42,18 +68,26 @@
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<RunCodeAnalysis>false</RunCodeAnalysis>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<RunCodeAnalysis>false</RunCodeAnalysis>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<RunCodeAnalysis>false</RunCodeAnalysis>
|
||||
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<RunCodeAnalysis>false</RunCodeAnalysis>
|
||||
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/Gs /Oi- /w44774 /w45262 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DisableSpecificWarnings>4100;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Platform)'=='ARM64'">4100;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Platform)'!='ARM64'">4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>TILES;_WINDOWS;DLB;MSWIN_GRAPHICS;SAFEPROCS;NOTTYGRAPHICS;SND_LIB_WINDSOUND;USER_SOUNDS;HAS_STDINT_H;PDC_WIDE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>TILES;_WINDOWS;DLB;MSWIN_GRAPHICS;NOTTYGRAPHICS;SND_LIB_WINDSOUND;USER_SOUNDS;SND_SOUNDEFFECTS_AUTOMAP;HAS_STDINT_H;HAS_INTTYPES_H;PDC_WIDE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142' And '$(Configuration)|$(Platform)'=='Debug|Win32'">stdclatest</LanguageStandard_C>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142' And '$(Configuration)|$(Platform)'=='Release|Win32'">stdclatest</LanguageStandard_C>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142' And '$(Configuration)|$(Platform)'=='Debug|x64'">stdclatest</LanguageStandard_C>
|
||||
@@ -62,10 +96,7 @@
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SndWavDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SndWavDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SndWavDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SndWavDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(SndWavDir);$(SysWindDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -104,6 +135,7 @@
|
||||
<ClCompile Include="$(SrcDir)do_wear.c" />
|
||||
<ClCompile Include="$(SrcDir)drawing.c" />
|
||||
<ClCompile Include="$(SrcDir)dungeon.c" />
|
||||
<ClCompile Include="$(SrcDir)earlyarg.c" />
|
||||
<ClCompile Include="$(SrcDir)eat.c" />
|
||||
<ClCompile Include="$(SrcDir)end.c" />
|
||||
<ClCompile Include="$(SrcDir)engrave.c" />
|
||||
@@ -115,6 +147,7 @@
|
||||
<ClCompile Include="$(SrcDir)getpos.c" />
|
||||
<ClCompile Include="$(SrcDir)glyphs.c" />
|
||||
<ClCompile Include="$(SrcDir)hack.c" />
|
||||
<ClCompile Include="$(SrcDir)iactions.c" />
|
||||
<ClCompile Include="$(SrcDir)invent.c" />
|
||||
<ClCompile Include="$(SrcDir)insight.c" />
|
||||
<ClCompile Include="$(SrcDir)isaac64.c" />
|
||||
@@ -144,7 +177,9 @@
|
||||
<ClCompile Include="$(SrcDir)nhlsel.c" />
|
||||
<ClCompile Include="$(SrcDir)nhlua.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4100;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">4100;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4100;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">4100;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(SrcDir)objects.c" />
|
||||
<ClCompile Include="$(SrcDir)objnam.c" />
|
||||
@@ -215,7 +250,9 @@
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(WinCursDir)curswins.c" />
|
||||
<ClCompile Condition="Exists('$(FMODINCDIR)\fmod.h') And Exists('$(FMODLIBLIB)') And Exists('$(FMODLIBDLL)')" Include="$(FMODSRC)">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4100;4201;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">4100;4201;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4100;4201;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">4100;4201;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100;4201;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100;4201;4244;4245;4310;4706;4820</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
@@ -226,7 +263,6 @@
|
||||
<ClCompile Include="$(SysWindDir)windsys.c" />
|
||||
<ClCompile Include="$(SysWindDir)win10.c" />
|
||||
<ClCompile Include="$(SndWindDir)windsound.c" />
|
||||
<ClCompile Include="$(WinShareDir)safeproc.c" />
|
||||
<ClCompile Include="$(WinWin32Dir)mhaskyn.c" />
|
||||
<ClCompile Include="$(WinWin32Dir)mhdlg.c" />
|
||||
<ClCompile Include="$(WinWin32Dir)mhfont.c" />
|
||||
@@ -291,6 +327,7 @@
|
||||
<ClInclude Include="$(IncDir)lint.h" />
|
||||
<ClInclude Include="$(IncDir)load_img.h" />
|
||||
<ClInclude Include="$(IncDir)mail.h" />
|
||||
<ClInclude Include="$(IncDir)mcastu.h" />
|
||||
<ClInclude Include="$(IncDir)mextra.h" />
|
||||
<ClInclude Include="$(IncDir)mfndpos.h" />
|
||||
<ClInclude Include="$(IncDir)micro.h" />
|
||||
|
||||
@@ -1,7 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\dirs.props" />
|
||||
<Import Project="..\config.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{BAA70D0F-3EC7-4D10-91F0-974F1F49308B}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
@@ -34,7 +60,9 @@
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\pdcurses\insch.c" />
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\pdcurses\insstr.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\pdcurses\kernel.c" />
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\pdcurses\keyname.c" />
|
||||
@@ -56,11 +84,15 @@
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\pdcurses\window.c" />
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\wincon\pdcclip.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\wincon\pdcdisp.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\wincon\pdcgetsc.c" />
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\wincon\pdckbd.c" />
|
||||
@@ -100,6 +132,12 @@
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;PDC_RGB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;PDC_RGB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
@@ -124,5 +162,17 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;PDC_RGB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
</Project>
|
||||
@@ -2,6 +2,32 @@
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\dirs.props" />
|
||||
<Import Project="..\config.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{1693F852-A207-4348-8223-222C2A7FEEEB}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
@@ -34,7 +60,9 @@
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\pdcurses\insch.c" />
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\pdcurses\insstr.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">4996;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\pdcurses\kernel.c" />
|
||||
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(PDCURSES)\pdcurses\keyname.c" />
|
||||
@@ -94,6 +122,12 @@
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;PDC_WIDE;PDC_RGB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;PDC_WIDE;PDC_RGB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
@@ -118,5 +152,17 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;PDC_WIDE;PDC_RGB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
</Project>
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<LUA_VERSION>5.4.6</LUA_VERSION>
|
||||
<LUA_VERSION>5.4.8</LUA_VERSION>
|
||||
<RootDir>$(MSBuildProjectDirectory)\..\..\..\..\</RootDir>
|
||||
<BinDir>$(RootDir)binary\$(Configuration)\$(Platform)\</BinDir>
|
||||
<ObjDir>$(ProjectDir)obj\$(Configuration)\$(Platform)\$(TargetName)\</ObjDir>
|
||||
@@ -31,6 +31,7 @@
|
||||
<LuaDir>$(LibDir)lua-$(LUA_VERSION)\src\</LuaDir>
|
||||
<SftagsDir>$(RootDir)\sys\windows\vs\sftags\</SftagsDir>
|
||||
<SfctoolDir>$(RootDir)\sys\windows\vs\sfctool\</SfctoolDir>
|
||||
<PackageBin>$(RootDir)binary\$(Configuration)\$(Platform)</PackageBin>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(PDCURSESMOD)'=='' AND Exists('$(LibDir)pdcursesmod\curses.h')">
|
||||
<PDCURSESMOD>$(LibDir)pdcursesmod\</PDCURSESMOD>
|
||||
@@ -40,4 +41,32 @@
|
||||
<PDCURSESMOD>$(SubmodulesDir)pdcursesmod\</PDCURSESMOD>
|
||||
<PDCURSES>$(PDCURSESMOD)</PDCURSES>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<HostTools></HostTools>
|
||||
<Host>$(Platform)</Host>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(PROCESSOR_ARCHITECTURE)'=='ARM64'AND '$(Platform)'=='x86'">
|
||||
<HostTools>..\ARM64\</HostTools>
|
||||
<Host>arm64</Host>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(PROCESSOR_ARCHITECTURE)'=='ARM64'AND '$(Platform)'=='x64'">
|
||||
<HostTools>..\ARM64\</HostTools>
|
||||
<Host>arm64</Host>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(PROCESSOR_ARCHITECTURE)'=='ARM64'AND '$(Platform)'=='ARM64'">
|
||||
<HostTools>..\ARM64\</HostTools>
|
||||
<Host>arm64</Host>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64'AND '$(Platform)'=='x86'">
|
||||
<HostTools>..\x64\</HostTools>
|
||||
<Host>x64</Host>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64'AND '$(Platform)'=='x64'">
|
||||
<HostTools>..\x64\</HostTools>
|
||||
<Host>x64</Host>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64'AND '$(Platform)'=='ARM64'">
|
||||
<HostTools>..\x64\</HostTools>
|
||||
<Host>x64</Host>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
<Import Project="..\dirs.props"/>
|
||||
<Import Project="$(vsDir)files.props"/>
|
||||
<Target Name="Build"
|
||||
Inputs="$(ToolsDir)dlb.exe;@(DlbList);$(SysWindDir)porthelp"
|
||||
Inputs="$(ToolsDir)$(HostTools)dlb.exe;@(DlbList);$(SysWindDir)porthelp"
|
||||
Outputs="$(BinDir)nhdat$(VERSION_MAJOR)$(VERSION_MINOR)$(PATCHLEVEL)">
|
||||
<MakeDir Directories="$(BinDir)"/>
|
||||
<Copy SourceFiles="$(SysWindDir)porthelp" DestinationFolder="$(DatDir)"/>
|
||||
<WriteLinesToFile File="$(DatDir)dlb.lst" Lines="@(DlbList->'%(filename)%(extension)')" Overwrite="true"/>
|
||||
<Exec Command=""$(ToolsDir)dlb.exe" cIf dlb.lst "$(BinDir)\nhdat"" WorkingDirectory="$(DatDir)"/>
|
||||
<Exec Command=""$(ToolsDir)$(HostTools)dlb.exe" cIf dlb.lst "$(BinDir)\nhdat"" WorkingDirectory="$(DatDir)"/>
|
||||
<Delete Files="$(DatDir)porthelp"/>
|
||||
</Target>
|
||||
<Target Name="Clean">
|
||||
|
||||
@@ -2,6 +2,32 @@
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\dirs.props" />
|
||||
<Import Project="..\config.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
@@ -15,19 +41,25 @@
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<Import Project="..\console.props" />
|
||||
<Import Project="..\common.props" />
|
||||
<Import Project="..\files.props" />
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(SysShareDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32CON;DLB;MSWIN_GRAPHICS;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32CON;DLB;MSWIN_GRAPHICS;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142' And '$(Configuration)|$(Platform)'=='Debug|Win32'">stdclatest</LanguageStandard_C>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142' And '$(Configuration)|$(Platform)'=='Release|Win32'">stdclatest</LanguageStandard_C>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142' And '$(Configuration)|$(Platform)'=='Debug|x64'">stdclatest</LanguageStandard_C>
|
||||
@@ -35,7 +67,9 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
@@ -47,7 +81,9 @@
|
||||
</Link>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
@@ -68,4 +104,4 @@
|
||||
<Target Name="AfterRebuild">
|
||||
<MSBuild Projects="afterdlb.proj" Targets="Build" Properties="Configuration=$(Configuration)" />
|
||||
</Target>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -1,10 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@@ -39,10 +47,18 @@
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
@@ -67,5 +83,4 @@
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
@@ -33,6 +33,7 @@
|
||||
<Luafiles Include = "bigrm-10.lua"/>
|
||||
<Luafiles Include = "bigrm-11.lua"/>
|
||||
<Luafiles Include = "bigrm-12.lua"/>
|
||||
<Luafiles Include = "bigrm-13.lua"/>
|
||||
<Luafiles Include = "bigrm-2.lua"/>
|
||||
<Luafiles Include = "bigrm-3.lua"/>
|
||||
<Luafiles Include = "bigrm-4.lua"/>
|
||||
|
||||
@@ -6,11 +6,25 @@
|
||||
<Import Project="..\common.props" />
|
||||
<Import Project="..\files.props" />
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}</ProjectGuid>
|
||||
<RootNamespace>hacklib</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@@ -43,13 +57,6 @@
|
||||
<ClInclude Include="$(IncDir)tradstdc.h" />
|
||||
<ClInclude Include="$(IncDir)windconf.h" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>17.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}</ProjectGuid>
|
||||
<RootNamespace>hacklib</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
@@ -67,13 +74,24 @@
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
@@ -91,20 +109,26 @@
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142'">stdclatest</LanguageStandard_C>
|
||||
<AdditionalOptions>/w45262 %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
</SubSystem>
|
||||
@@ -117,7 +141,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142'">stdclatest</LanguageStandard_C>
|
||||
@@ -135,7 +159,23 @@
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142'">stdclatest</LanguageStandard_C>
|
||||
<AdditionalOptions>/w45262 %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142'">stdclatest</LanguageStandard_C>
|
||||
@@ -153,7 +193,27 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142'">stdclatest</LanguageStandard_C>
|
||||
<AdditionalOptions>/w45262 %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142'">stdclatest</LanguageStandard_C>
|
||||
@@ -168,15 +228,6 @@
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<Target Name="GenerateHeader" BeforeTargets="ClCompile" Outputs="$(IncDir)\nhlua.h">
|
||||
<Message Text="Generating $(IncDir)nhlua.h" />
|
||||
<Exec Command="echo /* nhlua.h - generated by hacklib.vcxproj ClCompile */ > nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo #include %22lua.h%22 >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo ATTRNORETURN LUA_API int (lua_error) (lua_State *L) NORETURN; >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo #include %22lualib.h%22 >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo #include %22lauxlib.h%22 >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo /*nhlua.h*/ >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
</Target>
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -6,11 +6,25 @@
|
||||
<Import Project="..\common.props" />
|
||||
<Import Project="..\files.props" />
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}</ProjectGuid>
|
||||
<RootNamespace>lualib</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@@ -26,12 +40,12 @@
|
||||
</ItemGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/Gs /Oi- /w44774 /w45262 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/Gs /w44774 /w45262 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DisableSpecificWarnings>4100;4244;4245;4310;4706;4820;4324</DisableSpecificWarnings>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>TILES;_WINDOWS;DLB;MSWIN_GRAPHICS;SAFEPROCS;NOTTYGRAPHICS;SND_LIB_WINDSOUND;USER_SOUNDS;HAS_STDINT_H;PDC_WIDE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>TILES;_WINDOWS;DLB;MSWIN_GRAPHICS;SAFEPROCS;NOTTYGRAPHICS;SND_LIB_WINDSOUND;USER_SOUNDS;HAS_STDINT_H;HAS_INTTYPES_H;PDC_WIDE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<LanguageStandard_C>stdclatest</LanguageStandard_C>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
@@ -69,39 +83,29 @@
|
||||
<ClCompile Include="$(LuaDir)lvm.c" />
|
||||
<ClCompile Include="$(LuaDir)lzio.c" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>17.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{B6B3CC8A-75FD-479C-AB1C-D80FFF0F5037}</ProjectGuid>
|
||||
<RootNamespace>lualib</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<PropertyGroup Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<PlatformToolset>v145</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -117,15 +121,21 @@
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Gs /Oi- /w44774 %(AdditionalOptions)</AdditionalOptions>
|
||||
@@ -142,10 +152,11 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Gs /Oi- /w44774 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
@@ -159,7 +170,7 @@
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Gs /Oi- /w44774 %(AdditionalOptions)</AdditionalOptions>
|
||||
@@ -170,16 +181,52 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Gs /w44774 %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Gs /Oi- /w44774 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>false</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Gs /w44774 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>
|
||||
@@ -190,15 +237,6 @@
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<Target Name="GenerateHeader" BeforeTargets="ClCompile" Outputs="$(IncDir)\nhlua.h">
|
||||
<Message Text="Generating $(IncDir)nhlua.h" />
|
||||
<Exec Command="echo /* nhlua.h - generated by lualib.vcxproj ClCompile */ > nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo #include %22lua.h%22 >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo ATTRNORETURN LUA_API int (lua_error) (lua_State *L) NORETURN; >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo #include %22lualib.h%22 >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo #include %22lauxlib.h%22 >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo /*nhlua.h*/ >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
</Target>
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -2,12 +2,12 @@
|
||||
<Import Project="..\dirs.props"/>
|
||||
<Import Project="$(vsDir)files.props"/>
|
||||
<Target Name="Build"
|
||||
Inputs="$(ToolsDir)makedefs.exe"
|
||||
Inputs="$(ToolsDir)$(HostTools)makedefs.exe"
|
||||
Outputs="@(Defs)">
|
||||
<Exec Command=""$(ToolsDir)makedefs.exe" -d" WorkingDirectory="$(DatDir)"/>
|
||||
<Exec Command=""$(ToolsDir)makedefs.exe" -r" WorkingDirectory="$(DatDir)"/>
|
||||
<Exec Command=""$(ToolsDir)makedefs.exe" -s" WorkingDirectory="$(DatDir)"/>
|
||||
<Exec Command=""$(ToolsDir)makedefs.exe" -h" WorkingDirectory="$(DatDir)"/>
|
||||
<Exec Command=""$(ToolsDir)$(HostTools)makedefs.exe" -d" WorkingDirectory="$(DatDir)"/>
|
||||
<Exec Command=""$(ToolsDir)$(HostTools)makedefs.exe" -r" WorkingDirectory="$(DatDir)"/>
|
||||
<Exec Command=""$(ToolsDir)$(HostTools)makedefs.exe" -s" WorkingDirectory="$(DatDir)"/>
|
||||
<Exec Command=""$(ToolsDir)$(HostTools)makedefs.exe" -h" WorkingDirectory="$(DatDir)"/>
|
||||
</Target>
|
||||
<Target Name="Clean">
|
||||
<Delete Files="@(Defs)"/>
|
||||
|
||||
@@ -2,6 +2,32 @@
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\config.props" />
|
||||
<Import Project="..\dirs.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{BA3DD34C-04B7-40D0-B373-9329AA9E8945}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
@@ -15,19 +41,25 @@
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<Import Project="..\console.props" />
|
||||
<Import Project="..\common.props" />
|
||||
<Import Project="..\files.props" />
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32CON;DLB;MSWIN_GRAPHICS;ENUM_PM;HAS_STDINT_H;HAS_INTTYPES_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142'">stdclatest</LanguageStandard_C>
|
||||
<AdditionalOptions>/w45262 %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
@@ -68,4 +100,4 @@
|
||||
<Target Name="AfterRebuild">
|
||||
<MSBuild Projects="aftermakedefs.proj" Targets="Build" Properties="Configuration=$(Configuration)" />
|
||||
</Target>
|
||||
</Project>
|
||||
</Project>
|
||||
59
sys/windows/vs/nhlua_h/nhlua_h.vcxproj
Normal file
59
sys/windows/vs/nhlua_h/nhlua_h.vcxproj
Normal file
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\dirs.props" />
|
||||
<Import Project="..\config.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{A3B1A65E-4B65-4B67-ADF1-0E38567013A5}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<Import Project="..\default.props" />
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Project="..\NetHackProperties.props" />
|
||||
</ImportGroup>
|
||||
<Import Project="..\console.props" />
|
||||
<Import Project="..\common.props" />
|
||||
<Import Project="..\files.props" />
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<Target Name="GenerateHeader" BeforeTargets="ClCompile" Outputs="$(IncDir)\nhlua.h">
|
||||
<Message Text="Generating $(IncDir)nhlua.h" />
|
||||
<Exec Command="echo /* nhlua.h - generated by nhlua_h.vcxproj ClCompile */ > nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo #include %22lua.h%22 >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo ATTRNORETURN LUA_API int (lua_error) (lua_State *L) NORETURN; >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo #include %22lualib.h%22 >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo #include %22lauxlib.h%22 >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
<Exec Command="echo /*nhlua.h*/ >> nhlua.h" WorkingDirectory="$(IncDir)" />
|
||||
</Target> <Target Name="AfterBuild">
|
||||
</Target>
|
||||
<Target Name="AfterClean">
|
||||
</Target>
|
||||
<Target Name="AfterRebuild">
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -22,6 +22,7 @@ NHV=$(NHV:"=)
|
||||
#SUBMSDIR=submodules # NetHack git submodules
|
||||
PACKAGESDIR=vspackage # put in vspackage to distinguish
|
||||
ROOTDIR=..\..\..\.. # root of NetHack tree relative to project file
|
||||
PlatformFileName=$(lowercase $(PlatformShortName))
|
||||
|
||||
# Directories we might have to collect things from
|
||||
#
|
||||
@@ -41,6 +42,7 @@ X11 = $(ROOTDIR)\win\X11 # X11 support files
|
||||
LIBDIR = $(ROOTDIR)\lib # libraries and external bits
|
||||
SUBMDIR = $(ROOTDIR)\submodules # NetHack git submodules
|
||||
SndWavDir = $(ROOTDIR)\sound\wav # sound files that get integrated
|
||||
DocDir = $(ROOTDIR)\doc
|
||||
|
||||
# Directories we might place collected things
|
||||
#
|
||||
@@ -73,8 +75,8 @@ FILESTOZIP=$(VSBINDIR)\Guidebook.txt $(VSBINDIR)\license \
|
||||
DBGSYMS = NetHack.PDB NetHackW.PDB
|
||||
PDBTOZIP = ..\NetHack\symbols\$(Configuration)\$(Platform)\NetHack.PDB \
|
||||
..\NetHackW\symbols\$(Configuration)\$(Platform)\NetHackW.PDB
|
||||
MAINZIP = $(VSPACKAGEDIR)\nethack-$(NHV)-win-$(PlatformShortName).zip
|
||||
DBGSYMZIP = $(VSPACKAGEDIR)\nethack-$(NHV)-win-$(PlatformShortName)-debugsymbols.zip
|
||||
MAINZIP = $(VSPACKAGEDIR)\nethack-$(NHV)-win-$(PlatformFileName).zip
|
||||
DBGSYMZIP = $(VSPACKAGEDIR)\nethack-$(NHV)-win-$(PlatformFileName)-debugsymbols.zip
|
||||
|
||||
packageall: packagezip
|
||||
|
||||
@@ -91,11 +93,11 @@ $(DBGSYMZIP): $(PDBTOZIP)
|
||||
$(VSBINDIR)\license: $(BinDir)\license
|
||||
copy /Y $(BinDir)\license $@
|
||||
$(VSBINDIR)\Guidebook.txt: $(BinDir)\Guidebook.txt
|
||||
copy /Y $(BinDir)\Guidebook.txt $@
|
||||
copy /Y $(DocDir)\Guidebook.txt $@
|
||||
$(VSBINDIR)\NetHack.exe: $(BinDir)\NetHack.exe
|
||||
copy /Y $(BinDir)\NetHack.exe $@
|
||||
$(VSBINDIR)\NetHack.txt: $(BinDir)\NetHack.txt
|
||||
copy /Y $(BinDir)\NetHack.txt $@
|
||||
copy /Y $(DocDir)\NetHack.txt $@
|
||||
$(VSBINDIR)\NetHackW.exe: $(BinDir)\NetHackW.exe
|
||||
copy /Y $(BinDir)\NetHackW.exe $@
|
||||
$(VSBINDIR)\opthelp: $(BinDir)\opthelp
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@@ -40,10 +48,18 @@
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
@@ -54,9 +70,9 @@
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<NMakeBuildCommandLine>pushd $(vsDir)package %26%26 nmake -F package.nmake BinDir="$(BinDir)\" Platform="$(Platform)" PlatformShortName="$(PlatformShortName)" Configuration="$(Configuration)" NETHACK_VERSION="$(NETHACK_VERSION)" %26%26 popd</NMakeBuildCommandLine>
|
||||
<NMakeCleanCommandLine>pushd $(vsDir)package %26%26 nmake -F package.nmake clean %26%26 popd</NMakeCleanCommandLine>
|
||||
<NMakeReBuildCommandLine>pushd $(vsDir)package %26%26 nmake -F package.nmake rebuild %26%26 popd</NMakeReBuildCommandLine>
|
||||
<NMakeBuildCommandLine>pushd $(vsDir)package %26%26 nmake /NOLOGO -F package.nmake BinDir="$(BinDir)\" Platform="$(Platform)" PlatformShortName="$(PlatformShortName)" Configuration="$(Configuration)" NETHACK_VERSION="$(NETHACK_VERSION)" %26%26 popd</NMakeBuildCommandLine>
|
||||
<NMakeCleanCommandLine>pushd $(vsDir)package %26%26 nmake /NOLOGO -F package.nmake clean %26%26 popd</NMakeCleanCommandLine>
|
||||
<NMakeReBuildCommandLine>pushd $(vsDir)package %26%26 nmake /NOLOGO -F package.nmake rebuild %26%26 popd</NMakeReBuildCommandLine>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
@@ -2,6 +2,32 @@
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\dirs.props" />
|
||||
<Import Project="..\config.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
@@ -19,7 +45,7 @@
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(IncDir);$(SysWindDir);$(LuaDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32CON;DLB;MSWIN_GRAPHICS;HAS_STDINT_H;MINIMAL_FOR_RECOVER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32CON;DLB;MSWIN_GRAPHICS;HAS_STDINT_H;HAS_INTTYPES_H;MINIMAL_FOR_RECOVER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<LanguageStandard_C Condition="'$(DefaultPlatformToolset)'!='v142'">stdclatest</LanguageStandard_C>
|
||||
<AdditionalOptions>/w45262 %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
@@ -31,7 +57,7 @@
|
||||
<ItemGroup>
|
||||
<ClCompile Include="$(UtilDir)recover.c" />
|
||||
<ClCompile Include="$(SrcDir)version.c">
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32CON;DLB;MSWIN_GRAPHICS;HAS_STDINT_H;MINIMAL_FOR_RECOVER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32CON;DLB;MSWIN_GRAPHICS;HAS_STDINT_H;HAS_INTTYPES_H;MINIMAL_FOR_RECOVER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -53,4 +79,4 @@
|
||||
<Target Name="AfterRebuild">
|
||||
<MSBuild Projects="afterrecover.proj" Targets="Build" Properties="Configuration=$(Configuration)" />
|
||||
</Target>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.13.35913.81
|
||||
# Visual Studio Version 18
|
||||
VisualStudioVersion = 18.0.11205.157 d18.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sfctool", "sfctool\sfctool.vcxproj", "{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
@@ -20,40 +20,58 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hacklib", "hacklib\hacklib.
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|ARM64 = Debug|ARM64
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|ARM64 = Release|ARM64
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Debug|x64.Build.0 = Debug|x64
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Release|x64.ActiveCfg = Release|x64
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Release|x64.Build.0 = Release|x64
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{3BFA3C14-6DA2-4750-B1C6-028B9BCE825E}.Release|x86.Build.0 = Release|Win32
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Debug|x64.Build.0 = Debug|x64
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Debug|x86.Build.0 = Debug|Win32
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Release|x64.ActiveCfg = Release|x64
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Release|x64.Build.0 = Release|x64
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Release|x86.ActiveCfg = Release|Win32
|
||||
{628C594A-7565-4366-9FCA-41DB67C6B615}.Release|x86.Build.0 = Release|Win32
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Debug|x64.Build.0 = Debug|x64
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Debug|x86.Build.0 = Debug|Win32
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Release|x64.ActiveCfg = Release|x64
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Release|x64.Build.0 = Release|x64
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Release|x86.ActiveCfg = Release|Win32
|
||||
{AAE63AD3-8185-4E19-B6A3-13F4CB891AAD}.Release|x86.Build.0 = Release|Win32
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|x64.Build.0 = Debug|x64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Debug|x86.Build.0 = Debug|Win32
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|x64.ActiveCfg = Release|x64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|x64.Build.0 = Release|x64
|
||||
{096FD6BB-256A-4E68-9B09-2ACA7C606FF3}.Release|x86.ActiveCfg = Release|Win32
|
||||
|
||||
@@ -11,10 +11,18 @@
|
||||
<OutDir>$(BinDir)</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@@ -95,6 +103,12 @@
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
@@ -102,6 +116,13 @@
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
@@ -116,14 +137,20 @@
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SAFEPROCS;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<LanguageStandard_C>stdclatest</LanguageStandard_C>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
@@ -139,7 +166,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_NDEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SAFEPROCS;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_NDEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<LanguageStandard_C>stdclatest</LanguageStandard_C>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
@@ -159,7 +186,23 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SAFEPROCS;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<LanguageStandard_C>stdclatest</LanguageStandard_C>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;userenv.lib;advapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<LanguageStandard_C>stdclatest</LanguageStandard_C>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
@@ -175,7 +218,27 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_NDEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SAFEPROCS;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_NDEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<LanguageStandard_C>stdclatest</LanguageStandard_C>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;userenv.lib;advapi32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_NDEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<LanguageStandard_C>stdclatest</LanguageStandard_C>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
@@ -195,4 +258,4 @@
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
||||
@@ -8,10 +8,18 @@
|
||||
<Import Project="..\common.props" />
|
||||
<Import Project="..\files.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@@ -55,6 +63,12 @@
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
@@ -62,6 +76,13 @@
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
@@ -76,14 +97,20 @@
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SAFEPROCS;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
@@ -91,14 +118,14 @@
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SAFEPROCS;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
@@ -110,14 +137,14 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SAFEPROCS;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
@@ -125,14 +152,29 @@
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SAFEPROCS;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
@@ -145,14 +187,34 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(WinWin32Dir);$(IncDir);$(SysWindDir);$(SysShareDir);$(WinShareDir);$(LuaDir);$(UtilDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32CON;NO_TILE_C;DLB;SND_LIB_WINDSOUND;USER_SOUNDS;_LIB;HAS_STDINT_H;HAS_INTTYPES_H;SFCTOOL;NOPANICTRACE;NOCRASHREPORT;NO_CHRONICLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(ToolsDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>hacklib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
<Target Name="AfterBuild">
|
||||
<Target Name="AfterBuild">
|
||||
<MSBuild Projects="aftersftags.proj" Targets="Build" Properties="Configuration=$(Configuration)" />
|
||||
</Target>
|
||||
<Target Name="AfterClean">
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<Import Project="..\dirs.props"/>
|
||||
<Import Project="$(vsDir)files.props"/>
|
||||
<Target Name="Build"
|
||||
Inputs="$(ToolsDir)tile2bmp.exe;$(WinShareDir)monsters.txt;$(WinShareDir)objects.txt"
|
||||
Inputs="$(ToolsDir)$(HostTools)tile2bmp.exe;$(WinShareDir)monsters.txt;$(WinShareDir)objects.txt"
|
||||
Outputs="$(WinWin32Dir)tiles.bmp">
|
||||
<Exec Command=""$(ToolsDir)tile2bmp.exe" tiles.bmp" WorkingDirectory="$(SrcDir)"/>
|
||||
<Exec Command=""$(ToolsDir)$(HostTools)tile2bmp.exe" tiles.bmp" WorkingDirectory="$(SrcDir)"/>
|
||||
<Move SourceFiles="$(SrcDir)tiles.bmp" DestinationFolder="$(WinWin32Dir)"/>
|
||||
</Target>
|
||||
<Target Name="Clean">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user