mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-16 19:50:19 +01:00
games/sms_sdl: Added (A Sega Master System and Game Gear Emulator).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
parent
ad722f51d0
commit
8f4f40dc37
17 changed files with 639 additions and 0 deletions
15
games/sms_sdl/README
Normal file
15
games/sms_sdl/README
Normal file
|
@ -0,0 +1,15 @@
|
|||
sms_sdl (A Sega Master System and Game Gear Emulator)
|
||||
|
||||
SMS Plus is Sega Master System and Game Gear emulator. Originally,
|
||||
it was written to run under DOS. Since Charles Mac Donald released
|
||||
his emulator under the GPL terms, this emulator has been ported to
|
||||
different platforms.
|
||||
|
||||
This package includes desktop integration for KDE4. IF you do not want
|
||||
this, specify MIME_TYPES=no in the environment before running the script.
|
||||
The desktop integration associates *.sms and *.gg files with the emulator,
|
||||
so they will be displayed with a Sega Master System icon, and can be
|
||||
launched from within KDE by clicking on them in the file manager.
|
||||
|
||||
The sms_sdl.png icon is by finite, from
|
||||
http://www.pixeljoint.com/pixelart/2312.htm
|
8
games/sms_sdl/doinst.sh
Normal file
8
games/sms_sdl/doinst.sh
Normal file
|
@ -0,0 +1,8 @@
|
|||
if [ -x /usr/bin/update-desktop-database ]; then
|
||||
/usr/bin/update-desktop-database -q usr/share/applications
|
||||
fi
|
||||
|
||||
if [ -x /usr/bin/update-mime-database ]; then
|
||||
/usr/bin/update-mime-database usr/share/mime > /dev/null 2>&1
|
||||
fi
|
||||
|
5
games/sms_sdl/mime/doinst.mime
Normal file
5
games/sms_sdl/mime/doinst.mime
Normal file
|
@ -0,0 +1,5 @@
|
|||
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
|
||||
if [ -x /usr/bin/gtk-update-icon-cache ]; then
|
||||
/usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
|
||||
fi
|
||||
fi
|
2
games/sms_sdl/mime/mime_types
Normal file
2
games/sms_sdl/mime/mime_types
Normal file
|
@ -0,0 +1,2 @@
|
|||
application/x-sega-master-system-rom
|
||||
application/x-sega-game-gear-rom
|
17
games/sms_sdl/mime/sms_sdl.xml
Normal file
17
games/sms_sdl/mime/sms_sdl.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
||||
<mime-type type="application/x-sega-master-system-rom">
|
||||
<icon name="sms_sdl" />
|
||||
<comment>Sega Master System ROM</comment>
|
||||
<acronym>SMS</acronym>
|
||||
<expanded-acronym>Sega Master System</expanded-acronym>
|
||||
<glob pattern="*.sms"/>
|
||||
</mime-type>
|
||||
<mime-type type="application/x-sega-game-gear-rom">
|
||||
<icon name="sms_sdl" />
|
||||
<comment>Sega Game Gear ROM</comment>
|
||||
<acronym>GG</acronym>
|
||||
<expanded-acronym>Game Gear</expanded-acronym>
|
||||
<glob pattern="*.gg"/>
|
||||
</mime-type>
|
||||
</mime-info>
|
25
games/sms_sdl/patches/cflags_and_libz.diff
Normal file
25
games/sms_sdl/patches/cflags_and_libz.diff
Normal file
|
@ -0,0 +1,25 @@
|
|||
diff -Naur sms_sdl-0.9.4a-r7.1/sdl/Makefile sms_sdl-0.9.4a-r7.1.patched/sdl/Makefile
|
||||
--- sms_sdl-0.9.4a-r7.1/sdl/Makefile 2003-07-16 23:37:38.000000000 -0400
|
||||
+++ sms_sdl-0.9.4a-r7.1.patched/sdl/Makefile 2009-02-05 17:39:28.000000000 -0500
|
||||
@@ -12,7 +12,7 @@
|
||||
NAME = sms_sdl
|
||||
|
||||
CC = gcc
|
||||
-CFLAGS = `sdl-config --cflags` -O2
|
||||
+CFLAGS = `sdl-config --cflags` $(OPTFLAGS)
|
||||
DEFINES = -DLSB_FIRST -DX86_ASM
|
||||
INCLUDES = -I. -I.. -I../cpu -I../sound
|
||||
LIBS = `sdl-config --libs`
|
||||
@@ -22,9 +22,9 @@
|
||||
../cpu/z80.o ../sound/emu2413.o ../sound/sn76496.o
|
||||
|
||||
# (un)comment to enable ZIP support
|
||||
-#DEFINES += -DUSE_ZLIB
|
||||
-#LIBS += -Lz
|
||||
-#OBJECTS += unzip.o
|
||||
+DEFINES += -DUSE_ZLIB
|
||||
+LIBS += -lz
|
||||
+OBJECTS += unzip.o
|
||||
|
||||
|
||||
all: $(NAME)
|
83
games/sms_sdl/patches/fix_option_parsing.diff
Normal file
83
games/sms_sdl/patches/fix_option_parsing.diff
Normal file
|
@ -0,0 +1,83 @@
|
|||
diff -x tags -Naur sms_sdl-0.9.4a-r7.1/sdl/main.c sms_sdl-0.9.4a-r7.1.patched/sdl/main.c
|
||||
--- sms_sdl-0.9.4a-r7.1/sdl/main.c 2009-10-11 21:49:18.000000000 -0400
|
||||
+++ sms_sdl-0.9.4a-r7.1.patched/sdl/main.c 2009-10-12 01:41:24.000000000 -0400
|
||||
@@ -42,17 +42,20 @@
|
||||
|
||||
static int parse_args(int argc, char **argv)
|
||||
{
|
||||
- int i;
|
||||
+ int i, name_set = 0;
|
||||
|
||||
/* default virtual console emulation settings */
|
||||
cfg.fm = 0;
|
||||
cfg.japan = 0;
|
||||
|
||||
cfg.filter = -1;
|
||||
- strcpy(cfg.game_name, argv[1]);
|
||||
|
||||
- for(i = 2; i < argc; ++i) {
|
||||
- if(strcasecmp(argv[i], "--fm") == 0)
|
||||
+ for(i = 1; i < argc; ++i) {
|
||||
+ if(!name_set && argv[i][0] != '-') {
|
||||
+ strcpy(cfg.game_name, argv[i]);
|
||||
+ name_set++;
|
||||
+ }
|
||||
+ else if(strcasecmp(argv[i], "--fm") == 0)
|
||||
cfg.fm = 1;
|
||||
else if(strcasecmp(argv[i], "--japan") == 0)
|
||||
cfg.japan = 1;
|
||||
@@ -86,6 +89,11 @@
|
||||
else
|
||||
printf("WARNING: unknown option '%s'.\n", argv[i]);
|
||||
}
|
||||
+ if(!name_set) {
|
||||
+ printf("ERROR: no ROM filename given\n");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -112,13 +120,13 @@
|
||||
printf(" --filter <mode>\t render using a filter: ");
|
||||
for(i = 0; i < sizeof(filters) / sizeof(filters[0]) - 1; ++i)
|
||||
printf("%s,", filters[i].name);
|
||||
- printf("%s.", filters[i].name);
|
||||
+ printf("%s.\n", filters[i].name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
memset(&cfg, 0, sizeof(cfg));
|
||||
if(!parse_args(argc, argv))
|
||||
- return 0;
|
||||
+ return 1;
|
||||
|
||||
if(sdlsms_init(&cfg)) {
|
||||
sdlsms_emulate();
|
||||
diff -x tags -Naur sms_sdl-0.9.4a-r7.1/sdl/saves.c sms_sdl-0.9.4a-r7.1.patched/sdl/saves.c
|
||||
--- sms_sdl-0.9.4a-r7.1/sdl/saves.c 2003-07-16 23:20:24.000000000 -0400
|
||||
+++ sms_sdl-0.9.4a-r7.1.patched/sdl/saves.c 2009-10-11 22:04:10.000000000 -0400
|
||||
@@ -88,6 +88,11 @@
|
||||
unzCloseCurrentFile(zf);
|
||||
unzClose(zf);
|
||||
|
||||
+ /* 20091011 bkw: avoid segfaulting if filename contains no dot */
|
||||
+ if(!strrchr(romfile, '.')) {
|
||||
+ printf("Invalid filename '%s' (no extension), giving up\n", romfile);
|
||||
+ return 0;
|
||||
+ }
|
||||
if(strcasecmp(strrchr(romfile, '.'), ".gg") == 0)
|
||||
cart.type = TYPE_GG;
|
||||
else
|
||||
@@ -126,6 +131,11 @@
|
||||
|
||||
fclose(fd);
|
||||
|
||||
+ /* 20091011 bkw: avoid segfaulting if filename contains no dot */
|
||||
+ if(!strrchr(filename, '.')) {
|
||||
+ printf("Invalid filename '%s' (no extension), giving up\n", filename);
|
||||
+ return 0;
|
||||
+ }
|
||||
/* Figure out game image type */
|
||||
if(strcasecmp(strrchr(filename, '.'), ".gg") == 0)
|
||||
cart.type = TYPE_GG;
|
29
games/sms_sdl/patches/japan_and_fm.diff
Normal file
29
games/sms_sdl/patches/japan_and_fm.diff
Normal file
|
@ -0,0 +1,29 @@
|
|||
--- sms_sdl-0.9.4a-r7.1/sdl/main.c 2003-07-21 12:40:56.000000000 -0300
|
||||
+++ sms_sdl-0.9.4a-r7.1.patched/sdl/main.c 2009-05-12 17:42:29.362768285 -0300
|
||||
@@ -45,21 +45,19 @@
|
||||
int i;
|
||||
|
||||
/* default virtual console emulation settings */
|
||||
- sms.use_fm = 0;
|
||||
- sms.country = TYPE_OVERSEAS;
|
||||
+ cfg.fm = 0;
|
||||
+ cfg.japan = 0;
|
||||
|
||||
cfg.filter = -1;
|
||||
strcpy(cfg.game_name, argv[1]);
|
||||
|
||||
for(i = 2; i < argc; ++i) {
|
||||
if(strcasecmp(argv[i], "--fm") == 0)
|
||||
- sms.use_fm = 1;
|
||||
+ cfg.fm = 1;
|
||||
else if(strcasecmp(argv[i], "--japan") == 0)
|
||||
- sms.country = TYPE_DOMESTIC;
|
||||
- else if(strcasecmp(argv[i], "--usesram") == 0) {
|
||||
+ cfg.japan = 1;
|
||||
+ else if(strcasecmp(argv[i], "--usesram") == 0)
|
||||
cfg.usesram = 1;
|
||||
- sms.save = 1;
|
||||
- }
|
||||
else if(strcasecmp(argv[i], "--fskip") == 0) {
|
||||
if(++i<argc) {
|
||||
cfg.frameskip = atoi(argv[i]);
|
29
games/sms_sdl/patches/x86_64.diff
Normal file
29
games/sms_sdl/patches/x86_64.diff
Normal file
|
@ -0,0 +1,29 @@
|
|||
diff -Naur sms_sdl-0.9.4a-r7.1/sdl/Makefile sms_sdl-0.9.4a-r7.1.patched/sdl/Makefile
|
||||
--- sms_sdl-0.9.4a-r7.1/sdl/Makefile 2009-09-30 18:39:29.000000000 -0400
|
||||
+++ sms_sdl-0.9.4a-r7.1.patched/sdl/Makefile 2009-09-30 18:40:10.000000000 -0400
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
CC = gcc
|
||||
CFLAGS = `sdl-config --cflags` $(OPTFLAGS)
|
||||
-DEFINES = -DLSB_FIRST -DX86_ASM
|
||||
+DEFINES = -DLSB_FIRST
|
||||
INCLUDES = -I. -I.. -I../cpu -I../sound
|
||||
LIBS = `sdl-config --libs`
|
||||
|
||||
diff -Naur sms_sdl-0.9.4a-r7.1/types.h sms_sdl-0.9.4a-r7.1.patched/types.h
|
||||
--- sms_sdl-0.9.4a-r7.1/types.h 2003-01-07 12:37:58.000000000 -0500
|
||||
+++ sms_sdl-0.9.4a-r7.1.patched/types.h 2009-09-30 18:40:19.000000000 -0400
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned short int uint16;
|
||||
-typedef unsigned long int uint32;
|
||||
+typedef unsigned int uint32;
|
||||
|
||||
typedef signed char int8;
|
||||
typedef signed short int int16;
|
||||
-typedef signed long int int32;
|
||||
+typedef signed int int32;
|
||||
|
||||
#endif /* _TYPES_H_ */
|
||||
|
37
games/sms_sdl/sample_config
Normal file
37
games/sms_sdl/sample_config
Normal file
|
@ -0,0 +1,37 @@
|
|||
# sms_sdl sample config - copy to ~/.sms_sdl/config and edit as desired.
|
||||
|
||||
# This file contains the default command-line options to be passed to
|
||||
# sms_sdl, every time it's run. Place each option on a line by itself.
|
||||
# The leading -- is optional.
|
||||
|
||||
# Comments and blank lines are ignored.
|
||||
|
||||
# Enable YM2413 sound? Default is disabled; uncomment next line to enable.
|
||||
#fm
|
||||
|
||||
# Set the machine type as DOMESTIC (aka Japanese) instead of OVERSEAS.
|
||||
# The default is overseas (aka US), uncomment next line for Japanese.
|
||||
#japan
|
||||
|
||||
# Uncomment next line to load/save SRAM contents before starting/exiting.
|
||||
# The SRAM contents will be saved in ~/.sms_sdl/<romname>.sav
|
||||
#usesram
|
||||
|
||||
# Specify the number of frames to skip. The default is 0 (no frameskip)
|
||||
#fskip 1
|
||||
|
||||
# do not limit to 60 frames per second?
|
||||
#fullspeed
|
||||
|
||||
# start in fullscreen mode?
|
||||
#fullscreen
|
||||
|
||||
# use joystick?
|
||||
#joystick
|
||||
|
||||
# disable sound?
|
||||
#nosound
|
||||
|
||||
# Render using a filter? Default is no filter. Choices are:
|
||||
# 2xsai super2xsai supereagle advmame2x tv2x 2x bilinear dotmatrix
|
||||
#filter 2x
|
19
games/sms_sdl/slack-desc
Normal file
19
games/sms_sdl/slack-desc
Normal file
|
@ -0,0 +1,19 @@
|
|||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description.
|
||||
# Line up the first '|' above the ':' following the base package name, and
|
||||
# the '|' on the right side marks the last column you can put a character in.
|
||||
# You must make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':' except on otherwise blank lines.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
sms_sdl: sms_sdl (A Sega Master System and Game Gear Emulator)
|
||||
sms_sdl:
|
||||
sms_sdl: SMS Plus is Sega Master System and Game Gear emulator. Originally,
|
||||
sms_sdl: it was written to run under DOS. Since Charles Mac Donald released
|
||||
sms_sdl: his emulator under the GPL terms, this emulator has been ported to
|
||||
sms_sdl: different platforms.
|
||||
sms_sdl:
|
||||
sms_sdl:
|
||||
sms_sdl:
|
||||
sms_sdl:
|
||||
sms_sdl:
|
146
games/sms_sdl/sms_sdl.1
Normal file
146
games/sms_sdl/sms_sdl.1
Normal file
|
@ -0,0 +1,146 @@
|
|||
.TH SMS_SDL "1" "February 2009" "SMS Plus/SDL v0.9.4aR7" "User Commands"
|
||||
.SH NAME
|
||||
sms_sdl \- Sega Master System and Game Gear emulator.
|
||||
.SH SYNOPSIS
|
||||
.B sms_sdl
|
||||
\fR[\fI--options\fR] \fI<filename.<SMS|GG>>
|
||||
.SH DESCRIPTION
|
||||
SMS Plus/SDL v0.9.4aR7
|
||||
.br
|
||||
(C) Charles Mac Donald in 1998, 1999, 2000
|
||||
.br
|
||||
SDL Version by Gregory Montoir (cyx@frenchkiss.net)
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
\fINote:\fR The filename may appear anywhere on the command line.
|
||||
.TP
|
||||
\fB\-\-fm\fR
|
||||
Enable YM2413 sound.
|
||||
.TP
|
||||
\fB\-\-japan\fR
|
||||
Set the machine type as DOMESTIC instead of OVERSEAS.
|
||||
.TP
|
||||
\fB\-\-usesram\fR
|
||||
Load/save SRAM contents before starting/exiting.
|
||||
.TP
|
||||
\fB\-\-fskip\fR <n>
|
||||
Specify the number of frames to skip.
|
||||
.TP
|
||||
\fB\-\-fullspeed\fR
|
||||
Do not limit to 60 frames per second.
|
||||
.TP
|
||||
\fB\-\-fullscreen\fR
|
||||
Start in fullscreen mode.
|
||||
.TP
|
||||
\fB\-\-joystick\fR
|
||||
Use joystick.
|
||||
.TP
|
||||
\fB\-\-nosound\fR
|
||||
Disable sound.
|
||||
.TP
|
||||
\fB\-\-filter\fR <mode>
|
||||
Render using a filter. Available modes:
|
||||
.RS
|
||||
.IP "2xsai"
|
||||
.PD 0
|
||||
.IP "super2xsai"
|
||||
.IP "supereagle"
|
||||
.IP "advmame2x"
|
||||
.IP "tv2x"
|
||||
.IP "2x"
|
||||
.IP "bilinear"
|
||||
.IP "dotmatrix"
|
||||
.RE
|
||||
.PD 1
|
||||
.SH CONFIG FILE
|
||||
\fBsms_sdl\fR is launched by a shell script wrapper which reads the
|
||||
file \fI~/.sms_sdl/config\fR if it exists. Any of the options above may
|
||||
be placed in this file (one option per line, with or without the leading \fB--\fR characters). These options
|
||||
will be passed as command\-line arguments to the real \fBsms_sdl\fR
|
||||
binary every time it runs.
|
||||
.PP
|
||||
See \fB/usr/doc/sms_sdl-@VERSION@/sample_config\fR for further information.
|
||||
.SH KEYBOARD
|
||||
.TP
|
||||
\fBF1\fR
|
||||
Screenshot in BMP format
|
||||
.TP
|
||||
\fBF2\fR
|
||||
Save state
|
||||
.TP
|
||||
\fBF3\fR
|
||||
Load state
|
||||
.TP
|
||||
\fBF4/F5\fR
|
||||
Dec/inc frame skip value
|
||||
.TP
|
||||
\fBF6/F7\fR
|
||||
Dec/inc state slot
|
||||
.TP
|
||||
\fB1..8\fR
|
||||
Switch rendering filter
|
||||
.TP
|
||||
\fBC\fR
|
||||
Button 1
|
||||
.TP
|
||||
\fBV\fR
|
||||
Button 2
|
||||
.TP
|
||||
\fBENTER\fR
|
||||
Start (GG) / pause (SMS)
|
||||
.TP
|
||||
\fBARROWS\fR
|
||||
Directional pad
|
||||
.TP
|
||||
\fBTAB\fR
|
||||
Console hard reset
|
||||
.PP
|
||||
The key bindings may not be remapped.
|
||||
.SH FILES
|
||||
.PP
|
||||
ROM image files may be in raw dump format, or may have a header (details
|
||||
are system-specific). Also, ROM images may be zipped (not gzipped), in
|
||||
which case the first file in the zip file's directory must be the
|
||||
ROM image (any other files are ignored).
|
||||
.PP
|
||||
\fBsms_sdl\fR looks at the filename to determine the type of ROM image
|
||||
in use. Any file whose name ends in \fI.gg\fR (case-insensitive match)
|
||||
is considered to be a Game Gear ROM. Any other file is treated as a
|
||||
Sega Master System ROM. In the case of a zipped image, this refers to the
|
||||
file inside the zip file; the zip file itself doesn't have any special
|
||||
naming requirements.
|
||||
.PP
|
||||
Screenshot filenames (F1 key) are generated by replacing the filename
|
||||
extension with \fI-NNN.bmp\fR, where NNN is a 3-digit number (000 for
|
||||
the first screenshot, 001 for the second, etc). The numbering starts
|
||||
at 000 every time the emulator is started, and existing files will be
|
||||
overwritten without confirmation.
|
||||
.PP
|
||||
State save filenames (F2 key) are generated by replacing the filename
|
||||
extension with \fI.stN\fR, where N is the number of the save slot (one
|
||||
or more digits). Again, existing files are overwritten without confirmation.
|
||||
.PP
|
||||
For both types of file, the filename is considered to be the entire
|
||||
path to the ROM image file. This means that the emulator expects to
|
||||
be able to write savestate and screenshot files in the directory where
|
||||
the ROM files reside. If the directory is not writable, no files will
|
||||
be created.
|
||||
.SH BUGS
|
||||
.PP
|
||||
\fBsms_sdl\fR will exit with failure status if it's given a filename that
|
||||
contains no . (dot/period) characters (in other words, a filename
|
||||
without an extension). So don't do that. (This applies to the file
|
||||
inside the zip file, for zipped images)
|
||||
.PP
|
||||
Screenshot and state-save files should really be written in the
|
||||
current directory, or else a hypothetical ~/.sms_sdl directory.
|
||||
.PP
|
||||
There should be a config file, so the user doesn't have to pass his
|
||||
favorite set of options on the command line every time (of course,
|
||||
a shell alias, wrapper script, or GUI file manager
|
||||
can work around this easily enough).
|
||||
.SH AUTHORS
|
||||
.PP
|
||||
(C) Charles Mac Donald in 1998, 1999, 2000
|
||||
.br
|
||||
SDL Version by Gregory Montoir (cyx@frenchkiss.net)
|
135
games/sms_sdl/sms_sdl.SlackBuild
Normal file
135
games/sms_sdl/sms_sdl.SlackBuild
Normal file
|
@ -0,0 +1,135 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Slackware build script for sms_sdl
|
||||
# Written by B. Watson (yalhcru@gmail.com)
|
||||
|
||||
PRGNAM=sms_sdl
|
||||
VERSION=${VERSION:-0.9.4a_r7.1}
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-_SBo}
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
i?86) ARCH=i486 ;;
|
||||
arm*) ARCH=arm ;;
|
||||
*) ARCH=$( uname -m ) ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
CWD=$(pwd)
|
||||
TMP=${TMP:-/tmp/SBo}
|
||||
PKG=$TMP/package-$PRGNAM
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
SRCVER=$(echo $VERSION | sed 's/_/-/')
|
||||
|
||||
# If $MIME_TYPES is set to `yes' it will include MIME types for KDE and
|
||||
# automagically associate *.sms and *.gg files with sms_sdl.
|
||||
MIME_TYPES=${MIME_TYPES:-"yes"}
|
||||
|
||||
if [ "$ARCH" = "i486" ]; then
|
||||
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "i686" ]; then
|
||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "x86_64" ]; then
|
||||
SLKCFLAGS="-O2 -fPIC"
|
||||
LIBDIRSUFFIX="64"
|
||||
else
|
||||
SLKCFLAGS="-O2"
|
||||
LIBDIRSUFFIX=""
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
rm -rf $PKG
|
||||
mkdir -p $TMP $PKG $OUTPUT
|
||||
cd $TMP
|
||||
rm -rf $PRGNAM-$SRCVER
|
||||
unzip $CWD/$PRGNAM-$SRCVER-src.zip
|
||||
cd $PRGNAM-$SRCVER
|
||||
chown -R root:root .
|
||||
find -L . \
|
||||
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
|
||||
-o -perm 511 \) -exec chmod 755 {} \; -o \
|
||||
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
|
||||
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
|
||||
|
||||
# Sorry for all the patches, upstream has been unmaintained since 2001 or so.
|
||||
|
||||
# Support OPTFLAGS in build process
|
||||
patch -p1 --verbose < $CWD/patches/cflags_and_libz.diff
|
||||
|
||||
# Thanks to Ellington Santos (necropresto) for this patch that makes
|
||||
# the --fm and --japan options actually work:
|
||||
patch -p1 --verbose < $CWD/patches/japan_and_fm.diff
|
||||
|
||||
# x86_64 needs this patch to disable x86 asm + fix the int32, uint32 typedefs
|
||||
# (but x86 doesn't need this!)
|
||||
if [ "$ARCH" = "x86_64" ]; then
|
||||
patch -p1 --verbose < $CWD/patches/x86_64.diff
|
||||
fi
|
||||
|
||||
# Allow the ROM filename to appear anywhere on the command line, and
|
||||
# avoid segfaulting on filenames that don't contain a dot.
|
||||
patch -p1 --verbose < $CWD/patches/fix_option_parsing.diff
|
||||
|
||||
cd sdl
|
||||
|
||||
# need to link with -lm
|
||||
sed -i '/^LIBS/s,$, -lm,' Makefile
|
||||
|
||||
make OPTFLAGS="$SLKCFLAGS"
|
||||
|
||||
# There's no 'make install', plus we have this wrapper script...
|
||||
mkdir -p $PKG/usr/bin $PKG/usr/libexec
|
||||
install -m0755 $CWD/$PRGNAM.sh $PKG/usr/bin/$PRGNAM
|
||||
install -s -m0755 $PRGNAM $PKG/usr/libexec/$PRGNAM
|
||||
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cp -a README.TXT $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||
cat $CWD/sample_config > $PKG/usr/doc/$PRGNAM-$VERSION/sample_config
|
||||
|
||||
# man page is part of this SlackBuild. If you're packaging for
|
||||
# some other distribution, feel free to snag it.
|
||||
mkdir -p $PKG/usr/man/man1
|
||||
sed "s/@VERSION@/$VERSION/g" < $CWD/$PRGNAM.1 | gzip -9c > $PKG/usr/man/man1/$PRGNAM.1.gz
|
||||
|
||||
# Desktop integration stuff: Icon and .desktop file always present,
|
||||
# regardless of $MIME_TYPES
|
||||
mkdir -p $PKG/usr/share/applications $PKG/usr/share/pixmaps
|
||||
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
|
||||
cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png
|
||||
|
||||
mkdir -p $PKG/install
|
||||
cat $CWD/doinst.sh > $PKG/install/doinst.sh
|
||||
cat $CWD/slack-desc > $PKG/install/slack-desc
|
||||
|
||||
# MIME type and icon stuff updated for KDE 4.
|
||||
# For KDE4, we need the freedesktop XML file that defines the MIME types,
|
||||
# the icon(s) in /usr/share/icons/hicolor/<size>/mimetypes,
|
||||
# the MimeType= line in the app's .desktop file,
|
||||
# and the gtk-update-icon-cache lines in doinst.sh
|
||||
if [ "$MIME_TYPES" = "yes" ]; then
|
||||
mimedir=$PKG/usr/share/mime/packages/
|
||||
icondir=$PKG/usr/share/icons/hicolor/128x128/mimetypes
|
||||
desktop_types="MimeType="
|
||||
|
||||
mkdir -p $mimedir $icondir
|
||||
cat $CWD/mime/$PRGNAM.xml > $mimedir/$PRGNAM.xml
|
||||
|
||||
cd $icondir
|
||||
for type in $( cat $CWD/mime/mime_types ); do
|
||||
icon=$( echo $type | sed 's,/,-,g' ).png
|
||||
ln -s ../../../../pixmaps/$PRGNAM.png $icon
|
||||
desktop_types="$desktop_types$type;"
|
||||
done
|
||||
|
||||
cat $CWD/mime/doinst.mime >> $PKG/install/doinst.sh
|
||||
echo "$desktop_types" >> $PKG/usr/share/applications/$PRGNAM.desktop
|
||||
fi
|
||||
|
||||
cd $PKG
|
||||
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
|
11
games/sms_sdl/sms_sdl.desktop
Normal file
11
games/sms_sdl/sms_sdl.desktop
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=SMS Plus/SDL
|
||||
GenericName=Sega Master System Emulator
|
||||
Type=Application
|
||||
Exec=sms_sdl
|
||||
Icon=sms_sdl
|
||||
Terminal=false
|
||||
StartupNotify=false
|
||||
Hidden=true
|
||||
Categories=Game;Emulator;
|
10
games/sms_sdl/sms_sdl.info
Normal file
10
games/sms_sdl/sms_sdl.info
Normal file
|
@ -0,0 +1,10 @@
|
|||
PRGNAM="sms_sdl"
|
||||
VERSION="0.9.4a_r7.1"
|
||||
HOMEPAGE="http://pkgsrc.se/emulators/sms_sdl"
|
||||
DOWNLOAD="ftp://ftp.netbsd.org/pub/pkgsrc/distfiles/sms_sdl-0.9.4a-r7.1-src.zip"
|
||||
MD5SUM="985e979dbd38336909894a40c42a8e56"
|
||||
DOWNLOAD_x86_64=""
|
||||
MD5SUM_x86_64=""
|
||||
REQUIRES=""
|
||||
MAINTAINER="B. Watson"
|
||||
EMAIL="yalhcru@gmail.com"
|
BIN
games/sms_sdl/sms_sdl.png
Normal file
BIN
games/sms_sdl/sms_sdl.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
68
games/sms_sdl/sms_sdl.sh
Normal file
68
games/sms_sdl/sms_sdl.sh
Normal file
|
@ -0,0 +1,68 @@
|
|||
#!/bin/bash
|
||||
|
||||
# 20091011 bkw: Wrapper script for sms_sdl, does the following:
|
||||
|
||||
# - Savestates and screenshots will be saved in ~/.sms_sdl/
|
||||
# - A ~/.sms_sdl/config file will be read if present, and converted to
|
||||
# command-line options for the real sms_sdl binary.
|
||||
|
||||
# To make things work properly, we have to run the real emulator binary
|
||||
# with its cwd set to ~/.sms_sdl/, and create a symlink to the ROM file
|
||||
# in the same directory. After the emu exits, we remove the symlink.
|
||||
|
||||
sms_exe="/usr/libexec/sms_sdl"
|
||||
sms_userdir=~/.sms_sdl
|
||||
conf_file="$sms_userdir/config"
|
||||
|
||||
romfile=""
|
||||
conf_args=""
|
||||
|
||||
set -e
|
||||
|
||||
mkdir -p $sms_userdir
|
||||
|
||||
if [ -e "$conf_file" ]; then
|
||||
while read line; do
|
||||
# remove comments
|
||||
line="${line/\#*/}"
|
||||
case "$line" in
|
||||
"") ;; # ignore empty lines
|
||||
-*)
|
||||
conf_args="$conf_args $line"
|
||||
;;
|
||||
*)
|
||||
conf_args="$conf_args --$line"
|
||||
;;
|
||||
esac
|
||||
done < "$conf_file"
|
||||
fi
|
||||
|
||||
for arg; do
|
||||
case "$arg" in
|
||||
-h|-help|--help|-\?)
|
||||
$sms_exe
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--*)
|
||||
conf_args="$conf_args $arg"
|
||||
;;
|
||||
|
||||
*)
|
||||
if [ -z "$romfile" ]; then
|
||||
arg="$( readlink -f "$arg" )"
|
||||
romfile="$( basename "$arg" )"
|
||||
( cd $sms_userdir ; rm -f "$romfile" ; ln -s "$arg" . )
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
set +e
|
||||
if [ -z "$romfile" ]; then
|
||||
$sms_exe
|
||||
else
|
||||
cd $sms_userdir
|
||||
$sms_exe $conf_args "$romfile"
|
||||
rm -f "$romfile"
|
||||
fi
|
Loading…
Reference in a new issue