diff --git a/games/gnukem/Makefile b/games/gnukem/Makefile new file mode 100644 index 00000000000..5322cf513b0 --- /dev/null +++ b/games/gnukem/Makefile @@ -0,0 +1,38 @@ +# $OpenBSD: Makefile,v 1.1.1.1 2019/05/04 02:00:17 bcallah Exp $ + +COMMENT = open source retro-style 2D scrolling platform shooter game +DISTNAME = gnukem-1.0 +CATEGORIES = games x11 + +HOMEPAGE = https://djoffe.com/gnukem/ +MAINTAINER = Brian Callahan + +# Dual licensed: MIT or GPLv2 only +PERMIT_PACKAGE_CDROM = Yes + +WANTLIB += ${COMPILER_LIBCXX} SDL SDL_mixer c m + +# Upstream data fetching is ugh... +MASTER_SITES = https://mirrors.nycbug.org/pub/distfiles/ + +LIB_DEPENDS = devel/sdl-mixer + +USE_GMAKE = Yes +ALL_TARGET = default +MAKE_FLAGS = CC="${CC}" CPP="${CXX}" \ + CXXFLAGS="${CXXFLAGS}" + +NO_TEST = Yes + +# No install routine +do-install: + ${INSTALL_DATA_DIR} ${PREFIX}/share/gnukem/data + cd ${WRKSRC}/data && find * -type d -exec ${INSTALL_DATA_DIR} \ + "${PREFIX}/share/gnukem/data/{}" \; + cd ${WRKSRC}/data && find * -type f -exec ${INSTALL_DATA} \ + "{}" "${PREFIX}/share/gnukem/data/{}" \; + echo "#!/bin/sh\ncd ${TRUEPREFIX}/share/gnukem && ./davegnukem \"\$$@\"" >> ${WRKSRC}/gnukem.sh + ${INSTALL_PROGRAM} ${WRKSRC}/davegnukem ${PREFIX}/share/gnukem + ${INSTALL_SCRIPT} ${WRKSRC}/gnukem.sh ${PREFIX}/bin/davegnukem + +.include diff --git a/games/gnukem/distinfo b/games/gnukem/distinfo new file mode 100644 index 00000000000..eb2a116a4e2 --- /dev/null +++ b/games/gnukem/distinfo @@ -0,0 +1,2 @@ +SHA256 (gnukem-1.0.tar.gz) = KOX8oFvgtUKGmrP9x8J2dNr9VvfPFmzFp+2dFDxMDKs= +SIZE (gnukem-1.0.tar.gz) = 20553539 diff --git a/games/gnukem/patches/patch-Makefile b/games/gnukem/patches/patch-Makefile new file mode 100644 index 00000000000..dfa54b00b42 --- /dev/null +++ b/games/gnukem/patches/patch-Makefile @@ -0,0 +1,32 @@ +$OpenBSD: patch-Makefile,v 1.1.1.1 2019/05/04 02:00:17 bcallah Exp $ + +Fix up Makefile. + +Index: Makefile +--- Makefile.orig ++++ Makefile +@@ -8,8 +8,8 @@ + # 2017-07-29: Remove obsolete standalone-editor-related stuff, and add new thing_monsters.o + # + +-CPP = g++ +-CC = gcc ++CPP ?= g++ ++CC ?= gcc + + + # dj2016-10 Add L -I/usr/local/include/SDL in process of getting this working on Mac OS X - not sure if this is 'bad' to just have both /usr/include and /usr/local/include?? +@@ -21,11 +21,11 @@ INCLUDEDIRS= -I/usr/include/SDL -I/usr/local/include/S + # If you don't -DDATA_DIR to a valid dir, then data files will be assumed + # to be in current directory + #CCFLAGS = -Wall -I/usr/local/include -DHAVE_SOUND -DDEBUG -O -m486 +-CCFLAGS = -Wall -Wno-switch -DDEBUG $(INCLUDEDIRS) ++CCFLAGS = ${CXXFLAGS} -Wall -Wno-switch -I${LOCALBASE}/include/SDL + #Release version: + #CCFLAGS = -O -Wall -I/usr/local/include -DHAVE_SOUND $(INCLUDEDIRS) + +-LIBS = -lSDL -lSDLmain -lSDL_mixer -lpthread ++LIBS = -L${LOCALBASE}/lib -lSDL -lSDLmain -lSDL_mixer -lpthread + BIN = davegnukem + + diff --git a/games/gnukem/patches/patch-src_datadir_h b/games/gnukem/patches/patch-src_datadir_h new file mode 100644 index 00000000000..07e4f828c48 --- /dev/null +++ b/games/gnukem/patches/patch-src_datadir_h @@ -0,0 +1,16 @@ +$OpenBSD: patch-src_datadir_h,v 1.1.1.1 2019/05/04 02:00:17 bcallah Exp $ + +Only define DATA_DIR if you haven't already. + +Index: src/datadir.h +--- src/datadir.h.orig ++++ src/datadir.h +@@ -10,6 +10,8 @@ Copyright (C) 1999-2018 David Joffe + #define _DATADIR_H_ + + //! Data directory [dj2017-08 should this move to config.h?] ++#ifndef DATA_DIR + #define DATA_DIR "data/" ++#endif + + #endif diff --git a/games/gnukem/patches/patch-src_djimage_cpp b/games/gnukem/patches/patch-src_djimage_cpp new file mode 100644 index 00000000000..eebe4a4a25c --- /dev/null +++ b/games/gnukem/patches/patch-src_djimage_cpp @@ -0,0 +1,57 @@ +$OpenBSD: patch-src_djimage_cpp,v 1.1.1.1 2019/05/04 02:00:17 bcallah Exp $ + +Fix big endian issue + +Index: src/djimage.cpp +--- src/djimage.cpp.orig ++++ src/djimage.cpp +@@ -264,8 +264,13 @@ int djImage::LoadTGA( const char * szFilename ) + for ( unsigned int j=0; j127. + +Index: src/game.cpp +--- src/game.cpp.orig ++++ src/game.cpp +@@ -2014,7 +2014,7 @@ bool HeroIsHurting() + void DrawHealth() + { + // Build a string representing health bars (which are in the 8x8 font) +- char szHealth[MAX_HEALTH+1]={0}; ++ unsigned char szHealth[MAX_HEALTH+1]={0}; + for ( unsigned int i=0; iHeight(), + 32, + pImage->Pitch(), +- // R,G,B,A masks (dj2018-03 specify different masks here on PPC etc. - see https://github.com/davidjoffe/dave_gnukem/issues/100 - thanks to @BeWorld2018 for report and patch suggestion) +- #if SDL_BYTEORDER==SDL_BIG_ENDIAN +- 0x0000FF00, 0X00FF0000, 0xFF000000, 0x000000FF +- #else + 0xFF0000, + 0xFF00, + 0xFF, + 0xFF000000 +- #endif + ); + g_SurfaceMap[ pImage ] = pSurfaceFoo; + diff --git a/games/gnukem/patches/patch-src_sdl_djsound_cpp b/games/gnukem/patches/patch-src_sdl_djsound_cpp new file mode 100644 index 00000000000..e137367d7f0 --- /dev/null +++ b/games/gnukem/patches/patch-src_sdl_djsound_cpp @@ -0,0 +1,14 @@ +$OpenBSD: patch-src_sdl_djsound_cpp,v 1.1.1.1 2019/05/04 02:00:17 bcallah Exp $ + +Index: src/sdl/djsound.cpp +--- src/sdl/djsound.cpp.orig ++++ src/sdl/djsound.cpp +@@ -13,7 +13,7 @@ Copyright (C) 1999-2018 David Joffe and Kent Mein + #include + #endif + +-#ifdef __APPLE__ ++#ifdef __OpenBSD__ + #include //Fixing malloc.h 'not found' error compiling on Mac [dj2016-10] + #else + #include diff --git a/games/gnukem/patches/patch-src_sys_defs_h b/games/gnukem/patches/patch-src_sys_defs_h new file mode 100644 index 00000000000..2ebccf8458e --- /dev/null +++ b/games/gnukem/patches/patch-src_sys_defs_h @@ -0,0 +1,14 @@ +$OpenBSD: patch-src_sys_defs_h,v 1.1.1.1 2019/05/04 02:00:17 bcallah Exp $ + +Index: src/sys_defs.h +--- src/sys_defs.h.orig ++++ src/sys_defs.h +@@ -21,7 +21,7 @@ extern "C" + #include + #include + #include +-#ifdef __APPLE__ ++#ifdef __OpenBSD__ + #include //Fixing malloc.h 'not found' error compiling on Mac [dj2016-10] + #else + #include diff --git a/games/gnukem/pkg/DESCR b/games/gnukem/pkg/DESCR new file mode 100644 index 00000000000..221fba1ad99 --- /dev/null +++ b/games/gnukem/pkg/DESCR @@ -0,0 +1,5 @@ +Dave Gnukem is an open source retro-style 2D scrolling platform shooter, +inspired by and similar to Duke Nukem 1 (a famous original 1991 game +that launched the Duke Nukem series). It features an integrated level +editor. (Please note this is not a 'clone' or a 're-make'; it is +probably most akin to a parody.) diff --git a/games/gnukem/pkg/PLIST b/games/gnukem/pkg/PLIST new file mode 100644 index 00000000000..a79f282a375 --- /dev/null +++ b/games/gnukem/pkg/PLIST @@ -0,0 +1,102 @@ +@comment $OpenBSD: PLIST,v 1.1.1.1 2019/05/04 02:00:17 bcallah Exp $ +bin/davegnukem +share/gnukem/ +share/gnukem/data/ +share/gnukem/data/credits.tga +share/gnukem/data/default.gam +share/gnukem/data/editor/ +share/gnukem/data/editor/macros.txt +share/gnukem/data/emh/ +share/gnukem/data/emh/nextm1.lev +share/gnukem/data/emh/nextm2.lev +share/gnukem/data/font.tga +share/gnukem/data/fonts/ +share/gnukem/data/fonts/simple_6x8.tga +share/gnukem/data/fonts/simple_6x8_shadow.tga +share/gnukem/data/gameskin.tga +share/gnukem/data/hiscores.tga +share/gnukem/data/icon/ +share/gnukem/data/icon.bmp +share/gnukem/data/icon/application_icon.ico +share/gnukem/data/levels/ +share/gnukem/data/levels/bg1.tga +share/gnukem/data/levels/bg2.tga +share/gnukem/data/levels/citybackdrop.tga +share/gnukem/data/levels/d_lev1.lev +share/gnukem/data/levels/dj0.lev +share/gnukem/data/levels/example.lev +share/gnukem/data/levels/foo.lev +share/gnukem/data/levels/kevin.lev +share/gnukem/data/levels/level1.lev +share/gnukem/data/levels/level2.lev +share/gnukem/data/levels/level3.lev +share/gnukem/data/levels/sjm001.lev +share/gnukem/data/levels/sjm2.lev +share/gnukem/data/levels/template.lev +share/gnukem/data/main.tga +share/gnukem/data/menucharbackground.tga +share/gnukem/data/missions.txt +share/gnukem/data/music/ +share/gnukem/data/music/eric_matyas/ +share/gnukem/data/music/eric_matyas/8-Bit-Mayhem.ogg +share/gnukem/data/music/eric_matyas/Dystopic-Mayhem.ogg +share/gnukem/data/music/eric_matyas/Escape_Looping.ogg +share/gnukem/data/music/eric_matyas/Funky-Gameplay_Looping.ogg +share/gnukem/data/music/eric_matyas/Insane-Gameplay_Looping.ogg +share/gnukem/data/music/eric_matyas/Mad-Scientist_Looping.ogg +share/gnukem/data/music/eric_matyas/Monkey-Drama.ogg +share/gnukem/data/music/eric_matyas/Monster-Street-Fighters.ogg +share/gnukem/data/music/eric_matyas/Monsters-in-Bell-Bottoms_Looping.ogg +share/gnukem/data/music/eric_matyas/Retro-Frantic_V001_Looping.ogg +share/gnukem/data/music/eric_matyas/Techno-Caper.ogg +share/gnukem/data/music/eric_matyas/Techno-Gameplay_Looping.ogg +share/gnukem/data/music/eric_matyas/The-Darkness-Below_Looping.ogg +share/gnukem/data/sample.gam +share/gnukem/data/shadows.tga +share/gnukem/data/simplefont.tga +share/gnukem/data/sounds/ +share/gnukem/data/sounds/cardflip.wav +share/gnukem/data/sounds/exit.ogg +share/gnukem/data/sounds/explode.wav +share/gnukem/data/sounds/jump.wav +share/gnukem/data/sounds/jump_landing.wav +share/gnukem/data/sounds/key_pickup.wav +share/gnukem/data/sounds/laser.wav +share/gnukem/data/sounds/laser2.wav +share/gnukem/data/sounds/lightmag.wav +share/gnukem/data/sounds/pickup.wav +share/gnukem/data/sounds/sfx_weapon_singleshot7.wav +share/gnukem/data/sounds/shoot_cg1_modified.wav +share/gnukem/data/sounds/soft_explode.wav +share/gnukem/data/sounds/wooeep.wav +share/gnukem/data/sprites/ +share/gnukem/data/sprites/def0spr.dat +share/gnukem/data/sprites/def1spr.dat +share/gnukem/data/sprites/def2spr.dat +share/gnukem/data/sprites/def3spr.dat +share/gnukem/data/sprites/def4spr.dat +share/gnukem/data/sprites/def5spr.dat +share/gnukem/data/sprites/def6spr.dat +share/gnukem/data/sprites/def7spr.dat +share/gnukem/data/sprites/sprites00.tga +share/gnukem/data/sprites/sprites01.tga +share/gnukem/data/sprites/sprites02.tga +share/gnukem/data/sprites/sprites03.tga +share/gnukem/data/sprites/sprites04.tga +share/gnukem/data/sprites/sprites05.tga +share/gnukem/data/sprites/sprites06.tga +share/gnukem/data/sprites/sprites07.tga +share/gnukem/data/sprites/sprites16.tga +share/gnukem/data/sprites/sprites16_metadata.dat +share/gnukem/data/tog/ +share/gnukem/data/tog/tog-bg-black.tga +share/gnukem/data/tog/tog-lev_0.lev +share/gnukem/data/tog/tog-lev_1.lev +share/gnukem/data/tog/tog-lev_2.lev +share/gnukem/data/tog/tog-lev_3.lev +share/gnukem/data/tog/tog-spr_16.bmp +share/gnukem/data/tog/tog-spr_16.dat +share/gnukem/data/tog/tog-spr_16.tga +share/gnukem/data/tog/tog.gam +share/gnukem/data/tog/zz-empty.lev +@bin share/gnukem/davegnukem