#ifdef DLB
/* implementations */
-#ifdef MAC
+#if defined(MAC) && !defined(MAC_CROSS)
#define DLBRSRC /* use Mac resources */
#else
#define DLBLIB /* use a set of external files */
/* ### random.c ### */
#if defined(RANDOM) && !defined(__GO32__) /* djgpp has its own random */
+#ifndef AMIGA_CROSS
E void FDECL(srandom, (unsigned));
E char *FDECL(initstate, (unsigned, char *, int));
E char *FDECL(setstate, (char *));
E long NDECL(random);
+#endif
#endif /* RANDOM */
/* ### read.c ### */
#include "ntconf.h"
#endif
+#ifdef AMIGA
+#include "amiconf.h"
+#endif
+
/* Displayable name of this port; don't redefine if defined in *conf.h */
#ifndef PORT_ID
#ifdef AMIGA
/*#define OVERLAY */ /* Manual overlay definition (MSC 6.0ax only) */
+#ifndef AMIGA_CROSS
#define SHELL /* via exec of COMMAND.COM */
+#endif
/*
* Screen control options
#define ANSI_DEFAULT
#endif
+#ifndef AMIGA_CROSS
#define RANDOM /* have Berkeley random(3) */
+#endif
#define MAIL /* Allows for fake mail daemon to deliver mail */
/* in the MSDOS version. (For AMIGA MAIL see */
#include <process.h> /* Provides prototypes of exit(), spawn() */
#endif
+#ifdef AMIGA_CROSS
+#include <spawn.h>
+#endif
+
#if defined(_MSC_VER) && (_MSC_VER >= 7)
#include <sys/types.h>
#include <stdlib.h>
#endif /* MSDOS configuration stuff */
+#ifndef PATHLEN
#define PATHLEN 64 /* maximum pathlength */
+#endif
#define FILENAME 80 /* maximum filename length (conservative) */
#ifndef MICRO_H
#include "micro.h" /* contains necessary externs for [os_name].c */
#include <time.h> /* get time_t defined before use! */
+#ifdef AMIGA_CROSS
+#include <stdlib.h>
+#include <string.h>
+#endif
+
#ifdef __SASC_60 /* since SAS can prevent re-inclusion */
#include <stdlib.h> /* general things, including builtins */
#include <string.h>
LEVELDIR, SAVEDIR, BONESDIR, DATADIR, \
SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR */
+#define PATHLEN 130
+
/* data librarian defs */
#ifndef NOCWD_ASSUMPTIONS
#define DLBFILE "NetHack:nhdat" /* main library */
#define DLBFILE2 "nhsdat" /* sound library */
#endif
+#ifndef AMIGA_CROSS
#define FILENAME_CMP stricmp /* case insensitive */
+#else
+#define FILENAME_CMP strcmpi /* case insensitive */
+#endif
#ifndef __SASC_60
#define O_BINARY 0
#define MFLOPPY /* You'll probably want this; provides assistance \
* for typical personal computer configurations \
*/
+#ifndef AMIGA_CROSS
#define RANDOM
+#endif
/* ### amidos.c ### */
extern char *FDECL(gets, (char *));
#endif
-#define msmsg printf
-
/*
* If AZTEC_C we can't use the long cpath in vision.c....
*/
#define TEXTCOLOR /* Use colored monsters and objects */
#define HACKFONT /* Use special hack.font */
-#define SHELL /* Have a shell escape command (!) */
+#ifndef AMIGA_CROSS /* issues with prototype and spawnl */
+#define SHELL /* Have a shell escape command (!) */
+#endif
#define MAIL /* Get mail at unexpected occasions */
#define DEFAULT_ICON "NetHack:default.icon" /* private icon */
#define AMIFLUSH /* toss typeahead (select flush in .cnf) */
#undef M
#define M(c) ((c) -128)
#endif
+struct ami_sysflags {
+ char sysflagsid[10];
+#ifdef AMIFLUSH
+ boolean altmeta; /* use ALT keys as META */
+ boolean amiflush; /* kill typeahead */
+#endif
+#ifdef AMII_GRAPHICS
+ int numcols;
+ unsigned short amii_dripens[20]; /* DrawInfo Pens currently there are 13 in v39 */
+ AMII_COLOR_TYPE amii_curmap[AMII_MAXCOLORS]; /* colormap */
+#endif
+#ifdef OPT_DISPMAP
+ boolean fast_map; /* use optimized, less flexible map display */
+#endif
+#ifdef MFLOPPY
+ boolean asksavedisk;
+#endif
+};
+extern struct ami_sysflags sysflags;
#endif /* AMICONF_H */
AMIGAOBJ = \
$(O)amidos.o $(O)amirip.o $(O)amistack.o \
$(O)amiwind.o $(O)winami.o $(O)winchar.o $(O)winfuncs.o \
- $(O)winkey.o $(O)winmenu.o $(O)winreq.o $(O)winstr.o
+ $(O)winkey.o $(O)winamenu.o $(O)winreq.o $(O)winstr.o
# Objects from assembly sources (because DMake can't handle default rules)
AMIGAOBJ2 = \
$(O)winkey.o: $(AMI)winkey.c $(HDEP) $(AMDEP)
-$(O)winmenu.o: $(AMI)winmenu.c $(HDEP) $(AMDEP)
+$(O)winamenu.o: $(AMI)winamenu.c $(HDEP) $(AMDEP)
$(O)winami.o: $(AMI)winami.c $(HDEP) $(AMDEP) #$(AMI)char.c $(AMI)randwin.c
AMIGAOBJ = \
$(O)amidos.o $(O)amirip.o $(O)amistack.o \
$(O)amiwind.o $(O)winami.o $(O)winchar.o $(O)winfuncs.o \
- $(O)winkey.o $(O)winmenu.o $(O)winreq.o $(O)winstr.o
+ $(O)winkey.o $(O)winamenu.o $(O)winreq.o $(O)winstr.o
# Objects from assembly sources (because DMake can't handle default rules)
AMIGAOBJ2 = \
$(O)winkey.o: $(AMI)winkey.c $(HDEP) $(AMDEP)
-$(O)winmenu.o: $(AMI)winmenu.c $(HDEP) $(AMDEP)
+$(O)winamenu.o: $(AMI)winamenu.c $(HDEP) $(AMDEP)
$(O)winami.o: $(AMI)winami.c $(HDEP) $(AMDEP) #$(AMI)char.c $(AMI)randwin.c
#endif
/* Prototypes */
-#include "NH:sys/amiga/winami.p"
+#ifndef AMIGA_CROSS
#include "NH:sys/amiga/amiwind.p"
+#include "NH:sys/amiga/winami.p"
#include "NH:sys/amiga/amidos.p"
+#else
+#include "winami.p"
+#include "winami.p"
+#include "amidos.p"
+#endif
extern char Initialized;
extern struct window_procs amii_procs;
+struct ami_sysflags sysflags = {0};
#ifndef __SASC_60
int Enable_Abort = 0; /* for stdio package */
}
#endif
+#ifdef MFLOPPY
/* this should be replaced */
saveDiskPrompt(start)
{
}
return 1;
}
+#endif /* MFLOPPY */
/* Return 1 if the record file was found */
static boolean
#include <functions.h>
#endif
+#ifndef AMIGA_CROSS
#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 */
tomb_text(buf);
/* Put $ on stone */
- Sprintf(buf, "%ld Au", done_money);
+ Sprintf(buf, "%ld Au", g.done_money);
buf[STONE_LINE_LEN] = 0; /* It could be a *lot* of gold :-) */
tomb_text(buf);
/* Copyright (c) Kenneth Lorber, Bethesda, Maryland 1993,1996 */
/* NetHack may be freely redistributed. See license for details. */
+#ifndef AMIGA_CROSS
#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
static void ProcessMessage(register struct IntuiMessage *message);
#define BufferQueueChar(ch) (KbdBuffer[KbdBuffered++] = (ch))
-
+#ifndef AMIGA_CROSS
struct Library *ConsoleDevice;
+#else
+struct Device *
+# ifdef __CONSTLIBBASEDECL__
+ __CONSTLIBBASEDECL__
+# endif /* __CONSTLIBBASEDECL__ */
+ ConsoleDevice;
+#endif
+#ifndef AMIGA_CROSS
#include "NH:sys/amiga/amimenu.c"
+#else
+#include "amimenu.c"
+#endif
/* Now our own variables */
-/* NetHack 3.6 winmenu.c $NHDT-Date: 1432512796 2015/05/25 00:13:16 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
+/* NetHack 3.6 winamenu.c $NHDT-Date: 1432512796 2015/05/25 00:13:16 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993,1996.
*/
/* NetHack may be freely redistributed. See license for details. */
+#ifndef AMIGA_CROSS
#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
/* Start building the text for a menu */
void
*/
/* NetHack may be freely redistributed. See license for details. */
+#ifndef AMIGA_CROSS
#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
+
#include "dlb.h"
+#ifdef AMIGA_CROSS
+#define strnicmp strncmpi
+#endif
+
#ifdef AMIGA_INTUITION
static int FDECL(put_ext_cmd, (char *, int, struct amii_WinDesc *, int));
*/
struct window_procs amii_procs = {
"amii", WC_COLOR | WC_HILITE_PET | WC_INVERSE,
+ 0L,
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* color availability */
- 0L, amii_init_nhwindows,
+ amii_init_nhwindows,
amii_player_selection, amii_askname, amii_get_nh_event,
amii_exit_nhwindows, amii_suspend_nhwindows, amii_resume_nhwindows,
amii_create_nhwindow, amii_clear_nhwindow, amii_display_nhwindow,
*/
struct window_procs amiv_procs = {
"amitile", WC_COLOR | WC_HILITE_PET | WC_INVERSE,
+ 0L,
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* color availability */
- 0L, amii_init_nhwindows,
+ amii_init_nhwindows,
amii_player_selection, amii_askname, amii_get_nh_event,
amii_exit_nhwindows, amii_suspend_nhwindows, amii_resume_nhwindows,
amii_create_nhwindow, amii_clear_nhwindow, amii_display_nhwindow,
register int win;
register dlb *fp;
register char *t;
- register char buf[200];
+ char buf[200];
if (fn == NULL)
panic("NULL file name in display_file()");
#ifdef TESTING
#include "hack.h"
#else
+#ifndef AMIGA_CROSS
#include "NH:src/tile.c"
+#else
+#include "../src/tile.c"
+#endif
#endif
+#ifndef AMIGA_CROSS
#include "NH:win/share/tile.h"
-
#include "NH:sys/amiga/windefs.h"
#include "NH:sys/amiga/winext.h"
#include "NH:sys/amiga/winproto.h"
+#else
+#include "tile.h"
+#include "windefs.h"
+#include "winext.h"
+#include "winproto.h"
+#endif
#ifdef OPT_DISPMAP
#define DISPMAP /* use display_map() from dispmap.s */
*/
/* NetHack may be freely redistributed. See license for details. */
+#ifndef AMIGA_CROSS
#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
+
#include "patchlevel.h"
#include "date.h"
extern struct TagItem scrntags[];
-
+#ifndef AMIGA_CROSS
+extern struct Library *ConsoleDevice;
+#else
+extern struct Device *
+# ifdef __CONSTLIBBASEDECL__
+ __CONSTLIBBASEDECL__
+# endif /* __CONSTLIBBASEDECL__ */
+ ConsoleDevice;
+#endif
static BitMapHeader amii_bmhd;
static void cursor_common(struct RastPort *, int, int);
Abort(AG_OpenDev | AO_ConsoleDev);
}
- ConsoleDevice = (struct Library *) ConsoleIO.io_Device;
-
+ ConsoleDevice =
+#ifndef AMIGA_CROSS
+ (struct Library *)
+#else
+ (struct Device *
+# ifdef __CONSTLIBBASEDECL__
+ __CONSTLIBBASEDECL__
+# endif /* __CONSTLIBBASEDECL__ */
+ )
+#endif
+ ConsoleIO.io_Device;
KbdBuffered = 0;
#ifdef HACKFONT
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */
/* NetHack may be freely redistributed. See license for details. */
+#ifndef AMIGA_CROSS
#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
amii_nh_poskey(x, y, mod) int *x, *y, *mod;
{
#endif
void CleanUp(void);
void flush_glyph_buffer(struct Window *w);
-void amiga_print_glyph(winid window, int color_index, int glyph, int bkglyph);
+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);
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */
/* NetHack may be freely redistributed. See license for details. */
+#ifndef AMIGA_CROSS
#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
#define GADBLUEPEN 2
#define GADREDPEN 3
&String, NULL, NULL, NULL, NULL, 5, 5, 0xffff, 0xffff, CUSTOMSCREEN
};
+#ifndef AMIGA_CROSS
#include "NH:sys/amiga/colorwin.c"
+#else
+#include "colorwin.c"
+#endif
#define XSIZE 2
#define YSIZE 3
#define GADOKAY 6
#define GADCANCEL 7
+#ifndef AMIGA_CROSS
#include "NH:sys/amiga/clipwin.c"
+#else
+#include "clipwin.c"
+#endif
void ClearCol(struct Window *w);
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */
/* NetHack may be freely redistributed. See license for details. */
+#ifndef AMIGA_CROSS
#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
while (isspace(*str))
str++;
- strncpy(toplines, str, TBUFSZ);
- toplines[TBUFSZ - 1] = 0;
+ strncpy(g.toplines, str, TBUFSZ);
+ g.toplines[TBUFSZ - 1] = 0;
/* For initial message to be visible, we need to explicitly position
* the
memcpy(cw->data, &cw->data[1],
(iflags.msg_history - 1) * sizeof(char *));
cw->data[iflags.msg_history - 1] =
- (char *) alloc(strlen(toplines) + 5);
+ (char *) alloc(strlen(g.toplines) + 5);
strcpy(cw->data[i = iflags.msg_history - 1] + SOFF
+ (scrollmsg != 0),
- toplines);
+ g.toplines);
} else {
/* Otherwise, allocate a new one and copy the line in */
- cw->data[cw->maxrow] = (char *) alloc(strlen(toplines) + 5);
+ cw->data[cw->maxrow] = (char *) alloc(strlen(g.toplines) + 5);
strcpy(cw->data[i = cw->maxrow++] + SOFF + (scrollmsg != 0),
- toplines);
+ g.toplines);
}
cw->data[i][SEL_ITEM] = 1;
cw->data[i][VATTR] = attr + 1;
/ w->RPort->TxHeight,
totalvis, totalvis);
}
- i = strlen(toplines + SOFF);
+ i = strlen(g.toplines + SOFF);
cw->maxcol = max(cw->maxcol, i);
cw->vwy = cw->maxrow;
break;
if (argc == 0)
chdirx(HACKDIR, 1);
#endif
- ami_wininit_data();
+ ami_wininit_data(WININIT);
#endif
initoptions();
}
#endif /* EXEPATH */
+#ifdef AMIGA_CROSS
+void msmsg
+VA_DECL(const char *, fmt)
+{
+ VA_START(fmt);
+ VA_INIT(fmt, const char *);
+ Vprintf(fmt, VA_ARGS);
+ flushout();
+ VA_END();
+ return;
+}
+
+unsigned long
+sys_random_seed()
+{
+ unsigned long seed = 0L;
+ unsigned long pid = (unsigned long) getpid();
+ boolean no_seed = TRUE;
+
+#ifdef AMIGA_STRONG_RANDOM_SEED_HERE
+ /* hypothetical - strong seed code is required */
+ /* then has_strong_seed could be set */
+#endif
+ if (no_seed) {
+ seed = (unsigned long) getnow(); /* time((TIME_type) 0) */
+ /* Quick dirty band-aid to prevent PRNG prediction */
+ if (pid) {
+ if (!(pid & 3L))
+ pid -= 1L;
+ seed *= pid;
+ }
+ }
+ return seed;
+}
+#endif
+
/*pcmain.c*/
#include <ctype.h>
#include <fcntl.h>
-#if !defined(MSDOS) && !defined(WIN_CE) /* already done */
+#if !defined(MSDOS) && !defined(WIN_CE) && !defined(AMIGA_CROSS)
#include <process.h>
#endif
-#ifdef __GO32__
+#if defined(__GO32__) || defined(AMIGA_CROSS)
#define P_WAIT 0
#define P_NOWAIT 1
#endif
{
#ifdef TOS
msmsg("Hit <Return> %s.", str);
+#else
+#ifdef AMIGA_CROSS
+ (void) printf("Hit <Enter> %s.", str);
#else
msmsg("Hit <Enter> %s.", str);
+#endif
#endif
while (pgetchar() != '\n')
;
@echo msdos package zip file $(TARGETDIR)/NH370DOS.ZIP
endif # CROSS_TO_MSDOS
+ifdef CROSS_TO_AMIGA
+$(TARGETDIR)/amidos.o : ../outdated/sys/amiga/amidos.c $(HACK_H)
+$(TARGETDIR)/amigst.o : ../outdated/sys/amiga/amigst.c $(HACK_H)
+$(TARGETDIR)/amirip.o : ../outdated/sys/amiga/amirip.c $(HACK_H)
+$(TARGETDIR)/amistack.o : ../outdated/sys/amiga/amistack.c $(HACK_H)
+$(TARGETDIR)/amitty.o : ../outdated/sys/amiga/amitty.c $(HACK_H)
+$(TARGETDIR)/amiwind.o : ../outdated/sys/amiga/amiwind.c \
+ ../outdated/sys/amiga/amimenu.c $(HACK_H)
+$(TARGETDIR)/winami.o : ../outdated/sys/amiga/winami.c $(HACK_H)
+$(TARGETDIR)/winchar.o : ../outdated/sys/amiga/winchar.c tile.c $(HACK_H)
+$(TARGETDIR)/winfuncs.o : ../outdated/sys/amiga/winfuncs.c $(HACK_H)
+$(TARGETDIR)/winkey.o : ../outdated/sys/amiga/winkey.c $(HACK_H)
+$(TARGETDIR)/winamenu.o : ../outdated/sys/amiga/winamenu.c $(HACK_H)
+$(TARGETDIR)/winreq.o : ../outdated/sys/amiga/winreq.c \
+ ../outdated/sys/amiga/colorwin.c \
+ ../outdated/sys/amiga/clipwin.c $(HACK_H)
+$(TARGETDIR)/winstr.o : ../outdated/sys/amiga/winstr.c $(HACK_H)
+$(TARGETDIR)/tomb.iff : ../util/xpm2iff ../outdated/sys/amiga/gave16.xpm
+../util/tiletext.o : ../win/share/tiletext.c
+ $(CC) $(CFLAGS) -c \
+ -o $@ ../win/share/tiletext.c
+../util/txt2iff : ../util/txt2iff.o ../util/tiletext.o \
+ ../util/tiletxt.o
+ $(LINK) $(LFLAGS) -L../lib -o $@ ../util/txt2iff.o ../util/tiletext.o \
+ ../util/tiletxt.o -lriffl
+../util/txt2iff.o : ../outdated/sys/amiga/txt2iff.c $(HACK_H)
+ $(CC) $(CFLAGS) -c \
+ -I../lib/riffl-0.2/include \
+ -I/opt/amiga/m68k-amigaos/ndk13-include \
+ -o $@ ../outdated/sys/amiga/txt2iff.c
+../util/xpm2iff : ../util/xpm2iff.o
+ $(LINK) $(LFLAGS) -L../lib -o $@ ../util/txt2iff.o -lriffl
+../util/xpm2iff.o : ../outdated/sys/amiga/xpm2iff.c $(HACK_H)
+ $(CC) $(CFLAGS) -o $@ ../outdated/sys/amiga/xpm2iff.c
+$(TARGETDIR)/objects.iff: ../win/share/objects.txt ../util/txt2iff
+ ../util/txt2iff ../win/share/objects.txt $@
+$(TARGETDIR)/monsters.iff: ../win/share/monsters.txt ../util/txt2iff
+ ../util/txt2iff ../win/share/monsters.txt $@
+$(TARGETDIR)/other.iff: ../win/share/other.txt ../util/txt2iff
+ ../util/txt2iff ../win/share/other.txt $@
+#
+#.PHONY: amigapkg
+amigapkg: $(GAMEBIN) $(TARGETDIR)/recover.exe ../dat/nhtiles.bmp
+ mkdir -p $(TARGETDIR)/pkg
+ cp $(GAMEBIN) $(TARGETDIR)/pkg/nethack
+ cp ../dat/nhdat $(TARGETDIR)/pkg/nhdat
+ cp ../dat/license $(TARGETDIR)/pkg/license
+ cp ../dat/nhtiles.bmp $(TARGETDIR)/pkg/nhtiles.bmp
+ cp $(TARGETDIR)/tomb.iff $(TARGETDIR)/pkg/tomb.iff
+ cp $(TARGETDIR)/monsters.iff $(TARGETDIR)/pkg/monsters.iff
+ cp $(TARGETDIR)/objects.iff $(TARGETDIR)/pkg/objects.iff
+ cp $(TARGETDIR)/other.iff $(TARGETDIR)/pkg/other.iff
+ cp ../dat/symbols $(TARGETDIR)/pkg/symbols
+ cp ../sys/share/NetHack.cnf $(TARGETDIR)/pkg/nethack.cnf
+ cp ../sys/msdos/sysconf $(TARGETDIR)/pkg/sysconf
+ cp ../outdated/sys/amiga/amii.hlp $(TARGETDIR)/pkg/amii.hlp
+ cp ../sys/msdos/sysconf $(TARGETDIR)/pkg/sysconf
+ cp ../doc/nethack.txt $(TARGETDIR)/pkg/nethack.txt
+ ../util/uudecode ../outdated/sys/amiga/amifont8.uu
+ cp 8 $(TARGETDIR)/pkg/8
+ ../util/uudecode ../outdated/sys/amiga/amifont.uu
+ cp hack.font $(TARGETDIR)/pkg/hack.font
+ ../util/uudecode ../outdated/sys/amiga/dflticon.uu
+ cp default.icon $(TARGETDIR)/pkg/default.icon
+ ../util/uudecode ../outdated/sys/amiga/NHinfo.uu
+ cp NetHack.info $(TARGETDIR)/pkg/NetHack.info
+ ../util/uudecode ../outdated/sys/amiga/NewGame.uu
+ cp NewGame.info $(TARGETDIR)/pkg/NewGame.info
+ ../util/uudecode ../outdated/sys/amiga/HackWB.uu
+ cp HackWB.info $(TARGETDIR)/pkg/HackWB.info
+ -touch $(TARGETDIR)/pkg/record
+ zip -9 $(TARGETDIR)/NH370AMI.ZIP $(TARGETDIR)/pkg/*
+ @echo amiga package zip file $(TARGETDIR)/NH370AMI.ZIP
+endif # CROSS_TO_AMIGA
+
#
# shared file dependencies
#
override TARGET_LIBS=
endif
+ifdef CROSS_TO_AMIGA
+BUILD_LUA=1
+BUILD_PDCURSES=1
+override TARGET = amiga
+override TARGETDIR = ../targets/$(TARGET)
+override TARGET_LIBS=
+endif
+
ifdef BUILD_LUA
#===============-=================================================
# LUA library
ifdef CROSS_TO_MSDOS
PDCINCL += -I$(PDCTOP)/dos
endif
+ifdef CROSS_TO_AMIGA
+PDCINCL += -I$(PDCTOP)/sdl1 -I/opt/amiga/m68k-amigaos/include/SDL
+override TARGET_LIBS += -lSDL
+endif
BUILDMORE += $(PDCLIB)
# Rules for PDCurses files
$(TARGETDIR)/%.o : $(PDCTOP)/pdcurses/%.c
endif # CROSS_TO_MSDOS
#=================================================================
+ifdef CROSS_TO_AMIGA
+#===============-=================================================
+# AmigaOS m68k cross-compile recipe
+#===============-=================================================
+# Uses an Amiga M68K cross-compiler on linux or macOS.
+#
+# 1. You can obtain the cross-compiler for your system via:
+# sys/amiga/fetch-cross.sh
+# 2. Then
+# make CROSS_TO_AMIGAOS=1 WANT_WIN_TTY=1 WANT_WIN_CURSES=1 all
+#
+# Amiga m68k from https://github.com/bebbo/amiga-gcc
+#=================================================================
+
+CFLAGS += -DCROSSCOMPILE -DCROSSCOMPILE_HOST
+
+#
+# Override the build tools and some obj files to
+# reflect the amiga-gccs cross-compiler.
+#
+TOOLTOP = /opt/amiga/bin
+#TOOLARCH = -m68020 -mcrt=clib2
+#TOOLARCH = -m68020 #newlib
+TOOLARCH = -m68020 -noixemul
+override REGEXOBJ = $(TARGETDIR)/cppregex.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 -O $(TOOLARCH) -I../include -I../outdated/include
+override TARGET_CFLAGS = -c -O $(TOOLARCH) \
+ -I../include -I../outdated/include \
+ -I../outdated/sys/amiga -I../win/share \
+ $(LUAINCL) -DAMIGA -DAMIGA_CROSS $(PDCURSESDEF) \
+ -DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_TARGET \
+ -DAMIGA_VERSION_STRING=\""VER: NetHack 3.7.0 \(12.13.2020)\""
+override TARGET_CXXFLAGS = $(TARGET_CFLAGS)
+ifeq "$(REGEXOBJ)" "$(TARGETDIR)/cppregex.o"
+override TARGET_LINK = $(TARGET_CXX)
+else
+override TARGET_LINK = $(TARGET_CC)
+endif
+override TARGET_LFLAGS= $(TOOLARCH)
+#override TARGET_LIBS +=
+VARDATND += nhtiles.bmp
+override SYSSRC = ../outdated/sys/amiga/amidos.c ../outdated/sys/amiga/amigst.c \
+ ../outdated/sys/amiga/amimenu.c ../outdated/sys/amiga/amirip.c \
+ ../outdated/sys/amiga/amistack.c ../outdated/sys/amiga/amitty.c \
+ ../outdated/sys/amiga/amiwind.c ../outdated/sys/amiga/clipwin.c \
+ ../outdated/sys/amiga/colorwin.c \
+ ../outdated/sys/amiga/winami.c ../outdated/sys/amiga/winchar.c \
+ ../outdated/sys/amiga/winfuncs.c ../outdated/sys/amiga/winkey.c \
+ ../outdated/sys/amiga/winamenu.c ../outdated/sys/amiga/winreq.c \
+ ../outdated/sys/amiga/winstr.c ../sys/share/pcmain.c \
+ ../win/share/bmptiles.c ../win/share/giftiles.c \
+ ../win/share/tileset.c
+# ../outdated/sys/amiga/xpm2iff.c
+# ../outdated/sys/amiga/txt2iff.c
+override SYSOBJ = $(TARGETDIR)/amidos.o $(TARGETDIR)/amigst.o \
+ $(TARGETDIR)/amirip.o $(TARGETDIR)/amistack.o \
+ $(TARGETDIR)/amitty.o $(TARGETDIR)/amiwind.o \
+ $(TARGETDIR)/winami.o $(TARGETDIR)/winchar.o \
+ $(TARGETDIR)/winfuncs.o $(TARGETDIR)/winkey.o \
+ $(TARGETDIR)/winamenu.o $(TARGETDIR)/winreq.o \
+ $(TARGETDIR)/winstr.o $(TARGETDIR)/pcmain.o \
+ $(TARGETDIR)/bmptiles.o $(TARGETDIR)/giftiles.o \
+ $(TARGETDIR)/tileset.o
+# $(TARGETDIR)/xpm2iff.o
+# ../util/txt2iff.o
+override WINLIB=
+override LUALIB=
+override GAMEBIN = $(TARGETDIR)/nethack.exe
+override PACKAGE= amigapkg
+PREGAME = mkdir -p ../targets/amiga
+CLEANMORE += rm -r ../targets/amiga
+BUILDMORE += $(TARGETDIR)/recover.exe
+# ../util/txt2iff
+#
+ifdef WANT_WIN_CURSES
+# rules for pdcurses sdl1-specific files
+$(TARGETDIR)/%.o : $(PDCTOP)/sdl1/%.c
+ $(TARGET_CC) $(PDCINCL) $(TARGET_CFLAGS) -o$@ $<
+endif # WANT_WIN_CURSES
+# Rule for files in sys/amiga
+$(TARGETDIR)/%.o : ../outdated/sys/amiga/%.c
+ $(TARGET_CC) $(TARGET_CFLAGS) -o$@ $<
+endif # CROSS_TO_AMIGA
+#=================================================================
+
ifdef WANT_WIN_CURSES
# rules for pdcurses dos-specific files
$(TARGETDIR)/%.o : $(PDCTOP)/sdl1/%.c