- Update to 102
PR: 211855 Submitted by: cyberbotx@cyberbotx.com (maintainer)
This commit is contained in:
parent
8f7efa27a2
commit
b7dda5b4c0
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=438163
15 changed files with 171 additions and 129 deletions
|
@ -2,59 +2,49 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= higan
|
||||
PORTVERSION= 0.94
|
||||
PORTREVISION= 5
|
||||
PORTVERSION= 102
|
||||
CATEGORIES= emulators
|
||||
MASTER_SITES= http://byuu.org/files/ \
|
||||
MASTER_SITES= http://download.byuu.org/ \
|
||||
http://www.cyberbotx.com/higan/
|
||||
DISTNAME= ${PORTNAME}_v${PORTVERSION:S/.//}-source
|
||||
DISTNAME= ${PORTNAME}_v${PORTVERSION}-source
|
||||
|
||||
MAINTAINER= cyberbotx@cyberbotx.com
|
||||
COMMENT= Nintendo multi-system emulator
|
||||
|
||||
USES= compiler:c++11-lib gmake pkgconfig tar:xz
|
||||
USES= 7z:p7zip compiler:c++14-lang gmake pkgconfig
|
||||
USE_LDCONFIG= yes
|
||||
USE_XORG= x11 xext
|
||||
USE_CSTD= c99
|
||||
USE_CXXSTD= c++14
|
||||
USE_GCC= yes
|
||||
MAKEFILE= GNUmakefile
|
||||
|
||||
ONLY_FOR_ARCHS= i386 amd64
|
||||
MAKE_ENV+= compiler="${CXX}" cflags="-x c -std=c99 ${CFLAGS}" \
|
||||
cppflags="-x c++ -std=c++11 ${CXXFLAGS}"
|
||||
MAKE_ENV+= compiler="${CXX}"
|
||||
|
||||
OPTIONS_DEFINE= DEBUG
|
||||
OPTIONS_SINGLE= PROFILE GUI
|
||||
OPTIONS_SINGLE_PROFILE= ACCURACY BALANCED PERFORMANCE
|
||||
OPTIONS_SINGLE= GUI
|
||||
OPTIONS_SINGLE_GUI= GTK2 QT4
|
||||
OPTIONS_MULTI= VIDEO SOUND INPUT
|
||||
OPTIONS_MULTI_VIDEO= GLX SDL XSHM XV
|
||||
OPTIONS_MULTI_SOUND= AO OPENAL OSS PULSEAUDIO
|
||||
OPTIONS_MULTI_INPUT= INPUT_SDL INPUT_X
|
||||
OPTIONS_DEFAULT= BALANCED GTK2 GLX XSHM XV SDL \
|
||||
OPTIONS_DEFAULT= GTK2 GLX XSHM XV SDL \
|
||||
OSS INPUT_SDL INPUT_X
|
||||
|
||||
ACCURACY_DESC= Use accuracy profile
|
||||
BALANCED_DESC= Use balanced profile
|
||||
PERFORMANCE_DESC= Use performance profile
|
||||
GTK2_DESC= Build with GTK+2 GUI
|
||||
QT4_DESC= Build with QT4 GUI
|
||||
GLX_DESC= Build GLX video driver
|
||||
SDL_DESC= Build SDL video driver
|
||||
XSHM_DESC= Build XShm video driver
|
||||
XV_DESC= Build Xv video driver
|
||||
AO_DESC= Build AO sound driver
|
||||
OPENAL_DESC= Build OpenAL sound driver
|
||||
OSS_DESC= Build OSS sound driver
|
||||
PULSEAUDIO_DESC= Build Pulseaudio sound driver
|
||||
INPUT_SDL_DESC= Build SDL input driver
|
||||
INPUT_X_DESC= Build X input driver
|
||||
|
||||
ACCURACY_MAKE_ENV= profile="accuracy"
|
||||
BALANCED_MAKE_ENV= profile="balanced"
|
||||
PERFORMANCE_MAKE_ENV= profile="performance"
|
||||
GTK2_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \
|
||||
libfreetype.so:print/freetype2
|
||||
GTK2_MAKE_ENV= hiro="gtk"
|
||||
GTK2_USE= GNOME=cairo,gdkpixbuf2,gtk20,gtksourceview2
|
||||
GTK2_USES= gettext
|
||||
|
||||
GTK2_USE= GNOME=gtk20
|
||||
GTK2_MAKE_ENV= phoenix="gtk"
|
||||
|
||||
QT4_USE= QT4=gui,moc_build
|
||||
QT4_MAKE_ENV= phoenix="qt"
|
||||
QT4_MAKE_ENV= hiro="qt"
|
||||
QT4_USE= QT4=corelib,gui,moc_build
|
||||
|
||||
GLX_USE= GL=gl
|
||||
GLX_VARS= VIDEO_DRIVER+=video.glx
|
||||
|
@ -89,33 +79,27 @@ post-patch:
|
|||
-e 's|%%VIDEO%%|${VIDEO_DRIVER}|' \
|
||||
-e 's|%%AUDIO%%|${AUDIO_DRIVER}|' \
|
||||
-e 's|%%INPUT%%|${INPUT_DRIVER}|' \
|
||||
${WRKSRC}/target-ethos/Makefile
|
||||
${WRKSRC}/higan/target-tomoko/GNUmakefile
|
||||
${REINPLACE_CMD} -e 's|/usr/share/|${PREFIX}/share/|' \
|
||||
${WRKSRC}/nall/string/platform.hpp
|
||||
${WRKSRC}/nall/path.hpp
|
||||
|
||||
post-patch-DEBUG-on:
|
||||
${REINPLACE_CMD} -e 's|-O3|-g|g' \
|
||||
${WRKSRC}/ananke/Makefile \
|
||||
${WRKSRC}/Makefile
|
||||
${REINPLACE_CMD} -e 's|:= -s|:= #|g' \
|
||||
${WRKSRC}/Makefile
|
||||
|
||||
pre-build-QT4-on:
|
||||
(cd ${WRKSRC}/phoenix/qt && ${MOC} -i -o platform.moc platform.moc.hpp)
|
||||
${WRKSRC}/higan/GNUmakefile \
|
||||
${WRKSRC}/icarus/GNUmakefile
|
||||
|
||||
do-build:
|
||||
.for d in . ananke
|
||||
(cd ${WRKSRC}/${d} && ${MAKE_CMD} ${MAKE_ENV})
|
||||
.for d in higan icarus
|
||||
@${DO_MAKE_BUILD} ${ALL_TARGET} -C${WRKSRC}/${d}
|
||||
.endfor
|
||||
|
||||
do-install:
|
||||
${INSTALL_LIB} ${WRKSRC}/ananke/libananke.so ${STAGEDIR}${PREFIX}/lib/libananke.so.1
|
||||
${LN} -sf libananke.so.1 ${STAGEDIR}${PREFIX}/lib/libananke.so
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/out/higan ${STAGEDIR}${PREFIX}/bin/
|
||||
${INSTALL_DATA} ${WRKSRC}/data/higan.png ${STAGEDIR}${PREFIX}/share/pixmaps/
|
||||
${INSTALL_DATA} ${WRKSRC}/data/higan.desktop ${STAGEDIR}${PREFIX}/share/applications/
|
||||
${MKDIR} ${STAGEDIR}${DATADIR}/shaders
|
||||
(cd ${WRKSRC}/profile && ${COPYTREE_SHARE} \* ${STAGEDIR}${DATADIR}/)
|
||||
(cd ${WRKSRC}/shaders && ${COPYTREE_SHARE} \*.shader ${STAGEDIR}${DATADIR}/shaders/)
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/higan/out/higan ${STAGEDIR}${PREFIX}/bin/
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/icarus/out/icarus ${STAGEDIR}${PREFIX}/bin/
|
||||
${INSTALL_DATA} ${WRKSRC}/higan/data/higan.png ${STAGEDIR}${PREFIX}/share/pixmaps/
|
||||
${INSTALL_DATA} ${WRKSRC}/higan/data/higan.desktop ${STAGEDIR}${PREFIX}/share/applications/
|
||||
(cd ${WRKSRC}/higan/systems && ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}/)
|
||||
${INSTALL_DATA} ${WRKSRC}/higan/data/cheats.bml ${STAGEDIR}${DATADIR}/
|
||||
(cd ${WRKSRC}/icarus/Database && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/share/icarus/Database/)
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
SHA256 (higan_v094-source.tar.xz) = 5e149df9d50c1066eb97c0d66665428d75304da782bba5a87078b87fc311151b
|
||||
SIZE (higan_v094-source.tar.xz) = 882732
|
||||
TIMESTAMP = 1489861177
|
||||
SHA256 (higan_v102-source.7z) = 52dadcf2ec5cfab0952e2948cc8acb4883b3996458bce4ecb3995830bb1699f1
|
||||
SIZE (higan_v102-source.7z) = 1246258
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
--- target-ethos/Makefile.orig 2014-01-13 05:26:29 UTC
|
||||
+++ target-ethos/Makefile
|
||||
--- higan/target-tomoko/GNUmakefile.orig 2016-01-14 03:20:56 UTC
|
||||
+++ higan/target-tomoko/GNUmakefile
|
||||
@@ -27,9 +27,9 @@ else ifeq ($(platform),linux)
|
||||
ruby += audio.alsa audio.openal audio.oss audio.pulseaudio audio.pulseaudiosimple audio.ao
|
||||
ruby += input.udev input.sdl input.x
|
||||
ruby += input.udev input.sdl input.xlib
|
||||
else ifeq ($(platform),bsd)
|
||||
- ruby := video.glx
|
||||
- ruby += video.glx video.xv video.xshm video.sdl
|
||||
- ruby += audio.openal audio.oss
|
||||
- ruby += input.x
|
||||
+ ruby := %%VIDEO%%
|
||||
- ruby += input.sdl input.xlib
|
||||
+ ruby += %%VIDEO%%
|
||||
+ ruby += %%AUDIO%%
|
||||
+ ruby += %%INPUT%%
|
||||
endif
|
||||
|
||||
# phoenix
|
||||
# ruby
|
|
@ -0,0 +1,11 @@
|
|||
--- higan/target-tomoko/presentation/presentation.cpp.orig 2017-01-13 17:52:31 UTC
|
||||
+++ higan/target-tomoko/presentation/presentation.cpp
|
||||
@@ -278,7 +278,7 @@ auto Presentation::toggleFullScreen() ->
|
||||
}
|
||||
|
||||
auto Presentation::loadShaders() -> void {
|
||||
- auto pathname = locate("Video Shaders/");
|
||||
+ auto pathname = locateShared("Video Shaders/");
|
||||
|
||||
if(settings["Video/Driver"].text() == "OpenGL") {
|
||||
for(auto shader : directory::folders(pathname, "*.shader")) {
|
|
@ -0,0 +1,11 @@
|
|||
--- higan/target-tomoko/program/medium.cpp.orig 2017-01-13 10:43:46 UTC
|
||||
+++ 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->get(Audio::Frequency).get<uint>(44100));
|
||||
inputManager->bind(emulator = &interface);
|
23
emulators/higan/files/patch-higan_target-tomoko_tomoko.cpp
Normal file
23
emulators/higan/files/patch-higan_target-tomoko_tomoko.cpp
Normal file
|
@ -0,0 +1,23 @@
|
|||
--- higan/target-tomoko/tomoko.cpp.orig 2016-07-01 08:21:27 UTC
|
||||
+++ 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;
|
|
@ -0,0 +1,8 @@
|
|||
--- higan/target-tomoko/tomoko.hpp.orig 2017-01-11 11:35:22 UTC
|
||||
+++ 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;
|
|
@ -0,0 +1,11 @@
|
|||
--- higan/target-tomoko/tools/cheat-database.cpp.orig 2016-05-03 22:40:39 UTC
|
||||
+++ higan/target-tomoko/tools/cheat-database.cpp
|
||||
@@ -18,7 +18,7 @@ auto CheatDatabase::findCodes() -> void
|
||||
if(!emulator) return;
|
||||
auto sha256 = emulator->sha256();
|
||||
|
||||
- auto contents = string::read(locate("cheats.bml"));
|
||||
+ auto contents = string::read(locateShared("cheats.bml"));
|
||||
auto document = BML::unserialize(contents);
|
||||
|
||||
for(auto cartridge : document.find("cartridge")) {
|
33
emulators/higan/files/patch-icarus_core_core.cpp
Normal file
33
emulators/higan/files/patch-icarus_core_core.cpp
Normal file
|
@ -0,0 +1,33 @@
|
|||
--- icarus/core/core.cpp.orig 2017-01-11 13:27:39 UTC
|
||||
+++ icarus/core/core.cpp
|
||||
@@ -1,17 +1,17 @@
|
||||
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.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.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 {
|
23
emulators/higan/files/patch-icarus_icarus.cpp
Normal file
23
emulators/higan/files/patch-icarus_icarus.cpp
Normal file
|
@ -0,0 +1,23 @@
|
|||
--- icarus/icarus.cpp.orig 2017-01-11 13:07:07 UTC
|
||||
+++ 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;
|
|
@ -1,11 +0,0 @@
|
|||
--- nall/platform.hpp.orig 2014-01-20 06:37:12 UTC
|
||||
+++ nall/platform.hpp
|
||||
@@ -41,7 +41,7 @@ namespace Math {
|
||||
#undef interface
|
||||
#define dllexport __declspec(dllexport)
|
||||
#else
|
||||
- #include <endian.h>
|
||||
+ #include <sys/endian.h>
|
||||
#include <unistd.h>
|
||||
#include <pwd.h>
|
||||
#define dllexport
|
|
@ -1,31 +0,0 @@
|
|||
--- ruby/video/glx.cpp.orig 2014-01-20 06:37:14 UTC
|
||||
+++ ruby/video/glx.cpp
|
||||
@@ -128,6 +128,28 @@ struct pVideoGLX : OpenGL {
|
||||
//require GLX 1.2+ API
|
||||
if(glx.version_major < 1 || (glx.version_major == 1 && glx.version_minor < 2)) return false;
|
||||
|
||||
+ int major, minor;
|
||||
+ const char *version = (const char *) glGetString (GL_VERSION);
|
||||
+ const char *dot = version == NULL ? NULL : strchr (version, '.');
|
||||
+ const char *major_start = dot;
|
||||
+
|
||||
+ /* Sanity check */
|
||||
+ if (dot == NULL || dot == version || *(dot + 1) == '\0') {
|
||||
+ major = 0;
|
||||
+ minor = 0;
|
||||
+ } else {
|
||||
+ /* Find the start of the major version in the string */
|
||||
+ while (major_start > version && *major_start != ' ')
|
||||
+ --major_start;
|
||||
+ major = strtol (major_start, NULL, 10);
|
||||
+ minor = strtol (dot + 1, NULL, 0);
|
||||
+ }
|
||||
+
|
||||
+ if(major < 3 || (major == 3 && minor < 2)) {
|
||||
+ printf("Error: OpenGL 3.2 is not available. Select another video driver on the Advanced Configuration tab and restart higan.\n");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
XWindowAttributes window_attributes;
|
||||
XGetWindowAttributes(display, settings.handle, &window_attributes);
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- target-ethos/general/presentation.cpp.orig 2013-12-06 20:19:40 UTC
|
||||
+++ target-ethos/general/presentation.cpp
|
||||
@@ -235,7 +235,7 @@ void Presentation::bootstrap() {
|
||||
void Presentation::loadShaders() {
|
||||
//only the OpenGL driver has video shader support
|
||||
if(config->video.driver == "OpenGL") {
|
||||
- string pathname = program->path("Video Shaders/");
|
||||
+ string pathname = program->path("shaders/");
|
||||
lstring shaders = directory::folders(pathname, "*.shader");
|
||||
for(auto& name : shaders) {
|
||||
auto shader = new RadioItem;
|
|
@ -1,11 +0,0 @@
|
|||
--- target-ethos/utility/utility.cpp.orig 2013-12-21 07:00:03 UTC
|
||||
+++ target-ethos/utility/utility.cpp
|
||||
@@ -203,7 +203,7 @@ void Utility::updateShader() {
|
||||
video.set(Video::Filter, Video::FilterLinear);
|
||||
} else if(config->video.shader == "Display Emulation") {
|
||||
if(program->active) {
|
||||
- string pathname = program->path("Video Shaders/");
|
||||
+ string pathname = program->path("shaders/");
|
||||
pathname.append("Display Emulation/");
|
||||
pathname.append(presentation->systemName, ".shader/");
|
||||
if(directory::exists(pathname)) {
|
|
@ -1,6 +1,5 @@
|
|||
bin/higan
|
||||
lib/libananke.so.1
|
||||
lib/libananke.so
|
||||
bin/icarus
|
||||
share/applications/higan.desktop
|
||||
%%DATADIR%%/Famicom.sys/manifest.bml
|
||||
%%DATADIR%%/Game Boy Advance.sys/manifest.bml
|
||||
|
@ -8,12 +7,14 @@ share/applications/higan.desktop
|
|||
%%DATADIR%%/Game Boy Color.sys/manifest.bml
|
||||
%%DATADIR%%/Game Boy.sys/boot.rom
|
||||
%%DATADIR%%/Game Boy.sys/manifest.bml
|
||||
%%DATADIR%%/Game Gear.sys/manifest.bml
|
||||
%%DATADIR%%/Master System.sys/manifest.bml
|
||||
%%DATADIR%%/Mega Drive.sys/manifest.bml
|
||||
%%DATADIR%%/PC Engine.sys/manifest.bml
|
||||
%%DATADIR%%/Super Famicom.sys/ipl.rom
|
||||
%%DATADIR%%/Super Famicom.sys/manifest.bml
|
||||
%%DATADIR%%/shaders/Curvature.shader/curvature.fs
|
||||
%%DATADIR%%/shaders/Curvature.shader/manifest.bml
|
||||
%%DATADIR%%/shaders/Edge Detection.shader/edge-detection.fs
|
||||
%%DATADIR%%/shaders/Edge Detection.shader/manifest.bml
|
||||
%%DATADIR%%/shaders/Scanline.shader/manifest.bml
|
||||
%%DATADIR%%/shaders/Scanline.shader/scanline.fs
|
||||
%%DATADIR%%/WonderSwan Color.sys/manifest.bml
|
||||
%%DATADIR%%/WonderSwan.sys/manifest.bml
|
||||
%%DATADIR%%/cheats.bml
|
||||
share/icarus/Database/Super Famicom.bml
|
||||
share/pixmaps/higan.png
|
||||
|
|
Loading…
Reference in a new issue