Import higan-106.

higan is a multi-system emulator. It currently supports the following systems:

 - Nintendo Famicom
 - Nintendo Super Famicom
   - Super Game Boy
   - BS-X Satellaview
   - Sufami Turbo
 - Nintendo Game Boy
 - Nintendo Game Boy Color
 - Nintendo Game Boy Advance
 - Sega Master System
 - Sega Game Gear
 - Sega Mega Drive
 - NEC PC Engine
 - NEC SuperGrafx
 - Bandai WonderSwan
 - Bandai WonderSwan Color

ok stsp@
This commit is contained in:
bentley 2017-12-24 06:51:38 +00:00
parent 7eff883fb5
commit 2e25e2f2a8
12 changed files with 292 additions and 0 deletions

72
emulators/higan/Makefile Normal file
View File

@ -0,0 +1,72 @@
# $OpenBSD: Makefile,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
COMMENT = multi-system Nintendo emulator
V = 106
DISTNAME = higan_v$V-source
PKGNAME = higan-$V
USE_WXNEEDED = Yes
CATEGORIES = emulators
HOMEPAGE = https://byuu.org/emulation/higan/
MAINTAINER = Anthony J. Bentley <anthony@anjbe.name>
# GPLv3: https://byuu.org/emulation/higan/licensing
PERMIT_PACKAGE_CDROM = Yes
WANTLIB += ${COMPILER_LIBCXX} GL SDL X11 Xcomposite Xcursor Xdamage
WANTLIB += Xext Xfixes Xi Xinerama Xrandr Xrender Xv atk-1.0 c
WANTLIB += cairo fontconfig freetype gdk-x11-2.0 gdk_pixbuf-2.0
WANTLIB += gio-2.0 glib-2.0 gobject-2.0 gtk-x11-2.0 gtksourceview-2.0
WANTLIB += intl m openal pango-1.0 pangocairo-1.0 pangoft2-1.0
WANTLIB += z
# upstream only provides .7z
#MASTER_SITES = https://download.byuu.org/
MASTER_SITES = https://distfiles.ajb.soy/
RUN_DEPENDS = devel/desktop-file-utils
LIB_DEPENDS = audio/openal \
devel/sdl \
x11/gtksourceview
MAKE_FLAGS = compiler="${CC}" \
cflags="${CFLAGS} -std=c11 -DLIBCO_MPROTECT" \
cppflags="${CXXFLAGS} -x c++ -std=c++14 \
-I${LOCALBASE}/include -I${X11BASE}/include" \
build=
COMPILER = base-clang ports-gcc ports-clang
USE_GMAKE = Yes
NO_TEST = Yes
MAKE_FILE = GNUmakefile
pre-configure:
${SUBST_CMD} ${WRKDIST}/nall/path.hpp
do-build:
cd ${WRKSRC}/higan && env -i ${MAKE_ENV} ${MAKE_PROGRAM} \
${MAKE_FLAGS} -f ${MAKE_FILE} ${ALL_TARGET}
cd ${WRKSRC}/icarus && env -i ${MAKE_ENV} ${MAKE_PROGRAM} \
${MAKE_FLAGS} -f ${MAKE_FILE} ${ALL_TARGET}
do-install:
${INSTALL_PROGRAM} ${WRKDIST}/higan/out/higan ${PREFIX}/bin
${INSTALL_PROGRAM} ${WRKDIST}/icarus/out/icarus ${PREFIX}/bin
${INSTALL_DATA_DIR} ${PREFIX}/share/applications
${INSTALL_DATA} ${WRKSRC}/*/data/*.desktop ${PREFIX}/share/applications
${INSTALL_DATA_DIR} ${PREFIX}/share/pixmaps
${INSTALL_DATA} ${WRKSRC}/*/data/*.png ${PREFIX}/share/pixmaps
${INSTALL_DATA_DIR} ${PREFIX}/share/icarus/Database
${INSTALL_DATA} ${WRKSRC}/icarus/Database/*.bml \
${PREFIX}/share/icarus/Database
${INSTALL_DATA_DIR} ${PREFIX}/share/higan
cp -R ${WRKSRC}/higan/systems/* ${PREFIX}/share/higan
.include <bsd.port.mk>

2
emulators/higan/distinfo Normal file
View File

@ -0,0 +1,2 @@
SHA256 (higan_v106-source.tar.gz) = pKqen4vcXAYj5EEpiDqT/cb+ALKbtR1UtPTzl+Q8510=
SIZE (higan_v106-source.tar.gz) = 1083431

View File

@ -0,0 +1,16 @@
$OpenBSD: patch-higan_GNUmakefile,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
Index: higan/GNUmakefile
--- higan/GNUmakefile.orig
+++ higan/GNUmakefile
@@ -23,10 +23,7 @@ else ifeq ($(platform),macos)
link += -dynamiclib
endif
else ifneq ($(filter $(platform),linux bsd),)
- flags += -fopenmp
- link += -fopenmp
ifeq ($(binary),application)
- flags += -march=native
link += -Wl,-export-dynamic
link += -lX11 -lXext
else ifeq ($(binary),library)

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-higan_target-tomoko_GNUmakefile,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
Index: higan/target-tomoko/GNUmakefile
--- higan/target-tomoko/GNUmakefile.orig
+++ higan/target-tomoko/GNUmakefile
@@ -31,7 +31,7 @@ else ifeq ($(platform),linux)
ruby += input.sdl input.xlib input.udev
else ifeq ($(platform),bsd)
ruby += video.glx video.xvideo video.xshm video.sdl
- ruby += audio.oss audio.openal
+ ruby += audio.openal
ruby += input.sdl input.xlib
endif

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-higan_target-tomoko_program_medium_cpp,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
Index: higan/target-tomoko/program/medium.cpp
--- higan/target-tomoko/program/medium.cpp.orig
+++ higan/target-tomoko/program/medium.cpp
@@ -17,7 +17,7 @@ auto Program::loadMedium() -> void {
auto Program::loadMedium(Emulator::Interface& interface, const Emulator::Interface::Medium& medium) -> void {
unloadMedium();
- mediumPaths.append(locate({medium.name, ".sys/"}));
+ mediumPaths.append(locateShared({medium.name, ".sys/"}));
Emulator::audio.reset(2, audio->frequency());
inputManager->bind(emulator = &interface);

View File

@ -0,0 +1,26 @@
$OpenBSD: patch-higan_target-tomoko_tomoko_cpp,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
Index: higan/target-tomoko/tomoko.cpp
--- higan/target-tomoko/tomoko.cpp.orig
+++ higan/target-tomoko/tomoko.cpp
@@ -4,6 +4,20 @@ unique_pointer<Audio> audio;
unique_pointer<Input> input;
Emulator::Interface* emulator = nullptr;
+auto locateShared(string name) -> string {
+ string location = {Path::program(), name};
+ if(inode::exists(location)) return location;
+
+ location = {Path::shared(), "higan/", name};
+ if(inode::exists(location)) return location;
+
+ location = {Path::config(), "higan/", name};
+ if(inode::exists(location)) return location;
+
+ directory::create({Path::local(), "higan/"});
+ return {Path::local(), "higan/", name};
+}
+
auto locate(string name) -> string {
string location = {Path::program(), name};
if(inode::exists(location)) return location;

View File

@ -0,0 +1,11 @@
$OpenBSD: patch-higan_target-tomoko_tomoko_hpp,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
Index: higan/target-tomoko/tomoko.hpp
--- higan/target-tomoko/tomoko.hpp.orig
+++ higan/target-tomoko/tomoko.hpp
@@ -18,4 +18,5 @@ extern Emulator::Interface* emulator;
#include "tools/tools.hpp"
#include "presentation/presentation.hpp"
+auto locateShared(string name) -> string;
auto locate(string name) -> string;

View File

@ -0,0 +1,38 @@
$OpenBSD: patch-icarus_core_core_cpp,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
Index: icarus/core/core.cpp
--- icarus/core/core.cpp.orig
+++ icarus/core/core.cpp
@@ -1,18 +1,18 @@
Icarus::Icarus() {
- database.famicom = BML::unserialize(string::read(locate("Database/Famicom.bml")));
- database.superFamicom = BML::unserialize(string::read(locate("Database/Super Famicom.bml")));
- database.masterSystem = BML::unserialize(string::read(locate("Database/Master System.bml")));
- database.megaDrive = BML::unserialize(string::read(locate("Database/Mega Drive.bml")));
- database.pcEngine = BML::unserialize(string::read(locate("Database/PC Engine.bml")));
- database.superGrafx = BML::unserialize(string::read(locate("Database/SuperGrafx.bml")));
- database.gameBoy = BML::unserialize(string::read(locate("Database/Game Boy.bml")));
- database.gameBoyColor = BML::unserialize(string::read(locate("Database/Game Boy Color.bml")));
- database.gameBoyAdvance = BML::unserialize(string::read(locate("Database/Game Boy Advance.bml")));
- database.gameGear = BML::unserialize(string::read(locate("Database/Game Gear.bml")));
- database.wonderSwan = BML::unserialize(string::read(locate("Database/WonderSwan.bml")));
- database.wonderSwanColor = BML::unserialize(string::read(locate("Database/WonderSwan Color.bml")));
- database.bsMemory = BML::unserialize(string::read(locate("Database/BS Memory.bml")));
- database.sufamiTurbo = BML::unserialize(string::read(locate("Database/Sufami Turbo.bml")));
+ database.famicom = BML::unserialize(string::read(locateShared("Database/Famicom.bml")));
+ database.superFamicom = BML::unserialize(string::read(locateShared("Database/Super Famicom.bml")));
+ database.masterSystem = BML::unserialize(string::read(locateShared("Database/Master System.bml")));
+ database.megaDrive = BML::unserialize(string::read(locateShared("Database/Mega Drive.bml")));
+ database.pcEngine = BML::unserialize(string::read(locateShared("Database/PC Engine.bml")));
+ database.superGrafx = BML::unserialize(string::read(locateShared("Database/SuperGrafx.bml")));
+ database.gameBoy = BML::unserialize(string::read(locateShared("Database/Game Boy.bml")));
+ database.gameBoyColor = BML::unserialize(string::read(locateShared("Database/Game Boy Color.bml")));
+ database.gameBoyAdvance = BML::unserialize(string::read(locateShared("Database/Game Boy Advance.bml")));
+ database.gameGear = BML::unserialize(string::read(locateShared("Database/Game Gear.bml")));
+ database.wonderSwan = BML::unserialize(string::read(locateShared("Database/WonderSwan.bml")));
+ database.wonderSwanColor = BML::unserialize(string::read(locateShared("Database/WonderSwan Color.bml")));
+ database.bsMemory = BML::unserialize(string::read(locateShared("Database/BS Memory.bml")));
+ database.sufamiTurbo = BML::unserialize(string::read(locateShared("Database/Sufami Turbo.bml")));
}
auto Icarus::error() const -> string {

View File

@ -0,0 +1,26 @@
$OpenBSD: patch-icarus_icarus_cpp,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
Index: icarus/icarus.cpp
--- icarus/icarus.cpp.orig
+++ icarus/icarus.cpp
@@ -4,6 +4,20 @@ using namespace nall;
#include <hiro/hiro.hpp>
using namespace hiro;
+auto locateShared(string name) -> string {
+ string location = {Path::program(), name};
+ if(inode::exists(location)) return location;
+
+ location = {Path::shared(), "icarus/", name};
+ if(inode::exists(location)) return location;
+
+ location = {Path::config(), "icarus/", name};
+ if(inode::exists(location)) return location;
+
+ directory::create({Path::local(), "icarus/"});
+ return {Path::local(), "icarus/", name};
+}
+
auto locate(string name) -> string {
string location = {Path::program(), name};
if(inode::exists(location)) return location;

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-nall_path_hpp,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
Index: nall/path.hpp
--- nall/path.hpp.orig
+++ nall/path.hpp
@@ -117,7 +117,7 @@ inline auto shared() -> string {
#elif defined(PLATFORM_MACOS)
string result = "/Library/Application Support/";
#else
- string result = "/usr/share/";
+ string result = "${PREFIX}/share/";
#endif
if(!result) result = ".";
if(!result.endsWith("/")) result.append("/");

17
emulators/higan/pkg/DESCR Normal file
View File

@ -0,0 +1,17 @@
higan is a multi-system emulator. It currently supports the following systems:
- Nintendo Famicom
- Nintendo Super Famicom
- Super Game Boy
- BS-X Satellaview
- Sufami Turbo
- Nintendo Game Boy
- Nintendo Game Boy Color
- Nintendo Game Boy Advance
- Sega Master System
- Sega Game Gear
- Sega Mega Drive
- NEC PC Engine
- NEC SuperGrafx
- Bandai WonderSwan
- Bandai WonderSwan Color

42
emulators/higan/pkg/PLIST Normal file
View File

@ -0,0 +1,42 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2017/12/24 06:51:38 bentley Exp $
@bin bin/higan
@bin bin/icarus
share/applications/higan.desktop
share/applications/icarus.desktop
share/higan/
share/higan/Famicom.sys/
share/higan/Famicom.sys/manifest.bml
share/higan/Game Boy Advance.sys/
share/higan/Game Boy Advance.sys/manifest.bml
share/higan/Game Boy Color.sys/
share/higan/Game Boy Color.sys/boot.rom
share/higan/Game Boy Color.sys/manifest.bml
share/higan/Game Boy.sys/
share/higan/Game Boy.sys/boot.rom
share/higan/Game Boy.sys/manifest.bml
share/higan/Game Gear.sys/
share/higan/Game Gear.sys/manifest.bml
share/higan/Master System.sys/
share/higan/Master System.sys/manifest.bml
share/higan/Mega Drive.sys/
share/higan/Mega Drive.sys/manifest.bml
share/higan/Mega Drive.sys/tmss.rom
share/higan/PC Engine.sys/
share/higan/PC Engine.sys/manifest.bml
share/higan/Super Famicom.sys/
share/higan/Super Famicom.sys/ipl.rom
share/higan/Super Famicom.sys/manifest.bml
share/higan/SuperGrafx.sys/
share/higan/SuperGrafx.sys/manifest.bml
share/higan/WonderSwan Color.sys/
share/higan/WonderSwan Color.sys/manifest.bml
share/higan/WonderSwan.sys/
share/higan/WonderSwan.sys/manifest.bml
share/icarus/
share/icarus/Database/
share/icarus/Database/Super Famicom.bml
share/pixmaps/
share/pixmaps/higan.png
share/pixmaps/icarus.png
@exec %D/bin/update-desktop-database
@unexec-delete %D/bin/update-desktop-database