Import games/gnukem, an open source retro-style 2D scrolling platform
shooter game. Big-endian fixes from Raphael Graf. macppc testing and ok cwen@ 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.)
This commit is contained in:
parent
cc35291cec
commit
900b7ca2e3
38
games/gnukem/Makefile
Normal file
38
games/gnukem/Makefile
Normal file
@ -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 <bcallah@openbsd.org>
|
||||
|
||||
# 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 <bsd.port.mk>
|
2
games/gnukem/distinfo
Normal file
2
games/gnukem/distinfo
Normal file
@ -0,0 +1,2 @@
|
||||
SHA256 (gnukem-1.0.tar.gz) = KOX8oFvgtUKGmrP9x8J2dNr9VvfPFmzFp+2dFDxMDKs=
|
||||
SIZE (gnukem-1.0.tar.gz) = 20553539
|
32
games/gnukem/patches/patch-Makefile
Normal file
32
games/gnukem/patches/patch-Makefile
Normal file
@ -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
|
||||
|
||||
|
16
games/gnukem/patches/patch-src_datadir_h
Normal file
16
games/gnukem/patches/patch-src_datadir_h
Normal file
@ -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
|
57
games/gnukem/patches/patch-src_djimage_cpp
Normal file
57
games/gnukem/patches/patch-src_djimage_cpp
Normal file
@ -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; j<nWidth; j++ )
|
||||
{
|
||||
// reverse endianness from file
|
||||
+ #if SDL_BYTEORDER==SDL_BIG_ENDIAN
|
||||
+ m_pData[iOffset+j*2+1] = pBuf[j*2+1];
|
||||
+ m_pData[iOffset+j*2+0] = pBuf[j*2+0];
|
||||
+ #else
|
||||
m_pData[iOffset+j*2+0] = pBuf[j*2+1];
|
||||
m_pData[iOffset+j*2+1] = pBuf[j*2+0];
|
||||
+ #endif
|
||||
}
|
||||
}
|
||||
djDELV(pBuf);
|
||||
@@ -285,10 +290,17 @@ int djImage::LoadTGA( const char * szFilename )
|
||||
for ( unsigned int j=0; j<nWidth; j++ )
|
||||
{
|
||||
// A,B,G,R
|
||||
+ #if SDL_BYTEORDER==SDL_BIG_ENDIAN
|
||||
+ m_pData[iOffset + j*4+3] = pBuf[j*3+0];
|
||||
+ m_pData[iOffset + j*4+2] = pBuf[j*3+1];
|
||||
+ m_pData[iOffset + j*4+1] = pBuf[j*3+2];
|
||||
+ m_pData[iOffset + j*4+0] = 0xFF;
|
||||
+ #else
|
||||
m_pData[iOffset + j*4+0] = pBuf[j*3+0];
|
||||
m_pData[iOffset + j*4+1] = pBuf[j*3+1];
|
||||
m_pData[iOffset + j*4+2] = pBuf[j*3+2];
|
||||
m_pData[iOffset + j*4+3] = 0xFF;
|
||||
+ #endif
|
||||
}
|
||||
}
|
||||
djDELV(pBuf);
|
||||
@@ -314,10 +326,17 @@ int djImage::LoadTGA( const char * szFilename )
|
||||
// FIXME: Interesting "problem" .. it seems the VNC server
|
||||
// inverts the ordering of some of this stuff! So while doing
|
||||
// the remote thing I had everything confused!
|
||||
+ #if SDL_BYTEORDER==SDL_BIG_ENDIAN
|
||||
+ m_pData[iOffset + j*4+3] = pBuf[j*4+0];
|
||||
+ m_pData[iOffset + j*4+2] = pBuf[j*4+1];
|
||||
+ m_pData[iOffset + j*4+1] = pBuf[j*4+2];
|
||||
+ m_pData[iOffset + j*4+0] = pBuf[j*4+3];
|
||||
+ #else
|
||||
m_pData[iOffset + j*4+0] = pBuf[j*4+0];
|
||||
m_pData[iOffset + j*4+1] = pBuf[j*4+1];
|
||||
m_pData[iOffset + j*4+2] = pBuf[j*4+2];
|
||||
m_pData[iOffset + j*4+3] = pBuf[j*4+3];
|
||||
+ #endif
|
||||
}
|
||||
// memcpy(m_pData+(bFlipY?(nHeight-i-1):i)*Pitch(), pBuf, nWidth*4);
|
||||
}
|
16
games/gnukem/patches/patch-src_game_cpp
Normal file
16
games/gnukem/patches/patch-src_game_cpp
Normal file
@ -0,0 +1,16 @@
|
||||
$OpenBSD: patch-src_game_cpp,v 1.1.1.1 2019/05/04 02:00:17 bcallah Exp $
|
||||
|
||||
This needs to be unsigned since we're dealing with numbers >127.
|
||||
|
||||
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; i<MAX_HEALTH; ++i )
|
||||
{
|
||||
// 170 = health; 169 = not health
|
23
games/gnukem/patches/patch-src_sdl_djgraph_cpp
Normal file
23
games/gnukem/patches/patch-src_sdl_djgraph_cpp
Normal file
@ -0,0 +1,23 @@
|
||||
OpenBSD$
|
||||
|
||||
Revert commit/a94bae1f70b9110431f8a21f0118141c25a343d8
|
||||
|
||||
Index: src/sdl/djgraph.cpp
|
||||
--- src/sdl/djgraph.cpp.orig
|
||||
+++ src/sdl/djgraph.cpp
|
||||
@@ -600,15 +600,10 @@ bool djCreateImageHWSurface( djImage* pImage/*, djVisu
|
||||
pImage->Height(),
|
||||
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;
|
||||
|
14
games/gnukem/patches/patch-src_sdl_djsound_cpp
Normal file
14
games/gnukem/patches/patch-src_sdl_djsound_cpp
Normal file
@ -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 <SDL_mixer.h>
|
||||
#endif
|
||||
|
||||
-#ifdef __APPLE__
|
||||
+#ifdef __OpenBSD__
|
||||
#include <stdlib.h>//Fixing malloc.h 'not found' error compiling on Mac [dj2016-10]
|
||||
#else
|
||||
#include <malloc.h>
|
14
games/gnukem/patches/patch-src_sys_defs_h
Normal file
14
games/gnukem/patches/patch-src_sys_defs_h
Normal file
@ -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 <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
-#ifdef __APPLE__
|
||||
+#ifdef __OpenBSD__
|
||||
#include <stdlib.h>//Fixing malloc.h 'not found' error compiling on Mac [dj2016-10]
|
||||
#else
|
||||
#include <malloc.h>
|
5
games/gnukem/pkg/DESCR
Normal file
5
games/gnukem/pkg/DESCR
Normal file
@ -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.)
|
102
games/gnukem/pkg/PLIST
Normal file
102
games/gnukem/pkg/PLIST
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user