summaryrefslogtreecommitdiff
path: root/games-arcade/opentyrian
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-08-25 10:45:55 +0100
committerV3n3RiX <venerix@redcorelinux.org>2020-08-25 10:45:55 +0100
commit3cf7c3ef441822c889356fd1812ebf2944a59851 (patch)
treec513fe68548b40365c1c2ebfe35c58ad431cdd77 /games-arcade/opentyrian
parent05b8b0e0af1d72e51a3ee61522941bf7605cd01c (diff)
gentoo resync : 25.08.2020
Diffstat (limited to 'games-arcade/opentyrian')
-rw-r--r--games-arcade/opentyrian/Manifest5
-rw-r--r--games-arcade/opentyrian/files/2.1.20130907-gcc10.patch362
-rw-r--r--games-arcade/opentyrian/metadata.xml2
-rw-r--r--games-arcade/opentyrian/opentyrian-2.1.20130907-r1.ebuild57
-rw-r--r--games-arcade/opentyrian/opentyrian-2.1.20130907-r2.ebuild62
5 files changed, 428 insertions, 60 deletions
diff --git a/games-arcade/opentyrian/Manifest b/games-arcade/opentyrian/Manifest
index 316bef53260d..6785d9ba06fd 100644
--- a/games-arcade/opentyrian/Manifest
+++ b/games-arcade/opentyrian/Manifest
@@ -1,6 +1,7 @@
AUX 2.1.20130907-cflag-idiocy.diff 583 BLAKE2B 2b0da43af2c1ccb5f508573413d1c047186c8d596bd709aefcdee1fe79936774e1c1c01863bffeed6e1c5506f2897021c5f70988cef59d6c1d7397b8150b5f4e SHA512 fd12ebaabd2191baa248019b122acad205f1803b0abde19ae54d410550529bff93d42dfe26543d295efe3b4c6cd74e1d77681467dc8321832561b07bda92d9c4
AUX 2.1.20130907-datapath.diff 886 BLAKE2B a388fdbe60a5c1abb4bea213af34854e470b80f2648352e9be0beec88081450e04069da5bfc5b817a720e5fd6a98f5643695b9e5dd9823ce7397da4b0349075b SHA512 dcc5bf8e1c1384e7615112bf60f317f8bd3bae11e1fff1bce80a8a638fc6b719f4787f69d01f64dab2aecab4ef3007cb708e1b2891b6cb7c6213b2d495924d2a
+AUX 2.1.20130907-gcc10.patch 12090 BLAKE2B c15003d42e00d057470b655581ba299ee8e3c2e681a025a4c670479dba6016ef98c5db8def4845fe01acfe5c73d1ae3412b3b90969c5b02c3bfc161a0de99e28 SHA512 89d25a1a01e71f18487a27ca0d6665478d4d037f6008d3fa0d96d583124f03be4d9b7f97eaacd6fa46173b3ccee047dc258b0a247c0464693d4ee278a7636924
DIST opentyrian-2.1.20130907-src.tar.gz 297517 BLAKE2B 9d6d357cdda59da22ed039be0a5038cf744045dcb30fe0528137a5ac70a4cd512b24eeee3fe233b4ff2a819bf2aa4187e5109d88c72d18db7e1d64e8ad8db5d8 SHA512 1a560f2061496fbbb57b6334ab207b00a6b2e6a4d6164c6df6ad535ae9d0435c32c3db51d3ce2a0a79eb66d72723d112c1993f59b781750f9bd97afb643a0b67
DIST tyrian21.zip 4754048 BLAKE2B 6bef66fbc34a4d2d865fe7088a6942a29348153d0d10347860952a152b882fd9eef1748fbfa9fd32d030593d2f8c21e1cd227dd6ca540488ba5093b95a95fb33 SHA512 639aa773778386c14ce508feb4729512d00f80182a3bb0fe8bba4ee38bce91da1867ca93f1a7e5e30ff127da077eed275d8dd6ba82042b627b84f1606e2d6bce
-EBUILD opentyrian-2.1.20130907-r1.ebuild 1363 BLAKE2B 39e9fa0213f25e9f76054e2d86909a4c0f3519fc9ca67b2a3e3a8738fdcbf8b744f04ffc8cd8ee46b5e6a241b40f56fa7c29d0beb3c53824a79ab8b1aa522f55 SHA512 8b0eaebaa373ae0e82edbbedd35950e87af3180d9b237339dff3f5b32557b8f9e4b910116a87a1f2900a83b9cb9987be68dd6e44c8bd0e780e68d6835697d9f9
-MISC metadata.xml 464 BLAKE2B a4a91082f78e099c81a2726c4b5511e13a989b490e6e99761d6aa229493d9a2423e8b8d221654462ce863d44519cb96a33072e8e511a1c79191e0eff8a47d9c5 SHA512 98a768457cc15fd1a16e5fd6ab54bfa7a969ca51f8edcfdc93326c8b36b358eec1da67937b15fcee92d436e464b42fc57ead8f1a1c7c1bdcc94435e713cac379
+EBUILD opentyrian-2.1.20130907-r2.ebuild 1293 BLAKE2B 8a840fde51696b720c92da68e9c5f7fc6570f0545fa82920f10695ced01b9787f9fdcb1729fd8fa5eb1162677830ef31b3d8ed6ca118dfaf9a013f9260f261d4 SHA512 bb96aa8b47bde5cedb1c3d4d0fbd92e32c9a81ce265752c97a4affbca8f212780a70399ebaf5914b1a223fe045d9ecbba81eb04363b7c7259e646b1d00b4f73c
+MISC metadata.xml 461 BLAKE2B 3bb476dfa2020f248017a1d14ec69798f2c2496f5d12bd65234dd496c24f56d87467c8145ce43ae0269869cb7fc7b10482bf179fe145faecef5112e88946db30 SHA512 f7409e028251fd4f2be2a26b0845dfda431d3b91acbb7dd49c373f0cef7e6a012e7fccb2b0a894eed46d65f0b564a691c1207081560e309f02e75b85ccd14628
diff --git a/games-arcade/opentyrian/files/2.1.20130907-gcc10.patch b/games-arcade/opentyrian/files/2.1.20130907-gcc10.patch
new file mode 100644
index 000000000000..5b0c911a2ac2
--- /dev/null
+++ b/games-arcade/opentyrian/files/2.1.20130907-gcc10.patch
@@ -0,0 +1,362 @@
+From 962ee8fc46ca51691bde1c8c1022dacbe8a037ed Mon Sep 17 00:00:00 2001
+From: Carl Reinke <carlreinke@users.noreply.github.com>
+Date: Sun, 14 Jun 2020 14:11:00 -0600
+Subject: [PATCH] Move definitions that don't need to be exposed from opl.h to
+ opl.c
+
+---
+ src/opl.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ src/opl.h | 157 ++----------------------------------------------------
+ 2 files changed, 154 insertions(+), 156 deletions(-)
+
+diff --git a/src/opl.c b/src/opl.c
+index a4071c5..f15474c 100644
+--- a/src/opl.c
++++ b/src/opl.c
+@@ -23,12 +23,161 @@
+ * Copyright (C) 1998-2001 Ken Silverman
+ * Ken Silverman's official web site: "http://www.advsys.net/ken"
+ */
+-
++#include "opl.h"
+
+ #include <math.h>
++#include <stdbool.h>
+ #include <stdlib.h> // rand()
+ #include <string.h> // memset()
+-#include "opl.h"
++
++#define fltype double
++
++ /*
++ define attribution that inlines/forces inlining of a function (optional)
++ */
++#define OPL_INLINE inline
++
++
++#undef NUM_CHANNELS
++#if defined(OPLTYPE_IS_OPL3)
++#define NUM_CHANNELS 18
++#else
++#define NUM_CHANNELS 9
++#endif
++
++#define MAXOPERATORS (NUM_CHANNELS*2)
++
++
++#define FL05 ((fltype)0.5)
++#define FL2 ((fltype)2.0)
++#define PI ((fltype)3.1415926535897932384626433832795)
++
++
++#define FIXEDPT 0x10000 // fixed-point calculations using 16+16
++#define FIXEDPT_LFO 0x1000000 // fixed-point calculations using 8+24
++
++#define WAVEPREC 1024 // waveform precision (10 bits)
++
++#define INTFREQU ((fltype)(14318180.0 / 288.0)) // clocking of the chip
++
++
++#define OF_TYPE_ATT 0
++#define OF_TYPE_DEC 1
++#define OF_TYPE_REL 2
++#define OF_TYPE_SUS 3
++#define OF_TYPE_SUS_NOKEEP 4
++#define OF_TYPE_OFF 5
++
++#define ARC_CONTROL 0x00
++#define ARC_TVS_KSR_MUL 0x20
++#define ARC_KSL_OUTLEV 0x40
++#define ARC_ATTR_DECR 0x60
++#define ARC_SUSL_RELR 0x80
++#define ARC_FREQ_NUM 0xa0
++#define ARC_KON_BNUM 0xb0
++#define ARC_PERC_MODE 0xbd
++#define ARC_FEEDBACK 0xc0
++#define ARC_WAVE_SEL 0xe0
++
++#define ARC_SECONDSET 0x100 // second operator set for OPL3
++
++
++#define OP_ACT_OFF 0x00
++#define OP_ACT_NORMAL 0x01 // regular channel activated (bitmasked)
++#define OP_ACT_PERC 0x02 // percussion channel activated (bitmasked)
++
++#define BLOCKBUF_SIZE 512
++
++
++ // vibrato constants
++#define VIBTAB_SIZE 8
++#define VIBFAC 70/50000 // no braces, integer mul/div
++
++ // tremolo constants and table
++#define TREMTAB_SIZE 53
++#define TREM_FREQ ((fltype)(3.7)) // tremolo at 3.7hz
++
++
++ /* operator struct definition
++ For OPL2 all 9 channels consist of two operators each, carrier and modulator.
++ Channel x has operators x as modulator and operators (9+x) as carrier.
++ For OPL3 all 18 channels consist either of two operators (2op mode) or four
++ operators (4op mode) which is determined through register4 of the second
++ adlib register set.
++ Only the channels 0,1,2 (first set) and 9,10,11 (second set) can act as
++ 4op channels. The two additional operators for a channel y come from the
++ 2op channel y+3 so the operatorss y, (9+y), y+3, (9+y)+3 make up a 4op
++ channel.
++ */
++typedef struct operator_struct {
++ Bit32s cval, lastcval; // current output/last output (used for feedback)
++ Bit32u tcount, wfpos, tinc; // time (position in waveform) and time increment
++ fltype amp, step_amp; // and amplification (envelope)
++ fltype vol; // volume
++ fltype sustain_level; // sustain level
++ Bit32s mfbi; // feedback amount
++ fltype a0, a1, a2, a3; // attack rate function coefficients
++ fltype decaymul, releasemul; // decay/release rate functions
++ Bit32u op_state; // current state of operator (attack/decay/sustain/release/off)
++ Bit32u toff;
++ Bit32s freq_high; // highest three bits of the frequency, used for vibrato calculations
++ Bit16s* cur_wform; // start of selected waveform
++ Bit32u cur_wmask; // mask for selected waveform
++ Bit32u act_state; // activity state (regular, percussion)
++ bool sus_keep; // keep sustain level when decay finished
++ bool vibrato,tremolo; // vibrato/tremolo enable bits
++
++ // variables used to provide non-continuous envelopes
++ Bit32u generator_pos; // for non-standard sample rates we need to determine how many samples have passed
++ Bits cur_env_step; // current (standardized) sample position
++ Bits env_step_a,env_step_d,env_step_r; // number of std samples of one step (for attack/decay/release mode)
++ Bit8u step_skip_pos_a; // position of 8-cyclic step skipping (always 2^x to check against mask)
++ Bits env_step_skip_a; // bitmask that determines if a step is skipped (respective bit is zero then)
++
++#if defined(OPLTYPE_IS_OPL3)
++ bool is_4op,is_4op_attached; // base of a 4op channel/part of a 4op channel
++ Bit32s left_pan,right_pan; // opl3 stereo panning amount
++#endif
++} op_type;
++
++// per-chip variables
++static op_type op[MAXOPERATORS];
++
++static Bits int_samplerate;
++
++static Bit8u status;
++static Bit32u opl_index;
++#if defined(OPLTYPE_IS_OPL3)
++static Bit8u adlibreg[512]; // adlib register set (including second set)
++static Bit8u wave_sel[44]; // waveform selection
++#else
++static Bit8u adlibreg[256]; // adlib register set
++static Bit8u wave_sel[22]; // waveform selection
++#endif
++
++
++ // vibrato/tremolo increment/counter
++static Bit32u vibtab_pos;
++static Bit32u vibtab_add;
++static Bit32u tremtab_pos;
++static Bit32u tremtab_add;
++
++
++// enable an operator
++void enable_operator(Bitu regbase, op_type* op_pt, Bit32u act_type);
++
++// functions to change parameters of an operator
++void change_frequency(Bitu chanbase, Bitu regbase, op_type* op_pt);
++
++void change_attackrate(Bitu regbase, op_type* op_pt);
++void change_decayrate(Bitu regbase, op_type* op_pt);
++void change_releaserate(Bitu regbase, op_type* op_pt);
++void change_sustainlevel(Bitu regbase, op_type* op_pt);
++void change_waveform(Bitu regbase, op_type* op_pt);
++void change_keepsustain(Bitu regbase, op_type* op_pt);
++void change_vibrato(Bitu regbase, op_type* op_pt);
++void change_feedback(Bitu chanbase, op_type* op_pt);
++
+
+ static Bit32u generator_add; // should be a chip parameter
+
+diff --git a/src/opl.h b/src/opl.h
+index c8e643b..cbb56ad 100644
+--- a/src/opl.h
++++ b/src/opl.h
+@@ -25,11 +25,8 @@
+ * Ken Silverman's official web site: "http://www.advsys.net/ken"
+ */
+
+-
+-#define fltype double
+-
+-#include <stdbool.h>
+ #include <stdint.h>
++
+ typedef uintptr_t Bitu;
+ typedef intptr_t Bits;
+ typedef uint32_t Bit32u;
+@@ -39,154 +36,6 @@ typedef int16_t Bit16s;
+ typedef uint8_t Bit8u;
+ typedef int8_t Bit8s;
+
+-
+-/*
+- define attribution that inlines/forces inlining of a function (optional)
+-*/
+-#define OPL_INLINE inline
+-
+-
+-#undef NUM_CHANNELS
+-#if defined(OPLTYPE_IS_OPL3)
+-#define NUM_CHANNELS 18
+-#else
+-#define NUM_CHANNELS 9
+-#endif
+-
+-#define MAXOPERATORS (NUM_CHANNELS*2)
+-
+-
+-#define FL05 ((fltype)0.5)
+-#define FL2 ((fltype)2.0)
+-#define PI ((fltype)3.1415926535897932384626433832795)
+-
+-
+-#define FIXEDPT 0x10000 // fixed-point calculations using 16+16
+-#define FIXEDPT_LFO 0x1000000 // fixed-point calculations using 8+24
+-
+-#define WAVEPREC 1024 // waveform precision (10 bits)
+-
+-#define INTFREQU ((fltype)(14318180.0 / 288.0)) // clocking of the chip
+-
+-
+-#define OF_TYPE_ATT 0
+-#define OF_TYPE_DEC 1
+-#define OF_TYPE_REL 2
+-#define OF_TYPE_SUS 3
+-#define OF_TYPE_SUS_NOKEEP 4
+-#define OF_TYPE_OFF 5
+-
+-#define ARC_CONTROL 0x00
+-#define ARC_TVS_KSR_MUL 0x20
+-#define ARC_KSL_OUTLEV 0x40
+-#define ARC_ATTR_DECR 0x60
+-#define ARC_SUSL_RELR 0x80
+-#define ARC_FREQ_NUM 0xa0
+-#define ARC_KON_BNUM 0xb0
+-#define ARC_PERC_MODE 0xbd
+-#define ARC_FEEDBACK 0xc0
+-#define ARC_WAVE_SEL 0xe0
+-
+-#define ARC_SECONDSET 0x100 // second operator set for OPL3
+-
+-
+-#define OP_ACT_OFF 0x00
+-#define OP_ACT_NORMAL 0x01 // regular channel activated (bitmasked)
+-#define OP_ACT_PERC 0x02 // percussion channel activated (bitmasked)
+-
+-#define BLOCKBUF_SIZE 512
+-
+-
+-// vibrato constants
+-#define VIBTAB_SIZE 8
+-#define VIBFAC 70/50000 // no braces, integer mul/div
+-
+-// tremolo constants and table
+-#define TREMTAB_SIZE 53
+-#define TREM_FREQ ((fltype)(3.7)) // tremolo at 3.7hz
+-
+-
+-/* operator struct definition
+- For OPL2 all 9 channels consist of two operators each, carrier and modulator.
+- Channel x has operators x as modulator and operators (9+x) as carrier.
+- For OPL3 all 18 channels consist either of two operators (2op mode) or four
+- operators (4op mode) which is determined through register4 of the second
+- adlib register set.
+- Only the channels 0,1,2 (first set) and 9,10,11 (second set) can act as
+- 4op channels. The two additional operators for a channel y come from the
+- 2op channel y+3 so the operatorss y, (9+y), y+3, (9+y)+3 make up a 4op
+- channel.
+-*/
+-typedef struct operator_struct {
+- Bit32s cval, lastcval; // current output/last output (used for feedback)
+- Bit32u tcount, wfpos, tinc; // time (position in waveform) and time increment
+- fltype amp, step_amp; // and amplification (envelope)
+- fltype vol; // volume
+- fltype sustain_level; // sustain level
+- Bit32s mfbi; // feedback amount
+- fltype a0, a1, a2, a3; // attack rate function coefficients
+- fltype decaymul, releasemul; // decay/release rate functions
+- Bit32u op_state; // current state of operator (attack/decay/sustain/release/off)
+- Bit32u toff;
+- Bit32s freq_high; // highest three bits of the frequency, used for vibrato calculations
+- Bit16s* cur_wform; // start of selected waveform
+- Bit32u cur_wmask; // mask for selected waveform
+- Bit32u act_state; // activity state (regular, percussion)
+- bool sus_keep; // keep sustain level when decay finished
+- bool vibrato,tremolo; // vibrato/tremolo enable bits
+-
+- // variables used to provide non-continuous envelopes
+- Bit32u generator_pos; // for non-standard sample rates we need to determine how many samples have passed
+- Bits cur_env_step; // current (standardized) sample position
+- Bits env_step_a,env_step_d,env_step_r; // number of std samples of one step (for attack/decay/release mode)
+- Bit8u step_skip_pos_a; // position of 8-cyclic step skipping (always 2^x to check against mask)
+- Bits env_step_skip_a; // bitmask that determines if a step is skipped (respective bit is zero then)
+-
+-#if defined(OPLTYPE_IS_OPL3)
+- bool is_4op,is_4op_attached; // base of a 4op channel/part of a 4op channel
+- Bit32s left_pan,right_pan; // opl3 stereo panning amount
+-#endif
+-} op_type;
+-
+-// per-chip variables
+-Bitu chip_num;
+-op_type op[MAXOPERATORS];
+-
+-Bits int_samplerate;
+-
+-Bit8u status;
+-Bit32u opl_index;
+-#if defined(OPLTYPE_IS_OPL3)
+-Bit8u adlibreg[512]; // adlib register set (including second set)
+-Bit8u wave_sel[44]; // waveform selection
+-#else
+-Bit8u adlibreg[256]; // adlib register set
+-Bit8u wave_sel[22]; // waveform selection
+-#endif
+-
+-
+-// vibrato/tremolo increment/counter
+-Bit32u vibtab_pos;
+-Bit32u vibtab_add;
+-Bit32u tremtab_pos;
+-Bit32u tremtab_add;
+-
+-
+-// enable an operator
+-void enable_operator(Bitu regbase, op_type* op_pt, Bit32u act_type);
+-
+-// functions to change parameters of an operator
+-void change_frequency(Bitu chanbase, Bitu regbase, op_type* op_pt);
+-
+-void change_attackrate(Bitu regbase, op_type* op_pt);
+-void change_decayrate(Bitu regbase, op_type* op_pt);
+-void change_releaserate(Bitu regbase, op_type* op_pt);
+-void change_sustainlevel(Bitu regbase, op_type* op_pt);
+-void change_waveform(Bitu regbase, op_type* op_pt);
+-void change_keepsustain(Bitu regbase, op_type* op_pt);
+-void change_vibrato(Bitu regbase, op_type* op_pt);
+-void change_feedback(Bitu chanbase, op_type* op_pt);
+-
+ // general functions
+ void adlib_init(Bit32u samplerate);
+ void adlib_write(Bitu idx, Bit8u val);
+@@ -195,8 +44,8 @@ void adlib_getsample(Bit16s* sndptr, Bits numsamples);
+ Bitu adlib_reg_read(Bitu port);
+ void adlib_write_index(Bitu port, Bit8u val);
+
+-#endif /* OPL_H */
+-
+ #define opl_init() adlib_init(OUTPUT_QUALITY * 11025)
+ #define opl_write(reg, val) adlib_write(reg, val)
+ #define opl_update(buf, num) adlib_getsample(buf, num)
++
++#endif /* OPL_H */
diff --git a/games-arcade/opentyrian/metadata.xml b/games-arcade/opentyrian/metadata.xml
index 161bc1494dc2..33834cfebd8d 100644
--- a/games-arcade/opentyrian/metadata.xml
+++ b/games-arcade/opentyrian/metadata.xml
@@ -10,6 +10,6 @@
<name>Gentoo Games Project</name>
</maintainer>
<upstream>
- <remote-id type="bitbucket">opentyrian/opentyrian</remote-id>
+ <remote-id type="github">opentyrian/opentyrian</remote-id>
</upstream>
</pkgmetadata>
diff --git a/games-arcade/opentyrian/opentyrian-2.1.20130907-r1.ebuild b/games-arcade/opentyrian/opentyrian-2.1.20130907-r1.ebuild
deleted file mode 100644
index d6898a9647ff..000000000000
--- a/games-arcade/opentyrian/opentyrian-2.1.20130907-r1.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit desktop gnome2-utils
-
-DESCRIPTION="Open-source port of the DOS game Tyrian, vertical scrolling shooter"
-HOMEPAGE="https://bitbucket.org/opentyrian/opentyrian/wiki/Home"
-SRC_URI="http://darklomax.org/tyrian/tyrian21.zip
- http://www.camanis.net/${PN}/releases/${P}-src.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE=""
-
-RDEPEND="media-libs/libsdl
- media-libs/sdl-net"
-
-# Yes, mercurial is needed to set the build version stamp.
-DEPEND="${RDEPEND}
- app-arch/unzip
- dev-vcs/mercurial"
-
-PATCHES=(
- "${FILESDIR}/${PV}-datapath.diff"
- "${FILESDIR}/${PV}-cflag-idiocy.diff"
-)
-
-src_compile() {
- emake DATA_PATH="/usr/share/${PN}"
-}
-
-src_install() {
- dobin opentyrian
- dosym ../../usr/bin/opentyrian /usr/bin/tyrian
- dodoc CREDITS NEWS README
- domenu linux/opentyrian.desktop || die "Failed to install desktop file"
- for i in linux/icons/*.png ; do
- local size=`echo ${i} | sed -e 's:.*-\([0-9]\+\).png:\1:'`
- insinto /usr/share/icons/hicolor/${size}x${size}/apps
- newins ${i} opentyrian.png
- done
- insinto "/usr/share/${PN}"
- cd "${WORKDIR}/tyrian21"
- rm *.exe dpmi16bi.ovl loudness.awe || die "Failed to remove win32 binaries"
- doins *
-}
-
-pkg_postinst() {
- gnome2_icon_cache_update
-}
-
-pkg_postrm() {
- gnome2_icon_cache_update
-}
diff --git a/games-arcade/opentyrian/opentyrian-2.1.20130907-r2.ebuild b/games-arcade/opentyrian/opentyrian-2.1.20130907-r2.ebuild
new file mode 100644
index 000000000000..74fce946ff85
--- /dev/null
+++ b/games-arcade/opentyrian/opentyrian-2.1.20130907-r2.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop toolchain-funcs xdg-utils
+
+DESCRIPTION="Open-source port of the DOS game Tyrian, vertical scrolling shooter"
+HOMEPAGE="https://github.com/opentyrian/opentyrian"
+SRC_URI="http://darklomax.org/tyrian/tyrian21.zip
+ http://www.camanis.net/${PN}/releases/${P}-src.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="media-libs/libsdl[video]
+ media-libs/sdl-net"
+RDEPEND="${DEPEND}"
+BDEPEND="app-arch/unzip"
+
+PATCHES=(
+ "${FILESDIR}/${PV}-datapath.diff"
+ "${FILESDIR}/${PV}-cflag-idiocy.diff"
+ "${FILESDIR}/${PV}-gcc10.patch"
+)
+
+src_prepare() {
+ default
+ rm "${WORKDIR}"/tyrian21/{*.exe,dpmi16bi.ovl,loudness.awe} || die "Failed to remove win32 binaries"
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ DATA_PATH="${EPREFIX}/usr/share/${PN}"
+}
+
+src_install() {
+ dobin opentyrian
+ dosym opentyrian /usr/bin/tyrian
+ dodoc CREDITS NEWS README
+ domenu linux/opentyrian.desktop
+
+ local size
+ for i in linux/icons/*.png ; do
+ size=${i%.png}
+ size=${size##*-}
+ newicon -s "${size}" "${i}" opentyrian.png
+ done
+
+ insinto /usr/share/"${PN}"
+ doins "${WORKDIR}"/tyrian21/*
+}
+
+pkg_postinst() {
+ xdg_icon_cache_update
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+}