summaryrefslogtreecommitdiff
path: root/games-arcade
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
commitbfd9c39e4712ebdb442d4ca0673061faed1e70e1 (patch)
tree0d7a74b4463ee387f9cf9368ceb1b757f694f72a /games-arcade
parentf716a9fe6455d39eef01e718aae68dae61c19704 (diff)
downloadbaldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.gz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.xz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.zip
Revert "Adding metadata"
This reverts commit f716a9fe6455d39eef01e718aae68dae61c19704.
Diffstat (limited to 'games-arcade')
-rw-r--r--games-arcade/SpaceCadetPinball/Manifest3
-rw-r--r--games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.1.ebuild38
-rw-r--r--games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.ebuild37
-rw-r--r--games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.1.0.ebuild31
-rw-r--r--games-arcade/SpaceCadetPinball/SpaceCadetPinball-9999.ebuild29
-rw-r--r--games-arcade/SpaceCadetPinball/files/SpaceCadetPinball-2.0-respect-XDG_DATA_HOME.patch98
-rw-r--r--games-arcade/SpaceCadetPinball/metadata.xml11
-rw-r--r--games-arcade/abe/Manifest2
-rw-r--r--games-arcade/abe/abe-1.1-r2.ebuild61
-rw-r--r--games-arcade/abe/files/abe-1.1-doublefree.patch13
-rw-r--r--games-arcade/abe/files/abe-1.1-format-security.patch88
-rw-r--r--games-arcade/abe/files/abe-1.1-format.patch13
-rw-r--r--games-arcade/abe/files/abe-1.1-no-x-check.patch29
-rw-r--r--games-arcade/abe/files/abe-1.1-settings.patch14
-rw-r--r--games-arcade/abe/metadata.xml12
-rw-r--r--games-arcade/afternoonstalker/Manifest1
-rw-r--r--games-arcade/afternoonstalker/afternoonstalker-1.2.0.ebuild25
-rw-r--r--games-arcade/afternoonstalker/files/afternoonstalker-1.2.0-autotools.patch42
-rw-r--r--games-arcade/afternoonstalker/metadata.xml8
-rw-r--r--games-arcade/alienwave/Manifest1
-rw-r--r--games-arcade/alienwave/alienwave-0.4.0-r2.ebuild32
-rw-r--r--games-arcade/alienwave/files/alienwave-0.4.0-gentoo.patch22
-rw-r--r--games-arcade/alienwave/metadata.xml8
-rw-r--r--games-arcade/amphetamine/Manifest3
-rw-r--r--games-arcade/amphetamine/amphetamine-0.8.10-r2.ebuild59
-rw-r--r--games-arcade/amphetamine/amphetamine-0.8.10-r3.ebuild59
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-64bit.patch72
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-SDL-conversions.patch22
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-bugs.patch56
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-build.patch33
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-clang.patch18
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-drop-register-keyword.patch16
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-format-string.patch11
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-missing-headers.patch13
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-newline.patch358
-rw-r--r--games-arcade/amphetamine/files/amphetamine-0.8.10-no-lxt.patch14
-rw-r--r--games-arcade/amphetamine/metadata.xml8
-rw-r--r--games-arcade/aop/Manifest1
-rw-r--r--games-arcade/aop/aop-0.6-r2.ebuild41
-rw-r--r--games-arcade/aop/files/aop-0.6-as-needed.patch9
-rw-r--r--games-arcade/aop/metadata.xml8
-rw-r--r--games-arcade/aquaria/Manifest1
-rw-r--r--games-arcade/aquaria/aquaria-1.1.3-r3.ebuild52
-rw-r--r--games-arcade/aquaria/metadata.xml8
-rw-r--r--games-arcade/ascii-invaders/Manifest1
-rw-r--r--games-arcade/ascii-invaders/ascii-invaders-1.0.1.ebuild29
-rw-r--r--games-arcade/ascii-invaders/metadata.xml11
-rw-r--r--games-arcade/asteroid/Manifest1
-rw-r--r--games-arcade/asteroid/asteroid-1.2.1-r1.ebuild37
-rw-r--r--games-arcade/asteroid/files/asteroid-1.2.1-cmake4.patch12
-rw-r--r--games-arcade/asteroid/files/asteroid-1.2.1-gcc15.patch13
-rw-r--r--games-arcade/asteroid/files/asteroid-1.2.1-libm.patch24
-rw-r--r--games-arcade/asteroid/metadata.xml11
-rw-r--r--games-arcade/balloonchase/Manifest2
-rw-r--r--games-arcade/balloonchase/balloonchase-0.9.6-r2.ebuild44
-rw-r--r--games-arcade/balloonchase/files/balloonchase-0.9.6-gentoo.patch154
-rw-r--r--games-arcade/balloonchase/metadata.xml8
-rw-r--r--games-arcade/barbarian-bin/Manifest1
-rw-r--r--games-arcade/barbarian-bin/barbarian-bin-1.01-r3.ebuild54
-rw-r--r--games-arcade/barbarian-bin/metadata.xml8
-rw-r--r--games-arcade/batrachians/Manifest1
-rw-r--r--games-arcade/batrachians/batrachians-0.2.0.ebuild29
-rw-r--r--games-arcade/batrachians/files/batrachians-0.2.0-autotools.patch36
-rw-r--r--games-arcade/batrachians/metadata.xml8
-rw-r--r--games-arcade/berusky/Manifest3
-rw-r--r--games-arcade/berusky/berusky-1.7.1-r2.ebuild59
-rw-r--r--games-arcade/berusky/files/berusky-1.7.1-missing-includes.patch22
-rw-r--r--games-arcade/berusky/files/berusky-1.7.1-r2-gentoo.patch47
-rw-r--r--games-arcade/berusky/metadata.xml19
-rw-r--r--games-arcade/betna/Manifest1
-rw-r--r--games-arcade/betna/betna-0.9.7-r1.ebuild54
-rw-r--r--games-arcade/betna/metadata.xml8
-rw-r--r--games-arcade/blobby/Manifest1
-rw-r--r--games-arcade/blobby/blobby-1.1.1.ebuild59
-rw-r--r--games-arcade/blobby/files/blobby-1.1.1-fix_deps.patch36
-rw-r--r--games-arcade/blobby/files/blobby-1.1.1-fix_linkedlist.patch130
-rw-r--r--games-arcade/blobby/metadata.xml12
-rw-r--r--games-arcade/blobwars/Manifest1
-rw-r--r--games-arcade/blobwars/blobwars-2.00-r2.ebuild71
-rw-r--r--games-arcade/blobwars/files/blobwars-2.00-dont-override-strlcat.patch22
-rw-r--r--games-arcade/blobwars/files/blobwars-2.00-generic-name.patch12
-rw-r--r--games-arcade/blobwars/files/blobwars-2.00-time_t.patch15
-rw-r--r--games-arcade/blobwars/files/blobwars.appdata.xml29
-rw-r--r--games-arcade/blobwars/metadata.xml12
-rw-r--r--games-arcade/blockrage/Manifest1
-rw-r--r--games-arcade/blockrage/blockrage-0.2.3-r1.ebuild30
-rw-r--r--games-arcade/blockrage/files/blockrage-0.2.3-config.patch30
-rw-r--r--games-arcade/blockrage/files/blockrage-0.2.3-statx.patch92
-rw-r--r--games-arcade/blockrage/metadata.xml11
-rw-r--r--games-arcade/bomns/Manifest1
-rw-r--r--games-arcade/bomns/bomns-0.99.2-r2.ebuild42
-rw-r--r--games-arcade/bomns/files/bomns-0.99.2-c23.patch26
-rw-r--r--games-arcade/bomns/files/bomns-0.99.2-clang.patch35
-rw-r--r--games-arcade/bomns/files/bomns-0.99.2-fpe.patch14
-rw-r--r--games-arcade/bomns/metadata.xml15
-rw-r--r--games-arcade/briquolo/Manifest1
-rw-r--r--games-arcade/briquolo/briquolo-0.5.7.ebuild63
-rw-r--r--games-arcade/briquolo/files/briquolo-0.5.7-clang-widening.patch31
-rw-r--r--games-arcade/briquolo/files/briquolo-0.5.7-gcc11-fix-const.patch12
-rw-r--r--games-arcade/briquolo/files/briquolo-0.5.7-gcc43.patch74
-rw-r--r--games-arcade/briquolo/files/briquolo-0.5.7-libpng14.patch31
-rw-r--r--games-arcade/briquolo/files/briquolo-0.5.7-respect-AR.patch10
-rw-r--r--games-arcade/briquolo/metadata.xml8
-rw-r--r--games-arcade/bumprace/Manifest1
-rw-r--r--games-arcade/bumprace/bumprace-1.5.8.ebuild30
-rw-r--r--games-arcade/bumprace/files/bumprace-1.5.8-C23.patch13
-rw-r--r--games-arcade/bumprace/metadata.xml11
-rw-r--r--games-arcade/burgerspace/Manifest1
-rw-r--r--games-arcade/burgerspace/burgerspace-1.10.0.ebuild27
-rw-r--r--games-arcade/burgerspace/metadata.xml8
-rw-r--r--games-arcade/cdogs-sdl/Manifest1
-rw-r--r--games-arcade/cdogs-sdl/cdogs-sdl-2.4.0.ebuild58
-rw-r--r--games-arcade/cdogs-sdl/files/cdogs-sdl-1.1.1-cmake.patch14
-rw-r--r--games-arcade/cdogs-sdl/metadata.xml19
-rw-r--r--games-arcade/ceferino/Manifest1
-rw-r--r--games-arcade/ceferino/ceferino-0.97.8-r3.ebuild43
-rw-r--r--games-arcade/ceferino/files/ceferino-0.97.8-fix-audio.patch11
-rw-r--r--games-arcade/ceferino/metadata.xml8
-rw-r--r--games-arcade/circuslinux/Manifest1
-rw-r--r--games-arcade/circuslinux/circuslinux-1.0.3-r2.ebuild39
-rw-r--r--games-arcade/circuslinux/metadata.xml8
-rw-r--r--games-arcade/commandergenius/Manifest1
-rw-r--r--games-arcade/commandergenius/commandergenius-3.6.1.ebuild88
-rw-r--r--games-arcade/commandergenius/files/commandergenius-2.3.1-build.patch12
-rw-r--r--games-arcade/commandergenius/files/commandergenius-3.6.1-desktop-icon-ext.patch20
-rw-r--r--games-arcade/commandergenius/files/commandergenius-3.6.1-paths.patch10
-rw-r--r--games-arcade/commandergenius/metadata.xml15
-rw-r--r--games-arcade/cosmosmash/Manifest1
-rw-r--r--games-arcade/cosmosmash/cosmosmash-1.5.0.ebuild42
-rw-r--r--games-arcade/cosmosmash/metadata.xml8
-rw-r--r--games-arcade/crack-attack/Manifest1
-rw-r--r--games-arcade/crack-attack/crack-attack-1.1.14-r2.ebuild61
-rw-r--r--games-arcade/crack-attack/files/crack-attack-1.1.14-avoid_bashisms.patch15
-rw-r--r--games-arcade/crack-attack/files/crack-attack-1.1.14-gcc43.patch10
-rw-r--r--games-arcade/crack-attack/files/crack-attack-1.1.14-glut.patch14
-rw-r--r--games-arcade/crack-attack/files/sdl.m4180
-rw-r--r--games-arcade/crack-attack/metadata.xml8
-rw-r--r--games-arcade/criticalmass/Manifest1
-rw-r--r--games-arcade/criticalmass/criticalmass-1.0.2-r2.ebuild53
-rw-r--r--games-arcade/criticalmass/files/criticalmass-1.0.2-flags.patch24
-rw-r--r--games-arcade/criticalmass/files/criticalmass-1.0.2-gcc43.patch46
-rw-r--r--games-arcade/criticalmass/files/criticalmass-1.0.2-libpng.patch28
-rw-r--r--games-arcade/criticalmass/files/criticalmass-1.0.2-system-curl.patch21
-rw-r--r--games-arcade/criticalmass/metadata.xml11
-rw-r--r--games-arcade/defendguin/Manifest3
-rw-r--r--games-arcade/defendguin/defendguin-0.0.12-r2.ebuild44
-rw-r--r--games-arcade/defendguin/defendguin-0.0.13.ebuild47
-rw-r--r--games-arcade/defendguin/metadata.xml8
-rw-r--r--games-arcade/digger/Manifest2
-rw-r--r--games-arcade/digger/digger-20140423-r2.ebuild33
-rw-r--r--games-arcade/digger/metadata.xml8
-rw-r--r--games-arcade/dynamitejack/Manifest1
-rw-r--r--games-arcade/dynamitejack/dynamitejack-1.0.23-r3.ebuild68
-rw-r--r--games-arcade/dynamitejack/metadata.xml8
-rw-r--r--games-arcade/emilia-pinball/Manifest1
-rw-r--r--games-arcade/emilia-pinball/emilia-pinball-0.3.1-r5.ebuild78
-rw-r--r--games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-gcc46.patch30
-rw-r--r--games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-glibc210.patch13
-rw-r--r--games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-libtool.patch60
-rw-r--r--games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-parallel.patch11
-rw-r--r--games-arcade/emilia-pinball/metadata.xml11
-rw-r--r--games-arcade/epiar/Manifest1
-rw-r--r--games-arcade/epiar/epiar-0.5.1-r2.ebuild59
-rw-r--r--games-arcade/epiar/files/epiar-0.5.1-fix-bashisms.patch41
-rw-r--r--games-arcade/epiar/files/epiar-0.5.1-unbundle-lua5.1.patch49
-rw-r--r--games-arcade/epiar/metadata.xml22
-rw-r--r--games-arcade/excido/Manifest2
-rw-r--r--games-arcade/excido/excido-0.1.5c-r4.ebuild50
-rw-r--r--games-arcade/excido/files/excido-0.1.5c-build.patch29
-rw-r--r--games-arcade/excido/files/excido-0.1.5c-freealut.patch38
-rw-r--r--games-arcade/excido/metadata.xml8
-rw-r--r--games-arcade/fishsupper/Manifest1
-rw-r--r--games-arcade/fishsupper/files/fishsupper-0.1.6-asneeded.patch11
-rw-r--r--games-arcade/fishsupper/files/fishsupper-0.1.6-gcc6.patch49
-rw-r--r--games-arcade/fishsupper/files/fishsupper-0.1.6-int16.patch14
-rw-r--r--games-arcade/fishsupper/files/fishsupper-0.1.6-ovflfix.patch11
-rw-r--r--games-arcade/fishsupper/fishsupper-0.1.6-r3.ebuild43
-rw-r--r--games-arcade/fishsupper/metadata.xml11
-rw-r--r--games-arcade/frozen-bubble/Manifest1
-rw-r--r--games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-Werror.patch15
-rw-r--r--games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-fix-buffer-size.patch69
-rw-r--r--games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-perl-5.40.patch16
-rw-r--r--games-arcade/frozen-bubble/frozen-bubble-2.2.1_beta1-r2.ebuild69
-rw-r--r--games-arcade/frozen-bubble/metadata.xml16
-rw-r--r--games-arcade/funnyboat/Manifest2
-rw-r--r--games-arcade/funnyboat/files/funnyboat-1.5_p11-windowed.patch10
-rw-r--r--games-arcade/funnyboat/funnyboat-1.5_p11-r3.ebuild57
-rw-r--r--games-arcade/funnyboat/metadata.xml11
-rw-r--r--games-arcade/gav/Manifest8
-rw-r--r--games-arcade/gav/files/gav-0.9.0-gcc43.patch10
-rw-r--r--games-arcade/gav/files/gav-0.9.0-ldflags.patch37
-rw-r--r--games-arcade/gav/gav-0.9.0-r1.ebuild78
-rw-r--r--games-arcade/gav/metadata.xml11
-rw-r--r--games-arcade/gish-demo/Manifest1
-rw-r--r--games-arcade/gish-demo/gish-demo-1.6-r1.ebuild38
-rw-r--r--games-arcade/gish-demo/metadata.xml8
-rw-r--r--games-arcade/gnake/Manifest1
-rw-r--r--games-arcade/gnake/files/gnake-0.94b-gcc15.patch39
-rw-r--r--games-arcade/gnake/gnake-0.94b-r3.ebuild37
-rw-r--r--games-arcade/gnake/metadata.xml8
-rw-r--r--games-arcade/gnome-nibbles/Manifest2
-rw-r--r--games-arcade/gnome-nibbles/gnome-nibbles-4.2.2.ebuild46
-rw-r--r--games-arcade/gnome-nibbles/gnome-nibbles-4.4.2.ebuild47
-rw-r--r--games-arcade/gnome-nibbles/metadata.xml11
-rw-r--r--games-arcade/gnome-robots/Manifest1
-rw-r--r--games-arcade/gnome-robots/files/gnome-robots-40.0-underlink-lm.patch38
-rw-r--r--games-arcade/gnome-robots/gnome-robots-40.0.ebuild50
-rw-r--r--games-arcade/gnome-robots/metadata.xml11
-rw-r--r--games-arcade/gnujump/Manifest1
-rw-r--r--games-arcade/gnujump/files/gnujump-1.0.8-musl.patch10
-rw-r--r--games-arcade/gnujump/gnujump-1.0.8-r2.ebuild52
-rw-r--r--games-arcade/gnujump/metadata.xml12
-rw-r--r--games-arcade/grande-KXL/Manifest2
-rw-r--r--games-arcade/grande-KXL/files/grande-KXL-0.6-cflags.patch17
-rw-r--r--games-arcade/grande-KXL/files/grande-KXL-0.6-clang16.patch27
-rw-r--r--games-arcade/grande-KXL/files/grande-KXL-0.6-paths.patch9
-rw-r--r--games-arcade/grande-KXL/grande-KXL-0.6-r3.ebuild51
-rw-r--r--games-arcade/grande-KXL/metadata.xml8
-rw-r--r--games-arcade/gunocide2ex/Manifest1
-rw-r--r--games-arcade/gunocide2ex/files/gunocide2ex-1.0-build.patch165
-rw-r--r--games-arcade/gunocide2ex/files/gunocide2ex-1.0-glibc2.10.patch14
-rw-r--r--games-arcade/gunocide2ex/gunocide2ex-1.0-r3.ebuild88
-rw-r--r--games-arcade/gunocide2ex/metadata.xml11
-rw-r--r--games-arcade/holotz-castle/Manifest1
-rw-r--r--games-arcade/holotz-castle/files/holotz-castle-1.3.14-build.patch71
-rw-r--r--games-arcade/holotz-castle/files/holotz-castle-1.3.14-gcc-11.patch30
-rw-r--r--games-arcade/holotz-castle/files/holotz-castle-1.3.14-gcc44.patch11
-rw-r--r--games-arcade/holotz-castle/files/holotz-castle-1.3.14-underlink.patch11
-rw-r--r--games-arcade/holotz-castle/holotz-castle-1.3.14-r1.ebuild53
-rw-r--r--games-arcade/holotz-castle/metadata.xml8
-rw-r--r--games-arcade/jardinains/Manifest1
-rw-r--r--games-arcade/jardinains/files/strings-pt.patch303
-rw-r--r--games-arcade/jardinains/jardinains-2.0-r4.ebuild73
-rw-r--r--games-arcade/jardinains/metadata.xml13
-rw-r--r--games-arcade/jazz2-data/Manifest3
-rw-r--r--games-arcade/jazz2-data/jazz2-data-0-r20241219.ebuild64
-rw-r--r--games-arcade/jazz2-data/metadata.xml12
-rw-r--r--games-arcade/jazz2/Manifest2
-rw-r--r--games-arcade/jazz2/files/jazz2-system-source.patch226
-rw-r--r--games-arcade/jazz2/jazz2-2.9.1.ebuild70
-rw-r--r--games-arcade/jazz2/jazz2-3.0.0-r1.ebuild65
-rw-r--r--games-arcade/jazz2/metadata.xml14
-rw-r--r--games-arcade/jumpnbump/Manifest1
-rw-r--r--games-arcade/jumpnbump/files/jumpnbump-1.61-ranlib.patch7
-rw-r--r--games-arcade/jumpnbump/jumpnbump-1.61_p20210421.ebuild70
-rw-r--r--games-arcade/jumpnbump/metadata.xml11
-rw-r--r--games-arcade/jvgs/Manifest1
-rw-r--r--games-arcade/jvgs/files/jvgs-0.5-fix-build-system.patch43
-rw-r--r--games-arcade/jvgs/files/jvgs-0.5-path.patch32
-rw-r--r--games-arcade/jvgs/files/jvgs-0.5-unbundle-tinyxml.patch333
-rw-r--r--games-arcade/jvgs/jvgs-0.5.1.ebuild60
-rw-r--r--games-arcade/jvgs/metadata.xml11
-rw-r--r--games-arcade/kajaani-kombat/Manifest1
-rw-r--r--games-arcade/kajaani-kombat/files/0.7-makefile.patch22
-rw-r--r--games-arcade/kajaani-kombat/files/kajaani-kombat-0.7-gcc11.patch31
-rw-r--r--games-arcade/kajaani-kombat/files/kajaani-kombat-0.7-ldflags.patch11
-rw-r--r--games-arcade/kajaani-kombat/kajaani-kombat-0.7-r2.ebuild52
-rw-r--r--games-arcade/kajaani-kombat/metadata.xml8
-rw-r--r--games-arcade/kobodeluxe/Manifest1
-rw-r--r--games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-clang.patch22
-rw-r--r--games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-glibc2.10.patch11
-rw-r--r--games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-glibc29.patch83
-rw-r--r--games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-midi-crash-fix.patch13
-rw-r--r--games-arcade/kobodeluxe/kobodeluxe-0.5.1-r5.ebuild75
-rw-r--r--games-arcade/kobodeluxe/metadata.xml8
-rw-r--r--games-arcade/komi/Manifest2
-rw-r--r--games-arcade/komi/komi-1.04-r2.ebuild46
-rw-r--r--games-arcade/komi/metadata.xml11
-rw-r--r--games-arcade/late/Manifest2
-rw-r--r--games-arcade/late/files/late-0.1.0-gcc43.patch7
-rw-r--r--games-arcade/late/files/late-0.1.0-gcc46.patch7
-rw-r--r--games-arcade/late/late-0.1.0-r2.ebuild51
-rw-r--r--games-arcade/late/metadata.xml11
-rw-r--r--games-arcade/lbreakout/Manifest2
-rw-r--r--games-arcade/lbreakout/lbreakout-010315-r1.ebuild47
-rw-r--r--games-arcade/lbreakout/lbreakout-010315-r2.ebuild50
-rw-r--r--games-arcade/lbreakout/metadata.xml11
-rw-r--r--games-arcade/lbreakout2/Manifest3
-rw-r--r--games-arcade/lbreakout2/files/lbreakout2-2.6.5-gentoo.patch75
-rw-r--r--games-arcade/lbreakout2/lbreakout2-2.6.5-r2.ebuild95
-rw-r--r--games-arcade/lbreakout2/metadata.xml14
-rw-r--r--games-arcade/metadata.xml34
-rw-r--r--games-arcade/methane/Manifest3
-rw-r--r--games-arcade/methane/files/methane-2.0.1-makefile.patch41
-rw-r--r--games-arcade/methane/files/methane-2.1.0-makefile.patch27
-rw-r--r--games-arcade/methane/metadata.xml12
-rw-r--r--games-arcade/methane/methane-2.0.1.ebuild45
-rw-r--r--games-arcade/methane/methane-2.1.0.ebuild45
-rw-r--r--games-arcade/missile/Manifest1
-rw-r--r--games-arcade/missile/metadata.xml11
-rw-r--r--games-arcade/missile/missile-1.0.1-r2.ebuild49
-rw-r--r--games-arcade/moleinvasion/Manifest2
-rw-r--r--games-arcade/moleinvasion/files/moleinvasion-0.4-fno-common.patch11
-rw-r--r--games-arcade/moleinvasion/files/moleinvasion-0.4-gcc14.patch29
-rw-r--r--games-arcade/moleinvasion/files/moleinvasion-0.4-opengl.patch18
-rw-r--r--games-arcade/moleinvasion/files/moleinvasion-0.4-underlink.patch11
-rw-r--r--games-arcade/moleinvasion/metadata.xml11
-rw-r--r--games-arcade/moleinvasion/moleinvasion-0.4-r4.ebuild60
-rw-r--r--games-arcade/mrrescue/Manifest2
-rw-r--r--games-arcade/mrrescue/metadata.xml11
-rw-r--r--games-arcade/mrrescue/mrrescue-1.02b-r2.ebuild33
-rw-r--r--games-arcade/netris/Manifest2
-rw-r--r--games-arcade/netris/files/netris-0.52-clang16.patch31
-rw-r--r--games-arcade/netris/files/netris-0.52-tinfo.patch14
-rw-r--r--games-arcade/netris/metadata.xml8
-rw-r--r--games-arcade/netris/netris-0.52-r4.ebuild67
-rw-r--r--games-arcade/nibbles/Manifest1
-rw-r--r--games-arcade/nibbles/files/nibbles-0.0.4-as-needed.patch24
-rw-r--r--games-arcade/nibbles/files/nibbles-0.0.4-gcc-10.patch22
-rw-r--r--games-arcade/nibbles/metadata.xml8
-rw-r--r--games-arcade/nibbles/nibbles-0.0.4-r1.ebuild60
-rw-r--r--games-arcade/njam/Manifest1
-rw-r--r--games-arcade/njam/files/njam-1.25-format-security.patch13
-rw-r--r--games-arcade/njam/files/njam-1.25-gcc45.patch24
-rw-r--r--games-arcade/njam/metadata.xml11
-rw-r--r--games-arcade/njam/njam-1.25-r2.ebuild52
-rw-r--r--games-arcade/notpacman/Manifest2
-rw-r--r--games-arcade/notpacman/metadata.xml15
-rw-r--r--games-arcade/notpacman/notpacman-1.0.4-r1.ebuild34
-rw-r--r--games-arcade/nottetris2/Manifest1
-rw-r--r--games-arcade/nottetris2/metadata.xml17
-rw-r--r--games-arcade/nottetris2/nottetris2-1-r1.ebuild34
-rw-r--r--games-arcade/open-supaplex/Manifest2
-rw-r--r--games-arcade/open-supaplex/files/open-supaplex.svg29
-rw-r--r--games-arcade/open-supaplex/metadata.xml19
-rw-r--r--games-arcade/open-supaplex/open-supaplex-7.1.2-r1.ebuild55
-rw-r--r--games-arcade/open-supaplex/open-supaplex-7.2.ebuild50
-rw-r--r--games-arcade/openbubbles/Manifest1
-rw-r--r--games-arcade/openbubbles/files/openbubbles-1.2-glibc2.10.patch20
-rw-r--r--games-arcade/openbubbles/metadata.xml22
-rw-r--r--games-arcade/openbubbles/openbubbles-1.2-r1.ebuild27
-rw-r--r--games-arcade/openmortal/Manifest1
-rw-r--r--games-arcade/openmortal/files/openmortal-0.7-freetype.patch15
-rw-r--r--games-arcade/openmortal/files/openmortal-0.7-freetype_pkgconfig.patch24
-rw-r--r--games-arcade/openmortal/files/openmortal-0.7-gcc41.patch11
-rw-r--r--games-arcade/openmortal/metadata.xml11
-rw-r--r--games-arcade/openmortal/openmortal-0.7-r4.ebuild45
-rw-r--r--games-arcade/opensonic/Manifest2
-rw-r--r--games-arcade/opensonic/files/opensonic-0.1.4-allegro-4.4.2-loggcompat.patch46
-rw-r--r--games-arcade/opensonic/files/opensonic-0.1.4-clang16.patch26
-rw-r--r--games-arcade/opensonic/files/opensonic-0.1.4-cmake.patch107
-rw-r--r--games-arcade/opensonic/metadata.xml11
-rw-r--r--games-arcade/opensonic/opensonic-0.1.4-r4.ebuild55
-rw-r--r--games-arcade/opensurge/Manifest1
-rw-r--r--games-arcade/opensurge/metadata.xml14
-rw-r--r--games-arcade/opensurge/opensurge-0.6.1.2.ebuild42
-rw-r--r--games-arcade/opensurge/opensurge-9999.ebuild42
-rw-r--r--games-arcade/opentyrian/Manifest2
-rw-r--r--games-arcade/opentyrian/files/opentyrian-2.1.20130907-cflags.patch14
-rw-r--r--games-arcade/opentyrian/files/opentyrian-2.1.20130907-datapath.patch24
-rw-r--r--games-arcade/opentyrian/files/opentyrian-2.1.20130907-gcc10.patch353
-rw-r--r--games-arcade/opentyrian/metadata.xml11
-rw-r--r--games-arcade/opentyrian/opentyrian-2.1.20130907-r3.ebuild63
-rw-r--r--games-arcade/orthorobot/Manifest1
-rw-r--r--games-arcade/orthorobot/metadata.xml5
-rw-r--r--games-arcade/orthorobot/orthorobot-0-r2.ebuild45
-rw-r--r--games-arcade/oshu/Manifest2
-rw-r--r--games-arcade/oshu/files/oshu-2.0.0-use_unpacked_osu-skin.patch34
-rw-r--r--games-arcade/oshu/metadata.xml14
-rw-r--r--games-arcade/oshu/oshu-2.0.3.ebuild63
-rw-r--r--games-arcade/oshu/oshu-9999.ebuild63
-rw-r--r--games-arcade/osu-lazer/Manifest325
-rw-r--r--games-arcade/osu-lazer/metadata.xml17
-rw-r--r--games-arcade/osu-lazer/osu-lazer-2025.710.0.ebuild431
-rw-r--r--games-arcade/pachi/Manifest1
-rw-r--r--games-arcade/pachi/files/1.0-autotools.patch46
-rw-r--r--games-arcade/pachi/metadata.xml11
-rw-r--r--games-arcade/pachi/pachi-1.0-r2.ebuild53
-rw-r--r--games-arcade/pacmanarena/Manifest2
-rw-r--r--games-arcade/pacmanarena/files/pacmanarena-0.15-fnocommon.patch15
-rw-r--r--games-arcade/pacmanarena/files/pacmanarena-0.15-underlink.patch10
-rw-r--r--games-arcade/pacmanarena/metadata.xml11
-rw-r--r--games-arcade/pacmanarena/pacmanarena-0.15-r2.ebuild59
-rw-r--r--games-arcade/penguin-command/Manifest1
-rw-r--r--games-arcade/penguin-command/files/penguin-command-1.6.11-C23.patch29
-rw-r--r--games-arcade/penguin-command/metadata.xml11
-rw-r--r--games-arcade/penguin-command/penguin-command-1.6.11-r1.ebuild27
-rw-r--r--games-arcade/pengupop/Manifest1
-rw-r--r--games-arcade/pengupop/files/pengupop-2.2.5-clang16-fix.patch40
-rw-r--r--games-arcade/pengupop/metadata.xml8
-rw-r--r--games-arcade/pengupop/pengupop-2.2.5-r1.ebuild30
-rw-r--r--games-arcade/pengupop/pengupop-2.2.5-r2.ebuild34
-rw-r--r--games-arcade/performous/Manifest6
-rw-r--r--games-arcade/performous/files/performous-1.3.1-boost_1.89.patch13
-rw-r--r--games-arcade/performous/files/performous-1.3.1-cblas.patch22
-rw-r--r--games-arcade/performous/files/performous-1.3.1-uncompressed_docs.patch53
-rw-r--r--games-arcade/performous/metadata.xml20
-rw-r--r--games-arcade/performous/performous-1.3.1_p20251224.ebuild121
-rw-r--r--games-arcade/primateplunge/Manifest1
-rw-r--r--games-arcade/primateplunge/files/primateplunge-1.1-AC_SUBST.patch26
-rw-r--r--games-arcade/primateplunge/files/primateplunge-1.1-fno-common.patch11
-rw-r--r--games-arcade/primateplunge/metadata.xml8
-rw-r--r--games-arcade/primateplunge/primateplunge-1.1-r2.ebuild38
-rw-r--r--games-arcade/retrobattle/Manifest1
-rw-r--r--games-arcade/retrobattle/files/retrobattle-1.0.0-build.patch30
-rw-r--r--games-arcade/retrobattle/files/retrobattle-1.0.0-gcc6.patch22
-rw-r--r--games-arcade/retrobattle/files/retrobattle-1.0.0-sound.patch17
-rw-r--r--games-arcade/retrobattle/metadata.xml8
-rw-r--r--games-arcade/retrobattle/retrobattle-1.0.0-r1.ebuild40
-rw-r--r--games-arcade/ri-li/Manifest1
-rw-r--r--games-arcade/ri-li/files/ri-li-2.0.1-gcc11.patch47
-rw-r--r--games-arcade/ri-li/files/ri-li-2.0.1-gcc43.patch291
-rw-r--r--games-arcade/ri-li/metadata.xml11
-rw-r--r--games-arcade/ri-li/ri-li-2.0.1-r2.ebuild43
-rw-r--r--games-arcade/rockdodger/Manifest1
-rw-r--r--games-arcade/rockdodger/metadata.xml11
-rw-r--r--games-arcade/rockdodger/rockdodger-1.1.4.ebuild50
-rw-r--r--games-arcade/rocksndiamonds/Manifest29
-rw-r--r--games-arcade/rocksndiamonds/files/rocksndiamonds-4.1.0.0-CVE-2011-4606.patch18
-rw-r--r--games-arcade/rocksndiamonds/metadata.xml8
-rw-r--r--games-arcade/rocksndiamonds/rocksndiamonds-4.4.0.6.ebuild120
-rw-r--r--games-arcade/rocksndiamonds/rocksndiamonds-4.4.1.3.ebuild115
-rw-r--r--games-arcade/sable/Manifest2
-rw-r--r--games-arcade/sable/files/sable-1.0-gentoo.patch57
-rw-r--r--games-arcade/sable/metadata.xml18
-rw-r--r--games-arcade/sable/sable-1.0-r1.ebuild38
-rw-r--r--games-arcade/savagewheels/Manifest2
-rw-r--r--games-arcade/savagewheels/files/savagewheels.in42
-rw-r--r--games-arcade/savagewheels/metadata.xml8
-rw-r--r--games-arcade/savagewheels/savagewheels-1.6.1-r2.ebuild50
-rw-r--r--games-arcade/sdlroids/Manifest1
-rw-r--r--games-arcade/sdlroids/files/sdlroids-1.3.4-Makefile.patch15
-rw-r--r--games-arcade/sdlroids/files/sdlroids-1.3.4-fno-common.patch140
-rw-r--r--games-arcade/sdlroids/files/sdlroids-1.3.4-sound.patch15
-rw-r--r--games-arcade/sdlroids/metadata.xml11
-rw-r--r--games-arcade/sdlroids/sdlroids-1.3.4-r5.ebuild38
-rw-r--r--games-arcade/sdlsasteroids/Manifest1
-rw-r--r--games-arcade/sdlsasteroids/files/sdlsasteroids-3.0.1-gcc43.patch11
-rw-r--r--games-arcade/sdlsasteroids/files/sdlsasteroids-3.0.1-ldflags.patch11
-rw-r--r--games-arcade/sdlsasteroids/metadata.xml11
-rw-r--r--games-arcade/sdlsasteroids/sdlsasteroids-3.0.1-r1.ebuild63
-rw-r--r--games-arcade/shiromino/Manifest2
-rw-r--r--games-arcade/shiromino/files/shiromino-0.2.1-fix_cmake_targets.patch27
-rw-r--r--games-arcade/shiromino/metadata.xml12
-rw-r--r--games-arcade/shiromino/shiromino-0.2.1.ebuild58
-rw-r--r--games-arcade/shovel-knight/Manifest1
-rw-r--r--games-arcade/shovel-knight/metadata.xml8
-rw-r--r--games-arcade/shovel-knight/shovel-knight-4.1b-r1.ebuild110
-rw-r--r--games-arcade/shovel-knight/shovel-knight-4.1b.ebuild63
-rw-r--r--games-arcade/solarwolf/Manifest2
-rw-r--r--games-arcade/solarwolf/metadata.xml8
-rw-r--r--games-arcade/solarwolf/solarwolf-1.5_p3.ebuild62
-rw-r--r--games-arcade/stardork/Manifest1
-rw-r--r--games-arcade/stardork/files/stardork-0.7-clang16.patch13
-rw-r--r--games-arcade/stardork/metadata.xml11
-rw-r--r--games-arcade/stardork/stardork-0.7-r2.ebuild35
-rw-r--r--games-arcade/supertransball2/Manifest2
-rw-r--r--games-arcade/supertransball2/metadata.xml16
-rw-r--r--games-arcade/supertransball2/supertransball2-1.5-r1.ebuild64
-rw-r--r--games-arcade/supertux/Manifest2
-rw-r--r--games-arcade/supertux/metadata.xml15
-rw-r--r--games-arcade/supertux/supertux-0.7.0.ebuild87
-rw-r--r--games-arcade/supertux/supertux-0.7.0_beta2.ebuild87
-rw-r--r--games-arcade/supertux/supertux-9999.ebuild87
-rw-r--r--games-arcade/syobon/Manifest1
-rw-r--r--games-arcade/syobon/files/syobon-1.0.1-lto.patch100
-rw-r--r--games-arcade/syobon/files/syobon-1.0.1-narrowing.patch15
-rw-r--r--games-arcade/syobon/metadata.xml11
-rw-r--r--games-arcade/syobon/syobon-1.0.1-r1.ebuild44
-rw-r--r--games-arcade/taisei/Manifest1
-rw-r--r--games-arcade/taisei/metadata.xml25
-rw-r--r--games-arcade/taisei/taisei-1.4.4.ebuild91
-rw-r--r--games-arcade/taisei/taisei-9999.ebuild79
-rw-r--r--games-arcade/tecnoballz/Manifest1
-rw-r--r--games-arcade/tecnoballz/metadata.xml18
-rw-r--r--games-arcade/tecnoballz/tecnoballz-0.93.1.ebuild39
-rw-r--r--games-arcade/tetrio-desktop/Manifest3
-rw-r--r--games-arcade/tetrio-desktop/files/tetrio-desktop-10-application.patch16
-rw-r--r--games-arcade/tetrio-desktop/files/tetrio-desktop-8-application.patch13
-rw-r--r--games-arcade/tetrio-desktop/files/tetrio-desktop-9-application.patch16
-rw-r--r--games-arcade/tetrio-desktop/metadata.xml11
-rw-r--r--games-arcade/tetrio-desktop/tetrio-desktop-10.ebuild108
-rw-r--r--games-arcade/tetrio-desktop/tetrio-desktop-9.ebuild103
-rw-r--r--games-arcade/thinktanks-demo/Manifest1
-rw-r--r--games-arcade/thinktanks-demo/metadata.xml43
-rw-r--r--games-arcade/thinktanks-demo/thinktanks-demo-1.1-r4.ebuild48
-rw-r--r--games-arcade/tomatoes/Manifest2
-rw-r--r--games-arcade/tomatoes/files/tomatoes-1.55-c_str.patch24
-rw-r--r--games-arcade/tomatoes/files/tomatoes-1.55-gcc43.patch14
-rw-r--r--games-arcade/tomatoes/files/tomatoes-1.55-underlink.patch38
-rw-r--r--games-arcade/tomatoes/metadata.xml11
-rw-r--r--games-arcade/tomatoes/tomatoes-1.55-r4.ebuild75
-rw-r--r--games-arcade/vor/Manifest1
-rw-r--r--games-arcade/vor/metadata.xml8
-rw-r--r--games-arcade/vor/vor-0.5.8.ebuild29
-rw-r--r--games-arcade/whichwayisup/Manifest3
-rw-r--r--games-arcade/whichwayisup/metadata.xml11
-rw-r--r--games-arcade/whichwayisup/whichwayisup-0.7.9_p8.ebuild60
-rw-r--r--games-arcade/xbill/Manifest2
-rw-r--r--games-arcade/xbill/files/xbill-2.1-clang16.patch27
-rw-r--r--games-arcade/xbill/files/xbill-2.1-gentoo.patch353
-rw-r--r--games-arcade/xbill/metadata.xml8
-rw-r--r--games-arcade/xbill/xbill-2.1-r6.ebuild54
-rw-r--r--games-arcade/xboing/Manifest2
-rw-r--r--games-arcade/xboing/files/xboing-2.4-buffer.patch12
-rw-r--r--games-arcade/xboing/files/xboing-2.4-clang16.patch37
-rw-r--r--games-arcade/xboing/files/xboing-2.4-musl.patch11
-rw-r--r--games-arcade/xboing/files/xboing-2.4-sleep.patch13
-rw-r--r--games-arcade/xboing/metadata.xml5
-rw-r--r--games-arcade/xboing/xboing-2.4-r4.ebuild80
-rw-r--r--games-arcade/xbubble/Manifest1
-rw-r--r--games-arcade/xbubble/files/xbubble-0.5.8-libpng14.patch13
-rw-r--r--games-arcade/xbubble/files/xbubble-0.5.8-locale.patch10
-rw-r--r--games-arcade/xbubble/files/xbubble-0.5.8-png15.patch20
-rw-r--r--games-arcade/xbubble/files/xbubble-0.5.8-xpaths.patch11
-rw-r--r--games-arcade/xbubble/metadata.xml8
-rw-r--r--games-arcade/xbubble/xbubble-0.5.8-r2.ebuild55
-rw-r--r--games-arcade/xgalaga/Manifest1
-rw-r--r--games-arcade/xgalaga/files/xgalaga-2.1.1.0-c23.patch24
-rw-r--r--games-arcade/xgalaga/files/xgalaga-2.1.1.0-function-and-ints.patch24
-rw-r--r--games-arcade/xgalaga/files/xgalaga-2.1.1.0-respect-AR.patch24
-rw-r--r--games-arcade/xgalaga/files/xgalaga-2.1.1.0-return-type.patch23
-rw-r--r--games-arcade/xgalaga/metadata.xml11
-rw-r--r--games-arcade/xgalaga/xgalaga-2.1.1.0-r3.ebuild71
-rw-r--r--games-arcade/xjump/Manifest2
-rw-r--r--games-arcade/xjump/files/xjump-2.7.5-c99.patch16
-rw-r--r--games-arcade/xjump/files/xjump-2.7.5-ldflags.patch11
-rw-r--r--games-arcade/xjump/metadata.xml8
-rw-r--r--games-arcade/xjump/xjump-2.7.5-r3.ebuild64
-rw-r--r--games-arcade/xrick/Manifest1
-rw-r--r--games-arcade/xrick/files/xrick-021212-Makefile.patch30
-rw-r--r--games-arcade/xrick/files/xrick-021212-exit.patch23
-rw-r--r--games-arcade/xrick/files/xrick-021212-fno-common.patch34
-rw-r--r--games-arcade/xrick/files/xrick-021212-fullscreen.patch21
-rw-r--r--games-arcade/xrick/files/xrick-021212-zlib.patch13
-rw-r--r--games-arcade/xrick/metadata.xml8
-rw-r--r--games-arcade/xrick/xrick-021212-r2.ebuild63
-rw-r--r--games-arcade/xscavenger/Manifest2
-rw-r--r--games-arcade/xscavenger/files/xscavenger-1.4.5-misc-fixes.patch130
-rw-r--r--games-arcade/xscavenger/metadata.xml8
-rw-r--r--games-arcade/xscavenger/xscavenger-1.4.5.ebuild56
-rw-r--r--games-arcade/xtux/Manifest1
-rw-r--r--games-arcade/xtux/files/xtux-20030306-Makefile.patch190
-rw-r--r--games-arcade/xtux/files/xtux-20030306-missing-include.patch29
-rw-r--r--games-arcade/xtux/files/xtux-20030306-particles.patch30
-rw-r--r--games-arcade/xtux/files/xtux-20030306-tux_serv-path.patch13
-rw-r--r--games-arcade/xtux/metadata.xml11
-rw-r--r--games-arcade/xtux/xtux-20030306-r1.ebuild59
538 files changed, 17227 insertions, 0 deletions
diff --git a/games-arcade/SpaceCadetPinball/Manifest b/games-arcade/SpaceCadetPinball/Manifest
new file mode 100644
index 000000000000..da733fd0639a
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/Manifest
@@ -0,0 +1,3 @@
+DIST SpaceCadetPinball-2.0.1.tar.gz 1882629 BLAKE2B 55b2c4232880b065bad30371ad4c170ee2fbc485d2673d25d3afa82144d17bc6a74f70cee7dcc365992df61e95d65a97b57924e54a140b98790ee6e75b06cefd SHA512 b8a23c650a6251838c531a7f1427284199ba859fbdf8715a974404dbef3485503dffa723839f6b41d335e2afc73a85bd0fe0d670ebb7fc1462f089250f1f546f
+DIST SpaceCadetPinball-2.0.tar.gz 933826 BLAKE2B b4a079ca856ebf315202eaae59a825d4c7022acfff7f38907ffd750f0e146da6d7c4f03286ef5c59ee5e3c725d938e30c2aad2f7269d9f18e8ae8f6807af80e1 SHA512 29b3f886d6ec6507c12a59b0c2877cbb51c54eee0163d0537588bb1e0fa0eb08b530d5684e8753598a823430559d5b3b9490be40ca9a3310043dac71912994c7
+DIST SpaceCadetPinball-2.1.0.tar.gz 3219590 BLAKE2B 93bbfb33cf4e4a05132764dab503a5e4f4db0295716279f9f0e077dcff145cd024fb626c6777dad888496590b81d9d999f928e5ea9a344effcf77484572a486e SHA512 0fff9049953af83b1a274fd5d845e2f19531cafae33b9fb337745169057f1a28b6eaaa1042a912fc5732eb10bb70e5ede174f2ca7873a267f368b8841bfa055d
diff --git a/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.1.ebuild b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.1.ebuild
new file mode 100644
index 000000000000..6389c6c7a122
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake xdg
+
+DESCRIPTION="Decompilation of 3D Pinball for Windows - Space Cadet"
+HOMEPAGE="https://github.com/k4zmu2a/SpaceCadetPinball"
+SRC_URI="https://github.com/k4zmu2a/${PN}/archive/refs/tags/Release_${PV}.tar.gz -> ${P}.tar.gz"
+
+S="${WORKDIR}/${PN}-Release_${PV}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ media-libs/libsdl2
+ media-libs/sdl2-mixer[midi]
+"
+RDEPEND="${DEPEND}"
+
+src_prepare(){
+ # the paths should be relative
+ sed -i "s|/Platform|Platform|g" CMakeLists.txt || die
+
+ cmake_src_prepare
+}
+
+pkg_postinst(){
+ ewarn "This game is distributed without the data files."
+ ewarn "To play, copy the original DAT and SOUND files from a Windows or"
+ ewarn 'Full Tilt! installation and place them in $XDG_DATA_HOME/'"${PN}/"
+ ewarn "(usually: ~/.local/share/${PN}/)"
+
+ xdg_pkg_postinst
+}
diff --git a/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.ebuild b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.ebuild
new file mode 100644
index 000000000000..bc491b1cb0b9
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Decompilation of 3D Pinball for Windows - Space Cadet"
+HOMEPAGE="https://github.com/k4zmu2a/SpaceCadetPinball"
+SRC_URI="https://github.com/k4zmu2a/${PN}/archive/refs/tags/Release_${PV}.tar.gz -> ${P}.tar.gz"
+
+S="${WORKDIR}/${PN}-Release_${PV}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ media-libs/libsdl2
+ media-libs/sdl2-mixer[midi]
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/"${P}"-respect-XDG_DATA_HOME.patch
+)
+
+src_install(){
+ dobin "${S}/bin/${PN}"
+}
+
+pkg_postinst(){
+ ewarn "This game is distributed without the data files."
+ ewarn "To play, copy the original DAT and SOUND files from a Windows or"
+ ewarn 'Full Tilt! installation and place them in $XDG_DATA_HOME/'"${PN}/"
+ ewarn "(usually: ~/.local/share/${PN}/)"
+}
diff --git a/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.1.0.ebuild b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.1.0.ebuild
new file mode 100644
index 000000000000..658120473bdf
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.1.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake xdg
+
+DESCRIPTION="Decompilation of 3D Pinball for Windows - Space Cadet"
+HOMEPAGE="https://github.com/k4zmu2a/SpaceCadetPinball"
+SRC_URI="https://github.com/k4zmu2a/${PN}/archive/refs/tags/Release_${PV}.tar.gz -> ${P}.tar.gz"
+
+S="${WORKDIR}/${PN}-Release_${PV}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64"
+
+DEPEND="
+ media-libs/libsdl2
+ media-libs/sdl2-mixer[midi]
+"
+RDEPEND="${DEPEND}"
+
+pkg_postinst(){
+ ewarn "This game is distributed without the data files."
+ ewarn "To play, copy the original DAT and SOUND files from a Windows or"
+ ewarn 'Full Tilt! installation and place them in $XDG_DATA_HOME/'"${PN}/"
+ ewarn "(usually: ~/.local/share/${PN}/)"
+
+ xdg_pkg_postinst
+}
diff --git a/games-arcade/SpaceCadetPinball/SpaceCadetPinball-9999.ebuild b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-9999.ebuild
new file mode 100644
index 000000000000..6133ee28a7d7
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-9999.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+EGIT_REPO_URI="https://github.com/k4zmu2a/SpaceCadetPinball.git"
+
+inherit cmake git-r3 xdg
+
+DESCRIPTION="Decompilation of 3D Pinball for Windows - Space Cadet"
+HOMEPAGE="https://github.com/k4zmu2a/SpaceCadetPinball"
+
+LICENSE="MIT"
+SLOT="0"
+
+DEPEND="
+ media-libs/libsdl2
+ media-libs/sdl2-mixer[midi]
+"
+RDEPEND="${DEPEND}"
+
+pkg_postinst(){
+ ewarn "This game is distributed without the data files."
+ ewarn "To play, copy the original DAT and SOUND files from a Windows or"
+ ewarn 'Full Tilt! installation and place them in $XDG_DATA_HOME/'"${PN}/"
+ ewarn "(usually: ~/.local/share/${PN}/)"
+
+ xdg_pkg_postinst
+}
diff --git a/games-arcade/SpaceCadetPinball/files/SpaceCadetPinball-2.0-respect-XDG_DATA_HOME.patch b/games-arcade/SpaceCadetPinball/files/SpaceCadetPinball-2.0-respect-XDG_DATA_HOME.patch
new file mode 100644
index 000000000000..eed02d4c319b
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/files/SpaceCadetPinball-2.0-respect-XDG_DATA_HOME.patch
@@ -0,0 +1,98 @@
+Enables support for loading the data files from outside the executable folder,
+respecting the user $XDG_DATA_HOME variable if set.
+Backport of commit ecdf802d68f9852150ac92f9737426c340fb64a3 by k4zmu2a.
+Patch by Nicola Smaniotto.
+
+diff --git a/SpaceCadetPinball/pb.cpp b/SpaceCadetPinball/pb.cpp
+index 284ef7e..9fa7fb2 100644
+--- a/SpaceCadetPinball/pb.cpp
++++ b/SpaceCadetPinball/pb.cpp
+@@ -39,6 +39,8 @@ int pb::init()
+ {
+ float projMat[12], zMin = 0, zScaler = 0;
+
++ if (winmain::DatFileName.empty())
++ return 1;
+ auto dataFilePath = pinball::make_path_name(winmain::DatFileName);
+ record_table = partman::load_records(dataFilePath.c_str(), FullTiltMode);
+
+diff --git a/SpaceCadetPinball/winmain.cpp b/SpaceCadetPinball/winmain.cpp
+index 1b9a4c6..5e4fa9c 100644
+--- a/SpaceCadetPinball/winmain.cpp
++++ b/SpaceCadetPinball/winmain.cpp
+@@ -36,7 +36,7 @@ bool winmain::ShowSpriteViewer = false;
+ bool winmain::LaunchBallEnabled = true;
+ bool winmain::HighScoresEnabled = true;
+ bool winmain::DemoActive = false;
+-char* winmain::BasePath;
++std::string winmain::BasePath;
+ int winmain::MainMenuHeight = 0;
+ std::string winmain::FpsDetails;
+ double winmain::UpdateToFrameRatio;
+@@ -58,19 +58,44 @@ int winmain::WinMain(LPCSTR lpCmdLine)
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Could not initialize SDL2", SDL_GetError(), nullptr);
+ return 1;
+ }
+- BasePath = SDL_GetBasePath();
+
+ pinball::quickFlag = strstr(lpCmdLine, "-quick") != nullptr;
+- DatFileName = options::get_string("Pinball Data", pinball::get_rc_string(168, 0));
+
+- /*Check for full tilt .dat file and switch to it automatically*/
+- auto cadetFilePath = pinball::make_path_name("CADET.DAT");
+- auto cadetDat = fopen(cadetFilePath.c_str(), "r");
+- if (cadetDat)
++ // Search for game data in: game folder, user folder
++ // Game data test order: CADET.DAT, PINBALL.DAT
++ char* dataSearchPaths[2]
+ {
+- fclose(cadetDat);
+- DatFileName = "CADET.DAT";
+- pb::FullTiltMode = true;
++ SDL_GetBasePath(),
++ SDL_GetPrefPath(nullptr, "SpaceCadetPinball")
++ };
++ std::string datFileNames[2]
++ {
++ "CADET.DAT",
++ options::get_string("Pinball Data", pinball::get_rc_string(168, 0))
++ };
++ for (auto path : dataSearchPaths)
++ {
++ if (DatFileName.empty() && path)
++ {
++ BasePath = path;
++ for (int i = 0; i < 2; i++)
++ {
++ auto datFileName = datFileNames[i];
++ auto datFilePath = pinball::make_path_name(datFileName);
++ auto datFile = fopen(datFilePath.c_str(), "r");
++ if (datFile)
++ {
++ fclose(datFile);
++ DatFileName = datFileName;
++ if (i == 0)
++ pb::FullTiltMode = true;
++ printf("Loading game from: %s\n", datFilePath.c_str());
++ break;
++ }
++ }
++ }
++
++ SDL_free(path);
+ }
+
+ // SDL window
+diff --git a/SpaceCadetPinball/winmain.h b/SpaceCadetPinball/winmain.h
+index eb32410..485232f 100644
+--- a/SpaceCadetPinball/winmain.h
++++ b/SpaceCadetPinball/winmain.h
+@@ -48,7 +48,7 @@ public:
+ static bool LaunchBallEnabled;
+ static bool HighScoresEnabled;
+ static bool DemoActive;
+- static char* BasePath;
++ static std::string BasePath;
+ static int MainMenuHeight;
+
+ static int WinMain(LPCSTR lpCmdLine);
diff --git a/games-arcade/SpaceCadetPinball/metadata.xml b/games-arcade/SpaceCadetPinball/metadata.xml
new file mode 100644
index 000000000000..1a7f52e5b45b
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>smaniotto.nicola@gmail.com</email>
+ <name>Nicola Smaniotto</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">k4zmu2a/SpaceCadetPinball</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/abe/Manifest b/games-arcade/abe/Manifest
new file mode 100644
index 000000000000..98c62e38d0f4
--- /dev/null
+++ b/games-arcade/abe/Manifest
@@ -0,0 +1,2 @@
+DIST abe-1.1.tar.gz 3321075 BLAKE2B 2ab51bd9103e8954bbc27eceb81b4bb845ec84ee249f21aaefdc59df87689f865d3b62a8c2db9584b8361303028174b1a96b60e0caf88ee857f8ad0d3cd3d920 SHA512 6106fce9c72554596ac3f94551326381e98c0d40f7a5aa8ae7aeadaa234c113733e8df717bd1b18d2ba835f689982e859607c9d88ab2d59790ec00833a4e48c7
+DIST abe.png 3303 BLAKE2B a99f8a1c31b9f8704b201ca9edd7ab67b685bde4bd43f675e62f1ba3a5554a63dba009634cdc63a2855a51f82de8ea2818bfe5f390b2f9e176d55cd4476547b6 SHA512 421d87248d91bb315d9d02955271cad096c842857819fc7a91ad77571047770eb9487722cb1b2e43d602ad61e3c7eca4fd834e955724905b8b870a5dd66d2e2b
diff --git a/games-arcade/abe/abe-1.1-r2.ebuild b/games-arcade/abe/abe-1.1-r2.ebuild
new file mode 100644
index 000000000000..da093a86c8cc
--- /dev/null
+++ b/games-arcade/abe/abe-1.1-r2.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop toolchain-funcs
+
+DESCRIPTION="Scrolling, platform-jumping, key-collecting, ancient pyramid exploring game"
+HOMEPAGE="
+ https://abe.sourceforge.net/
+ https://github.com/OSSGames/GAME-SDL-ADVENTURE-Abe-s_Amazing_Adventure
+"
+SRC_URI="
+ https://downloads.sourceforge.net/abe/${P}.tar.gz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-mixer[vorbis]
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-settings.patch
+ "${FILESDIR}"/${P}-doublefree.patch
+ "${FILESDIR}"/${P}-format.patch
+ "${FILESDIR}"/${P}-format-security.patch
+ "${FILESDIR}"/${P}-no-x-check.patch
+)
+
+src_prepare() {
+ default
+
+ sed -i '/^TR_CFLAGS/d;/^TR_CXXFLAGS/d' configure.in || die
+
+ # original configure contains problematic detections with modern compilers
+ # see #883287, #898794
+ eautoreconf
+}
+
+src_configure() {
+ tc-export CC CXX
+
+ econf --with-data-dir="${EPREFIX}"/usr/share/${PN}
+}
+
+src_install() {
+ dobin src/${PN}
+
+ insinto /usr/share/${PN}
+ doins -r images maps sounds
+
+ einstalldocs
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} "Abe's Amazing Adventure"
+}
diff --git a/games-arcade/abe/files/abe-1.1-doublefree.patch b/games-arcade/abe/files/abe-1.1-doublefree.patch
new file mode 100644
index 000000000000..82d49031844c
--- /dev/null
+++ b/games-arcade/abe/files/abe-1.1-doublefree.patch
@@ -0,0 +1,13 @@
+Fix a double free() bug. Sent upstream 15 Mar 2011:
+https://sourceforge.net/p/abe/patches/1/
+--- a/src/Main.c
++++ b/src/Main.c
+@@ -35,8 +35,6 @@
+ for(i = 0; modes[i]; ++i)
+ printf("\t%d x %d\n", modes[i]->w, modes[i]->h);
+ }
+-
+- free(modes);
+ }
+
+ void
diff --git a/games-arcade/abe/files/abe-1.1-format-security.patch b/games-arcade/abe/files/abe-1.1-format-security.patch
new file mode 100644
index 000000000000..9f98b080f53d
--- /dev/null
+++ b/games-arcade/abe/files/abe-1.1-format-security.patch
@@ -0,0 +1,88 @@
+Fix build failure with -Werror=format-security
+--- ./src/Game.c
++++ ./src/Game.c
+@@ -6,21 +6,14 @@ Game game;
+
+ // path_sprintf should not be used by other .c files, as it does not fit for them.
+ static void
+-path_sprintf(char *path, char *formatted_name, int version)
++path_sprintf(char *path, const char *name, int version)
+ {
+-
+- int len;
+-
+- printf("path_sprintf (%p, %s, %d)\n", path, formatted_name, version);
+-
+- strcpy(path, getSaveGameDir());
+-
+- len = strlen(path);
+-
+ if(1 == version) {
+- sprintf(path + len, formatted_name);
++ printf("path_sprintf (%p, %s.dat, %d)\n", path, name, version);
++ sprintf(path, "%s%s.dat", getSaveGameDir(), name);
+ } else {
+- sprintf(path + len, formatted_name, version);
++ printf("path_sprintf (%p, %s%d.dat, %d)\n", path, name, version, version);
++ sprintf(path, "%s%s%d.dat", getSaveGameDir(), name, version);
+ }
+
+ }
+@@ -30,14 +23,14 @@ deleteSavedGame()
+ {
+ char path[PATH_SIZE];
+ // version 2
+- path_sprintf(path, "save%d.dat", GAME_VERSION);
++ path_sprintf(path, "save", GAME_VERSION);
+ remove(path);
+- path_sprintf(path, "savedmap%d.dat", GAME_VERSION);
++ path_sprintf(path, "savedmap", GAME_VERSION);
+ remove(path);
+ // version 1
+- path_sprintf(path, "save.dat", 1);
++ path_sprintf(path, "save", 1);
+ remove(path);
+- path_sprintf(path, "savedmap.dat", 1);
++ path_sprintf(path, "savedmap", 1);
+ remove(path);
+ }
+
+@@ -51,7 +44,7 @@ saveGame()
+
+ mkshuae();
+
+- path_sprintf(path, "save%d.dat", GAME_VERSION);
++ path_sprintf(path, "save", GAME_VERSION);
+
+ if(!(fp = fopen(path, "wb"))) {
+ err = strerror(errno);
+@@ -79,7 +72,7 @@ saveGame()
+ SDL_RWclose(rwop);
+
+ // save the map
+- path_sprintf(path, "savedmap%d.dat", GAME_VERSION);
++ path_sprintf(path, "savedmap", GAME_VERSION);
+ saveMapPath(path);
+ }
+
+@@ -96,7 +89,7 @@ loadGame()
+ version = (int) GAME_VERSION;
+
+ // load the map
+- path_sprintf(path, "savedmap%d.dat", GAME_VERSION);
++ path_sprintf(path, "savedmap", GAME_VERSION);
+ if(!loadMapPath(path, 0)) {
+ // if can't find saved map load static map
+ fprintf(stderr,
+@@ -112,9 +105,9 @@ loadGame()
+ // try to find a saved game of any version
+ while(version > 0) {
+ if(version > 1) {
+- path_sprintf(path, "save%d.dat", version);
++ path_sprintf(path, "save", version);
+ } else { // By Pedro: version==1
+- path_sprintf(path, "save.dat", version);
++ path_sprintf(path, "save", version);
+ }
+ fprintf(stderr, "Trying to load saved game: %s\n", path);
+ fflush(stderr);
diff --git a/games-arcade/abe/files/abe-1.1-format.patch b/games-arcade/abe/files/abe-1.1-format.patch
new file mode 100644
index 000000000000..eed86f83483d
--- /dev/null
+++ b/games-arcade/abe/files/abe-1.1-format.patch
@@ -0,0 +1,13 @@
+Fix an incorrect printf format specifier. Sent upstream 15 Mar 2011:
+https://sourceforge.net/p/abe/patches/2/
+--- a/src/MapIO.c
++++ b/src/MapIO.c
+@@ -93,7 +93,7 @@
+ // compression step 1: read compressed data from disk
+ // FIXME: what would be nicer is to only allocate as much mem as used on disk.
+ size = LEVEL_COUNT * map.w * map.h;
+- printf("size %u\n", size);
++ printf("size %zu\n", size);
+ fflush(stdout);
+ if(!(read_buff = (Uint16 *) malloc(sizeof(Uint16) * size))) {
+ fprintf(stderr, "Out of memory on map read.");
diff --git a/games-arcade/abe/files/abe-1.1-no-x-check.patch b/games-arcade/abe/files/abe-1.1-no-x-check.patch
new file mode 100644
index 000000000000..a02eaa4b898c
--- /dev/null
+++ b/games-arcade/abe/files/abe-1.1-no-x-check.patch
@@ -0,0 +1,29 @@
+Remove check for X.
+
+The game uses only SDL library. There is no need to check for X.
+
+diff --git a/configure.in b/configure.in
+index 2270cb4..f0a93c6 100644
+--- a/configure.in
++++ b/configure.in
+@@ -98,17 +98,6 @@ if test "x$is_win32" = "xyes" ; then
+ TR_LIBS="$TR_LIBS -luser32 -lgdi32"
+ fi
+
+-dnl --------------------------------------------------------------------------
+-dnl Check for X
+-dnl Note that we only need libs (so that glut links properly on all systems).
+-dnl --------------------------------------------------------------------------
+-if test "x$is_win32" = "xno" ; then
+- AC_PATH_XTRA
+- if test "x$no_x" = "x" ; then
+- TR_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXi -lXext -lXmu -lXt $X_EXTRA_LIBS $TR_LIBS"
+- fi
+-fi
+-
+ dnl --------------------------------------------------------------------------
+ dnl Check for some common libraries
+ dnl --------------------------------------------------------------------------
+--
+2.41.0
+
diff --git a/games-arcade/abe/files/abe-1.1-settings.patch b/games-arcade/abe/files/abe-1.1-settings.patch
new file mode 100644
index 000000000000..c0471a03388a
--- /dev/null
+++ b/games-arcade/abe/files/abe-1.1-settings.patch
@@ -0,0 +1,14 @@
+From Fedora:
+Enable changing the video settings.Sent upstream 2 Apr 2006:
+https://sourceforge.net/p/abe/bugs/1/
+--- a/src/Menu.c
++++ b/src/Menu.c
+@@ -116,7 +116,7 @@
+ if(n == SOUND_ENABLED || n == MUSIC_ENABLED)
+ return sound_loaded;
+ else
+- return 0;
++ return 1;
+ }
+
+ void
diff --git a/games-arcade/abe/metadata.xml b/games-arcade/abe/metadata.xml
new file mode 100644
index 000000000000..850b37f9125e
--- /dev/null
+++ b/games-arcade/abe/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">OSSGames/GAME-SDL-ADVENTURE-Abe-s_Amazing_Adventure</remote-id>
+ <remote-id type="sourceforge">abe</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/afternoonstalker/Manifest b/games-arcade/afternoonstalker/Manifest
new file mode 100644
index 000000000000..4443231e837c
--- /dev/null
+++ b/games-arcade/afternoonstalker/Manifest
@@ -0,0 +1 @@
+DIST afternoonstalker-1.2.0.tar.gz 189534 BLAKE2B 8a126d7dc9c224346d1944734512a9edbe4032ef1aa0adc9cb5b28a172dc9c9d8b5eb060829b698ba519cca3a52f0cf49d682bc546f976cab2ae28440f901c89 SHA512 9137bd6a6d2bd0a58b40952d149a8e742d575f61393c2e20b6a18f6a9ed74331cbea7a94280d2fa31e9162e7d9a1d1618e38e81f91e618ee074fd6b846fb74a4
diff --git a/games-arcade/afternoonstalker/afternoonstalker-1.2.0.ebuild b/games-arcade/afternoonstalker/afternoonstalker-1.2.0.ebuild
new file mode 100644
index 000000000000..6a2349b98cf7
--- /dev/null
+++ b/games-arcade/afternoonstalker/afternoonstalker-1.2.0.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="Clone of the 1981 Night Stalker video game by Mattel Electronics"
+HOMEPAGE="http://perso.b2b2c.ca/~sarrazip/dev/afternoonstalker.html"
+SRC_URI="http://perso.b2b2c.ca/~sarrazip/dev/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND=">=dev-games/flatzebra-0.2.0"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=( "${FILESDIR}"/${PN}-1.2.0-autotools.patch )
+
+src_prepare() {
+ default
+ eautoreconf
+}
diff --git a/games-arcade/afternoonstalker/files/afternoonstalker-1.2.0-autotools.patch b/games-arcade/afternoonstalker/files/afternoonstalker-1.2.0-autotools.patch
new file mode 100644
index 000000000000..07d3a2689f14
--- /dev/null
+++ b/games-arcade/afternoonstalker/files/afternoonstalker-1.2.0-autotools.patch
@@ -0,0 +1,42 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2,17 +2,16 @@
+
+ SUBDIRS = src
+
+-man_MANS = doc/$(PACKAGE).6
++man_MANS = doc/afternoonstalker.6
+
+-docdir = $(datarootdir)/doc/$(PACKAGE)-$(VERSION)
+ doc_DATA = \
+ AUTHORS \
+- COPYING \
+ NEWS \
+ README \
+ THANKS
+
+ EXTRA_DIST = \
++ COPYING \
+ bootstrap \
+ autogen.sh \
+ $(PACKAGE).spec \
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -42,7 +42,7 @@
+ pixmapdir = $(datarootdir)/pixmaps
+ pixmap_DATA = images/$(PACKAGE).png
+
+-pkgpixmapdir = $(datarootdir)/pixmaps/$(PACKAGE)
++pkgpixmapdir = $(pkgdatadir)/pixmaps/$(PACKAGE)
+ pkgpixmap_DATA = \
+ images/cobweb_tile.xpm \
+ images/floor_tile.xpm \
+@@ -122,7 +122,7 @@
+ images/digit8.xpm \
+ images/digit9.xpm
+
+-pkgsounddir = $(datarootdir)/sounds/$(PACKAGE)
++pkgsounddir = $(pkgdatadir)/sounds/$(PACKAGE)
+ pkgsound_DATA = \
+ sounds/gun-pickup.wav \
+ sounds/bat-killed.wav \
diff --git a/games-arcade/afternoonstalker/metadata.xml b/games-arcade/afternoonstalker/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/afternoonstalker/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/alienwave/Manifest b/games-arcade/alienwave/Manifest
new file mode 100644
index 000000000000..f7729d4d100b
--- /dev/null
+++ b/games-arcade/alienwave/Manifest
@@ -0,0 +1 @@
+DIST alienwave-0.4.0.tar.gz 21931 BLAKE2B d65701ba7dc94c5507b93c2fb0c5798c01e0298b9cdfdb96e2dbdecb994adea757046a1186b19dfed4aae80bfcc0d7cf86167d3d29ddbf7e53efde7a0f6087c5 SHA512 e3342facda85fb5fee8cb34569a60877d7f9110f23b543f16abe20d694556e1e33a45e1d39dec5c0fdf4cec7f10547c5974a629d29669da985456d8c0398e9bd
diff --git a/games-arcade/alienwave/alienwave-0.4.0-r2.ebuild b/games-arcade/alienwave/alienwave-0.4.0-r2.ebuild
new file mode 100644
index 000000000000..55f4f0182698
--- /dev/null
+++ b/games-arcade/alienwave/alienwave-0.4.0-r2.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="An ncurses-based Xenon clone"
+HOMEPAGE="http://www.alessandropira.org/alienwave/aw.html"
+SRC_URI="http://www.alessandropira.org/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+DEPEND="sys-libs/ncurses:0="
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+S="${WORKDIR}/${PN}"
+
+PATCHES=( "${FILESDIR}"/${P}-gentoo.patch )
+
+src_compile() {
+ emake LIB="$($(tc-getPKG_CONFIG) --libs ncurses)"
+}
+
+src_install() {
+ dobin alienwave
+ dodoc TO_DO README STORY
+}
diff --git a/games-arcade/alienwave/files/alienwave-0.4.0-gentoo.patch b/games-arcade/alienwave/files/alienwave-0.4.0-gentoo.patch
new file mode 100644
index 000000000000..bed5d38c0b8f
--- /dev/null
+++ b/games-arcade/alienwave/files/alienwave-0.4.0-gentoo.patch
@@ -0,0 +1,22 @@
+--- alienwave.orig/Makefile
++++ alienwave/Makefile
+@@ -1,9 +1,7 @@
+ # This file is part of Alienwave, a game by Alessandro Pira
+
+-CC = gcc
+ OBJS = main.o blit.o aliens.o xzarna.o fire.o shield.o levels.o util.o
+ # CFLAGS = -c -O2 -Wall -DDEBUG_LEV
+-CFLAGS = -c -O2 -Wall
+ LIB = -lncurses
+
+ # Uncomment this if you want random waves
+@@ -16,8 +14,7 @@
+
+
+ alienwave: $(OBJS)
+- $(CC) $(OBJS) $(LIB) -o alienwave
+- strip alienwave
++ $(CC) $(OBJS) $(LDFLAGS) $(LIB) -o alienwave
+
+ main.o: main.c
+
diff --git a/games-arcade/alienwave/metadata.xml b/games-arcade/alienwave/metadata.xml
new file mode 100644
index 000000000000..7c730d47817a
--- /dev/null
+++ b/games-arcade/alienwave/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/games-arcade/amphetamine/Manifest b/games-arcade/amphetamine/Manifest
new file mode 100644
index 000000000000..d1332c2d993f
--- /dev/null
+++ b/games-arcade/amphetamine/Manifest
@@ -0,0 +1,3 @@
+DIST amphetamine-0.8.10.tar.bz2 72324 BLAKE2B 39d8f56066e7fbad853198be28375dfe7ee766d7c493a6faf0e2fa321ee2d2d757f5f294418208ac97a440d58bae03d40de2615e421bb8e9fad7a8ba5220d354 SHA512 eb3106df6070e207ffb3293ac4701bba8222603c0e399667505bad29b6f6433dc9ec008499b5180f713a724d3b686fead15536a20927195bc57780be16a860ef
+DIST amphetamine-data_0.8.7.orig.tar.gz 955993 BLAKE2B ad14f36ac1d41b9c4ce7dccb9676a562b07400e2d3bf4303e6fbc18fa385453891da35bdcbbf73331989a65379a68329752b0d550951430c2777a3174db8df8f SHA512 623f5c4d02157f55188f4f7f0ea743b613ac846f56fa80c7b875488384341cb6737beecd2ea2322219ff2ff306e1588350e80bf3bcbd0891a3ce0fd514f142e7
+DIST amphetamine.png 95279 BLAKE2B 6403bb35883ce62f672ee3a3859eb580784c8fd5b068a116c6e3606be27893288205011cba5e9b83f2989d7471a65c13789e44acf5905fdf23402bf065f92c31 SHA512 c7698973e0d656187bebb070a1a76669d71d0025b5dc1e53adf221d934db5aac926897b52db257435168d74b622ed83d6fa6938984ec06682fbd9bd08f64521c
diff --git a/games-arcade/amphetamine/amphetamine-0.8.10-r2.ebuild b/games-arcade/amphetamine/amphetamine-0.8.10-r2.ebuild
new file mode 100644
index 000000000000..ac1c0dde9fb1
--- /dev/null
+++ b/games-arcade/amphetamine/amphetamine-0.8.10-r2.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit desktop
+
+DESCRIPTION="A cool Jump'n Run game offering some unique visual effects"
+HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
+SRC_URI="
+ mirror://gentoo/${P}.tar.bz2
+ mirror://debian/pool/main/a/amphetamine-data/amphetamine-data_0.8.7.orig.tar.gz
+ https://dev.gentoo.org/~pacho/${PN}/${PN}.png
+"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ x11-libs/libXpm
+"
+DEPEND="${RDEPEND}"
+BDEPEND=""
+
+PATCHES=(
+ "${FILESDIR}"/${P}-build.patch
+ "${FILESDIR}"/${P}-64bit.patch
+
+ # From Debian:
+ "${FILESDIR}"/${P}-no-lxt.patch
+ "${FILESDIR}"/${P}-bugs.patch
+ "${FILESDIR}"/${P}-missing-headers.patch
+ "${FILESDIR}"/${P}-newline.patch
+ "${FILESDIR}"/${P}-format-string.patch
+
+ # From OpenBSD:
+ "${FILESDIR}"/${P}-SDL-conversions.patch
+ "${FILESDIR}"/${P}-clang.patch
+)
+
+src_prepare() {
+ default
+ sed -i -e '55d' src/ObjInfo.cpp || die
+}
+
+src_compile() {
+ emake INSTALL_DIR=/usr/share/${PN}
+}
+
+src_install() {
+ newbin amph ${PN}
+ insinto /usr/share/${PN}
+ doins -r ../amph/*
+ doicon "${DISTDIR}/${PN}.png"
+ make_desktop_entry ${PN} Amphetamine ${PN}
+ einstalldocs
+}
diff --git a/games-arcade/amphetamine/amphetamine-0.8.10-r3.ebuild b/games-arcade/amphetamine/amphetamine-0.8.10-r3.ebuild
new file mode 100644
index 000000000000..e5aecbdeee46
--- /dev/null
+++ b/games-arcade/amphetamine/amphetamine-0.8.10-r3.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit desktop
+
+DESCRIPTION="A cool Jump'n Run game offering some unique visual effects"
+HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
+SRC_URI="
+ mirror://gentoo/${P}.tar.bz2
+ mirror://debian/pool/main/a/amphetamine-data/amphetamine-data_0.8.7.orig.tar.gz
+ https://dev.gentoo.org/~pacho/${PN}/${PN}.png
+"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ x11-libs/libXpm
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-build.patch
+ "${FILESDIR}"/${P}-64bit.patch
+
+ # From Debian:
+ "${FILESDIR}"/${P}-no-lxt.patch
+ "${FILESDIR}"/${P}-bugs.patch
+ "${FILESDIR}"/${P}-missing-headers.patch
+ "${FILESDIR}"/${P}-newline.patch
+ "${FILESDIR}"/${P}-format-string.patch
+
+ # From OpenBSD:
+ "${FILESDIR}"/${P}-SDL-conversions.patch
+ "${FILESDIR}"/${P}-clang.patch
+
+ "${FILESDIR}"/${P}-drop-register-keyword.patch
+)
+
+src_prepare() {
+ default
+ sed -i -e '55d' src/ObjInfo.cpp || die
+}
+
+src_compile() {
+ emake INSTALL_DIR=/usr/share/${PN}
+}
+
+src_install() {
+ newbin amph ${PN}
+ insinto /usr/share/${PN}
+ doins -r ../amph/*
+ doicon "${DISTDIR}/${PN}.png"
+ make_desktop_entry "${PN} -fs" Amphetamine ${PN}
+ einstalldocs
+}
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-64bit.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-64bit.patch
new file mode 100644
index 000000000000..b7588face714
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-64bit.patch
@@ -0,0 +1,72 @@
+--- amphetamine-0.8.10.orig/src/Shape.cpp
++++ amphetamine-0.8.10/src/Shape.cpp
+@@ -56,12 +56,12 @@
+ */
+ #ifdef __OPT_MEM_ACCESS__
+
+-#define GET_LONG(adr) *(unsigned long *)adr
+-#define SET_LONG(adr, l) *(unsigned long *)adr = l
++#define GET_LONG(adr) *(uint32_t *)adr
++#define SET_LONG(adr, l) *(uint32_t *)adr = l
+
+ #else
+
+-#define GET_LONG(adr) ((long)((unsigned char *)(adr))[0] << 24) + ((long)((unsigned char *)(adr))[1] << 16) + ((long)((unsigned char *)(adr))[2] << 8) + ((long)((unsigned char *)(adr))[3])
++#define GET_LONG(adr) ((uint32_t)((unsigned char *)(adr))[0] << 24) + ((uint32_t)((unsigned char *)(adr))[1] << 16) + ((uint32_t)((unsigned char *)(adr))[2] << 8) + ((uint32_t)((unsigned char *)(adr))[3])
+ #define SET_LONG(adr, l) ((unsigned char *)adr)[0] = (unsigned char)((l) >> 24); \
+ ((unsigned char *)adr)[1] = (unsigned char)((l) >> 16); \
+ ((unsigned char *)adr)[2] = (unsigned char)((l) >> 8); \
+@@ -116,7 +116,7 @@
+ {
+ // store the location of this line start
+ lineStartPtr = destPtr;
+- destPtr += sizeof( unsigned long );
++ destPtr += sizeof( uint32_t );
+
+ // at the beginning of each row we are not in any run
+ drawRunFlag = kFalse;
+@@ -160,7 +160,7 @@
+ // create the skip token
+ //*( ( unsigned long * )destPtr ) = ( kSkipPixelsToken << 24 ) + runCounter;
+ SET_LONG(destPtr, ( kSkipPixelsToken << 24 ) + runCounter);
+- destPtr += sizeof( unsigned long );
++ destPtr += sizeof( uint32_t );
+ }
+
+ // are we in a draw run
+@@ -179,7 +179,7 @@
+
+ // save the location of the token (so we can fill it in later)
+ runTokenPtr = destPtr;
+- destPtr += sizeof( unsigned long );
++ destPtr += sizeof( uint32_t );
+
+ // copy the pixel
+ *destPtr = *srcPtr;
+@@ -215,7 +215,7 @@
+
+ // create the end of shape token
+ SET_LONG(destPtr, kEndShapeToken << 24);
+- destPtr += sizeof( unsigned long );
++ destPtr += sizeof( uint32_t );
+
+ // Resize the handle to match the real size of the shape
+ //SetHandleSize( shapeHandle, destPtr - ( unsigned char * )( *shapeHandle ) );
+@@ -280,7 +280,7 @@
+ // get a token
+ tokenOp = GET_LONG(srcPtr ) >> 24;
+ tokenData = GET_LONG(srcPtr ) & 0x00ffffff;
+- srcPtr += sizeof( unsigned long );
++ srcPtr += sizeof( uint32_t );
+
+ // depending on the token
+ switch( tokenOp )
+@@ -435,7 +435,7 @@
+ // get a token
+ tokenOp = GET_LONG(srcPtr) >> 24;
+ tokenData = GET_LONG(srcPtr) & 0x00ffffff;
+- srcPtr += sizeof( unsigned long );
++ srcPtr += sizeof( uint32_t );
+
+ // depending on the token
+ switch( tokenOp )
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-SDL-conversions.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-SDL-conversions.patch
new file mode 100644
index 000000000000..7182eb7acfd0
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-SDL-conversions.patch
@@ -0,0 +1,22 @@
+--- a/src/SndSys.cpp.orig Sun Mar 24 00:49:09 2002
++++ b/src/SndSys.cpp Sat Jan 24 04:52:38 2009
+@@ -16,7 +16,7 @@ void Mix_Audio(void *udata, Uint8 *stream, int len)
+
+ int InitializeSoundSystem()
+ {
+- SDL_AudioSpec wanted, obtained;
++ SDL_AudioSpec wanted;
+
+ /* Set the audio format */
+ // Not all sounds are of the same sampling rate which is why
+@@ -28,8 +28,8 @@ int InitializeSoundSystem()
+ wanted.callback = Mix_Audio;
+ wanted.userdata = NULL;
+
+- /* Open the audio device, forcing the desired format */
+- if ( SDL_OpenAudio(&wanted, &obtained) < 0 ) {
++ /* Open the audio device, allowing SDL to apply conversions */
++ if ( SDL_OpenAudio(&wanted, NULL) < 0 ) {
+ fprintf(stderr, "InitSoundSystem: Couldn't open audio: %s\n", SDL_GetError());
+ fprintf(stderr, "Sound was disabled. \n");
+ return(-1);
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-bugs.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-bugs.patch
new file mode 100644
index 000000000000..40a8345516c5
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-bugs.patch
@@ -0,0 +1,56 @@
+description: fix issues in collision detection
+Index: amphetamine-0.8.10/src/Appl.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Appl.cpp 2006-05-15 19:16:56.000000000 +0200
++++ amphetamine-0.8.10/src/Appl.cpp 2006-05-15 19:17:02.000000000 +0200
+@@ -183,7 +183,7 @@
+
+ firstPlayRound = 1;
+ command = kCmdNoCommand;
+- syncTime = gSystem->GetTicks();
++ syncTime = gSystem->GetTicks() - 20;
+ aveTime = 20;
+
+ while (command == kCmdNoCommand) {
+@@ -256,7 +256,7 @@
+
+ if (gSystem->KeyPressed(kKeyEscape)) {
+ command = gGUI->RunUserInterface(kMainPage);
+- syncTime = gSystem->GetTicks();
++ syncTime = gSystem->GetTicks() - aveTime;
+ }
+
+ if (command >= kSaveGameSlot0 && command <= kSaveGameSlot5) {
+Index: amphetamine-0.8.10/src/Object.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Object.cpp 2006-05-15 19:18:21.000000000 +0200
++++ amphetamine-0.8.10/src/Object.cpp 2006-05-15 19:18:33.000000000 +0200
+@@ -70,10 +70,13 @@
+ {
+ if (ABS(forcex) > ABS(forcey)) {
+ sx += SIGN(forcex);
+- sy += forcey / ABS(forcex);
++ if (forcex != 0)
++ sy += forcey / ABS(forcex);
+ }else{
+ sy += SIGN(forcey);
+- sx += forcex / ABS(forcey);
++ /* Avoid SIGFE on alpha on divide by zero. -- JEH */
++ if (forcey != 0)
++ sx += forcex / ABS(forcey);
+ }
+ }
+
+Index: amphetamine-0.8.10/src/Pltform.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Pltform.cpp 2006-05-15 19:18:25.000000000 +0200
++++ amphetamine-0.8.10/src/Pltform.cpp 2006-05-15 19:18:33.000000000 +0200
+@@ -136,7 +136,7 @@
+
+ short CPlatform::Forces()
+ {
+- short collisionObject, collisionCode;
++ short collisionObject = 0, collisionCode;
+ CObject *collObj;
+
+ CObject::Forces();
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-build.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-build.patch
new file mode 100644
index 000000000000..185826c35c37
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-build.patch
@@ -0,0 +1,33 @@
+--- a/Makefile
++++ b/Makefile
+@@ -26,8 +26,8 @@
+
+ # makemake variables
+
+-LINKER := g++
+-DEPENDFLAGS := -g ${SEARCHDIRS}
++LINKER = $(CXX) $(CXXFLAGS)
++DEPENDFLAGS := ${SEARCHDIRS}
+ TOUCHHEADERS := ${MYCODEDIR}/*.h
+
+ # C
+@@ -37,8 +37,8 @@
+
+ # C++
+
+-CXX := g++
+-CXXFLAGS = ${DEPENDFLAGS} -O9 -funroll-loops -fomit-frame-pointer -ffast-math -Wcast-align
++CXX ?= g++
++CXXFLAGS += ${DEPENDFLAGS}
+
+ %.o : %.cpp
+ ${CXX} ${CPPFLAGS} -c $< ${CXXFLAGS} -o $@
+@@ -66,7 +66,7 @@
+ LOADLIBES := $(LOADLIBES) -lXpm -lXt
+ endif
+
+-LDFLAGS = -L/usr/lib -L/usr/local/lib -L/usr/X11R6/lib
++LDFLAGS += -L/usr/lib -L/usr/local/lib -L/usr/X11R6/lib
+
+ .PHONY : default
+ default : amph
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-clang.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-clang.patch
new file mode 100644
index 000000000000..d3fcbfdcabff
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-clang.patch
@@ -0,0 +1,18 @@
+Index: src/Element.cpp
+--- a/src/Element.cpp.orig
++++ b/src/Element.cpp
+@@ -279,7 +279,13 @@ CBackgroundElement::CBackgroundElement(short initx, sh
+
+ void CBackgroundElement::OnAllocate()
+ {
+- short params[5] = {-1, xs, ys, xe - xs, ye - ys};
++ short params[5] = {
++ -1,
++ static_cast<short>(xs),
++ static_cast<short>(ys),
++ static_cast<short>(xe - xs),
++ static_cast<short>(ye - ys)
++ };
+ unsigned char *tmpBmp;
+
+ tmpBmp = gShapeManager->GetBackground(params[1], params[2]);
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-drop-register-keyword.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-drop-register-keyword.patch
new file mode 100644
index 000000000000..1556f27850f6
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-drop-register-keyword.patch
@@ -0,0 +1,16 @@
+Bug: https://bugs.gentoo.org/895878
+--- a/src/Gifload.cpp
++++ b/src/Gifload.cpp
+@@ -149,9 +149,9 @@ Graphic_file *LoadGIF(FILE *fp, char *fname )
+ {
+ Graphic_file *gfile;
+ int filesize, numcols;
+- register unsigned char ch, ch1;
+- register byte *ptr, *ptr1;
+- register int i;
++ unsigned char ch, ch1;
++ byte *ptr, *ptr1;
++ int i;
+ short transparency = -1;
+
+ BitOffset = 0;
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-format-string.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-format-string.patch
new file mode 100644
index 000000000000..50e235a66a85
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-format-string.patch
@@ -0,0 +1,11 @@
+description: fix a format string issue
+--- a/src/AmpHead.hpp
++++ b/src/AmpHead.hpp
+@@ -183,6 +183,6 @@ typedef struct {
+ #define SWAP(a, b, _t) (a) = (_t)((long)a ^ (long)(b)); (b) = (_t)((long)(a) ^ (long)(b)); (a) = (_t)((long)(a) ^ (long)(b));
+ #define NZ(a, b) ((a) == 0 ? (b) : (a))
+
+-#define MSG(message) if (logFile) fprintf(logFile, message); fflush(logFile)
++#define MSG(message) if (logFile) fprintf(logFile, "%s", message); fflush(logFile)
+
+ #endif
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-missing-headers.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-missing-headers.patch
new file mode 100644
index 000000000000..f9c1b9932b11
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-missing-headers.patch
@@ -0,0 +1,13 @@
+description: include string.h
+Index: amphetamine-0.8.10/src/Surface.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Surface.cpp 2006-05-15 19:10:49.000000000 +0200
++++ amphetamine-0.8.10/src/Surface.cpp 2006-05-15 19:11:01.000000000 +0200
+@@ -3,6 +3,7 @@
+ #include "ShapeLd.hpp"
+ #include "Clut.hpp"
+ #include "ConstVal.hpp"
++#include <string.h>
+ #include <memory.h>
+
+ const short kNoCharSpace = 20;
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-newline.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-newline.patch
new file mode 100644
index 000000000000..36482ef30fb1
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-newline.patch
@@ -0,0 +1,358 @@
+description: fix newlines
+Index: amphetamine-0.8.10/src/AmpHead.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/AmpHead.hpp 2002-03-25 11:38:15.000000000 +0100
++++ amphetamine-0.8.10/src/AmpHead.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -185,4 +185,4 @@
+
+ #define MSG(message) if (logFile) fprintf(logFile, message); fflush(logFile)
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Appl.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Appl.cpp 2002-03-25 12:47:49.000000000 +0100
++++ amphetamine-0.8.10/src/Appl.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -404,4 +404,4 @@
+ if (preRenderQueue == remove) bulletList = bulletList->nextBullet;
+ if (remove->nextBullet) remove->nextBullet->prevBullet = remove->prevBullet;
+ if (remove->prevBullet) remove->prevBullet->nextBullet = remove->nextBullet;
+-}*/
+\ No newline at end of file
++}*/
+Index: amphetamine-0.8.10/src/Appl.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Appl.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Appl.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -102,4 +102,4 @@
+
+ };
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Clut.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Clut.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Clut.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -84,4 +84,4 @@
+
+ void SwapBlackWhite(Graphic_file *gf);
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/ConstVal.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/ConstVal.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/ConstVal.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -271,4 +271,5 @@
+ void GetStringConstant(FILE *f, char *constName, char *buffer)
+ {
+ GetValue(f, constName, buffer);
+-}
+\ No newline at end of file
++}
++
+Index: amphetamine-0.8.10/src/ConstVal.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/ConstVal.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/ConstVal.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -160,4 +160,4 @@
+ short disableShapeModes;
+ };
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Creeper.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Creeper.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Creeper.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -4,4 +4,4 @@
+ #include "Monster.hpp"
+
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Element.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Element.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Element.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -373,4 +373,4 @@
+ CElement::Read(f);
+
+ OnAllocate();
+-}
+\ No newline at end of file
++}
+Index: amphetamine-0.8.10/src/File.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/File.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/File.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -26,4 +26,4 @@
+ long CFile::ReadData(void *data, long size)
+ {
+ return fread(data, size, 1, fileRef);
+-}
+\ No newline at end of file
++}
+Index: amphetamine-0.8.10/src/Graphfil.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Graphfil.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Graphfil.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -54,4 +54,4 @@
+ Graphic_file *LoadGIF(FILE *fp, char *fname );
+ Graphic_file *LoadPICTR(FILE *fp, char *fname );
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Gui.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Gui.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Gui.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -796,4 +796,5 @@
+ fclose(f);
+ }
+
+-
+\ No newline at end of file
++
++
+Index: amphetamine-0.8.10/src/Gui.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Gui.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Gui.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -183,4 +183,4 @@
+ void DisplayInfotext(short num);
+ };
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Item.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Item.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Item.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -309,4 +309,4 @@
+
+ READDATA(pickedUp);
+ READDATA(type);
+-}
+\ No newline at end of file
++}
+Index: amphetamine-0.8.10/src/Item.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Item.hpp 2002-03-24 11:10:24.000000000 +0100
++++ amphetamine-0.8.10/src/Item.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -84,4 +84,4 @@
+ void Read(FILE *f);
+ };
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Level.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Level.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Level.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -29,4 +29,4 @@
+ };
+
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Main.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Main.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Main.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -84,4 +84,4 @@
+ delete gApplication;
+
+ return 0;
+-}
+\ No newline at end of file
++}
+Index: amphetamine-0.8.10/src/Monster.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Monster.cpp 2002-03-25 11:53:27.000000000 +0100
++++ amphetamine-0.8.10/src/Monster.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -372,4 +372,4 @@
+ READDATA(health);
+
+ if (dieFrame != -1) gApplication->Dequeue(&gApplication->collisionThingList, this);
+-}
+\ No newline at end of file
++}
+Index: amphetamine-0.8.10/src/Monster.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Monster.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Monster.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -86,4 +86,4 @@
+
+
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Monstrxx.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Monstrxx.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Monstrxx.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -123,4 +123,4 @@
+ void Read(FILE *f);
+ };
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/ObjInfo.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/ObjInfo.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/ObjInfo.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -97,4 +97,4 @@
+ tWeaponInfo *FindWeapon(short ref);
+ };
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Player.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Player.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Player.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -527,4 +527,4 @@
+
+ READDATA(oxygen);
+ READDATA(lastOxygenDecTime);
+-}
+\ No newline at end of file
++}
+Index: amphetamine-0.8.10/src/Player.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Player.hpp 2002-03-24 11:10:24.000000000 +0100
++++ amphetamine-0.8.10/src/Player.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -81,4 +81,4 @@
+
+ };
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Pltform.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Pltform.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Pltform.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -276,4 +276,4 @@
+ fread(info, sizeof(tPlatformInfo), 1, f);
+
+ OnAllocate();
+-}
+\ No newline at end of file
++}
+Index: amphetamine-0.8.10/src/ShapeDes.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/ShapeDes.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/ShapeDes.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -376,4 +376,4 @@
+ };
+
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/ShapeLd.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/ShapeLd.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/ShapeLd.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -93,4 +93,4 @@
+ height = backgroundPicture->height;
+
+ return backgroundPicture->bitmap;
+-}
+\ No newline at end of file
++}
+Index: amphetamine-0.8.10/src/SndSys.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/SndSys.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/SndSys.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -132,4 +132,5 @@
+ playList->RemoveCurrent();
+ }
+ }
+-}
+\ No newline at end of file
++}
++
+Index: amphetamine-0.8.10/src/SndSys.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/SndSys.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/SndSys.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -99,4 +99,5 @@
+
+ };
+
+-#endif
+\ No newline at end of file
++#endif
++
+Index: amphetamine-0.8.10/src/SoundList.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/SoundList.hpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/SoundList.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -55,4 +55,4 @@
+ SoundState *first, *prev, *current;
+ };
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/System.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/System.cpp 2002-03-25 10:31:27.000000000 +0100
++++ amphetamine-0.8.10/src/System.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -554,4 +554,5 @@
+ delete [] tmp;
+
+ return NULL; // failed
+-}
+\ No newline at end of file
++}
++
+Index: amphetamine-0.8.10/src/Thing.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Thing.hpp 2002-03-24 17:16:00.000000000 +0100
++++ amphetamine-0.8.10/src/Thing.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -64,4 +64,4 @@
+
+ };
+
+-#endif
+\ No newline at end of file
++#endif
+Index: amphetamine-0.8.10/src/Weapon.cpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Weapon.cpp 2002-03-24 09:49:09.000000000 +0100
++++ amphetamine-0.8.10/src/Weapon.cpp 2006-05-15 19:08:52.000000000 +0200
+@@ -467,4 +467,4 @@
+ READDATA(dx);
+ READDATA(dy);
+
+-}
+\ No newline at end of file
++}
+Index: amphetamine-0.8.10/src/Weapon.hpp
+===================================================================
+--- amphetamine-0.8.10.orig/src/Weapon.hpp 2002-03-24 17:16:14.000000000 +0100
++++ amphetamine-0.8.10/src/Weapon.hpp 2006-05-15 19:08:52.000000000 +0200
+@@ -152,4 +152,4 @@
+ short Shoot(double directionx, double directiony, double targetpos);
+ };
+
+-#endif
+\ No newline at end of file
++#endif
diff --git a/games-arcade/amphetamine/files/amphetamine-0.8.10-no-lxt.patch b/games-arcade/amphetamine/files/amphetamine-0.8.10-no-lxt.patch
new file mode 100644
index 000000000000..1e654dc89203
--- /dev/null
+++ b/games-arcade/amphetamine/files/amphetamine-0.8.10-no-lxt.patch
@@ -0,0 +1,14 @@
+description: don't link against Xt
+Index: amphetamine-0.8.10/Makefile
+===================================================================
+--- amphetamine-0.8.10.orig/Makefile 2006-11-08 11:05:57.000000000 +0100
++++ amphetamine-0.8.10/Makefile 2006-11-08 11:06:01.000000000 +0100
+@@ -69,7 +69,7 @@
+ LOADLIBES := -lm $(SDL_LIBS)
+
+ ifeq ($(USE_LIB_XPM),TRUE)
+- LOADLIBES := $(LOADLIBES) -lXpm -lXt
++ LOADLIBES := $(LOADLIBES) -lXpm
+ endif
+
+ LDFLAGS = -L/usr/lib -L/usr/local/lib -L/usr/X11R6/lib
diff --git a/games-arcade/amphetamine/metadata.xml b/games-arcade/amphetamine/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/amphetamine/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/aop/Manifest b/games-arcade/aop/Manifest
new file mode 100644
index 000000000000..7951ea800940
--- /dev/null
+++ b/games-arcade/aop/Manifest
@@ -0,0 +1 @@
+DIST aop-0.6.tar.gz 11811 BLAKE2B 9b8a278ac4afb33dc9bb79d92343f9cf0fb4968aae04898700c948d01788cf33523989583ef39661142e0078e31488b24f8bf1a6bd9586e00afc4f7248fc8ca1 SHA512 0ce37647a0832b17e23df409633952f902e02666fa536cc4393a35bf91b245a501feeb4f14fd16d1a1d5c4f39682dad18a8e671e107e96cf5ba9c89965f8a77c
diff --git a/games-arcade/aop/aop-0.6-r2.ebuild b/games-arcade/aop/aop-0.6-r2.ebuild
new file mode 100644
index 000000000000..2f52e08067cd
--- /dev/null
+++ b/games-arcade/aop/aop-0.6-r2.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="Ambassador of Pain is a curses based game with only 64 lines of code"
+HOMEPAGE="http://raffi.at/view/code/aop"
+SRC_URI="http://www.raffi.at/code/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~x86"
+
+RDEPEND="sys-libs/ncurses:0"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-as-needed.patch
+)
+
+src_prepare() {
+ default
+
+ tc-export CC PKG_CONFIG
+
+ sed -i \
+ -e "s#/usr/local/share#/usr/share/${PN}#" \
+ aop.c || die
+}
+
+src_install() {
+ dobin aop
+
+ insinto /usr/share/${PN}
+ doins aop-level-*.txt
+
+ einstalldocs
+}
diff --git a/games-arcade/aop/files/aop-0.6-as-needed.patch b/games-arcade/aop/files/aop-0.6-as-needed.patch
new file mode 100644
index 000000000000..85934f30b062
--- /dev/null
+++ b/games-arcade/aop/files/aop-0.6-as-needed.patch
@@ -0,0 +1,9 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1,5 +1,5 @@
+
+-LDFLAGS = -lncurses
++LDLIBS := $(shell ${PKG_CONFIG} ncurses --libs)
+
+ aop: aop.c
+
diff --git a/games-arcade/aop/metadata.xml b/games-arcade/aop/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/aop/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/aquaria/Manifest b/games-arcade/aquaria/Manifest
new file mode 100644
index 000000000000..fa284c682016
--- /dev/null
+++ b/games-arcade/aquaria/Manifest
@@ -0,0 +1 @@
+DIST aquaria-lnx-humble-bundle.mojo.run 209499691 BLAKE2B e592e451f192136b419281b2e55244d9baaae39bf462cd30a1bc4ad26a5ca825634309423ef3e51ae18f35023169417b1d7d78a19a3f4abf9415072d947586dd SHA512 4ae491ade644df73f676c7bd7c36aa79140aa7c4a312ecd613ba1c900506123ae37c644200433c0045713bb8f3f88e90e58be64d2fea6eee4e7015cd3e157738
diff --git a/games-arcade/aquaria/aquaria-1.1.3-r3.ebuild b/games-arcade/aquaria/aquaria-1.1.3-r3.ebuild
new file mode 100644
index 000000000000..c052fc1b10ad
--- /dev/null
+++ b/games-arcade/aquaria/aquaria-1.1.3-r3.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop unpacker wrapper
+
+DESCRIPTION="A 2D scroller set in a massive ocean world"
+HOMEPAGE="http://www.bit-blot.com/aquaria/"
+SRC_URI="aquaria-lnx-humble-bundle.mojo.run"
+S="${WORKDIR}"/data
+
+LICENSE="all-rights-reserved"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+RESTRICT="strip fetch bindist"
+
+RDEPEND="
+ >=media-libs/libsdl-1.2.15-r4[abi_x86_32(-)]
+ >=media-libs/openal-1.15.1[abi_x86_32(-)]"
+BDEPEND="app-arch/unzip"
+
+dir=/opt/${PN}
+QA_PREBUILT="${dir#/}/aquaria"
+
+pkg_nofetch() {
+ echo
+ elog "Download ${SRC_URI} from ${HOMEPAGE} and place it into"
+ elog "your DISTDIR directory."
+ echo
+}
+
+src_unpack() {
+ unpack_zip ${A}
+}
+
+src_install() {
+ insinto ${dir}
+ doins -r *.xml */
+
+ exeinto ${dir}
+ doexe ${PN}
+
+ doicon ${PN}.png
+
+ dodoc README-linux.txt
+ mv "${ED}/${dir}"/docs "${ED}/usr/share/doc/${PF}/html" || die
+ dosym ../../../usr/share/doc/${PF}/html ${dir}/docs
+
+ make_wrapper "${PN}" "./${PN}" "${dir}"
+ make_desktop_entry "${PN}" "Aquaria"
+}
diff --git a/games-arcade/aquaria/metadata.xml b/games-arcade/aquaria/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/aquaria/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/ascii-invaders/Manifest b/games-arcade/ascii-invaders/Manifest
new file mode 100644
index 000000000000..0201bfd84c84
--- /dev/null
+++ b/games-arcade/ascii-invaders/Manifest
@@ -0,0 +1 @@
+DIST ascii-invaders-1.0.1.tar.gz 37578 BLAKE2B 181509c07b1d9ae54f9147f7425c3d62a57f9bff9561fca6af3f3cc15b7fc96f62c809576bdbbe0ba6a2801947941e259e788f99980174848efedbc71c8a969c SHA512 326708ffc2c277e04575920c58f6a267e0bf46f8d2a3dbca9b5c317fb01006d4f673ab35f92f292549cc52dbee4400a84c85478eb81b9bd7703689a705547bc7
diff --git a/games-arcade/ascii-invaders/ascii-invaders-1.0.1.ebuild b/games-arcade/ascii-invaders/ascii-invaders-1.0.1.ebuild
new file mode 100644
index 000000000000..a0cfd3124a23
--- /dev/null
+++ b/games-arcade/ascii-invaders/ascii-invaders-1.0.1.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic toolchain-funcs
+
+DESCRIPTION="Space invaders clone, using ncurses library"
+HOMEPAGE="https://github.com/macdice/ascii-invaders"
+SRC_URI="https://github.com/macdice/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~mips ~ppc64 ~x86"
+
+RDEPEND="sys-libs/ncurses:="
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+src_compile() {
+ tc-export CC
+ append-cppflags $($(tc-getPKG_CONFIG) --cflags ncurses || die)
+ emake -f /dev/null LDLIBS="$($(tc-getPKG_CONFIG) ncurses --libs || die)" invaders
+}
+
+src_install() {
+ newbin invaders ${PN}
+ einstalldocs
+}
diff --git a/games-arcade/ascii-invaders/metadata.xml b/games-arcade/ascii-invaders/metadata.xml
new file mode 100644
index 000000000000..607eb492104a
--- /dev/null
+++ b/games-arcade/ascii-invaders/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">macdice/ascii-invaders</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/asteroid/Manifest b/games-arcade/asteroid/Manifest
new file mode 100644
index 000000000000..4e029b754cd8
--- /dev/null
+++ b/games-arcade/asteroid/Manifest
@@ -0,0 +1 @@
+DIST asteroid-1.2.1.tar.gz 307596 BLAKE2B c3f5363a0939cc4644425adfa9c3f2ca47ec04ae1beb9dd381fba912ee5e9d3330727fa82d4749b4f6402254988feaaaaef10f7f72aeea691656a1dd188ad5e2 SHA512 a88e0b85264d72bd40add0f3fc8b2b727b1acc0c190de6a60d4e1c79adcc484b17d0ed3537309b704667a6617f387219144cbec93df4fbff585d1237a9823b37
diff --git a/games-arcade/asteroid/asteroid-1.2.1-r1.ebuild b/games-arcade/asteroid/asteroid-1.2.1-r1.ebuild
new file mode 100644
index 000000000000..021d0cd502f8
--- /dev/null
+++ b/games-arcade/asteroid/asteroid-1.2.1-r1.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Modern version of the arcade classic that uses OpenGL"
+HOMEPAGE="https://chazomaticus.github.io/asteroid/"
+SRC_URI="https://github.com/chazomaticus/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/freeglut
+ media-libs/libsdl
+ media-libs/sdl-mixer
+ virtual/glu
+ virtual/opengl
+ x11-libs/gtk+:2
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-libm.patch
+ "${FILESDIR}"/${P}-cmake4.patch
+ "${FILESDIR}"/${P}-gcc15.patch
+)
+
+src_configure() {
+ local mycmakeargs=(
+ -DOpenGL_GL_PREFERENCE=GLVND
+ )
+ cmake_src_configure
+}
diff --git a/games-arcade/asteroid/files/asteroid-1.2.1-cmake4.patch b/games-arcade/asteroid/files/asteroid-1.2.1-cmake4.patch
new file mode 100644
index 000000000000..2c126544283b
--- /dev/null
+++ b/games-arcade/asteroid/files/asteroid-1.2.1-cmake4.patch
@@ -0,0 +1,12 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,8 +1,8 @@
++cmake_minimum_required(VERSION 3.31)
+ project(Asteroid)
+ set(Asteroid_BUILD_VERSION "1.2.1")
+
+ # Dependencies
+-cmake_minimum_required(VERSION 2.6)
+ find_package(OpenGL REQUIRED)
+ if(NOT OPENGL_FOUND)
+ message(FATAL_ERROR "Error: OpenGL not found")
diff --git a/games-arcade/asteroid/files/asteroid-1.2.1-gcc15.patch b/games-arcade/asteroid/files/asteroid-1.2.1-gcc15.patch
new file mode 100644
index 000000000000..1520bd5966c5
--- /dev/null
+++ b/games-arcade/asteroid/files/asteroid-1.2.1-gcc15.patch
@@ -0,0 +1,13 @@
+https://bugs.gentoo.org/944250
+
+--- a/src/main.c
++++ b/src/main.c
+@@ -244,7 +244,7 @@ void GameTimer(int v)
+ }
+
+ #ifdef CFG_GTK
+-static gboolean DisplayDialog()
++static gboolean DisplayDialog(void* a)
+ {
+ GtkWidget * dialog = gtk_message_dialog_new(NULL,
+ GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, ASTEROIDS_ABOUT);
diff --git a/games-arcade/asteroid/files/asteroid-1.2.1-libm.patch b/games-arcade/asteroid/files/asteroid-1.2.1-libm.patch
new file mode 100644
index 000000000000..cb6e7aaafe29
--- /dev/null
+++ b/games-arcade/asteroid/files/asteroid-1.2.1-libm.patch
@@ -0,0 +1,24 @@
+From 4efc7fc0a1246f023d6f96b94081678e302ab430 Mon Sep 17 00:00:00 2001
+From: Charles Lindsay <chaz@chazomatic.us>
+Date: Mon, 23 May 2016 18:50:34 -0700
+Subject: [PATCH] Add libm to link command
+
+Without it, some systems (and now mine!) would give a linker error about
+missing libm.
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 29fd714..ab9a7ec 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -39,7 +39,7 @@ include_directories("${PROJECT_BINARY_DIR}/include")
+ file(GLOB asteroid_SRCS "src/*.c")
+ add_executable(asteroid ${asteroid_SRCS})
+ include_directories(${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIR})
+-target_link_libraries(asteroid ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES})
++target_link_libraries(asteroid m ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES})
+ if(Asteroid_BUILD_GTK)
+ include_directories(${GTK2_INCLUDE_DIRS})
+ target_link_libraries(asteroid ${GTK2_LIBRARIES})
diff --git a/games-arcade/asteroid/metadata.xml b/games-arcade/asteroid/metadata.xml
new file mode 100644
index 000000000000..05a5f140849e
--- /dev/null
+++ b/games-arcade/asteroid/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">chaoslizard</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/balloonchase/Manifest b/games-arcade/balloonchase/Manifest
new file mode 100644
index 000000000000..86eaba1aa8fc
--- /dev/null
+++ b/games-arcade/balloonchase/Manifest
@@ -0,0 +1,2 @@
+DIST balloonchase-0.9.6.tar.bz2 523085 BLAKE2B 50e453327d51da3fe40f52850cb2fbb7a10e897f59bac5d6f4a676d3211d3dcdae00359304ad119252ebf98e9f46482ad801078762f16ddc609bc94b68c3fc18 SHA512 ab5617713c96187564926fd5ecbdbf5186f78c23cfb43b26b28b9d18e71330efd77700cf7cd02e04be7fd8e33f2d30bf59f64954135ac82802d1d839dc2e7767
+DIST balloonchase.png 1744 BLAKE2B d78e636c0cb2ef521967035ce96fbee0e7b2659cb5127ba32cd3437394a709941fd915dfc0f376d47c2ad5ca81f6392f5942c2737cb2524ec3a041dc5b8c6c26 SHA512 bfd32d65b5cb290df90881cb7a953f1cac38f4e91151c672e4320b9b41f7bff46ef97d6c123aa7267b241710dccf4ade409ff129c945af1ee06d33fdf490f169
diff --git a/games-arcade/balloonchase/balloonchase-0.9.6-r2.ebuild b/games-arcade/balloonchase/balloonchase-0.9.6-r2.ebuild
new file mode 100644
index 000000000000..b306696337b6
--- /dev/null
+++ b/games-arcade/balloonchase/balloonchase-0.9.6-r2.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Fly a hot air balloon and try to blow the other player out of the screen"
+HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
+SRC_URI="
+ mirror://gentoo/${P}.tar.bz2
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="media-libs/libsdl[video]"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-gentoo.patch
+)
+
+src_prepare() {
+ default
+
+ sed -i "s|GENTOODIR|${EPREFIX}/usr/share/${PN}|" src/main.c || die
+
+ tc-export CXX PKG_CONFIG
+}
+
+src_install() {
+ dobin ${PN}
+
+ insinto /usr/share/${PN}
+ doins -r images
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} "Balloon Chase"
+
+ einstalldocs
+}
diff --git a/games-arcade/balloonchase/files/balloonchase-0.9.6-gentoo.patch b/games-arcade/balloonchase/files/balloonchase-0.9.6-gentoo.patch
new file mode 100644
index 000000000000..c847f0677660
--- /dev/null
+++ b/games-arcade/balloonchase/files/balloonchase-0.9.6-gentoo.patch
@@ -0,0 +1,154 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1,2 +1 @@
+-LDFLAGS= -lSDL -lpthread -s
+ CFLAGS= -Wall # -DDEBUG
+@@ -11,4 +10,4 @@
+ main: src/main.c
+- g++ -c -o src/main.o `sdl-config --cflags` src/main.c
+- g++ -o balloonchase src/main.o `sdl-config --libs`
++ $(CXX) $(CXXFLAGS) -c -o src/main.o `$(PKG_CONFIG) --cflags sdl` src/main.c
++ $(CXX) $(LDFLAGS) -o balloonchase src/main.o `$(PKG_CONFIG) --libs sdl`
+ pkg:
+--- a/src/main.c
++++ b/src/main.c
+@@ -335,35 +335,35 @@
+ {
+- back = SDL_LoadBMP("images/back.bmp");
++ back = SDL_LoadBMP("GENTOODIR/images/back.bmp");
+
+- num3 = SDL_LoadBMP("images/num3.bmp");
++ num3 = SDL_LoadBMP("GENTOODIR/images/num3.bmp");
+ SDL_SetColorKey(num3, SDL_SRCCOLORKEY, SDL_MapRGB(num3->format, 0xFF, 0xFF, 0xFF));
+- num2 = SDL_LoadBMP("images/num2.bmp");
++ num2 = SDL_LoadBMP("GENTOODIR/images/num2.bmp");
+ SDL_SetColorKey(num2, SDL_SRCCOLORKEY, SDL_MapRGB(num2->format, 0xFF, 0xFF, 0xFF));
+- num1 = SDL_LoadBMP("images/num1.bmp");
++ num1 = SDL_LoadBMP("GENTOODIR/images/num1.bmp");
+ SDL_SetColorKey(num1, SDL_SRCCOLORKEY, SDL_MapRGB(num1->format, 0xFF, 0xFF, 0xFF));
+- num0 = SDL_LoadBMP("images/num0.bmp");
++ num0 = SDL_LoadBMP("GENTOODIR/images/num0.bmp");
+ SDL_SetColorKey(num0, SDL_SRCCOLORKEY, SDL_MapRGB(num0->format, 0xFF, 0xFF, 0xFF));
+- numv = SDL_LoadBMP("images/num-.bmp");
++ numv = SDL_LoadBMP("GENTOODIR/images/num-.bmp");
+ SDL_SetColorKey(numv, SDL_SRCCOLORKEY, SDL_MapRGB(numv->format, 0xFF, 0xFF, 0xFF));
+
+- menu = SDL_LoadBMP("images/menu.bmp");
+- menu_onoff = SDL_LoadBMP("images/menu_onoff.bmp");
++ menu = SDL_LoadBMP("GENTOODIR/images/menu.bmp");
++ menu_onoff = SDL_LoadBMP("GENTOODIR/images/menu_onoff.bmp");
+
+
+-// arrow[0] = SDL_LoadBMP("images/down.bmp");
++// arrow[0] = SDL_LoadBMP("GENTOODIR/images/down.bmp");
+ // SDL_SetColorKey(arrow[0], SDL_SRCCOLORKEY, SDL_MapRGB(arrow[0]->format, 0x00, 0x00, 0x00));
+-// arrow[1] = SDL_LoadBMP("images/down.bmp");
++// arrow[1] = SDL_LoadBMP("GENTOODIR/images/down.bmp");
+ // SDL_SetColorKey(arrow[1], SDL_SRCCOLORKEY, SDL_MapRGB(arrow[1]->format, 0x00, 0x00, 0x00));
+
+- kp1 = SDL_LoadBMP("images/kp1.bmp");
++ kp1 = SDL_LoadBMP("GENTOODIR/images/kp1.bmp");
+ SDL_SetColorKey(kp1, SDL_SRCCOLORKEY, SDL_MapRGB(kp1->format, 0xFF, 0xFF, 0xFF));
+- kp1b = SDL_LoadBMP("images/kp1b.bmp");
++ kp1b = SDL_LoadBMP("GENTOODIR/images/kp1b.bmp");
+ SDL_SetColorKey(kp1b, SDL_SRCCOLORKEY, SDL_MapRGB(kp1b->format, 0xFF, 0xFF, 0xFF));
+
+- kp2 = SDL_LoadBMP("images/kp2.bmp");
++ kp2 = SDL_LoadBMP("GENTOODIR/images/kp2.bmp");
+ SDL_SetColorKey(kp2, SDL_SRCCOLORKEY, SDL_MapRGB(kp2->format, 0xFF, 0xFF, 0xFF));
+- kp2b = SDL_LoadBMP("images/kp2b.bmp");
++ kp2b = SDL_LoadBMP("GENTOODIR/images/kp2b.bmp");
+ SDL_SetColorKey(kp2b, SDL_SRCCOLORKEY, SDL_MapRGB(kp2b->format, 0xFF, 0xFF, 0xFF));
+
+- font2 = SDL_LoadBMP("images/font.bmp");
++ font2 = SDL_LoadBMP("GENTOODIR/images/font.bmp");
+ font = SDL_CreateRGBSurface(SDL_SWSURFACE, 1288, 100, 32, 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF);
+@@ -372,6 +372,6 @@
+
+- blobtrox = SDL_LoadBMP("images/blobtrox.bmp");
++ blobtrox = SDL_LoadBMP("GENTOODIR/images/blobtrox.bmp");
+ //SDL_SetColorKey(blobtrox, SDL_SRCCOLORKEY, SDL_MapRGB(blobtrox->format, 0x01, 0x01, 0x01));
+
+- balloonchase = SDL_LoadBMP("images/balloonchase.bmp");
++ balloonchase = SDL_LoadBMP("GENTOODIR/images/balloonchase.bmp");
+
+@@ -580,3 +580,3 @@
+ {
+- FILE *OPTFILE=fopen ("balloonchase.dat", "w+");
++ FILE *OPTFILE=fopen (".balloonchaserc", "w+");
+ char datmsg[60];
+@@ -590,3 +590,3 @@
+ fputc (option_wave_effect+2, OPTFILE);
+- fprintf (stderr, "Saved configuration to balloonchase.dat\n");
++ fprintf (stderr, "Saved configuration to .balloonchaserc\n");
+ fclose (OPTFILE);
+@@ -596,42 +596,22 @@
+ {
+- char found=0;
+- #ifdef WIN32
+- WIN32_FIND_DATA fileinfo;
+- BOOL rc = 0;
+- HANDLE hFile;
+- hFile = FindFirstFile("*", &fileinfo);
+- while(rc)
+- {
+- rc = FindNextFile(hFile, &fileinfo);
+- if (strcmp (fileinfo.cFileName, "balloonchase.dat")==0)
+- {
+- fprintf(stderr, "Found balloonchase.dat\n");
+- found = 1;
+- _findclose(hFile);
+- #endif
+- #ifndef WIN32
+- struct dirent *filelist[255];
+- int i=0;
+- int j=0;
+ DIR *dp;
+- dp=opendir("./");
+- int filenum=0;
+- while( filelist[filenum]=readdir(dp) )
+- filenum++;
+- closedir(dp);
+- if (filenum>=2)
+- for (i=0;i<filenum;i++)
+- {
+- if (strcmp(filelist[i]->d_name,"balloonchase.dat")==0)
+- {
+- fprintf (stderr, "Found balloonchase.dat\n");
+- found=1;
+- }
++
++ if (getenv("HOME")) {
++ chdir(getenv("HOME"));
++ }
++ if ((dp = opendir("./"))) {
++ struct dirent *f;
++
++ while(f=readdir(dp)) {
++ if (strcmp(f->d_name, ".balloonchaserc") == 0) {
++ fprintf (stderr, "Found .balloonchaserc\n");
++ closedir(dp);
++ return;
+ }
+- #endif
+- if (found==0)
+- {
+- fprintf (stderr, "Balloonchase.dat not found!\nCreating new...\n");
+- if (found==0) createdat(2, 1);
+ }
++ closedir(dp);
++ fprintf (stderr,
++ "Balloonchase.dat not found!\nCreating new...\n");
++ createdat(2, 1);
++ }
+ }
+@@ -1259,3 +1239,3 @@
+
+- FILE *OPTFILE=fopen ("balloonchase.dat", "r");
++ FILE *OPTFILE=fopen (".balloonchaserc", "r");
+ char datmsg[60];
+@@ -1277,3 +1257,3 @@
+ option_wave_effect=fgetc(OPTFILE)-2;
+- fprintf (stderr, "Successfully loaded balloonchase.dat\n");
++ fprintf (stderr, "Successfully loaded .balloonchaserc\n");
+ }
diff --git a/games-arcade/balloonchase/metadata.xml b/games-arcade/balloonchase/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/balloonchase/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/barbarian-bin/Manifest b/games-arcade/barbarian-bin/Manifest
new file mode 100644
index 000000000000..847280dbd215
--- /dev/null
+++ b/games-arcade/barbarian-bin/Manifest
@@ -0,0 +1 @@
+DIST barbarian101_linux.zip 925199 BLAKE2B d8552b7fb03836ec75943b5b754489c345c70c9534301f16a64cdd21ea262fcff19ae6916bcd469b26dd088676079df2190bda369ca085d6c4285d84ebc12616 SHA512 9b46c75666359ed5102a89d29e8b6afacf07ccfa6175f6df27b5acc48b0e0119106f1c1376b124ff761d373bf04145e804659b81503b2834ba09ac05fad5c4f4
diff --git a/games-arcade/barbarian-bin/barbarian-bin-1.01-r3.ebuild b/games-arcade/barbarian-bin/barbarian-bin-1.01-r3.ebuild
new file mode 100644
index 000000000000..8d2c53e6ff46
--- /dev/null
+++ b/games-arcade/barbarian-bin/barbarian-bin-1.01-r3.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop wrapper
+
+MY_PN=${PN/-bin/}
+DESCRIPTION="Save Princess Mariana through one-on-one battles with demonic barbarians"
+HOMEPAGE="http://www.tdbsoft.com/"
+SRC_URI="http://www.pcpages.com/tomberrr/downloads/${MY_PN}${PV/./}_linux.zip"
+S="${WORKDIR}"
+
+LICENSE="CC-BY-NC-ND-2.0"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+RESTRICT="strip"
+
+RDEPEND="
+ acct-group/gamestat
+ >=media-libs/libsdl-1.2.15-r4[abi_x86_32(-)]
+ sys-libs/glibc
+ sys-libs/libstdc++-v3:5
+ amd64? ( sys-libs/libstdc++-v3:5[multilib] )
+"
+BDEPEND="app-arch/unzip"
+
+game_dest="/opt/${MY_PN}"
+QA_PREBUILT="${game_dest#/}/Barbarian"
+
+src_install() {
+ dodir ${game_dest}
+ cp -r gfx sounds "${ED}"/${game_dest}/ || die
+
+ exeinto ${game_dest}
+ doexe Barbarian
+
+ docinto html
+ dodoc Barbarian.html
+
+ make_wrapper barbarian ./Barbarian "${game_dest}"
+
+ # High-score file
+ dodir /var/games/${PN}
+ touch "${ED}"/var/games/${PN}/heroes.hoh || die
+ dosym ../../var/games/${PN}/heroes.hoh /opt/${MY_PN}/heroes.hoh
+
+ fperms 660 /var/games/${PN}/heroes.hoh
+ fowners -R root:gamestat /var/games/${PN} /opt/${MY_PN}/Barbarian
+ fperms g+s /opt/${MY_PN}/Barbarian
+
+ newicon gfx/sprites/player_attack_2_1.bmp barbarian.bmp
+ make_desktop_entry barbarian "Barbarian" /usr/share/pixmaps/barbarian.bmp
+}
diff --git a/games-arcade/barbarian-bin/metadata.xml b/games-arcade/barbarian-bin/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/barbarian-bin/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/batrachians/Manifest b/games-arcade/batrachians/Manifest
new file mode 100644
index 000000000000..2b34b854b907
--- /dev/null
+++ b/games-arcade/batrachians/Manifest
@@ -0,0 +1 @@
+DIST batrachians-0.2.0.tar.gz 204034 BLAKE2B 876e84308b66469d7fa7a970cbf23932dd7e1eda8c07438cbca20414a35117793ea7fef2d6852a1f4d0099a5c2710d8bd3043698bdea101020459dd1c7f20917 SHA512 da0429cd17a6c289f3d5dd1fad11847713c56510d9bdc7e6fa10e0045bb4985662030ea04e49db740eb361e8e016e701736a7ce52501816c68b32f2cd398c189
diff --git a/games-arcade/batrachians/batrachians-0.2.0.ebuild b/games-arcade/batrachians/batrachians-0.2.0.ebuild
new file mode 100644
index 000000000000..fd8cd3f9fd04
--- /dev/null
+++ b/games-arcade/batrachians/batrachians-0.2.0.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools xdg
+
+DESCRIPTION="Fly-eating frog video game"
+HOMEPAGE="http://perso.b2b2c.ca/~sarrazip/dev/batrachians.html"
+SRC_URI="http://perso.b2b2c.ca/~sarrazip/dev/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ >=dev-games/flatzebra-0.2.0
+ media-libs/libsdl
+ media-libs/sdl-image
+ media-libs/sdl-mixer"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=( "${FILESDIR}"/${PN}-0.2.0-autotools.patch )
+
+src_prepare() {
+ default
+ eautoreconf
+}
diff --git a/games-arcade/batrachians/files/batrachians-0.2.0-autotools.patch b/games-arcade/batrachians/files/batrachians-0.2.0-autotools.patch
new file mode 100644
index 000000000000..e80792a9df6c
--- /dev/null
+++ b/games-arcade/batrachians/files/batrachians-0.2.0-autotools.patch
@@ -0,0 +1,36 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,20 +1,19 @@
+ SUBDIRS = src
+
+-man_MANS = doc/$(PACKAGE).6
++man_MANS = doc/batrachians.6
+
+ RPMBUILD = rpmbuild
+ rpm: dist
+ $(RPMBUILD) -ta $(distdir).tar.gz
+
+-docdir = $(datarootdir)/doc/$(PACKAGE)-$(VERSION)
+ doc_DATA = \
+ AUTHORS \
+- COPYING \
+ NEWS \
+ README \
+ THANKS
+
+ EXTRA_DIST = \
++ COPYING \
+ bootstrap \
+ autogen.sh \
+ $(PACKAGE).spec \
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -20,7 +20,7 @@
+ $(W_SUGGEST_OVERRIDE) \
+ $(FLATZEBRA_CFLAGS)
+
+-pkgsounddir = $(datarootdir)/sounds/$(PACKAGE)
++pkgsounddir = $(pkgdatadir)/sounds/$(PACKAGE)
+ pkgsound_DATA = \
+ sounds/game-starts.wav \
+ sounds/game-ends.wav \
diff --git a/games-arcade/batrachians/metadata.xml b/games-arcade/batrachians/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/batrachians/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/berusky/Manifest b/games-arcade/berusky/Manifest
new file mode 100644
index 000000000000..e7ef24a30a76
--- /dev/null
+++ b/games-arcade/berusky/Manifest
@@ -0,0 +1,3 @@
+DIST berusky-1.7.1.tar.gz 483794 BLAKE2B 8e1d6f6c2c47d72fdba73506f8d3ea231649b4eb4fae3e663e9111ed99fbf300b2a160573d54781f9dcb3f9bf62bcb57634d0b3e8abb77f8baffc70254b4640e SHA512 0b0c4d736bfd9b0b62accf11d932271e355cbcbf911e35adb0ccd0bb1b45e06c392d60830bddef04a24689ccfcee7302f2653f6357474ccceba4fd66c44d4383
+DIST berusky-data-1.7.tar.gz 5366663 BLAKE2B 88dbb0063be83b2cc60208e9e5d95ee3014ad381ba1a070d5e781b527324d9d1d4d8a8a56da64e76672995e09f9b57630cd7ba282e2da543dbc6773628362403 SHA512 1ccae352b8033df0dd8fe6f09b1daa83b0e25a67999d41a0f21019014620825551a4e22827f96bc28ccdf0958df85c9f3cfd2e8f1e83dd7edac5b0479413d438
+DIST berusky.png 1714 BLAKE2B 31c8c9c820fa030c5329c3a990bd2430797794e460c22301bb8f7f9577a4d5cfaae23e1ba0640389ffea7dad0146afd5d20ff2ca0fa3d65085207af1a0f625df SHA512 a8a5f7f8dca8d686bc05239adda10673e937361514b1aea07dc9fe66f2e009ae7c20b75ab63fd4db8ed206026a009d8620af3471bbb966b5e9b576ce89f66e54
diff --git a/games-arcade/berusky/berusky-1.7.1-r2.ebuild b/games-arcade/berusky/berusky-1.7.1-r2.ebuild
new file mode 100644
index 000000000000..f50ada36626b
--- /dev/null
+++ b/games-arcade/berusky/berusky-1.7.1-r2.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop flag-o-matic gnome2
+
+DATAFILE="${PN}-data-1.7"
+DESCRIPTION="Free logic game based on an ancient puzzle named Sokoban"
+HOMEPAGE="https://anakreon.cz/?q=node/1"
+SRC_URI="https://www.anakreon.cz/download/${P}.tar.gz
+ https://www.anakreon.cz/download/${DATAFILE}.tar.gz
+ https://dev.gentoo.org/~hasufell/distfiles/${PN}.png"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[X,video]
+ media-libs/sdl-image[png]
+ x11-libs/gtk+:2
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.7.1-r2-gentoo.patch
+ "${FILESDIR}"/${PN}-1.7.1-missing-includes.patch
+)
+
+src_prepare() {
+ mv ../${DATAFILE}/{berusky.ini,GameData,Graphics,Levels} . || die
+
+ default
+}
+
+src_configure() {
+ # https://bugs.gentoo.org/787287
+ # clashes with C++17's "std::byte" type
+ append-cxxflags -std=c++14
+
+ default
+}
+
+src_install() {
+ gnome2_src_install
+
+ rm -rf "${ED}"/usr/doc || die
+
+ insinto /usr/share/${PN}
+ doins -r GameData Graphics Levels
+
+ insinto /var/lib/${PN}
+ doins berusky.ini
+
+ doicon -s 32 "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN}
+}
diff --git a/games-arcade/berusky/files/berusky-1.7.1-missing-includes.patch b/games-arcade/berusky/files/berusky-1.7.1-missing-includes.patch
new file mode 100644
index 000000000000..a44d142b7307
--- /dev/null
+++ b/games-arcade/berusky/files/berusky-1.7.1-missing-includes.patch
@@ -0,0 +1,22 @@
+https://bugs.gentoo.org/890361
+--- a/src/level_game.cpp
++++ b/src/level_game.cpp
+@@ -27,6 +27,8 @@
+
+ #include "portability.h"
+
++#include <cassert>
++#include <cstddef>
+ #ifdef LINUX
+ #include <endian.h>
+ #endif // LINUX
+--- a/src/level_game.h
++++ b/src/level_game.h
+@@ -28,6 +28,7 @@
+ #ifndef __LEVEL_GAME_H__
+ #define __LEVEL_GAME_H__
+
++#include <cassert>
+ #include <time.h>
+ #include "stack.h"
+
diff --git a/games-arcade/berusky/files/berusky-1.7.1-r2-gentoo.patch b/games-arcade/berusky/files/berusky-1.7.1-r2-gentoo.patch
new file mode 100644
index 000000000000..6fd1381ad2ac
--- /dev/null
+++ b/games-arcade/berusky/files/berusky-1.7.1-r2-gentoo.patch
@@ -0,0 +1,47 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -5,8 +5,7 @@
+
+ SUBDIRS = po src data
+
+-beruskydocdir = ${prefix}/doc/berusky
+-beruskydoc_DATA = \
++EXTRA_DIST = \
+ README\
+ COPYING\
+ AUTHORS\
+@@ -15,10 +14,6 @@
+ NEWS\
+ TODO
+
+-EXTRA_DIST = $(beruskydoc_DATA)
+-
+-
+-
+ # Copy all the spec files. Of cource, only one is actually used.
+ dist-hook:
+ for specfile in *.spec; do \
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -3,10 +3,3 @@
+ ## Created by Anjuta - will be overwritten
+ ## If you don't want it to overwrite it,
+ ## Please disable it in the Anjuta project configuration
+-
+-berusky_datadir = $(prefix)/@NO_PREFIX_PACKAGE_DATA_DIR@/@PACKAGE@
+-
+-berusky_data_DATA = \
+- berusky.ini
+-
+-EXTRA_DIST = $(berusky_data_DATA)
+--- a/src/defines.h
++++ b/src/defines.h
+@@ -446,7 +446,7 @@
+ #define INI_USER_DIRECTORY "~/.berusky"
+ #define INI_USER_LEVELS "~/.berusky/User"
+ #define INI_USER_PROFILES "~/.berusky/Profiles"
+-#define INI_FILE_GLOBAL "/var/games/berusky/"INI_FILE_NAME
++#define INI_FILE_GLOBAL "/var/lib/berusky/"INI_FILE_NAME
+ #define INI_FILE_USER "~/.berusky/"INI_FILE_NAME
+ #define INI_FILE_LOCAL "./"INI_FILE_NAME
+ #elif WINDOWS
diff --git a/games-arcade/berusky/metadata.xml b/games-arcade/berusky/metadata.xml
new file mode 100644
index 000000000000..2f4ce531a045
--- /dev/null
+++ b/games-arcade/berusky/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+<longdescription lang="en">
+Berusky is a free logic game, published under GNU Public License and it's based
+on an ancient puzzle named Sokoban.
+
+An old idea of moving boxes in a maze has been expanded with new logic items
+such as explosives, stones, special gates and so on. In addition, up to five
+bugs can cooperate and be controlled by the player.
+
+In order to leave each level (there's about 120 levels in the game) it is
+necessary to own five keys and also to have a free way to the exit.
+</longdescription>
+</pkgmetadata>
diff --git a/games-arcade/betna/Manifest b/games-arcade/betna/Manifest
new file mode 100644
index 000000000000..279d0291d14e
--- /dev/null
+++ b/games-arcade/betna/Manifest
@@ -0,0 +1 @@
+DIST betna-0.9.7.tgz 684723 BLAKE2B 1bef53f216faea681bb4e5dd64ef4eba8ce52f62acf5c1ab8af4890cc97f4d3c529cb3e33633b906990e628cc63c7282367fd31c473954a9c258ff1c4fd43286 SHA512 01a979b3bd5adf1581293db8a066a4db1b4818f5986d8954d0da5d1e1eb394201c2affcee8c679b7cd23b4d255f718619dc00183b59fe7be280f18db0c0548d5
diff --git a/games-arcade/betna/betna-0.9.7-r1.ebuild b/games-arcade/betna/betna-0.9.7-r1.ebuild
new file mode 100644
index 000000000000..0aaf65902004
--- /dev/null
+++ b/games-arcade/betna/betna-0.9.7-r1.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Defend your volcano from the attacking ants by firing rocks/bullets at them"
+HOMEPAGE="http://koti.mbnet.fi/makegho/c/betna/"
+SRC_URI="http://koti.mbnet.fi/makegho/c/betna/${P}.tgz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="media-libs/libsdl[video]"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e '/blobprintf.*char msg/s/char msg/const char msg/' \
+ -e "s:images/:/var/lib/${PN}/:" \
+ src/main.cpp || die
+
+ sed -i \
+ -e '/^LDFLAGS/d' \
+ -e '/--libs/s/-o/$(LDFLAGS) -o/' \
+ -e 's:-O2:$(CXXFLAGS):g' \
+ -e 's/g++/$(CXX)/' \
+ Makefile || die
+}
+
+src_configure() {
+ tc-export CXX
+}
+
+src_compile() {
+ emake clean
+ emake
+}
+
+src_install() {
+ dobin betna
+ dodoc README Q\&A
+
+ insinto /var/lib/${PN}
+ doins images/*
+
+ newicon images/target.bmp ${PN}.bmp
+
+ make_desktop_entry ${PN} Betna /usr/share/pixmaps/${PN}.bmp
+}
diff --git a/games-arcade/betna/metadata.xml b/games-arcade/betna/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/betna/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/blobby/Manifest b/games-arcade/blobby/Manifest
new file mode 100644
index 000000000000..d546b13a5292
--- /dev/null
+++ b/games-arcade/blobby/Manifest
@@ -0,0 +1 @@
+DIST blobby2-linux-1.1.1.tar.gz 2549889 BLAKE2B 120906ac3a01cb0abf00f288c6955df1e8f9dc2e0ed74c6bc70fb7069a6c29d38f860c2b9fbfb42084e4693cafc1bf40f09cd3eba355fac148d9860376bb6486 SHA512 4061de21586ed8404c1cfb5284820e5e0835d10270de12d5e336c1fd9bb080f27a732d9d6cd3a98cbf1eb9d674791d028692f8031b56a9e0be09fcadb2e64c03
diff --git a/games-arcade/blobby/blobby-1.1.1.ebuild b/games-arcade/blobby/blobby-1.1.1.ebuild
new file mode 100644
index 000000000000..7ac97d105e90
--- /dev/null
+++ b/games-arcade/blobby/blobby-1.1.1.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-{1,3,4} luajit )
+
+inherit cmake edo flag-o-matic lua-single xdg
+
+DESCRIPTION="Beach ball game with blobs of goo"
+HOMEPAGE="https://sourceforge.net/projects/blobby/"
+SRC_URI="https://downloads.sourceforge.net/project/blobby/Blobby%20Volley%202%20%28Linux%29/${PV}/${PN}2-linux-${PV}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ ${LUA_DEPS}
+ dev-games/physfs[zip]
+ dev-libs/tinyxml2:=
+ media-libs/libglvnd
+ media-libs/libsdl2[sound,joystick,opengl,video]
+"
+DEPEND="
+ ${RDEPEND}
+ dev-libs/boost
+"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.1.1-fix_linkedlist.patch # from upstream
+ "${FILESDIR}"/${PN}-1.1.1-fix_deps.patch
+)
+
+src_prepare() {
+ cmake_src_prepare
+ # lua and tinyxml2 unbundled by patch
+ cmake_comment_add_subdirectory deps
+}
+
+src_configure() {
+ # https://github.com/danielknobe/blobbyvolley2/issues/163
+ filter-lto
+ append-flags -fno-strict-aliasing
+ local mycmakeargs=(
+ -DBUILD_TESTS=$(usex test)
+ )
+ cmake_src_configure
+}
+
+src_test() {
+ pushd "${BUILD_DIR}"/test || die
+ edo ./blobbytest --report_level=short
+ popd || die
+}
diff --git a/games-arcade/blobby/files/blobby-1.1.1-fix_deps.patch b/games-arcade/blobby/files/blobby-1.1.1-fix_deps.patch
new file mode 100644
index 000000000000..8aa84ec2d12d
--- /dev/null
+++ b/games-arcade/blobby/files/blobby-1.1.1-fix_deps.patch
@@ -0,0 +1,36 @@
+use system-libs for lua and tinyxml2
+use pkgconfig for opengl to avoid X requirement due to findOpenGL.cmake
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -83,7 +83,10 @@ set (blobby-server_SRC ${common_SRC}
+ )
+
+ find_package(Boost REQUIRED)
+-find_package(OpenGL)
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(OPENGL REQUIRED opengl)
++pkg_check_modules(lua REQUIRED IMPORTED_TARGET lua)
++pkg_check_modules(tinyxml2 REQUIRED IMPORTED_TARGET tinyxml2)
+ add_subdirectory(raknet)
+ add_subdirectory(blobnet)
+
+@@ -100,7 +103,7 @@ if (UNIX AND (NOT ANDROID))
+ add_definitions("-DBLOBBY_DATA_DIR=\"${CMAKE_INSTALL_PREFIX}/share/blobby\"")
+ endif()
+
+-set(BLOBBY_COMMON_LIBS lua::lua blobnet::blobnet tinyxml2::tinyxml2 PhysFS::PhysFS SDL2::SDL2main SDL2::SDL2 Boost::boost)
++set(BLOBBY_COMMON_LIBS PkgConfig::lua blobnet::blobnet PkgConfig::tinyxml2 PhysFS::PhysFS SDL2::SDL2main SDL2::SDL2 Boost::boost)
+
+ # other additional dependencies
+ if (NOT WIN32)
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -35,6 +35,6 @@ endif ("${SDL2_LIBRARIES}" STREQUAL "")
+
+ add_executable(blobbytest GenericIOTest.cpp FileTest.cpp Base64Test.cpp ${SRC})
+
+-target_include_directories(blobbytest PRIVATE ${Boost_INCLUDE_DIR} ${PHYSFS_INCLUDE_DIR} ${SDL2_INCLUDE_DIRS} ../src)
++target_include_directories(blobbytest PRIVATE ${Boost_INCLUDE_DIR} ${PHYSFS_INCLUDE_DIR} ${SDL2_INCLUDE_DIRS} ${lua_INCLUDE_DIRS} ${tinyxml2_INCLUDE_DIRS} ../src)
+ target_compile_definitions(blobbytest PRIVATE "BOOST_TEST_DYN_LINK=1")
+-target_link_libraries(blobbytest ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${PHYSFS_LIBRARY} ${SDL2_LIBRARIES} lua raknet tinyxml2)
++target_link_libraries(blobbytest ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${PHYSFS_LIBRARY} ${SDL2_LIBRARIES} ${lua_LIBRARIES} ${tinyxml2_LIBRARIES} raknet)
diff --git a/games-arcade/blobby/files/blobby-1.1.1-fix_linkedlist.patch b/games-arcade/blobby/files/blobby-1.1.1-fix_linkedlist.patch
new file mode 100644
index 000000000000..3f05c3ffc351
--- /dev/null
+++ b/games-arcade/blobby/files/blobby-1.1.1-fix_linkedlist.patch
@@ -0,0 +1,130 @@
+from upstream, fix compile with clang-19
+https://github.com/danielknobe/blobbyvolley2/pull/152/commits/f5111f93827bc7e1dc7423209986fe14a92823db.patch
+--- a/src/raknet/LinkedList.h
++++ b/src/raknet/LinkedList.h
+@@ -272,7 +272,9 @@ namespace BasicDataStructures
+ template <class LinkedListType>
+ bool LinkedList<LinkedListType>::operator= ( const LinkedList<LinkedListType>& original_copy )
+ {
+- typename LinkedList::node * original_copy_pointer, *save_position;
++ typename LinkedList::node* original_copy_pointer;
++ typename LinkedList::node* last;
++ typename LinkedList::node* save_position;
+
+ if ( ( &original_copy ) != this )
+ {
+@@ -318,7 +320,7 @@ namespace BasicDataStructures
+
+
+ // Save the current element
+- this->last = this->position;
++ last = this->position;
+
+ // Point to the next node in the source list
+ original_copy_pointer = original_copy_pointer->next;
+@@ -336,10 +338,10 @@ namespace BasicDataStructures
+
+
+ // Set the previous pointer for the new node
+- ( this->position->previous ) = this->last;
++ ( this->position->previous ) = last;
+
+ // Set the next pointer for the old node to the new node
+- ( this->last->next ) = this->position;
++ ( last->next ) = this->position;
+
+ }
+
+@@ -383,7 +385,9 @@ namespace BasicDataStructures
+ template <class LinkedListType>
+ LinkedList<LinkedListType>::LinkedList( const LinkedList& original_copy )
+ {
+- typename LinkedList::node * original_copy_pointer, *last, *save_position;
++ typename LinkedList::node * original_copy_pointer;
++ typename LinkedList::node * last;
++ typename LinkedList::node * save_position;
+
+ if ( original_copy.list_size == 0 )
+ {
+@@ -422,7 +426,7 @@ namespace BasicDataStructures
+ do
+ {
+ // Save the current element
+- this->last = this->position;
++ last = this->position;
+
+ // Point to the next node in the source list
+ original_copy_pointer = original_copy_pointer->next;
+@@ -442,7 +446,7 @@ namespace BasicDataStructures
+ ( this->position->previous ) = last;
+
+ // Set the next pointer for the old node to the new node
+- ( this->last->next ) = this->position;
++ ( last->next ) = this->position;
+
+ }
+
+@@ -462,7 +466,8 @@ namespace BasicDataStructures
+ template <class CircularLinkedListType>
+ CircularLinkedList<CircularLinkedListType>::CircularLinkedList( const CircularLinkedList& original_copy )
+ {
+- node * original_copy_pointer;
++ node *original_copy_pointer;
++ node *last;
+ node *save_position;
+
+ if ( original_copy.list_size == 0 )
+@@ -504,7 +509,7 @@ namespace BasicDataStructures
+
+
+ // Save the current element
+- this->last = this->position;
++ last = this->position;
+
+ // Point to the next node in the source list
+ original_copy_pointer = original_copy_pointer->next;
+@@ -521,10 +526,10 @@ namespace BasicDataStructures
+ save_position = position;
+
+ // Set the previous pointer for the new node
+- ( this->position->previous ) = this->last;
++ ( this->position->previous ) = last;
+
+ // Set the next pointer for the old node to the new node
+- ( this->last->next ) = this->position;
++ ( last->next ) = this->position;
+
+ }
+
+@@ -544,7 +549,8 @@ namespace BasicDataStructures
+ template <class CircularLinkedListType>
+ bool CircularLinkedList<CircularLinkedListType>::operator= ( const CircularLinkedList& original_copy )
+ {
+- node * original_copy_pointer;
++ node *original_copy_pointer;
++ node *last;
+ node *save_position;
+
+ if ( ( &original_copy ) != this )
+@@ -589,7 +595,7 @@ namespace BasicDataStructures
+ do
+ {
+ // Save the current element
+- this->last = this->position;
++ last = this->position;
+
+ // Point to the next node in the source list
+ original_copy_pointer = original_copy_pointer->next;
+@@ -606,10 +612,10 @@ namespace BasicDataStructures
+ save_position = this->position;
+
+ // Set the previous pointer for the new node
+- ( this->position->previous ) = this->last;
++ ( this->position->previous ) = last;
+
+ // Set the next pointer for the old node to the new node
+- ( this->last->next ) = this->position;
++ ( last->next ) = this->position;
+
+ }
+
diff --git a/games-arcade/blobby/metadata.xml b/games-arcade/blobby/metadata.xml
new file mode 100644
index 000000000000..1c2e65276be0
--- /dev/null
+++ b/games-arcade/blobby/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">blobby</remote-id>
+ <remote-id type="github">danielknobe/blobbyvolley2</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/blobwars/Manifest b/games-arcade/blobwars/Manifest
new file mode 100644
index 000000000000..442820c602e9
--- /dev/null
+++ b/games-arcade/blobwars/Manifest
@@ -0,0 +1 @@
+DIST blobwars-2.00.tar.gz 66982603 BLAKE2B 273b5eab5a569f7f4b78982499a85daf63e6fdfb7d4348290d64bbcbeb9be830bb7cf81a0a387df0daa176e7a2a82d62404e88c95f02d6af485bae054170ad38 SHA512 412afd029554e59e7947466f36b51ef863faf1712898397498d5497e9a38dced92777b7684c1fb231998d893a6ce2c435b8f4278429df41168385de8fa18725b
diff --git a/games-arcade/blobwars/blobwars-2.00-r2.ebuild b/games-arcade/blobwars/blobwars-2.00-r2.ebuild
new file mode 100644
index 000000000000..f92d35a8eb91
--- /dev/null
+++ b/games-arcade/blobwars/blobwars-2.00-r2.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit xdg
+
+DESCRIPTION="Platform game about a blob and his quest to rescue MIAs from an alien invader"
+HOMEPAGE="https://sourceforge.net/projects/blobwars/ https://www.parallelrealities.co.uk/games/metalBlobSolid/ https://github.com/perpendicular-dimensions/blobwars"
+SRC_URI="https://downloads.sourceforge.net/blobwars/${P}.tar.gz"
+
+LICENSE="BSD CC-BY-SA-3.0 CC-BY-3.0 GPL-2 LGPL-2.1 fairuse public-domain"
+SLOT="0"
+KEYWORDS="amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl2
+ media-libs/sdl2-mixer
+ media-libs/sdl2-ttf
+ media-libs/sdl2-image
+ media-libs/sdl2-net
+ virtual/zlib:=
+ virtual/libintl
+"
+DEPEND="${RDEPEND}"
+BDEPEND="sys-devel/gettext"
+
+PATCHES=(
+ # Stop providing/overriding strlcat and strlcpy to fix bug #831671
+ "${FILESDIR}"/${P}-dont-override-strlcat.patch
+
+ "${FILESDIR}"/${P}-generic-name.patch
+ "${FILESDIR}"/${P}-time_t.patch
+)
+
+src_prepare() {
+ default
+
+ # Fixes from Fedora and OpenSuSE
+ sed -i -e 's|$(PREFIX)/games|$(PREFIX)/bin|;
+ s|$(PREFIX)/share/games|$(PREFIX)/share|;
+ s| -Werror||;
+ s|$(CXX) $(LIBS) $(GAMEOBJS) -o $(PROG)|$(CXX) $(GAMEOBJS) $(LIBS) -o $(PROG)|;
+ s|$(CXX) $(LIBS) $(PAKOBJS) -o pak|$(CXX) $(PAKOBJS) $(LIBS) -o pak|;
+ s|$(CXX) $(LIBS) $(MAPOBJS) -o mapeditor|$(CXX) $(MAPOBJS) $(LIBS) -o mapeditor|' \
+ Makefile || die
+ sed -i -e 's|gzclose(pak)|gzclose((gzFile)pak)|;
+ s|gzclose(fp)|gzclose((gzFile)fp)|' src/pak.cpp || die
+}
+
+src_compile() {
+ # USEPAK=1 breaks music
+ emake \
+ RELEASE="1" \
+ USEPAK="0"
+}
+
+src_install() {
+ emake \
+ BINDIR="/usr/bin/" \
+ USEPAK="0" \
+ DESTDIR="${D}" \
+ DOCDIR="/usr/share/doc/${PF}/html/" \
+ install
+
+ mv -vf \
+ "${D}"/usr/share/doc/${PF}/html/{changes,hacking,porting,readme} \
+ "${D}"/usr/share/doc/${PF}/
+
+ insinto /usr/share/metainfo
+ doins "${FILESDIR}"/${PN}.appdata.xml
+}
diff --git a/games-arcade/blobwars/files/blobwars-2.00-dont-override-strlcat.patch b/games-arcade/blobwars/files/blobwars-2.00-dont-override-strlcat.patch
new file mode 100644
index 000000000000..bcdec96f8e86
--- /dev/null
+++ b/games-arcade/blobwars/files/blobwars-2.00-dont-override-strlcat.patch
@@ -0,0 +1,22 @@
+Stop providing / overriding strlcat and strlcpy to fix the following compile errors:
+
+src/headers.h:60:20: error: ambiguating new declaration of 'void strlcat(char*, const char*, size_t)'
+ 60 | static inline void strlcat(char *dest, const char *src, size_t n) { strncat(dest, src, n - 1); }
+ | ^~~~~~~
+
+src/headers.h:61:20: error: ambiguating new declaration of 'void strlcpy(char*, const char*, size_t)'
+ 61 | static inline void strlcpy(char *dest, const char *src, size_t n) { strncpy(dest, src, n); dest[n - 1] = 0; }
+ | ^~~~~~~
+
+diff -up blobwars-2.00/src/headers.h~ blobwars-2.00/src/headers.h
+--- blobwars-2.00/src/headers.h 2015-11-21 23:18:19.000000000 +0100
++++ blobwars-2.00/src/headers.h 2023-07-28 22:25:36.655085088 +0200
+@@ -56,7 +56,7 @@ extern DECLSPEC int SDLCALL SDL_GetGamma
+ #define textdomain(x) while(false)
+ #endif
+
+-#if !defined(OpenBSD) && !defined(FreeBSD) && !defined(__APPLE__)
++#if 0 && !defined(OpenBSD) && !defined(FreeBSD) && !defined(__APPLE__)
+ static inline void strlcat(char *dest, const char *src, size_t n) { strncat(dest, src, n - 1); }
+ static inline void strlcpy(char *dest, const char *src, size_t n) { strncpy(dest, src, n); dest[n - 1] = 0; }
+ #endif
diff --git a/games-arcade/blobwars/files/blobwars-2.00-generic-name.patch b/games-arcade/blobwars/files/blobwars-2.00-generic-name.patch
new file mode 100644
index 000000000000..1e8ea6275e0b
--- /dev/null
+++ b/games-arcade/blobwars/files/blobwars-2.00-generic-name.patch
@@ -0,0 +1,12 @@
+--- a/icons/blobwars.desktop.orig 2011-04-17 16:56:56.000000000 +0200
++++ b/icons/blobwars.desktop 2015-06-26 13:15:44.459524513 +0200
+@@ -1,7 +1,8 @@
+ [Desktop Entry]
+ Encoding=UTF-8
+-Categories=Game;ActionGame;
++Categories=Game;ArcadeGame;
+ Name=Blob Wars : Metal Blob Solid
++GenericName=Blob Wars
+ Comment=Mission and Objective based 2D Platform Game
+ Icon=blobwars
+ Exec=blobwars
diff --git a/games-arcade/blobwars/files/blobwars-2.00-time_t.patch b/games-arcade/blobwars/files/blobwars-2.00-time_t.patch
new file mode 100644
index 000000000000..0b40eeaafcab
--- /dev/null
+++ b/games-arcade/blobwars/files/blobwars-2.00-time_t.patch
@@ -0,0 +1,15 @@
+Author: Andreas Beckmann <anbe@debian.org>
+Description: fix FTBFS with 64-bit time_t on 32-bit architectures
+
+--- a/src/CReplayData.cpp
++++ b/src/CReplayData.cpp
+@@ -38,7 +38,8 @@ ReplayData::~ReplayData()
+
+ void ReplayData::printReplayInformation()
+ {
+- tm *timeinfo = localtime(&header.randomSeed);
++ time_t t = header.randomSeed;
++ tm *timeinfo = localtime(&t);
+ printf("Recorded on : %s", asctime(timeinfo));
+ printf("Map : %s\n", header.map);
+ printf("Score : %d\n", header.score);
diff --git a/games-arcade/blobwars/files/blobwars.appdata.xml b/games-arcade/blobwars/files/blobwars.appdata.xml
new file mode 100644
index 000000000000..4be64ae13457
--- /dev/null
+++ b/games-arcade/blobwars/files/blobwars.appdata.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2014 Ryan Lerch <rlerch@redhat.com> -->
+
+<!-- HOUSEKEEPING, REMOVE THIS COMMENT WHEN THIS GOES UPSTREAM
+EmailAddress: hdegoede@redhat.com
+SentUpstream: 2014-09-18
+-->
+
+<application>
+ <id type="desktop">blobwars.desktop</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <summary>Mission and Objective based 2D Platform Game</summary>
+ <description>
+ <p>
+ Blob Wars: Metal Blob Solid is a 2D side scrolling platformer where you control
+ Bob, (a blob secret agent) through 25 missions to rescue other blobs and stop
+ the evil alien leader: Galdov.
+ </p>
+ </description>
+ <url type="homepage">http://www.parallelrealities.co.uk/p/blob-wars-metal-blob-solid.html</url>
+ <screenshots>
+ <screenshot type="default">http://3.bp.blogspot.com/-VGOFb5wKQkE/T4RuJznkWkI/AAAAAAAAA10/u1pyXxBa1yw/s1600/03.jpg</screenshot>
+ <screenshot>http://3.bp.blogspot.com/-oBB_IbOXWEI/T4RuI6G3Y5I/AAAAAAAAA1s/_Tb2v1YrINk/s1600/02.jpg</screenshot>
+ <screenshot>http://3.bp.blogspot.com/-s0v-Lr5WBa0/T4RuH7DbgKI/AAAAAAAAA1k/58HXOP40NIk/s1600/01.jpg</screenshot>
+ </screenshots>
+ <!-- FIXME: change this to an upstream email address for spec updates
+ <updatecontact>someone_who_cares@upstream_project.org</updatecontact>
+ -->
+</application>
diff --git a/games-arcade/blobwars/metadata.xml b/games-arcade/blobwars/metadata.xml
new file mode 100644
index 000000000000..56ab8b6c4acb
--- /dev/null
+++ b/games-arcade/blobwars/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>pacho@gentoo.org</email>
+ <name>Pacho Ramos</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">blobwars</remote-id>
+ <remote-id type="github">perpendicular-dimensions/blobwars</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/blockrage/Manifest b/games-arcade/blockrage/Manifest
new file mode 100644
index 000000000000..478806a941fd
--- /dev/null
+++ b/games-arcade/blockrage/Manifest
@@ -0,0 +1 @@
+DIST blockrage-0.2.3.tar.gz 75620 BLAKE2B f54e0f2e30e36b9c9692c28a4cb894305cb9e0eaae31873073899aeafaa1a032c56533840c5094ff60e3e9eb09587fc9cc83b8469f39952ce483369243f5fcc1 SHA512 20ad63cb75f6f3afe482b54c5dc0487615ed9ac9a43fa3819b1da43f343c8dde6c3eb817b46b586bbfdca6ad9c9e9cb3c220f5ab536397e407250daf9fd61aa2
diff --git a/games-arcade/blockrage/blockrage-0.2.3-r1.ebuild b/games-arcade/blockrage/blockrage-0.2.3-r1.ebuild
new file mode 100644
index 000000000000..2033d363ad2f
--- /dev/null
+++ b/games-arcade/blockrage/blockrage-0.2.3-r1.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="Falling-blocks arcade game with a 2-player hotseat mode"
+HOMEPAGE="https://blockrage.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="media-libs/libsdl[video]"
+RDEPEND="${DEPEND}"
+
+DOCS=( ChangeLog KNOWN_BUGS README TODO )
+
+PATCHES=(
+ # Removing error due to wrong detection of cross-compile mode
+ "${FILESDIR}"/${P}-config.patch
+ "${FILESDIR}"/${P}-statx.patch
+)
+
+src_configure() {
+ tc-export CC
+ default
+}
diff --git a/games-arcade/blockrage/files/blockrage-0.2.3-config.patch b/games-arcade/blockrage/files/blockrage-0.2.3-config.patch
new file mode 100644
index 000000000000..f1b3e5bde119
--- /dev/null
+++ b/games-arcade/blockrage/files/blockrage-0.2.3-config.patch
@@ -0,0 +1,30 @@
+--- a/configure
++++ b/configure
+@@ -40,7 +40,7 @@
+ SOUND_OPT=
+
+ MYCC=gcc
+-MYCFLAGS='-s -O2 -Wall `sdl-config --cflags`'" $SOUND_OPT -DSYSCONFDIR=\\\"\${sysconfdir}/\${progname}\\\""
++MYCFLAGS='-Wall `sdl-config --cflags`'" $SOUND_OPT -DSYSCONFDIR=\\\"\${sysconfdir}/\${progname}\\\""
+
+ if test -z "$CC" ; then
+ CC="$MYCC";
+@@ -75,7 +75,6 @@
+ --build=*) build_alias="$cfg_optarg";;
+ --host=*) if test ."$build_alias" != ."$cfg_optarg" ; then
+ printf "configure: cross-compiling not supported\n" >&2
+- exit 1
+ fi;;
+
+ --bindir=*) bindir="$cfg_optarg";;
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -1,7 +1,7 @@
+ OBJS = main.o gfxout.o gfxlib.o menus.o keyboard.o bg.o sound.o global.o timer.o
+
+ $(progname)$(XSUF): $(OBJS)
+- gcc -s -o $(progname)$(XSUF) $(OBJS) $(LIBS)
++ $(CC) $(CFLAGS) -o $(progname)$(XSUF) $(OBJS) $(LIBS) $(LDFLAGS)
+
+ bg.o: bg.c bg.h global.h main.h
+ gfxlib.o: gfxlib.c gfxlib.h global.h gfxout.h
diff --git a/games-arcade/blockrage/files/blockrage-0.2.3-statx.patch b/games-arcade/blockrage/files/blockrage-0.2.3-statx.patch
new file mode 100644
index 000000000000..95459e0984e6
--- /dev/null
+++ b/games-arcade/blockrage/files/blockrage-0.2.3-statx.patch
@@ -0,0 +1,92 @@
+Thanks-to: samuel.bauer
+https://bugs.gentoo.org/669598
+--- a/src/main.c
++++ b/src/main.c
+@@ -102,7 +102,7 @@
+
+ int immedstart;
+ int quit;
+-static int statx[6],staty[6];
++static int stat_x[6],stat_y[6];
+ int diffx,diffy; /* coordinates of the difficulty level display box */
+ int ts_x0,ts_x1; /* x-coordinates of the top-ten names(ts_x0) & scores(ts_x1) */
+ int no_of_sets;
+@@ -191,14 +191,14 @@
+
+ static void game_drawscore(player_t *p, int bgvcpy) {
+ if(bgvcpy) {
+- v_drawscrarea(bmp_game[players-1].data,statx[1],staty[1],
++ v_drawscrarea(bmp_game[players-1].data,stat_x[1],stat_y[1],
+ strpixlen("0000000",FONT_HIGHLIGHTED),font[FONT_HIGHLIGHTED].ch);
+ }
+ t_align=T_LEFT;
+- v_printf(statx[1],staty[1],FONT_HIGHLIGHTED,"%07d",p->score);
++ v_printf(stat_x[1],stat_y[1],FONT_HIGHLIGHTED,"%07d",p->score);
+
+ if(bgvcpy) {
+- virt_cpyarea(statx[1],staty[1],
++ virt_cpyarea(stat_x[1],stat_y[1],
+ strpixlen("00000000",FONT_HIGHLIGHTED),font[FONT_HIGHLIGHTED].ch);
+ }
+ }
+@@ -206,28 +206,28 @@
+ static void game_drawlevelnum(int bgvcpy) {
+
+ if(bgvcpy) {
+- v_drawscrarea(bmp_game[players-1].data,statx[3],staty[3],
++ v_drawscrarea(bmp_game[players-1].data,stat_x[3],stat_y[3],
+ strpixlen("00",FONT_HIGHLIGHTED),font[FONT_HIGHLIGHTED].ch);
+ }
+ t_align=T_LEFT;
+- v_printf(statx[3],staty[3],FONT_HIGHLIGHTED,"%02d",level);
++ v_printf(stat_x[3],stat_y[3],FONT_HIGHLIGHTED,"%02d",level);
+
+ if(bgvcpy) {
+- virt_cpyarea(statx[3],staty[3],
++ virt_cpyarea(stat_x[3],stat_y[3],
+ strpixlen("00",FONT_HIGHLIGHTED),font[FONT_HIGHLIGHTED].ch);
+ }
+ }
+
+ static void game_drawblocksleft(int bgvcpy) {
+ if(bgvcpy) {
+- v_drawscrarea(bmp_game[players-1].data,statx[5],staty[5],
++ v_drawscrarea(bmp_game[players-1].data,stat_x[5],stat_y[5],
+ strpixlen("00",FONT_HIGHLIGHTED),font[FONT_HIGHLIGHTED].ch);
+ }
+ t_align=T_LEFT;
+- v_printf(statx[5],staty[5],FONT_HIGHLIGHTED,"%02d",blocksleft);
++ v_printf(stat_x[5],stat_y[5],FONT_HIGHLIGHTED,"%02d",blocksleft);
+
+ if(bgvcpy) {
+- virt_cpyarea(statx[5],staty[5],
++ virt_cpyarea(stat_x[5],stat_y[5],
+ strpixlen("00",FONT_HIGHLIGHTED),font[FONT_HIGHLIGHTED].ch);
+ }
+ }
+@@ -371,9 +371,9 @@
+ void game_statistics_draw(void) {
+ if(players==1) {
+ t_align=T_LEFT;
+- v_print(statx[0],staty[0],FONT_NORMAL,"Score:");
+- v_print(statx[2],staty[2],FONT_NORMAL,"Level:");
+- v_print(statx[4],staty[4],FONT_NORMAL,"Blocks:");
++ v_print(stat_x[0],stat_y[0],FONT_NORMAL,"Score:");
++ v_print(stat_x[2],stat_y[2],FONT_NORMAL,"Level:");
++ v_print(stat_x[4],stat_y[4],FONT_NORMAL,"Blocks:");
+ game_drawlevelnum(0);
+ game_drawblocksleft(0);
+ game_drawscore(&(player[0]),0);
+@@ -1530,9 +1530,9 @@
+ fscanf(f,"%d %d %d %d %d %d",&nx_x0[0],&nx_y0[0],
+ &nx_x0[1],&nx_y0[1],&nx_x0[2],&nx_y0[2]);
+
+- fscanf(f,"%d %d %d %d",&statx[0],&staty[0],&statx[1],&staty[1]);
+- fscanf(f,"%d %d %d %d",&statx[2],&staty[2],&statx[3],&staty[3]);
+- fscanf(f,"%d %d %d %d",&statx[4],&staty[4],&statx[5],&staty[5]);
++ fscanf(f,"%d %d %d %d",&stat_x[0],&stat_y[0],&stat_x[1],&stat_y[1]);
++ fscanf(f,"%d %d %d %d",&stat_x[2],&stat_y[2],&stat_x[3],&stat_y[3]);
++ fscanf(f,"%d %d %d %d",&stat_x[4],&stat_y[4],&stat_x[5],&stat_y[5]);
+
+ fscanf(f,"%d %d",&diffx,&diffy);
+ fscanf(f,"%d %d",&ts_x0,&ts_x1);
diff --git a/games-arcade/blockrage/metadata.xml b/games-arcade/blockrage/metadata.xml
new file mode 100644
index 000000000000..693ef4c34d53
--- /dev/null
+++ b/games-arcade/blockrage/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">blockrage</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/bomns/Manifest b/games-arcade/bomns/Manifest
new file mode 100644
index 000000000000..a4b59364865b
--- /dev/null
+++ b/games-arcade/bomns/Manifest
@@ -0,0 +1 @@
+DIST bomns-0.99.2.tar.gz 1079850 BLAKE2B 7d7eb5a55455fc300d265b5efa652310d0e08b1c4a688221ca0ad8d578b423efac1bd00cd637f1918d1ba9fe903c5890e63c1ce3dab80e9e8f312083be824898 SHA512 db4a2352af0cb220dc0c12de8796d17bbfb71e1aa7de1743dfe534fe4f54c38217f893f0fcaef1dc97509198eec7446d352e92077644664d4bf48acbc2a7897f
diff --git a/games-arcade/bomns/bomns-0.99.2-r2.ebuild b/games-arcade/bomns/bomns-0.99.2-r2.ebuild
new file mode 100644
index 000000000000..e53264cf243f
--- /dev/null
+++ b/games-arcade/bomns/bomns-0.99.2-r2.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools flag-o-matic
+
+DESCRIPTION="Fast-paced multiplayer deathmatch arcade game"
+HOMEPAGE="https://github.com/keithfancher/Bomns-for-Linux"
+SRC_URI="https://downloads.sourceforge.net/greenridge/${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="gtk editor"
+
+DEPEND="
+ media-libs/libsdl[video]
+ media-libs/sdl-mixer
+ gtk? ( x11-libs/gtk+:2 )
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-fpe.patch
+ "${FILESDIR}"/${P}-c23.patch
+ "${FILESDIR}"/${P}-clang.patch
+)
+
+src_prepare() {
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ filter-flags -fforce-addr
+ econf \
+ --disable-launcher1 \
+ $(use_enable gtk launcher2) \
+ $(use_enable editor)
+}
diff --git a/games-arcade/bomns/files/bomns-0.99.2-c23.patch b/games-arcade/bomns/files/bomns-0.99.2-c23.patch
new file mode 100644
index 000000000000..a4355d08477f
--- /dev/null
+++ b/games-arcade/bomns/files/bomns-0.99.2-c23.patch
@@ -0,0 +1,26 @@
+Fix build with C23
+https://bugs.gentoo.org/936565
+diff '--color=auto' -ru bomns-0.99.2.old/src/launcher2/main.c bomns-0.99.2/src/launcher2/main.c
+--- a/src/launcher2/main.c 2025-03-02 16:28:35.646507541 +0400
++++ b/src/launcher2/main.c 2025-03-02 16:29:13.890873033 +0400
+@@ -27,6 +27,7 @@
+ #include <gtk/gtk.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <ctype.h>
+
+ #include "main.h"
+ #include "interface.h"
+diff '--color=auto' -ru bomns-0.99.2.old/src/launcher2/main.h bomns-0.99.2/src/launcher2/main.h
+--- a/src/launcher2/main.h 2025-03-02 16:28:35.646507541 +0400
++++ b/src/launcher2/main.h 2025-03-02 16:29:54.746212077 +0400
+@@ -26,7 +26,7 @@
+ void set_defaults();
+ void write_bomns_rc();
+ void load_bomns_rc();
+-void parse_bomns_rc();
++void parse_bomns_rc(const char * cszBuf);
+
+
+ #endif
+Only in bomns-0.99.2/src/launcher2: main.o
diff --git a/games-arcade/bomns/files/bomns-0.99.2-clang.patch b/games-arcade/bomns/files/bomns-0.99.2-clang.patch
new file mode 100644
index 000000000000..eaf7b4ebfbb7
--- /dev/null
+++ b/games-arcade/bomns/files/bomns-0.99.2-clang.patch
@@ -0,0 +1,35 @@
+Static-cast int to Sint16, for clang
+https://bugs.gentoo.org/730794
+--- a/src/bomns.cpp
++++ b/src/bomns.cpp
+@@ -643,7 +643,7 @@
+ int nDig1 = (int)floor(nNum / 10);
+ int nDig2 = nNum % 10;
+ SDL_Rect rcSrc = {0, 0, 0, 0};
+- SDL_Rect rcDest = {nX, nY, 15, 20};
++ SDL_Rect rcDest = {static_cast<Sint16>(nX), static_cast<Sint16>(nY), 15, 20};
+
+ //three digit num
+ if(nDig0 || bPad)
+--- a/src/level.cpp
++++ b/src/level.cpp
+@@ -163,8 +163,8 @@
+
+ bool DrawExplosion(int nX, int nY, SDL_Surface * psdlsDest, int nExplosionState)
+ {
+- SDL_Rect rcDest = {nX, nY, 10, 10};
+- SDL_Rect rcSrc = {(nExplosionState == EXPLOSION_1 ? 90 : (nExplosionState == EXPLOSION_2 ? 150 : 160)), 0, 10, 10};
++ SDL_Rect rcDest = {static_cast<Sint16>(nX), static_cast<Sint16>(nY), 10, 10};
++ SDL_Rect rcSrc = {static_cast<Sint16>(nExplosionState == EXPLOSION_1 ? 90 : (nExplosionState == EXPLOSION_2 ? 150 : 160)), 0, 10, 10};
+ if(SDL_BlitSurface(g_psdlsObjects, &rcSrc, psdlsDest, &rcDest) < 0)
+ return FALSE;
+
+@@ -173,7 +173,7 @@
+
+ bool ClearTile(int nX, int nY, SDL_Surface * psdlsDest)
+ {
+- SDL_Rect rcDest = {nX * 10, nY * 10, 10, 10};
++ SDL_Rect rcDest = {static_cast<Sint16>(nX * 10), static_cast<Sint16>(nY * 10), 10, 10};
+ // SDL_Rect rcSrc = {X: 246 - 255}
+ SDL_Rect rcSrc = {246, 0, 10, 10};
+ if(SDL_BlitSurface(g_psdlsObjects, &rcSrc, psdlsDest, &rcDest) < 0)
diff --git a/games-arcade/bomns/files/bomns-0.99.2-fpe.patch b/games-arcade/bomns/files/bomns-0.99.2-fpe.patch
new file mode 100644
index 000000000000..273212a4f6e1
--- /dev/null
+++ b/games-arcade/bomns/files/bomns-0.99.2-fpe.patch
@@ -0,0 +1,14 @@
+--- a/src/bomns.cpp
++++ b/src/bomns.cpp
+@@ -432,7 +432,10 @@
+ if(g_bShowFps)
+ {
+ dwFpsTimer = SDL_GetTicks() - dwFpsTimer;
+- nFps = 1000l / dwFpsTimer;
++ if (dwFpsTimer)
++ nFps = 1000l / dwFpsTimer;
++ else
++ nFps = 1000l;
+ }
+
+
diff --git a/games-arcade/bomns/metadata.xml b/games-arcade/bomns/metadata.xml
new file mode 100644
index 000000000000..2c5a99662f2e
--- /dev/null
+++ b/games-arcade/bomns/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <use>
+ <flag name="editor">enables building the level editor</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">greenridge</remote-id>
+ <remote-id type="github">keithfancher/Bomns-for-Linux</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/briquolo/Manifest b/games-arcade/briquolo/Manifest
new file mode 100644
index 000000000000..90b39d37416e
--- /dev/null
+++ b/games-arcade/briquolo/Manifest
@@ -0,0 +1 @@
+DIST briquolo-0.5.7.tar.bz2 2588084 BLAKE2B 4ec87a161df72f9cc0df592a5b18cdf7a42e9f66675b6eeec20f57f6be599942940eb341dc4927405a1402f1356f52bdd1bea2a6b72c5f36abf229c1ef42e5be SHA512 4ef78193c80ac3554b72149b8da9b5cfd5b8fd68932e5b52666d74642e94a7a3a596dbb6d2865cba526929dd6d9be89743847d5e77b6fbc687c32394bc3be3d2
diff --git a/games-arcade/briquolo/briquolo-0.5.7.ebuild b/games-arcade/briquolo/briquolo-0.5.7.ebuild
new file mode 100644
index 000000000000..fff6d3ea6456
--- /dev/null
+++ b/games-arcade/briquolo/briquolo-0.5.7.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop
+
+DESCRIPTION="Breakout with 3D representation based on OpenGL"
+HOMEPAGE="http://briquolo.free.fr/en/index.html"
+SRC_URI="http://briquolo.free.fr/download/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="nls"
+
+RDEPEND="
+ virtual/opengl
+ virtual/glu
+ media-libs/libsdl[joystick,sound,video]
+ media-libs/sdl-mixer
+ media-libs/sdl-ttf
+ media-libs/libpng:0
+ nls? ( virtual/libintl )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="nls? ( sys-devel/gettext )"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-gcc43.patch
+ "${FILESDIR}"/${P}-libpng14.patch
+ "${FILESDIR}"/${P}-respect-AR.patch
+ "${FILESDIR}"/${P}-gcc11-fix-const.patch
+ "${FILESDIR}"/${P}-clang-widening.patch
+)
+
+src_prepare() {
+ default
+
+ # No thanks, we'll take care of it.
+ sed -i \
+ -e '/^SUBDIRS/s/desktop//' \
+ Makefile.{in,am} || die
+ sed -i \
+ -e "/CXXFLAGS/s|-O3|${CXXFLAGS}|" \
+ -e 's:=.*share/locale:=/usr/share/locale:' \
+ configure{,.ac} || die
+ sed -i \
+ -e 's:$(datadir)/locale:/usr/share/locale:' \
+ po/Makefile.in.in || die
+
+ eautoreconf
+}
+
+src_configure() {
+ econf $(use_enable nls)
+}
+
+src_install() {
+ default
+ doicon desktop/briquolo.svg
+ make_desktop_entry briquolo Briquolo
+}
diff --git a/games-arcade/briquolo/files/briquolo-0.5.7-clang-widening.patch b/games-arcade/briquolo/files/briquolo-0.5.7-clang-widening.patch
new file mode 100644
index 000000000000..5afaaefd5848
--- /dev/null
+++ b/games-arcade/briquolo/files/briquolo-0.5.7-clang-widening.patch
@@ -0,0 +1,31 @@
+https://bugs.gentoo.org/739094
+https://svnweb.freebsd.org/ports/head/games/briquolo/files/patch-src-MOGL-MOGL_PoliceTTF.h?revision=460698&view=co
+
+Fix types passed to SDL_Rect structure (SDL 1.2)
+
+--- a/src/MOGL/MOGL_PoliceTTF.h
++++ b/src/MOGL/MOGL_PoliceTTF.h
+@@ -42,10 +42,10 @@
+ {
+ GLuint TextureName;
+ Uint16 carac;
+- unsigned int x1;
+- unsigned int y1;
+- unsigned int x2;
+- unsigned int y2;
++ Sint16 x1;
++ Sint16 y1;
++ int x2;
++ int y2;
+ };
+
+ struct MOGL_Struct_TextureCarac
+@@ -141,7 +141,7 @@
+ MOGL_Struct_Carac * _Caracteres;
+ MOGL_Struct_Carac * (_Correspondance[256-32]);
+
+- unsigned int _LastTextureX, _LastTextureY;
++ Sint16 _LastTextureX, _LastTextureY;
+ unsigned int maxHeightCarac;
+ MOGL_Map_Carac _MapCarac;
+ MOGL_Vector_TextureName _VectorTextureName;
diff --git a/games-arcade/briquolo/files/briquolo-0.5.7-gcc11-fix-const.patch b/games-arcade/briquolo/files/briquolo-0.5.7-gcc11-fix-const.patch
new file mode 100644
index 000000000000..d5d68819675a
--- /dev/null
+++ b/games-arcade/briquolo/files/briquolo-0.5.7-gcc11-fix-const.patch
@@ -0,0 +1,12 @@
+https://bugs.gentoo.org/790746
+--- a/src/MOGL/MOGL_Fenetre.h
++++ b/src/MOGL/MOGL_Fenetre.h
+@@ -52,7 +52,7 @@ class MOGL_Fenetre
+ private:
+ struct CompareResolution
+ {
+- bool operator() (const MOGL_Resolution & x, const MOGL_Resolution & y)
++ bool operator() (const MOGL_Resolution & x, const MOGL_Resolution & y) const
+ {
+ return x.w < y.w;
+ }
diff --git a/games-arcade/briquolo/files/briquolo-0.5.7-gcc43.patch b/games-arcade/briquolo/files/briquolo-0.5.7-gcc43.patch
new file mode 100644
index 000000000000..ba2690792dd5
--- /dev/null
+++ b/games-arcade/briquolo/files/briquolo-0.5.7-gcc43.patch
@@ -0,0 +1,74 @@
+--- a/src/Constante.cpp
++++ b/src/Constante.cpp
+@@ -27,6 +27,7 @@
+ #define DATADIR_BRIQUOLO "./"
+ #define PACKAGE "briquolo"
+ #endif
++#include <cstdlib>
+
+ #ifdef WIN32
+ #define WIN32_LEAN_AND_MEAN
+--- a/src/MOGL/MOGL_EnsembleObjet.cpp
++++ b/src/MOGL/MOGL_EnsembleObjet.cpp
+@@ -24,7 +24,8 @@
+ #include "MOGL_Armature.h"
+ #include "MOGL_Peau.h"
+ //#include
+-#include <stdio.h>
++#include <cstdio>
++#include <cstring>
+
+ //#include <mmsystem.h>
+
+--- a/src/MOGL/MOGL_GestionnaireObjet.cpp
++++ b/src/MOGL/MOGL_GestionnaireObjet.cpp
+@@ -21,6 +21,7 @@
+ *****************************************************************************/
+ #include "../I18n.h"
+ #include "MOGL_GestionnaireObjet.h"
++#include <cstring>
+
+ bool MOGL_GestionnaireObjet::ChargerObjetASCTriangle(const char * p_NomFichier, const MOGL_GestionnaireTexture & p_GM,
+ MOGL_Objet & p_Objet)
+--- a/src/MOGL/MOGL_GestionnaireObjet.h
++++ b/src/MOGL/MOGL_GestionnaireObjet.h
+@@ -24,7 +24,8 @@
+
+ #include <vector>
+ #include <iostream>
+-#include <stdio.h>
++#include <cstdio>
++#include <cstring>
+
+ #include "MOGL_Triangle.h"
+ #include "MOGL_Objet.h"
+--- a/src/MOGL/MOGL_Image.h
++++ b/src/MOGL/MOGL_Image.h
+@@ -24,6 +24,7 @@
+
+ #include "MOGL_Structure.h"
+ #include <string>
++#include <cstring>
+
+ using namespace std;
+
+--- a/src/MOGL/MOGL_Objet.cpp
++++ b/src/MOGL/MOGL_Objet.cpp
+@@ -20,6 +20,7 @@
+ *
+ *****************************************************************************/
+ #include "MOGL_Objet.h"
++#include <cstdlib>
+
+ //MOGL_Objet::MOGL_Objet(): MOGL_ObjetAbstrait(), MOGL_ElementArbre()
+ MOGL_Objet::MOGL_Objet(): MOGL_Noeud(), _ModifieTriangle(true), _ModifieStrip(true),
+--- a/src/MOGL/MOGL_Peau.cpp
++++ b/src/MOGL/MOGL_Peau.cpp
+@@ -20,6 +20,7 @@
+ *
+ *****************************************************************************/
+ #include "MOGL_Peau.h"
++#include <cstdlib>
+
+ MOGL_Peau::MOGL_Peau(): MOGL_Noeud(), _ModifieTriangle(true)
+ {
diff --git a/games-arcade/briquolo/files/briquolo-0.5.7-libpng14.patch b/games-arcade/briquolo/files/briquolo-0.5.7-libpng14.patch
new file mode 100644
index 000000000000..201922e24e61
--- /dev/null
+++ b/games-arcade/briquolo/files/briquolo-0.5.7-libpng14.patch
@@ -0,0 +1,31 @@
+http://bugs.gentoo.org/show_bug.cgi?id=308667
+
+--- a/src/MOGL/MOGL_Image.cpp
++++ b/src/MOGL/MOGL_Image.cpp
+@@ -183,7 +183,7 @@ bool MOGL_Image::ChargerPNG(const char *
+ info_ptr = png_create_info_struct(png_ptr);
+ if (info_ptr == NULL)
+ {
+- png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
++ png_destroy_read_struct(&png_ptr, NULL, NULL);
+ return false;
+ }
+
+@@ -191,7 +191,7 @@ bool MOGL_Image::ChargerPNG(const char *
+ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ // On libre la mmoire
+- png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
++ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return false;
+ }
+
+@@ -235,7 +235,7 @@ bool MOGL_Image::ChargerPNG(const char *
+ /* Expand grayscale images to the full 8 bits from 1, 2, or 4 bits/pixel */
+ if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
+ {
+- png_set_gray_1_2_4_to_8(png_ptr);
++ png_set_expand_gray_1_2_4_to_8(png_ptr);
+ }
+
+ /* Expand paletted or RGB images with transparency to full alpha channels
diff --git a/games-arcade/briquolo/files/briquolo-0.5.7-respect-AR.patch b/games-arcade/briquolo/files/briquolo-0.5.7-respect-AR.patch
new file mode 100644
index 000000000000..2cccf8341e9a
--- /dev/null
+++ b/games-arcade/briquolo/files/briquolo-0.5.7-respect-AR.patch
@@ -0,0 +1,10 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -16,6 +16,7 @@ AM_INIT_AUTOMAKE(dist-bzip2)
+ # Checks for programs.
+ AC_PROG_CXX
+ AC_PROG_CC
++AM_PROG_AR
+ AC_PROG_INSTALL
+ AC_PROG_RANLIB
+ AC_PROG_YACC
diff --git a/games-arcade/briquolo/metadata.xml b/games-arcade/briquolo/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/briquolo/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/bumprace/Manifest b/games-arcade/bumprace/Manifest
new file mode 100644
index 000000000000..32a4efc29b48
--- /dev/null
+++ b/games-arcade/bumprace/Manifest
@@ -0,0 +1 @@
+DIST bumprace-1.5.8.tar.gz 4353423 BLAKE2B 6d6c7f937ba1270c2544f4af0153772ca7428b4cb15b4129a18d17c1ebcd82b482d0557010268d4e009b41251b84b950cccb431abd3eef262df1cec120e90240 SHA512 bffc1d829deb048644fa21eb4566e2008573c0ee2e6f96e75470c8a6fa4cacb788cb93adf6e24b53f32884fd999880ffc527a903ce617a376cb5aae4c1b97480
diff --git a/games-arcade/bumprace/bumprace-1.5.8.ebuild b/games-arcade/bumprace/bumprace-1.5.8.ebuild
new file mode 100644
index 000000000000..7f95ce5a70b1
--- /dev/null
+++ b/games-arcade/bumprace/bumprace-1.5.8.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop
+
+DESCRIPTION="Simple arcade racing game"
+HOMEPAGE="https://www.linux-games.com/bumprace/"
+SRC_URI="https://github.com/karlb/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ media-libs/libjpeg-turbo:=
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-image[gif,jpeg,png]
+ media-libs/sdl-mixer[mod]
+ virtual/zlib:=
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/${P}-C23.patch" )
+
+src_install() {
+ default
+ make_desktop_entry bumprace BumpRace
+}
diff --git a/games-arcade/bumprace/files/bumprace-1.5.8-C23.patch b/games-arcade/bumprace/files/bumprace-1.5.8-C23.patch
new file mode 100644
index 000000000000..506502b4b425
--- /dev/null
+++ b/games-arcade/bumprace/files/bumprace-1.5.8-C23.patch
@@ -0,0 +1,13 @@
+StartText doesn't take an argument
+https://bugs.gentoo.org/966631
+--- a/src/bumprace.c 2026-02-13 16:02:19.108518662 +0300
++++ b/src/bumprace.c 2026-02-13 16:05:19.152697531 +0300
+@@ -1178,7 +1178,7 @@
+ sprintf(text,"%s/font.scl",DATAPATH);
+ Font=LoadImage("font.png",3);
+ InitFont(Font);
+- if (final) StartText(i);
++ if (final) StartText();
+ //load data
+ printf("** Loading Data **\n");
+ #ifdef SOUND
diff --git a/games-arcade/bumprace/metadata.xml b/games-arcade/bumprace/metadata.xml
new file mode 100644
index 000000000000..4d85c96552e0
--- /dev/null
+++ b/games-arcade/bumprace/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+<upstream>
+ <remote-id type="github">karlb/bumprace</remote-id>
+</upstream>
+</pkgmetadata>
diff --git a/games-arcade/burgerspace/Manifest b/games-arcade/burgerspace/Manifest
new file mode 100644
index 000000000000..aac70471d4ed
--- /dev/null
+++ b/games-arcade/burgerspace/Manifest
@@ -0,0 +1 @@
+DIST burgerspace-1.10.0.tar.gz 251038 BLAKE2B 7dd6f0e18c3ff7229b64ad5a833dc9064486e8f5337f4bd37189a8b6a911c5cf062d4cc0ac80b203677d813fca648390f296f92ddfa60762bc964f12f4a11a37 SHA512 7ce6fa48829414ff7a48cb038b87842112c18829769105f34a842bffcfe99072ed6201ba3772f98efd115b8ffd9de0d1d15dc9f8b80a5f978f5763b72a358d8c
diff --git a/games-arcade/burgerspace/burgerspace-1.10.0.ebuild b/games-arcade/burgerspace/burgerspace-1.10.0.ebuild
new file mode 100644
index 000000000000..11adfb6b226c
--- /dev/null
+++ b/games-arcade/burgerspace/burgerspace-1.10.0.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools xdg
+
+DESCRIPTION="Clone of the 1982 BurgerTime video game by Data East"
+HOMEPAGE="http://perso.b2b2c.ca/~sarrazip/dev/burgerspace.html"
+SRC_URI="http://perso.b2b2c.ca/~sarrazip/dev/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+RESTRICT="test" # doesn't really test anything
+
+RDEPEND=">=dev-games/flatzebra-0.2.0
+ media-libs/libsdl[joystick]
+ media-libs/sdl-image
+ media-libs/sdl-mixer"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+src_prepare() {
+ default
+ eautoreconf
+}
diff --git a/games-arcade/burgerspace/metadata.xml b/games-arcade/burgerspace/metadata.xml
new file mode 100644
index 000000000000..e244e2dd99bb
--- /dev/null
+++ b/games-arcade/burgerspace/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/games-arcade/cdogs-sdl/Manifest b/games-arcade/cdogs-sdl/Manifest
new file mode 100644
index 000000000000..7a8878aea312
--- /dev/null
+++ b/games-arcade/cdogs-sdl/Manifest
@@ -0,0 +1 @@
+DIST cdogs-sdl-2.4.0.tar.gz 38581993 BLAKE2B eef45e36498759d5be836d1c560022f1589f92d0773a0c0a458e9bd11b5fcdf342c16fd925a6bc6f99ea2c2cf40a26e0906cfd44f6ced44093f7ebbcd6146403 SHA512 71033d11e53b8e3bd7f0c5f31c87c8d57d07a8de017fc9f2f277f0985e11f4f33e8cc642761ab266c7b0bd8f97df69f5f7b8693db0c0aba56d0134e3e095c17d
diff --git a/games-arcade/cdogs-sdl/cdogs-sdl-2.4.0.ebuild b/games-arcade/cdogs-sdl/cdogs-sdl-2.4.0.ebuild
new file mode 100644
index 000000000000..3a5f435b8e4d
--- /dev/null
+++ b/games-arcade/cdogs-sdl/cdogs-sdl-2.4.0.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake flag-o-matic xdg
+
+DESCRIPTION="Classic overhead run-and-gun game"
+HOMEPAGE="https://cxong.github.io/cdogs-sdl/"
+SRC_URI="
+ https://github.com/cxong/cdogs-sdl/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.tar.gz
+"
+
+LICENSE="
+ GPL-2+
+ BSD-2 CC-BY-3.0 CC-BY-4.0 CC-BY-SA-3.0 CC0-1.0 WTFPL-2 XMAME public-domain
+ || ( MIT Unlicense )
+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ media-libs/libsdl2[haptic,opengl]
+ media-libs/sdl2-mixer[mp3,vorbis,wav]
+ net-libs/enet:1.3=
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.1.1-cmake.patch
+)
+
+CMAKE_QA_COMPAT_SKIP=1
+
+src_configure() {
+ filter-lto #858527
+
+ local mycmakeargs=(
+ -DCDOGS_DATA_DIR="${EPREFIX}"/usr/share/${PN}/ # trailing / is needed
+ -DBUILD_EDITOR=OFF
+ -DBUILD_TESTING=$(usex test)
+ -DUSE_SHARED_ENET=ON
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ dodoc doc/{AUTHORS,original_readme.txt}
+
+ # CREDITS is used at runtime, rest is licenses or duplicates
+ find "${ED}"/usr/share/${PN}/doc -type f ! -name CREDITS -delete || die
+}
diff --git a/games-arcade/cdogs-sdl/files/cdogs-sdl-1.1.1-cmake.patch b/games-arcade/cdogs-sdl/files/cdogs-sdl-1.1.1-cmake.patch
new file mode 100644
index 000000000000..92ce17bcbc39
--- /dev/null
+++ b/games-arcade/cdogs-sdl/files/cdogs-sdl-1.1.1-cmake.patch
@@ -0,0 +1,14 @@
+Remove -Werror and install data to CDOGS_DATA_DIR rather
+than directly under CMAKE_INSTALL_PREFIX.
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -128,3 +128,3 @@
+ if(NOT BEOS AND NOT HAIKU)
+- add_definitions(-Winline -Werror)
++ add_definitions(-Winline)
+ set(EXTRA_LIBRARIES "m")
+@@ -195,3 +195,3 @@
+ set(LIB_EXTENSION ".so")
+- set(DATA_INSTALL_DIR ".")
++ set(DATA_INSTALL_DIR ${CDOGS_DATA_DIR})
+ endif()
diff --git a/games-arcade/cdogs-sdl/metadata.xml b/games-arcade/cdogs-sdl/metadata.xml
new file mode 100644
index 000000000000..7a09ee92f034
--- /dev/null
+++ b/games-arcade/cdogs-sdl/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+<longdescription lang="en">
+C-Dogs SDL is a classic overhead run-and-gun game, supporting up to 4 players in
+co-op and deathmatch modes. Customize your player, choose from many weapons, and
+blast, slide and slash your way through over 100 user-created campaigns. Have
+fun!
+</longdescription>
+<upstream>
+ <bugs-to>https://github.com/cxong/cdogs-sdl/issues</bugs-to>
+ <doc lang="en">https://cxong.github.io/cdogs-sdl/</doc>
+ <remote-id type="github">cxong/cdogs-sdl</remote-id>
+</upstream>
+</pkgmetadata>
diff --git a/games-arcade/ceferino/Manifest b/games-arcade/ceferino/Manifest
new file mode 100644
index 000000000000..04a77a951758
--- /dev/null
+++ b/games-arcade/ceferino/Manifest
@@ -0,0 +1 @@
+DIST ceferino_0.97.8+svn37.orig.tar.gz 2104956 BLAKE2B b3cb68d37e383223def569a333950511e4506b1bea1337189dda36e4c04fd6261c45d532bb2ad3691e73989e8ce5544f7d5e750d035081441f8241401d62217b SHA512 83bccb39f0ecd9f41767c4d94cebb3266c77f11eb22d6cf517f6488af384bad88bdd538b5746e0a3c6e1a57481a4c946ec03afb97a000cd21664d3f179e1a9b6
diff --git a/games-arcade/ceferino/ceferino-0.97.8-r3.ebuild b/games-arcade/ceferino/ceferino-0.97.8-r3.ebuild
new file mode 100644
index 000000000000..e9f380a370e9
--- /dev/null
+++ b/games-arcade/ceferino/ceferino-0.97.8-r3.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop
+
+DESCRIPTION="Super-Pang clone (destroy bouncing balloons with your grapnel)"
+HOMEPAGE="http://www.losersjuegos.com.ar/juegos/ceferino"
+SRC_URI="mirror://debian/pool/main/c/ceferino/${PN}_${PV}+svn37.orig.tar.gz"
+S="${WORKDIR}/${P}+svn37"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="nls"
+
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-image[jpeg,png]
+ media-libs/sdl-mixer[mod]
+ nls? ( virtual/libintl )"
+DEPEND="${RDEPEND}"
+BDEPEND="nls? ( sys-devel/gettext )"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-fix-audio.patch
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ econf $(use_enable nls)
+}
+
+src_install() {
+ default
+ newicon data/ima/icono.png ${PN}.png
+ make_desktop_entry ${PN} "Don Ceferino Haza単a"
+}
diff --git a/games-arcade/ceferino/files/ceferino-0.97.8-fix-audio.patch b/games-arcade/ceferino/files/ceferino-0.97.8-fix-audio.patch
new file mode 100644
index 000000000000..6ac1de0d07f8
--- /dev/null
+++ b/games-arcade/ceferino/files/ceferino-0.97.8-fix-audio.patch
@@ -0,0 +1,11 @@
+12 .wav files for an array with 11 elements invokes undefined behavior.
+
+--- a/src/audio.h
++++ b/src/audio.h
+@@ -50,5 +50,5 @@
+ int canal_musica;
+
+- Mix_Chunk *sonidos[11];
++ Mix_Chunk *sonidos[12];
+ Mix_Music *musicas[2];
+
diff --git a/games-arcade/ceferino/metadata.xml b/games-arcade/ceferino/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/ceferino/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/circuslinux/Manifest b/games-arcade/circuslinux/Manifest
new file mode 100644
index 000000000000..02c145866909
--- /dev/null
+++ b/games-arcade/circuslinux/Manifest
@@ -0,0 +1 @@
+DIST circuslinux-1.0.3.tar.gz 1253839 BLAKE2B 1f0b57e417144b88688b2f900efebd95d35d7656a16a1b074197e0bd1fb33de3434582ac66e3bf996e7f1fbaafaefadc5091967696eecfcbbdf4a1c2316e0d17 SHA512 292bcaad39342ad69862f1add36b11505ca5f2601637a8db6fad438c5a4b32d7801bc7e6c08b903b0fb8bf68dcb3ec8d968fb913cde65941b9b9ac64b5a5266f
diff --git a/games-arcade/circuslinux/circuslinux-1.0.3-r2.ebuild b/games-arcade/circuslinux/circuslinux-1.0.3-r2.ebuild
new file mode 100644
index 000000000000..ac0c4dcdce1d
--- /dev/null
+++ b/games-arcade/circuslinux/circuslinux-1.0.3-r2.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Clone of the Atari 2600 game \"Circus Atari\""
+HOMEPAGE="http://www.newbreedsoftware.com/circus-linux/"
+SRC_URI="https://tuxpaint.org/ftp/unix/x/circus-linux/src/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ media-libs/libsdl[joystick,sound,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer[mod]"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ tc-export CC
+ sed -i 's/-O2//' Makefile.in || die
+ sed -i 's/$(pkgdatadir)/$(DESTDIR)&/' data/Makefile.in || die
+}
+
+src_configure() {
+ tc-export CC
+ econf --enable-joystick
+}
+
+src_install() {
+ emake DESTDIR="${D}" docdir="${EPREFIX}/usr/share/doc/${PF}" install
+
+ newicon data/images/${PN}-icon.xpm ${PN}.xpm
+ make_desktop_entry ${PN} "Circus Linux!"
+}
diff --git a/games-arcade/circuslinux/metadata.xml b/games-arcade/circuslinux/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/circuslinux/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/commandergenius/Manifest b/games-arcade/commandergenius/Manifest
new file mode 100644
index 000000000000..07adee494f7a
--- /dev/null
+++ b/games-arcade/commandergenius/Manifest
@@ -0,0 +1 @@
+DIST Commander-Genius-v3.6.1.tar.bz2 55509384 BLAKE2B 2b98d9629128f0fe7b0d688d79d695b0cf3f36f13c009b81537a1bedc6bb04d15ef0fc17634af5692c3d022a40e098c83c2601862b9a2579db049ec471ad72e9 SHA512 d0e2a074c75d2634900d31308fe42c117f676c4d88786a977207f25cedf6ec22b365098176de24109ba2d50c4c693f29dd11dd6edce50aaafc043c5fa205b20a
diff --git a/games-arcade/commandergenius/commandergenius-3.6.1.ebuild b/games-arcade/commandergenius/commandergenius-3.6.1.ebuild
new file mode 100644
index 000000000000..f375ca77373b
--- /dev/null
+++ b/games-arcade/commandergenius/commandergenius-3.6.1.ebuild
@@ -0,0 +1,88 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake flag-o-matic xdg
+
+MY_P=Commander-Genius-v${PV}
+
+DESCRIPTION="Open Source Commander Keen clone (needs original game files)"
+HOMEPAGE="https://clonekeenplus.sourceforge.io/"
+SRC_URI="https://gitlab.com/Dringgstein/Commander-Genius/-/archive/v${PV}/${MY_P}.tar.bz2"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="+downloader opengl"
+RESTRICT="mirror" # contains keen files, but we do not install them
+
+RDEPEND="
+ media-libs/libsdl2[opengl?,video]
+ media-libs/sdl2-image
+ media-libs/sdl2-mixer[vorbis]
+ media-libs/sdl2-ttf
+ virtual/minizip:=
+ downloader? ( net-misc/curl )
+ opengl? ( media-libs/libglvnd )
+"
+DEPEND="
+ ${RDEPEND}
+ dev-libs/boost
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.3.1-build.patch
+ "${FILESDIR}"/${PN}-3.6.1-paths.patch
+ "${FILESDIR}"/${P}-desktop-icon-ext.patch
+)
+
+src_prepare() {
+ # Drop unneeded code to avoid CMake issues.
+ rm -r tools || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ filter-lto #858530
+
+ local mycmakeargs=(
+ -DBUILD_SHARED_LIBS=no
+ -DCCACHE_FOUND=no
+ -DAPPDIR="${EPREFIX}"/usr/bin
+ -DDOCDIR="${EPREFIX}"/usr/share/doc/${PF}
+ -DGAMES_SHAREDIR="${EPREFIX}"/usr/share
+ -DDOWNLOADER=$(usex downloader)
+ -DUSE_OPENGL=$(usex opengl)
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ # default executable name is weird
+ dosym CGeniusExe /usr/bin/${PN}
+
+ # game data can be manually installed here
+ keepdir /usr/share/${PN}/games
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ elog "Run ${PN} to start the game. It will search for game data"
+ elog "in ~/.CommanderGenius/games and ${EPREFIX}${GAMESDIR}."
+ elog "You can also specify paths in cgenius.cfg or pass paths as an"
+ elog "argument."
+ elog
+ use downloader && elog "Data for some games can be downloaded from the menu."
+ elog
+ elog "Check your settings in ~/.CommanderGenius/cgenius.cfg after you have"
+ elog "started the game for the first time."
+ elog
+ use opengl && elog "You may also want to set \"OpenGL = true\"."
+}
diff --git a/games-arcade/commandergenius/files/commandergenius-2.3.1-build.patch b/games-arcade/commandergenius/files/commandergenius-2.3.1-build.patch
new file mode 100644
index 000000000000..b5a9e1288a60
--- /dev/null
+++ b/games-arcade/commandergenius/files/commandergenius-2.3.1-build.patch
@@ -0,0 +1,12 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9733f6d78..b515ee7a1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -78,7 +78,6 @@ add_subdirectory("src")
+
+ MESSAGE( STATUS "CG_VERSION = ${CG_VERSION}" )
+
+-INCLUDE(package.cmake)
+
+ MESSAGE( STATUS "Build system is prepared. To Build the project just type \"make\"" )
+ MESSAGE( STATUS "If you want to create the installation package just type \"make package\" after you build the project" )
diff --git a/games-arcade/commandergenius/files/commandergenius-3.6.1-desktop-icon-ext.patch b/games-arcade/commandergenius/files/commandergenius-3.6.1-desktop-icon-ext.patch
new file mode 100644
index 000000000000..f4c344b04992
--- /dev/null
+++ b/games-arcade/commandergenius/files/commandergenius-3.6.1-desktop-icon-ext.patch
@@ -0,0 +1,20 @@
+From 9bb4a985b2d66952789b10302b6848279817c2d5 Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Mon, 24 Nov 2025 11:42:47 +0000
+Subject: [PATCH] The Icon Theme Specification says Icon should not have an
+ extension
+
+--- a/share/cgenius.desktop
++++ b/share/cgenius.desktop
+@@ -2,7 +2,7 @@
+ Name=Commander Genius
+ Comment=Play natively Commander Keen Games
+ Exec=CGeniusExe
+-Icon=cg.svg
++Icon=cg
+ Terminal=false
+ Type=Application
+ StartupNotify=true
+--
+2.52.0
+
diff --git a/games-arcade/commandergenius/files/commandergenius-3.6.1-paths.patch b/games-arcade/commandergenius/files/commandergenius-3.6.1-paths.patch
new file mode 100644
index 000000000000..464f796c6bff
--- /dev/null
+++ b/games-arcade/commandergenius/files/commandergenius-3.6.1-paths.patch
@@ -0,0 +1,10 @@
+--- a/GsKit/base/interface/FindFile.cpp
++++ b/GsKit/base/interface/FindFile.cpp
+@@ -512,7 +512,6 @@ void InitBaseSearchPaths()
+ AddToFileList(&basesearchpaths, "${HOME}/.CommanderGenius");
+ #endif
+ #endif
+- AddToFileList(&basesearchpaths, ".");
+ AddToFileList(&basesearchpaths, SYSTEM_DATA_DIR"/commandergenius"); // no use of ${SYSTEM_DATA}, because it is uncommon and could cause confusion to the user
+ #endif
+ }
diff --git a/games-arcade/commandergenius/metadata.xml b/games-arcade/commandergenius/metadata.xml
new file mode 100644
index 000000000000..7a6ace45e180
--- /dev/null
+++ b/games-arcade/commandergenius/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <use>
+ <flag name="downloader">Allows some Keen games to be downloaded from the menu</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">clonekeenplus</remote-id>
+ <remote-id type="gitlab">Dringgstein/Commander-Genius</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/cosmosmash/Manifest b/games-arcade/cosmosmash/Manifest
new file mode 100644
index 000000000000..31a021e792d1
--- /dev/null
+++ b/games-arcade/cosmosmash/Manifest
@@ -0,0 +1 @@
+DIST cosmosmash-1.5.0.tar.gz 536986 BLAKE2B 07011857fdee30c104847e9ad2066795116fa2123c38184573d8b5a11154bbebe8991c6c51241658a65f23e20582e9759798bc986a3c4d9dee1c613f8400f333 SHA512 3be4b535d68eca185d3f48ff04c11c912fdcbc17470848650b20410030c7619f9dcffaeaf3bacb3a95eb37c5944724af7fc9978613c3252af1ec725504129c23
diff --git a/games-arcade/cosmosmash/cosmosmash-1.5.0.ebuild b/games-arcade/cosmosmash/cosmosmash-1.5.0.ebuild
new file mode 100644
index 000000000000..5b77da676179
--- /dev/null
+++ b/games-arcade/cosmosmash/cosmosmash-1.5.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="Space rock shooting video game"
+HOMEPAGE="https://perso.b2b2c.ca/~sarrazip/dev/cosmosmash.html"
+SRC_URI="http://perso.b2b2c.ca/~sarrazip/dev/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+RESTRICT="test" # uses the sound card which portage user might not be available.
+
+RDEPEND=">=dev-games/flatzebra-0.2.0
+ media-libs/libsdl[joystick]
+ media-libs/sdl-image
+ media-libs/sdl-mixer"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e "/^pkgsounddir/ s:sounds.*:\$(PACKAGE)/sounds:" \
+ -e "/^desktopentrydir/ s:=.*:=/usr/share/applications:" \
+ -e "/^pixmapdir/ s:=.*:=/usr/share/pixmaps:" \
+ src/Makefile.am \
+ || die
+
+ eautoreconf
+}
+
+src_install() {
+ emake -C src DESTDIR="${D}" install
+
+ einstalldocs
+ doman doc/${PN}.6
+}
diff --git a/games-arcade/cosmosmash/metadata.xml b/games-arcade/cosmosmash/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/cosmosmash/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/crack-attack/Manifest b/games-arcade/crack-attack/Manifest
new file mode 100644
index 000000000000..4865618e24b4
--- /dev/null
+++ b/games-arcade/crack-attack/Manifest
@@ -0,0 +1 @@
+DIST crack-attack-1.1.14.tar.bz2 801404 BLAKE2B 78c6fa9ee16ddb341aa1f11d1964c7036c85d0b1f0145c6fe57d585eb4c237fdb33d351f0d5510eabaf7666a63e74f8afbe0f09952ec1d4c5713a87a89963b82 SHA512 1afc1a59e25359a82cabc33a1f999e1166dcf74c031c29a366f8414989bc7c32b9a40e467ee40a37901f2bd08f4569fed25c4d3021b1a75254614840410a7bfa
diff --git a/games-arcade/crack-attack/crack-attack-1.1.14-r2.ebuild b/games-arcade/crack-attack/crack-attack-1.1.14-r2.ebuild
new file mode 100644
index 000000000000..8d7f8c43bd2e
--- /dev/null
+++ b/games-arcade/crack-attack/crack-attack-1.1.14-r2.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit autotools desktop
+
+DESCRIPTION="Addictive OpenGL-based block game"
+HOMEPAGE="http://www.nongnu.org/crack-attack/"
+SRC_URI="https://savannah.nongnu.org/download/crack-attack/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~hppa ~x86"
+IUSE="gtk sdl"
+
+RDEPEND="
+ media-libs/freeglut
+ sdl? (
+ media-libs/libsdl
+ media-libs/sdl-mixer
+ )
+ gtk? ( >=x11-libs/gtk+-2.6:2 )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-glut.patch
+ "${FILESDIR}"/${P}-gcc43.patch
+ "${FILESDIR}"/${P}-avoid_bashisms.patch
+)
+
+src_prepare() {
+ default
+
+ # SDL macro not bundled
+ # bug #779745
+ cp "${FILESDIR}/sdl.m4" . || die
+ AT_M4DIR="." eautoreconf
+
+ sed -i 's/-lXmu//' src/gtk-gui/Makefile.in src/Makefile.in || die
+ touch -r . * */*
+}
+
+src_configure() {
+ local myeconfargs=(
+ --disable-binreloc
+ $(use_enable sdl sound)
+ $(use_enable gtk)
+ )
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ HTML_DOCS="doc/*"
+ default
+ doicon data/crack-attack.xpm
+ make_desktop_entry crack-attack Crack-attack
+}
diff --git a/games-arcade/crack-attack/files/crack-attack-1.1.14-avoid_bashisms.patch b/games-arcade/crack-attack/files/crack-attack-1.1.14-avoid_bashisms.patch
new file mode 100644
index 000000000000..8f405710dae4
--- /dev/null
+++ b/games-arcade/crack-attack/files/crack-attack-1.1.14-avoid_bashisms.patch
@@ -0,0 +1,15 @@
+--- crack-attack-1.1.14/configure.ac
++++ crack-attack-1.1.14/configure.ac
+@@ -75,10 +75,10 @@
+ ],[found_sound=no]
+ )
+
+- if test "$enable_sound" == "yes" -a "$found_sound" == "no"; then
++ if test "$enable_sound" = "yes" -a "$found_sound" = "no"; then
+ AC_MSG_ERROR(libSDL and SDL_mixer are required for sound)
+ fi
+- if test "$found_sound" == "yes"; then
++ if test "$found_sound" = "yes"; then
+ AUDIO_CFLAGS="$SDL_CFLAGS"
+ AUDIO_LIBS="$SDL_LIBS -lSDL_mixer"
+ AC_DEFINE(AUDIO_ENABLED, 1, [Has audio support])
diff --git a/games-arcade/crack-attack/files/crack-attack-1.1.14-gcc43.patch b/games-arcade/crack-attack/files/crack-attack-1.1.14-gcc43.patch
new file mode 100644
index 000000000000..8cabe7eb2574
--- /dev/null
+++ b/games-arcade/crack-attack/files/crack-attack-1.1.14-gcc43.patch
@@ -0,0 +1,10 @@
+--- a/src/Game.h
++++ b/src/Game.h
+@@ -34,6 +34,7 @@
+ #include <climits>
+ #include <cstdlib>
+ #include <cmath>
++#include <cstring>
+
+ #ifdef __MINGW32__
+ # include <windows.h>
diff --git a/games-arcade/crack-attack/files/crack-attack-1.1.14-glut.patch b/games-arcade/crack-attack/files/crack-attack-1.1.14-glut.patch
new file mode 100644
index 000000000000..430d4e742f31
--- /dev/null
+++ b/games-arcade/crack-attack/files/crack-attack-1.1.14-glut.patch
@@ -0,0 +1,14 @@
+Fix from upstream to work with newer freegluts.
+
+http://bugs.gentoo.org/97954
+
+--- a/src/Attack.cxx
++++ b/src/Attack.cxx
+@@ -83,6 +83,7 @@
+ int height = -1, width = -1;
+
+ player_name[0] = '\0';
++ glutInit(&argc, argv);
+ parseCommandLine(argc, argv, mode, port, host_name, player_name, height, width);
+ run_crack_attack(mode, port, host_name, player_name, height, width);
+
diff --git a/games-arcade/crack-attack/files/sdl.m4 b/games-arcade/crack-attack/files/sdl.m4
new file mode 100644
index 000000000000..30e1f2144ee4
--- /dev/null
+++ b/games-arcade/crack-attack/files/sdl.m4
@@ -0,0 +1,180 @@
+# Configure paths for SDL
+# Sam Lantinga 9/21/99
+# stolen from Manish Singh
+# stolen back from Frank Belew
+# stolen from Manish Singh
+# Shamelessly stolen from Owen Taylor
+
+# serial 2
+
+dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
+dnl
+AC_DEFUN([AM_PATH_SDL],
+[dnl
+dnl Get the cflags and libraries from the sdl-config script
+dnl
+AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)],
+ sdl_prefix="$withval", sdl_prefix="")
+AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
+ sdl_exec_prefix="$withval", sdl_exec_prefix="")
+AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program],
+ , enable_sdltest=yes)
+
+ min_sdl_version=ifelse([$1], ,1.2.0,$1)
+
+ if test "x$sdl_prefix$sdl_exec_prefix" = x ; then
+ PKG_CHECK_MODULES([SDL], [sdl >= $min_sdl_version],
+ [sdl_pc=yes],
+ [sdl_pc=no])
+ else
+ sdl_pc=no
+ if test x$sdl_exec_prefix != x ; then
+ sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix"
+ if test x${SDL_CONFIG+set} != xset ; then
+ SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config
+ fi
+ fi
+ if test x$sdl_prefix != x ; then
+ sdl_config_args="$sdl_config_args --prefix=$sdl_prefix"
+ if test x${SDL_CONFIG+set} != xset ; then
+ SDL_CONFIG=$sdl_prefix/bin/sdl-config
+ fi
+ fi
+ fi
+
+ if test "x$sdl_pc" = xyes ; then
+ no_sdl=""
+ SDL_CONFIG="pkg-config sdl"
+ else
+ as_save_PATH="$PATH"
+ if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then
+ PATH="$prefix/bin:$prefix/usr/bin:$PATH"
+ fi
+ AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH])
+ PATH="$as_save_PATH"
+ AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
+ no_sdl=""
+
+ if test "$SDL_CONFIG" = "no" ; then
+ no_sdl=yes
+ else
+ SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags`
+ SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs`
+
+ sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_sdltest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $SDL_CFLAGS"
+ CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
+ LIBS="$LIBS $SDL_LIBS"
+dnl
+dnl Now check if the installed SDL is sufficiently new. (Also sanity
+dnl checks the results of sdl-config to some extent
+dnl
+ rm -f conf.sdltest
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <stdlib.h>
+#include "SDL.h"
+
+int main (int argc, char *argv[])
+{
+ int major, minor, micro;
+ FILE *fp = fopen("conf.sdltest", "w");
+
+ if (fp) fclose(fp);
+
+ if (sscanf("$min_sdl_version", "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_sdl_version");
+ exit(1);
+ }
+
+ if (($sdl_major_version > major) ||
+ (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
+ (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
+ printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
+ printf("*** best to upgrade to the required version.\n");
+ printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
+ printf("*** to point to the correct copy of sdl-config, and remove the file\n");
+ printf("*** config.cache before re-running configure\n");
+ return 1;
+ }
+}
+
+]])], [], [no_sdl=yes], [echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_sdl" = x ; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+ fi
+ if test "x$no_sdl" = x ; then
+ ifelse([$2], , :, [$2])
+ else
+ if test "$SDL_CONFIG" = "no" ; then
+ echo "*** The sdl-config script installed by SDL could not be found"
+ echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
+ echo "*** your path, or set the SDL_CONFIG environment variable to the"
+ echo "*** full path to sdl-config."
+ else
+ if test -f conf.sdltest ; then
+ :
+ else
+ echo "*** Could not run SDL test program, checking why..."
+ CFLAGS="$CFLAGS $SDL_CFLAGS"
+ CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
+ LIBS="$LIBS $SDL_LIBS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <stdio.h>
+#include "SDL.h"
+
+int main(int argc, char *argv[])
+{ return 0; }
+#undef main
+#define main K_and_R_C_main
+]], [[ return 0; ]])],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding SDL or finding the wrong"
+ echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means SDL was incorrectly installed"
+ echo "*** or that you have moved SDL since it was installed. In the latter case, you"
+ echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ])
+ CFLAGS="$ac_save_CFLAGS"
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ SDL_CFLAGS=""
+ SDL_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(SDL_CFLAGS)
+ AC_SUBST(SDL_LIBS)
+ rm -f conf.sdltest
+])
diff --git a/games-arcade/crack-attack/metadata.xml b/games-arcade/crack-attack/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/crack-attack/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/criticalmass/Manifest b/games-arcade/criticalmass/Manifest
new file mode 100644
index 000000000000..6d4759241c40
--- /dev/null
+++ b/games-arcade/criticalmass/Manifest
@@ -0,0 +1 @@
+DIST CriticalMass-1.0.2.tar.bz2 5122126 BLAKE2B 91642309270aa9a76c1639b213b14f5b1feecce9a1bd9a516b84618e33d454542e31a34ffc974bb0e584b2ff5d5bad6b9112906a0c818662df7eb1ad0d812470 SHA512 af3200adc4b6ed9f24eaa89ef5b2f31e8d09e402d0c2eef8db604afcbb2d36bad48e76c3c11c1b2410d2d4e0ffd8554e2e9749a8c8cc4752b4636b8919a66037
diff --git a/games-arcade/criticalmass/criticalmass-1.0.2-r2.ebuild b/games-arcade/criticalmass/criticalmass-1.0.2-r2.ebuild
new file mode 100644
index 000000000000..baa09a4e4820
--- /dev/null
+++ b/games-arcade/criticalmass/criticalmass-1.0.2-r2.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop flag-o-matic
+
+MY_P="CriticalMass-${PV}"
+
+DESCRIPTION="SDL/OpenGL space shoot'em up game"
+HOMEPAGE="https://criticalmass.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/criticalmass/${MY_P}.tar.bz2"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2+ ZLIB"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libglvnd[X]
+ media-libs/libpng:=
+ media-libs/libsdl[opengl,sound,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer[mod]
+ net-misc/curl
+ virtual/zlib:="
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-gcc43.patch
+ "${FILESDIR}"/${P}-system-curl.patch
+ "${FILESDIR}"/${P}-libpng.patch
+ "${FILESDIR}"/${P}-flags.patch
+)
+
+src_prepare() {
+ default
+
+ rm -r curl || die
+ eautoreconf
+
+ append-cxxflags -std=gnu++98 #612758
+}
+
+src_install() {
+ local HTML_DOCS="Readme.html"
+ default
+
+ rm "${ED}"/usr/bin/Packer || die #247449
+
+ newicon critter.png ${PN}.png
+ make_desktop_entry critter "Critical Mass"
+}
diff --git a/games-arcade/criticalmass/files/criticalmass-1.0.2-flags.patch b/games-arcade/criticalmass/files/criticalmass-1.0.2-flags.patch
new file mode 100644
index 000000000000..5677211c78a2
--- /dev/null
+++ b/games-arcade/criticalmass/files/criticalmass-1.0.2-flags.patch
@@ -0,0 +1,24 @@
+https://bugs.gentoo.org/375739
+--- a/configure.in
++++ b/configure.in
+@@ -24,2 +24,3 @@
+ AC_PROG_RANLIB
++AM_PROG_AR
+
+@@ -37,5 +38,2 @@
+
+-CFLAGS=""
+-CXXFLAGS=""
+-
+ if test "x$GCC" = xyes; then
+@@ -52,10 +50,2 @@
+ fi
+-
+-AC_ARG_ENABLE(optimize,
+-[ --enable-optimize=level Enable optimization [default=2]],
+- enable_optmize=$enableval, enable_optimize=2)
+-if test "x$enable_optimize" != "xno" ; then
+- CFLAGS="$CFLAGS -O$enable_optimize"
+- CXXFLAGS="$CXXFLAGS -O$enable_optimize"
+-fi
+
diff --git a/games-arcade/criticalmass/files/criticalmass-1.0.2-gcc43.patch b/games-arcade/criticalmass/files/criticalmass-1.0.2-gcc43.patch
new file mode 100644
index 000000000000..82207f52aec0
--- /dev/null
+++ b/games-arcade/criticalmass/files/criticalmass-1.0.2-gcc43.patch
@@ -0,0 +1,46 @@
+https://bugs.gentoo.org/218299
+--- a/tinyxml/tinyxml.cpp
++++ b/tinyxml/tinyxml.cpp
+@@ -25,2 +25,4 @@
+
++#include <cstring>
++
+
+--- a/tinyxml/tinyxml.h
++++ b/tinyxml/tinyxml.h
+@@ -32,2 +32,3 @@
+
++#include <cstdlib>
+ #include <string>
+--- a/tinyxml/tinyxmlparser.cpp
++++ b/tinyxml/tinyxmlparser.cpp
+@@ -27,2 +27,4 @@
+
++#include <cstring>
++
+ const char* TiXmlBase::SkipWhiteSpace( const char* p )
+--- a/utils/ResourceManager.cpp
++++ b/utils/ResourceManager.cpp
+@@ -24,2 +24,4 @@
+
++#include <cstring>
++
+ #ifdef WIN32
+--- a/utils/Value.hpp
++++ b/utils/Value.hpp
+@@ -17,2 +17,3 @@
+
++#include <cstdlib>
+ #include <stdio.h>
+--- a/utils/zStream.cpp
++++ b/utils/zStream.cpp
+@@ -14,2 +14,3 @@
+ //
++#include <cstdlib>
+ #include <Trace.hpp>
+--- a/utils/zStreamBufferImplZLib.cpp
++++ b/utils/zStreamBufferImplZLib.cpp
+@@ -14,2 +14,3 @@
+ //
++#include <cstdlib>
+ #include <Trace.hpp>
diff --git a/games-arcade/criticalmass/files/criticalmass-1.0.2-libpng.patch b/games-arcade/criticalmass/files/criticalmass-1.0.2-libpng.patch
new file mode 100644
index 000000000000..c2ea21bb2d63
--- /dev/null
+++ b/games-arcade/criticalmass/files/criticalmass-1.0.2-libpng.patch
@@ -0,0 +1,28 @@
+https://bugs.gentoo.org/206258
+https://bugs.gentoo.org/383207
+--- a/configure.in
++++ b/configure.in
+@@ -101,3 +101,3 @@
+ CXXFLAGS="$CXXFLAGS -I/usr/X11R6/include"
+- AC_CHECK_LIB(png12, main,, AC_MSG_ERROR(libpng is needed))
++ AC_CHECK_LIB(png, main,, AC_MSG_ERROR(libpng is needed))
+ AC_CHECK_LIB(z, main,, AC_MSG_ERROR(libz is needed))
+--- a/game/main.cpp
++++ b/game/main.cpp
+@@ -30,2 +30,4 @@
+
++#include <zlib.h>
++
+ void migrateConfig( void)
+--- a/utilssdl/PNG.cpp
++++ b/utilssdl/PNG.cpp
+@@ -47,3 +47,3 @@
+
+- check = fwrite( data, 1, length, (FILE *)(png->io_ptr));
++ check = fwrite( data, 1, length, (FILE *)(png_get_io_ptr(png)));
+ if( check != length)
+@@ -74,3 +74,3 @@
+
+- if( setjmp(_png->jmpbuf))
++ if( setjmp(png_jmpbuf(_png)))
+ {
diff --git a/games-arcade/criticalmass/files/criticalmass-1.0.2-system-curl.patch b/games-arcade/criticalmass/files/criticalmass-1.0.2-system-curl.patch
new file mode 100644
index 000000000000..084efbc05cf2
--- /dev/null
+++ b/games-arcade/criticalmass/files/criticalmass-1.0.2-system-curl.patch
@@ -0,0 +1,21 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -6,3 +6,3 @@
+ ## Any directories that you want built and installed should go here.
+-SUBDIRS = curl tinyxml utils utilssdl utilsgl tools data game
++SUBDIRS = tinyxml utils utilssdl utilsgl tools data game
+
+--- a/configure.in
++++ b/configure.in
+@@ -121,4 +121,2 @@
+
+-AC_CONFIG_SUBDIRS(curl)
+-
+ AC_OUTPUT(Makefile utils/Makefile utilssdl/Makefile utilsgl/Makefile game/Makefile tools/Makefile data/Makefile data/music/Makefile tinyxml/Makefile)
+--- a/game/Makefile.am
++++ b/game/Makefile.am
+@@ -43,3 +43,3 @@
+ LDADD = \
+- ../curl/lib/libcurl.a \
++ -lcurl \
+ ../utils/libutils.a \
diff --git a/games-arcade/criticalmass/metadata.xml b/games-arcade/criticalmass/metadata.xml
new file mode 100644
index 000000000000..1ef550c76aa8
--- /dev/null
+++ b/games-arcade/criticalmass/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">criticalmass</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/defendguin/Manifest b/games-arcade/defendguin/Manifest
new file mode 100644
index 000000000000..b6fb3953b345
--- /dev/null
+++ b/games-arcade/defendguin/Manifest
@@ -0,0 +1,3 @@
+DIST defendguin-0.0.12.tar.gz 2235694 BLAKE2B 4e694edb5a8e51948e343da8ba4555062505c1c7f2563e291cc4f421624b791630dec7b0c7ce08df0ca0db40070418cd67f750fbe525ef1b1d1577951a5224bd SHA512 3a62c7ac62b016eeb6fc63655e8a8c1ac6c5c7cae7eee03c4ab0b9951ba605c7634336d94adb538e94ccbf1d9f927ac530f58da87413a4b1555b2684681e4167
+DIST defendguin-0.0.13.tar.gz 10355991 BLAKE2B 4666f39e4f658d3c1fc75ca85c3984ad3c69635004308be54704bd548c4220e96473ad18bb37df8c5a49aa0e004c455021066b1ffdc6178f948102c4a94bb666 SHA512 56fa736efadb76a49e0d8125b2467bf4b3accf3cdc8ade1aaacfd10d5c2d0881d3a0db277dcbf5e10ea495f1dbb8e6a8aff66994cf314ddb6898e9b2d175510f
+DIST defendguin.png 4444 BLAKE2B 54790605accf524c8fff3b465ace1d09f2a320a66dd4dcf7a216eb74489a02ff029c95aaec32ad31ca4491809ccc8bdf5eecab44c7a6ce7060db96bd01d2c8de SHA512 3adc8db2ea8c3f726b03fdfafba3e79121edb8b3ca70a4006c288ccbebb5d35c104f0095d3812a7c094dc23760bd846902133d5252ae7e186ddf1a114bfb37e7
diff --git a/games-arcade/defendguin/defendguin-0.0.12-r2.ebuild b/games-arcade/defendguin/defendguin-0.0.12-r2.ebuild
new file mode 100644
index 000000000000..0eac9e212736
--- /dev/null
+++ b/games-arcade/defendguin/defendguin-0.0.12-r2.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Clone of the arcade game Defender, but with a Linux theme"
+HOMEPAGE="http://www.newbreedsoftware.com/defendguin/"
+SRC_URI="
+ https://tuxpaint.org/ftp/unix/x/defendguin/src/${P}.tar.gz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ media-libs/libsdl[joystick,sound,video]
+ media-libs/sdl-mixer[mod]"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ tc-export CC
+ sed -e "s|\$(DATA_PREFIX)|${EPREFIX}/usr/share/${PN}/|" \
+ -e '/^CFLAGS=.*-O2/d' \
+ -e '/^CFLAGS=/s|=|+= $(CPPFLAGS) $(LDFLAGS) |' \
+ -i Makefile || die
+ rm data/images/l2r.sh || die
+}
+
+src_install() {
+ dobin ${PN}
+
+ insinto /usr/share/${PN}
+ doins -r data/.
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} ${PN^}
+
+ doman src/${PN}.6
+ dodoc docs/{AUTHORS,CHANGES,README,TODO}.txt
+}
diff --git a/games-arcade/defendguin/defendguin-0.0.13.ebuild b/games-arcade/defendguin/defendguin-0.0.13.ebuild
new file mode 100644
index 000000000000..571f6042e756
--- /dev/null
+++ b/games-arcade/defendguin/defendguin-0.0.13.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Clone of the arcade game Defender, but with a Linux theme"
+HOMEPAGE="http://www.newbreedsoftware.com/defendguin/"
+SRC_URI="
+ https://tuxpaint.org/ftp/unix/x/defendguin/src/${P}.tar.gz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ media-libs/libsdl[joystick,sound,video]
+ media-libs/sdl-mixer[mod,vorbis]"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ sed -e "s|\$(DATA_PREFIX)|${EPREFIX}/usr/share/${PN}/|" \
+ -e '/^CFLAGS=.*-O2/d' \
+ -e '/^CFLAGS=/s|=|+= $(CPPFLAGS) $(LDFLAGS) |' \
+ -i Makefile || die
+ rm data/images/l2r.sh || die
+}
+
+src_compile() {
+ emake CC="$(tc-getCC)"
+}
+
+src_install() {
+ dobin ${PN}
+
+ insinto /usr/share/${PN}
+ doins -r data/.
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} ${PN^}
+
+ doman src/${PN}.6
+ dodoc docs/{AUTHORS,CHANGES,README,TODO}.txt
+}
diff --git a/games-arcade/defendguin/metadata.xml b/games-arcade/defendguin/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/defendguin/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/digger/Manifest b/games-arcade/digger/Manifest
new file mode 100644
index 000000000000..04734b322fba
--- /dev/null
+++ b/games-arcade/digger/Manifest
@@ -0,0 +1,2 @@
+DIST digger-20140423.tar.gz 117375 BLAKE2B 39ec5a17c2a12c1d23ed8dbcecfcd1f8309d5309540cd6d50d92aeee056e60f31156016f7cbcdf35092690c0e4df9312feee0a686c8fb1afb6068181630aca59 SHA512 9277c6dc4d7f74aeede379b42aeeef881d8fd927ef0e6f6c0e1a5f76be257244c4353758557209647812b942d215dd992939b190ef11f854b41ee2ceaab7eece
+DIST digger.png 1593 BLAKE2B 64595baa9bc41756cdfaf7bd9a4421e42b0bf82f8114d28227e887e822dcf19e2e6dd40344cdb83875dbcbc6200007ffdd2e0d16bfed8e92ef1b14bdf131fbf7 SHA512 3b191bdb8d823b777bc77495cf8566aa911d46ec45dd1c46f3a0dc100f25ee01b3e145a1512d0122b496ed5eabbdf3a4b3b609a3b2867de49aae22c644a9f510
diff --git a/games-arcade/digger/digger-20140423-r2.ebuild b/games-arcade/digger/digger-20140423-r2.ebuild
new file mode 100644
index 000000000000..79cf32bf9469
--- /dev/null
+++ b/games-arcade/digger/digger-20140423-r2.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake desktop
+
+DESCRIPTION="Digger Remastered"
+HOMEPAGE="https://www.digger.org/"
+SRC_URI="
+ mirror://gentoo/${P}.tar.gz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+S="${WORKDIR}/${PN}-${PN}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[X,sound,video]
+ virtual/zlib:=
+ x11-libs/libX11"
+DEPEND="
+ ${RDEPEND}
+ x11-base/xorg-proto"
+
+src_install() {
+ dobin "${BUILD_DIR}"/${PN}
+ dodoc ${PN}.txt
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} ${PN^}
+}
diff --git a/games-arcade/digger/metadata.xml b/games-arcade/digger/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/digger/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/dynamitejack/Manifest b/games-arcade/dynamitejack/Manifest
new file mode 100644
index 000000000000..ca1b991259d7
--- /dev/null
+++ b/games-arcade/dynamitejack/Manifest
@@ -0,0 +1 @@
+DIST dynamitejack-1.0.23.tgz 54195417 BLAKE2B 5cb659be0a76617c6a09c2dd696daaaa23ec9d24918a842e1dcc2e5b294c4e4c19f80f4dff92a5e539469a048bda2f1f61f9240569f8c0d2fc8e0e2147b55d39 SHA512 57897194244ded8d41ef0e7704fd973a58fe52dbc01b7dceed2a47694f7cc3e75d732547532bc7be4dd7d510572dedb85188da413b5857f52182799427243c4d
diff --git a/games-arcade/dynamitejack/dynamitejack-1.0.23-r3.ebuild b/games-arcade/dynamitejack/dynamitejack-1.0.23-r3.ebuild
new file mode 100644
index 000000000000..02710d88444f
--- /dev/null
+++ b/games-arcade/dynamitejack/dynamitejack-1.0.23-r3.ebuild
@@ -0,0 +1,68 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# TODO: icon
+
+EAPI=8
+
+inherit desktop wrapper
+
+DESCRIPTION="A stealth game with bombs in glorious 2D"
+HOMEPAGE="https://www.galcon.com/dynamitejack/"
+SRC_URI="${P}.tgz"
+S="${WORKDIR}"/${PN}
+
+LICENSE="all-rights-reserved"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+
+RESTRICT="bindist fetch splitdebug"
+
+MYGAMEDIR=/opt/${PN}
+QA_PREBUILT="${MYGAMEDIR#/}/bin/*"
+
+# linked to pulseaudio
+RDEPEND="
+ >=virtual/opengl-7.0-r1[abi_x86_32(-)]
+ >=media-libs/alsa-lib-1.0.27.2[abi_x86_32(-)]
+ >=media-libs/flac-1.2.1-r5[abi_x86_32(-)]
+ >=media-libs/libogg-1.3.0[abi_x86_32(-)]
+ >=media-libs/libpulse-2.1-r1[abi_x86_32(-)]
+ >=media-libs/libsdl-1.2.15-r4[X,sound,joystick,opengl,video,abi_x86_32(-)]
+ >=media-libs/libsndfile-1.0.25[abi_x86_32(-)]
+ >=media-libs/libvorbis-1.3.3-r1[abi_x86_32(-)]
+ >=virtual/glu-9.0-r1[abi_x86_32(-)]
+ >=x11-libs/libICE-1.0.8-r1[abi_x86_32(-)]
+ >=x11-libs/libSM-1.2.1-r1[abi_x86_32(-)]
+ >=x11-libs/libX11-1.6.2[abi_x86_32(-)]
+ >=x11-libs/libXau-1.0.7-r1[abi_x86_32(-)]
+ >=x11-libs/libxcb-1.9.1[abi_x86_32(-)]
+ >=x11-libs/libXdmcp-1.1.1-r1[abi_x86_32(-)]
+ >=x11-libs/libXext-1.3.2[abi_x86_32(-)]
+ >=x11-libs/libXi-1.7.2[abi_x86_32(-)]
+ >=x11-libs/libXtst-1.2.1-r1[abi_x86_32(-)]"
+
+pkg_nofetch() {
+ einfo "Please buy & download ${SRC_URI} from:"
+ einfo " ${HOMEPAGE}"
+ einfo "and move it to your DISTDIR directory."
+}
+
+src_prepare() {
+ default
+
+ rm run_me || die
+ mv LINUX.txt "${T}"/ || die
+}
+
+src_install() {
+ dodoc "${T}"/LINUX.txt
+
+ insinto "${MYGAMEDIR}"
+ doins -r *
+
+ make_wrapper ${PN} "./main" "${MYGAMEDIR}/bin"
+ make_desktop_entry ${PN}
+
+ fperms +x "${MYGAMEDIR}"/bin/main
+}
diff --git a/games-arcade/dynamitejack/metadata.xml b/games-arcade/dynamitejack/metadata.xml
new file mode 100644
index 000000000000..7c730d47817a
--- /dev/null
+++ b/games-arcade/dynamitejack/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/games-arcade/emilia-pinball/Manifest b/games-arcade/emilia-pinball/Manifest
new file mode 100644
index 000000000000..569ef412da06
--- /dev/null
+++ b/games-arcade/emilia-pinball/Manifest
@@ -0,0 +1 @@
+DIST pinball-0.3.1.tar.gz 6082982 BLAKE2B 307fd8fa6a6a64a15423f2cdacf6711affec4d0a94beca4c660316fa2db268b857fe80d3a672a078fd4454e858fdbf235ab3c62ba9695ee6df422b56536ba2d2 SHA512 d54f2635f583be8a7e4bf3463c69c1ab368e1c069dd7c4edffb95df0448faf7e82ddb8f8607d22a7336e2db176134555ca65b613e9d008b38fecb8ad5a818498
diff --git a/games-arcade/emilia-pinball/emilia-pinball-0.3.1-r5.ebuild b/games-arcade/emilia-pinball/emilia-pinball-0.3.1-r5.ebuild
new file mode 100644
index 000000000000..abda228e5c2b
--- /dev/null
+++ b/games-arcade/emilia-pinball/emilia-pinball-0.3.1-r5.ebuild
@@ -0,0 +1,78 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop dot-a
+
+MY_PN=${PN/emilia-/}
+MY_P=${MY_PN}-${PV}
+DESCRIPTION="SDL OpenGL pinball game"
+HOMEPAGE="https://pinball.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/pinball/${MY_P}.tar.gz"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-libs/libltdl:0
+ media-libs/libsdl[joystick,opengl,video,X]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer[vorbis]
+ x11-libs/libICE
+ x11-libs/libSM
+ virtual/opengl
+ virtual/glu
+"
+DEPEND="
+ ${DEPEND}
+ x11-libs/libXt
+"
+
+RDEPEND+=" acct-group/gamestat"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-glibc210.patch
+ "${FILESDIR}"/${P}-libtool.patch
+ "${FILESDIR}"/${P}-gcc46.patch
+ "${FILESDIR}"/${P}-parallel.patch
+)
+
+src_prepare() {
+ # bug #334899
+ sed -i -e '/dnl/d' {src,test}/Makefile.am || die
+
+ default
+
+ rm -rf libltdl || die
+ eautoreconf
+}
+
+src_configure() {
+ lto-guarantee-fat
+ econf --with-x
+}
+
+src_compile() {
+ emake CXXFLAGS="${CXXFLAGS}"
+}
+
+src_install() {
+ default
+ strip-lto-bytecode
+
+ dosym pinball /usr/bin/emilia-pinball
+
+ sed -i \
+ -e 's:-I${prefix}/include/pinball:-I/usr/include/pinball:' \
+ "${ED}"/usr/bin/pinball-config || die
+
+ newicon data/pinball.xpm ${PN}.xpm
+ make_desktop_entry emilia-pinball "Emilia pinball"
+
+ fperms -R 660 /var/games/pinball
+ fowners -R root:gamestat /usr/bin/pinball /var/games/pinball
+ fperms g+s /usr/bin/pinball
+}
diff --git a/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-gcc46.patch b/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-gcc46.patch
new file mode 100644
index 000000000000..aef1d672df62
--- /dev/null
+++ b/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-gcc46.patch
@@ -0,0 +1,30 @@
+--- a/base/SignalSender.cpp
++++ b/base/SignalSender.cpp
+@@ -11,6 +11,7 @@
+ #include "SignalSender.h"
+ #include "Group.h"
+ #include "Behavior.h"
++#include <cstddef>
+
+ SignalSender * SignalSender::p_SignalSender = NULL;
+
+--- a/base/Behavior.cpp
++++ b/base/Behavior.cpp
+@@ -9,6 +9,7 @@
+ #include "Private.h"
+ #include "Behavior.h"
+ #include "Group.h"
++#include <cstddef>
+
+ Behavior::Behavior() {
+ //EM_COUT("Behavior::Behavior", 1);
+--- a/base/BehaviorVisitor.cpp
++++ b/base/BehaviorVisitor.cpp
+@@ -9,6 +9,7 @@
+ #include "BehaviorVisitor.h"
+ #include "Behavior.h"
+ #include "Group.h"
++#include <cstddef>
+
+ BehaviorVisitor * BehaviorVisitor::p_BehaviorVisitor = NULL;
+
diff --git a/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-glibc210.patch b/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-glibc210.patch
new file mode 100644
index 000000000000..12f33cd21c85
--- /dev/null
+++ b/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-glibc210.patch
@@ -0,0 +1,13 @@
+--- a/base/Config.cpp
++++ b/base/Config.cpp
+@@ -423,8 +423,8 @@
+ m_sDataDir = string(EM_DATADIR) + "/";
+ m_sExeDir = "./";
+ if ( *( m_sDataDir.c_str() ) != '/' ) {
+- char* ptr=0;
+- char* ptrw = 0;
++ const char* ptr=0;
++ const char* ptrw = 0;
+ //cout<<"relative to exe file"<<endl;
+ ptr = (strrchr(argv0,'/')); // unix /cygwin / check win32
+ #ifdef WIN32
diff --git a/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-libtool.patch b/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-libtool.patch
new file mode 100644
index 000000000000..a9bc00051bab
--- /dev/null
+++ b/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-libtool.patch
@@ -0,0 +1,60 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -14,18 +14,13 @@
+ CFLAGS="-g -W -Wall -O2"
+ CXXFLAGS="-g -W -Wall -O2"
+
+-AC_CONFIG_SUBDIRS(libltdl)
+-
+ dnl Checks for programs.
+ AC_PROG_CC
+ AC_PROG_CXX
+ AC_PROG_INSTALL
+-AC_LIBTOOL_DLOPEN
+-AC_LIBLTDL_CONVENIENCE
+-AC_PROG_LIBTOOL
+
+-AC_SUBST(INCLTDL)
+-AC_SUBST(LIBLTDL)
++LT_PREREQ([2.2.6])
++LT_INIT([dlopen])
+
+ dnl *******************************************
+ dnl PATHS AND DIRS ****************************
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,6 +1,6 @@
+ AUTOMAKE_OPTIONS = gnu
+
+-SUBDIRS = libltdl addon base data src test
++SUBDIRS = addon base data src test
+
+ EXTRA_DIST = bootstrap pinball.spec clean pinball.desktop
+
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -7,9 +7,9 @@
+
+ pinlib_LIBRARIES = libemilia_pin.a
+
+-INCLUDES = -I../base -I../addon @INCLTDL@
++INCLUDES = -I../base -I../addon
+
+-pinball_LDADD = ../src/libemilia_pin.a ../addon/libemilia_addon.a ../base/libemilia_base.a @LIBLTDL@
++pinball_LDADD = ../src/libemilia_pin.a ../addon/libemilia_addon.a ../base/libemilia_base.a -lltdl
+ pinball_LDFLAGS = -export-dynamic
+
+ pinball_SOURCES = Pinball.cpp
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -6,8 +6,8 @@
+ noinst_PROGRAMS = scale simple light texture load explode collision signal billboard font thread menu joy sound trans math misc varray unittest
+ dnl noinst_PROGRAMS = unittest
+
+-INCLUDES = -I../base -I../addon -I../src @INCLTDL@
+-LDADD = ../src/libemilia_pin.a ../addon/libemilia_addon.a ../base/libemilia_base.a @LIBLTDL@
++INCLUDES = -I../base -I../addon -I../src
++LDADD = ../src/libemilia_pin.a ../addon/libemilia_addon.a ../base/libemilia_base.a -lltdl
+
+ testlib_LTLIBRARIES = libModuleTest.la
+
diff --git a/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-parallel.patch b/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-parallel.patch
new file mode 100644
index 000000000000..f5857c2b2910
--- /dev/null
+++ b/games-arcade/emilia-pinball/files/emilia-pinball-0.3.1-parallel.patch
@@ -0,0 +1,11 @@
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -9,7 +9,7 @@
+
+ INCLUDES = -I../base -I../addon
+
+-pinball_LDADD = ../src/libemilia_pin.a ../addon/libemilia_addon.a ../base/libemilia_base.a -lltdl
++pinball_LDADD = libemilia_pin.a ../addon/libemilia_addon.a ../base/libemilia_base.a -lltdl
+ pinball_LDFLAGS = -export-dynamic
+
+ pinball_SOURCES = Pinball.cpp
diff --git a/games-arcade/emilia-pinball/metadata.xml b/games-arcade/emilia-pinball/metadata.xml
new file mode 100644
index 000000000000..198d4f91e80f
--- /dev/null
+++ b/games-arcade/emilia-pinball/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">pinball</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/epiar/Manifest b/games-arcade/epiar/Manifest
new file mode 100644
index 000000000000..269567abfb55
--- /dev/null
+++ b/games-arcade/epiar/Manifest
@@ -0,0 +1 @@
+DIST epiar-0.5.1.tar.gz 35576547 BLAKE2B 6648eeccbe86e6935f53d83e5a58aa5839dbec2f5a8c408fd4d8a95e303daa8877c001f5dd4e37a2b72b3c24df646236c850c57c1a1d000fca63177cf075c729 SHA512 ce09aaafc455f3f9721d46a1703bf110ae00041234627b2b5fb4a9489f38672d0d0600b01a65d210728a50b596a51aacddc525d50d1138a6959db421b9384c40
diff --git a/games-arcade/epiar/epiar-0.5.1-r2.ebuild b/games-arcade/epiar/epiar-0.5.1-r2.ebuild
new file mode 100644
index 000000000000..fe592cd0ef04
--- /dev/null
+++ b/games-arcade/epiar/epiar-0.5.1-r2.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+LUA_COMPAT=( lua5-{1,3,4} luajit )
+LUA_REQ_USE="deprecated"
+inherit autotools flag-o-matic lua-single
+
+DESCRIPTION="Space adventure/combat game"
+HOMEPAGE="https://epiar.net/"
+SRC_URI="https://github.com/cthielen/Epiar/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2 LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+
+RDEPEND="
+ ${LUA_DEPS}
+ dev-games/physfs
+ dev-libs/libxml2:=
+ media-libs/ftgl
+ media-libs/libsdl[opengl,sound,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer[vorbis]
+ virtual/opengl"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.5.1-unbundle-lua5.1.patch
+ "${FILESDIR}"/${PN}-0.5.1-fix-bashisms.patch
+)
+
+src_prepare() {
+ default
+
+ # Remove bundled Lua 5.1
+ rm -r source/lua || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # -DLUA_COMPAT_OPENLIB=1 is required to enable the
+ # deprecated (in 5.1) luaL_openlib API (#872803)
+ append-cppflags -DLUA_COMPAT_OPENLIB=1
+
+ default
+}
+
+src_install() {
+ default
+
+ # Game fails to start without this otherwise missing font.
+ insinto /usr/share/epiar/resources/Fonts
+ doins resources/Fonts/FreeSansBold.ttf
+}
diff --git a/games-arcade/epiar/files/epiar-0.5.1-fix-bashisms.patch b/games-arcade/epiar/files/epiar-0.5.1-fix-bashisms.patch
new file mode 100644
index 000000000000..cc064799366a
--- /dev/null
+++ b/games-arcade/epiar/files/epiar-0.5.1-fix-bashisms.patch
@@ -0,0 +1,41 @@
+From 99b92a9d29f61beae05227c4f10ed54c41c02b11 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Wed, 7 Apr 2021 00:29:01 +0000
+Subject: [PATCH 2/2] Fix bashisms
+
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b5a70d5..4d3d598 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -22,13 +22,13 @@ AC_PROG_RANLIB
+ AC_LANG(C++)
+
+ dnl Check for a C++ compiler
+-if test "$ac_cv_prog_cxx_g" == no
++if test "$ac_cv_prog_cxx_g" = no
+ then
+ AC_MSG_ERROR([Cannot find a working C++ compiler])
+ fi
+
+ dnl Set PKG_CONFIG if necessary
+-if test "$PKG_CONFIG" == ""
++if test "$PKG_CONFIG" = ""
+ then
+ PKG_CONFIG=`which pkg-config`
+ fi
+@@ -71,7 +71,7 @@ AC_CHECK_LIB(physfs, PHYSFS_init, have_physfs_lib=yes)
+ if test x$have_physfs_hdr = xyes -a x$have_physfs_lib = xyes; then
+ enable_physfs="yes"
+ else
+-dnl if test "$ac_cv_prog_cxx_g" == no
++dnl if test "$ac_cv_prog_cxx_g" = no
+ dnl then
+ AC_MSG_ERROR([Could not find PhysicsFS])
+ dnl fi
+--
+2.31.1
+
diff --git a/games-arcade/epiar/files/epiar-0.5.1-unbundle-lua5.1.patch b/games-arcade/epiar/files/epiar-0.5.1-unbundle-lua5.1.patch
new file mode 100644
index 000000000000..e80615e549b6
--- /dev/null
+++ b/games-arcade/epiar/files/epiar-0.5.1-unbundle-lua5.1.patch
@@ -0,0 +1,49 @@
+From 0ed05474a5ea50cc972fae620fd1580ed0026fca Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Wed, 7 Apr 2021 00:28:07 +0000
+Subject: [PATCH 1/2] Unbundle Lua 5.1 and dynamically link with system copy
+
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ Makefile.am | 6 ++----
+ configure.ac | 3 +++
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 334b80e..b24ad29 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,4 +1,4 @@
+-AM_CXXFLAGS = -I$(top_srcdir)/source/ -I$(top_srcdir)/source/lua/src
++AM_CXXFLAGS = -I$(top_srcdir)/source/ $(LUA_CFLAGS)
+
+ bin_PROGRAMS = epiar
+
+@@ -74,9 +74,7 @@ epiar_SOURCES = source/main.cpp \
+ source/Utilities/trig.cpp \
+ source/Utilities/xml.cpp
+
+-epiar_LDADD = source/lua/src/liblua.a
+-
+-SUBDIRS=source/lua
++epiar_LDADD = $(LUA_LIBS)
+
+ include resources/Animations/Makefile.am
+ include resources/audio/Makefile.am
+diff --git a/configure.ac b/configure.ac
+index 17202ae..b5a70d5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -99,6 +99,9 @@ case "$target" in *-apple-darwin*)
+ LIBS="$LIBS `xml2-config --libs`"
+ esac
+
++dnl Check for Lua 5.1
++PKG_CHECK_MODULES([LUA], [lua5.1], [], [AC_MSG_ERROR([Could not find needed Lua 5.1])])
++
+ dnl Check for SDL
+ SDL_VERSION=1.2.10
+
+--
+2.31.1
+
diff --git a/games-arcade/epiar/metadata.xml b/games-arcade/epiar/metadata.xml
new file mode 100644
index 000000000000..761011159868
--- /dev/null
+++ b/games-arcade/epiar/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <longdescription>
+ Epiar is a space adventure/combat game written in C with SDL
+ (Simple DirectMedia Layer). It is absolutely free (released
+ under the General Public License v2).
+ In Epiar, you begin as a shuttle pilot in a galaxy generally
+ ruled by anarchy, with few stable governments and numerous
+ rebel factions. You start your adventure off doing whatever
+ you want, but generally trying to save up money for a new
+ starship, and your adventure takes off from there ...
+ </longdescription>
+ <upstream>
+ <remote-id type="github">cthielen/Epiar</remote-id>
+ <remote-id type="sourceforge">epiar</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/excido/Manifest b/games-arcade/excido/Manifest
new file mode 100644
index 000000000000..069f6225c4f4
--- /dev/null
+++ b/games-arcade/excido/Manifest
@@ -0,0 +1,2 @@
+DIST excido-0.1.5c-src.tar.bz2 2981629 BLAKE2B 504c21861a4d966400a94ef6733794f72edbf950a84dcd935213244252b771e168f0bb5e21780c90d2cd1a1799cac821a502dbb558ffe6204d4b552e5af465d4 SHA512 9e1b98ed31eac735087f451c466d0e0d1b885ad5336f7994abf8f844b1c27cc24e90048306ffd62864fa5ab2bada6744b4b54991c6eb9b22624af20c645e02d7
+DIST excido.png 965 BLAKE2B 2f2cb7091d0256c158c801b668e252a555b2c8976fc7af0c73f71457771e33f5e5f46109081431dc8e10a6f7748075ca60e0fe8f3fbf81bc5bb1a6079748ef27 SHA512 8248e652bd148c13e4b896eabd9360281c0c296ecfd28cf5d25593505bba94c1cac5a5dc9e89925dbd851670d917fa8949370cc797bb2eed7fb7c0fc72d14f3c
diff --git a/games-arcade/excido/excido-0.1.5c-r4.ebuild b/games-arcade/excido/excido-0.1.5c-r4.ebuild
new file mode 100644
index 000000000000..c17f0656bd3c
--- /dev/null
+++ b/games-arcade/excido/excido-0.1.5c-r4.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Fast paced action game"
+HOMEPAGE="https://icculus.org/excido/"
+SRC_URI="
+ https://icculus.org/excido/${P}-src.tar.bz2
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ dev-games/physfs
+ media-libs/freealut
+ media-libs/libsdl[opengl]
+ media-libs/openal
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer
+ media-libs/sdl-ttf"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-freealut.patch
+ "${FILESDIR}"/${P}-build.patch
+)
+
+src_compile() {
+ tc-export CXX
+
+ emake DATADIR=/usr/share/${PN}/
+}
+
+src_install() {
+ dobin ${PN}
+
+ insinto /usr/share/${PN}
+ doins -r data/.
+
+ dodoc BUGS CHANGELOG HACKING README TODO \
+ data/{CREDITS,readme-jf-nebula_sky.txt} keyguide.txt
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} Excido
+}
diff --git a/games-arcade/excido/files/excido-0.1.5c-build.patch b/games-arcade/excido/files/excido-0.1.5c-build.patch
new file mode 100644
index 000000000000..1735b51ccdfc
--- /dev/null
+++ b/games-arcade/excido/files/excido-0.1.5c-build.patch
@@ -0,0 +1,29 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1,8 +1,8 @@
+-CC=g++
+-CFLAGS=`sdl-config --cflags` #-g -Wall #-O2
++CXX?=g++
++CXXFLAGS+=$(shell sdl-config --cflags) #-g -Wall #-O2
+ #CFLAGS=`sdl-config --cflags` -I./physfs#-g -Wall #-O2
+ OBJS := ${patsubst %.cpp, %.o, ${wildcard src/*.cpp}}
+-LIBS = -s -Bstatic `sdl-config --static-libs` -lSDL_image -lSDL_ttf -L. -lphysfs -lopenal -Bdynamic -lGL -lGLU
++LIBS = $(shell sdl-config --libs) -lSDL_image -lSDL_ttf -lphysfs -lopenal -lalut -lGL -lGLU
+ #LIBS = -s -Bstatic `sdl-config --static-libs` SDL_image/*.o SDL_ttf/*.o -L. physfs/*.o openal/*.o -ljpeg -lpng -ltiff -lfreetype -Bdynamic -lGL -lGLU
+ PREFIX=/usr/local
+ BINDIR=$(PREFIX)/bin/
+@@ -16,12 +16,12 @@
+
+
+ .cpp.o:
+- $(CC) $(CFLAGS) $(DEFINES) -o ${patsubst %.cpp, %.o, $<} -c $<
++ $(CXX) $(CXXFLAGS) $(DEFINES) -o ${patsubst %.cpp, %.o, $<} -c $<
+
+ all: $(TARGET)
+
+ $(TARGET): $(OBJS)
+- $(CC) $(CFLAGS) -o $(TARGET) $(LIBS) $(OBJS)
++ $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(TARGET) $(OBJS) $(LIBS)
+
+ clean:
+ rm -f $(OBJS) $(TARGET)
diff --git a/games-arcade/excido/files/excido-0.1.5c-freealut.patch b/games-arcade/excido/files/excido-0.1.5c-freealut.patch
new file mode 100644
index 000000000000..c29999fae25d
--- /dev/null
+++ b/games-arcade/excido/files/excido-0.1.5c-freealut.patch
@@ -0,0 +1,38 @@
+--- a/src/SoundCore.cpp
++++ b/src/SoundCore.cpp
+@@ -352,32 +352,13 @@
+
+ PHYSFS_close(filehandle);
+
+- ALenum format;
+- ALvoid *data;
+- ALsizei size,freq;
+- ALboolean loop=AL_FALSE;
+ ALenum error;
+
+ alGetError();
+
+- alGenBuffers(1,&newsample.alid);
+- if((error=alGetError())!=AL_NO_ERROR){
+- fprintf(stderr,"SoundCore::LoadSample: Error on alGenBuffers\n");
+- PrintALError(error);
+- }
+- alutLoadWAVMemory((ALbyte*)filedata,&format,&data,&size,&freq,&loop);
+- if((error=alGetError())!=AL_NO_ERROR){
+- fprintf(stderr,"SoundCore::LoadSample: Error on alutLoadWAVMemory\n");
+- PrintALError(error);
+- }
+- alBufferData(newsample.alid,format,data,size,freq);
+- if((error=alGetError())!=AL_NO_ERROR){
+- fprintf(stderr,"SoundCore::LoadSample: Error on alBufferData\n");
+- PrintALError(error);
+- }
+- alutUnloadWAV(format,data,size,freq);
+- if((error=alGetError())!=AL_NO_ERROR){
+- fprintf(stderr,"SoundCore::LoadSample: Error on alutUnloadWAV\n");
++ newsample.alid=alutCreateBufferFromFileImage(filedata, filesize);
++ if(((error=alGetError())!=AL_NO_ERROR)||(newsample.alid==AL_NONE)){
++ fprintf(stderr,"SoundCore::LoadSample: Error on alutCreateBufferFromFileImage\n");
+ PrintALError(error);
+ }
+
diff --git a/games-arcade/excido/metadata.xml b/games-arcade/excido/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/excido/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/fishsupper/Manifest b/games-arcade/fishsupper/Manifest
new file mode 100644
index 000000000000..ab804317c512
--- /dev/null
+++ b/games-arcade/fishsupper/Manifest
@@ -0,0 +1 @@
+DIST fishsupper-0.1.6.tar.gz 1136893 BLAKE2B f07e5cc8fcfef4547fe2af029db1472ab0299fb5267e8f3a4fb29b9aa2cb39115101c217f509f35a4dc81a0e4f6c72f70bb2102c74c7c45981ced4e50230cd5c SHA512 a6b3df47010e8ac186ff4446db3659fd9173e9e3fc973ab376eed46da9cd13f7a4c0c02b25f3427232252e7fe5728036fa91ea773affe0948387a56f617fc7af
diff --git a/games-arcade/fishsupper/files/fishsupper-0.1.6-asneeded.patch b/games-arcade/fishsupper/files/fishsupper-0.1.6-asneeded.patch
new file mode 100644
index 000000000000..eae5ca15921a
--- /dev/null
+++ b/games-arcade/fishsupper/files/fishsupper-0.1.6-asneeded.patch
@@ -0,0 +1,11 @@
+--- a/src/Makefile.am.old 2012-06-24 18:47:58.947143638 +0200
++++ b/src/Makefile.am 2012-06-24 18:51:35.738921904 +0200
+@@ -1,7 +1,7 @@
+ AM_CPPFLAGS = -DPKG_DATA_DIR=\"$(pkgdatadir)\" \
+ @SDL_CFLAGS@ \
+ -Wall
+-AM_LDFLAGS = @SDL_LIBS@
++LDADD = @SDL_LIBS@
+
+ bin_PROGRAMS = fishsupper
+
diff --git a/games-arcade/fishsupper/files/fishsupper-0.1.6-gcc6.patch b/games-arcade/fishsupper/files/fishsupper-0.1.6-gcc6.patch
new file mode 100644
index 000000000000..3ca63cb4a68b
--- /dev/null
+++ b/games-arcade/fishsupper/files/fishsupper-0.1.6-gcc6.patch
@@ -0,0 +1,49 @@
+Bug: https://bugs.gentoo.org/610660
+
+--- a/src/Settings_screen.cpp
++++ b/src/Settings_screen.cpp
+@@ -217,3 +217,7 @@
+
+ // **************************************************
+
++const float FS::Settings_screen::bold = 1.0;
++const float FS::Settings_screen::faded = 0.2;
++
++// **************************************************
+--- a/src/Settings_screen.h
++++ b/src/Settings_screen.h
+@@ -71,8 +71,8 @@
+ static const int tick1_x = 252;
+ static const int tick_y_offset = 33;
+ static const int sprite_texture_start = FS_gfx::JOYSTICK;
+- static const float bold = 1.0;
+- static const float faded = 0.2;
++ static const float bold;
++ static const float faded;
+
+ Settings* settings_ptr;
+ int current_option;
+--- a/src/Star_particle_system.cpp
++++ b/src/Star_particle_system.cpp
+@@ -137,6 +137,10 @@
+ } // FS::Star_particle_system::launch_new_star
+
+ // **************************************************
++
++const float FS::Star_particle_system::lifespan = 1500.0;
++
++// **************************************************
+ // **************************************************
+ // **************************************************
+ // **************************************************
+--- a/src/Star_particle_system.h
++++ b/src/Star_particle_system.h
+@@ -77,7 +77,7 @@
+ static const int STAR_WIDTH = 30;
+ static const int STAR_HEIGHT = 30;
+ // This is a float so that we get floating-point division in update.
+- static const float lifespan = 1500.0; // in ms
++ static const float lifespan; // in ms
+
+ // A particle is basically a lightweight sprite.
+ // Unlike a usual sprite, we don't need to worry about
diff --git a/games-arcade/fishsupper/files/fishsupper-0.1.6-int16.patch b/games-arcade/fishsupper/files/fishsupper-0.1.6-int16.patch
new file mode 100644
index 000000000000..3e4f6edbf631
--- /dev/null
+++ b/games-arcade/fishsupper/files/fishsupper-0.1.6-int16.patch
@@ -0,0 +1,14 @@
+Fix build with clang
+https://bugs.gentoo.org/739090
+
+--- a/src/SFont_gl.cpp
++++ b/src/SFont_gl.cpp
+@@ -223,7 +223,7 @@ void Mafferyew::SFont_gl::create_font_char(SDL_Surface* image,
+ 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000);
+ #endif
+
+- SDL_Rect src_rect = { begin_x, 1, font_char_w, font_height };
++ SDL_Rect src_rect = { (Sint16)begin_x, 1, (Uint16)font_char_w, (Uint16)font_height };
+ SDL_BlitSurface(image, &src_rect, converted, 0);
+
+ GLuint texture;
diff --git a/games-arcade/fishsupper/files/fishsupper-0.1.6-ovflfix.patch b/games-arcade/fishsupper/files/fishsupper-0.1.6-ovflfix.patch
new file mode 100644
index 000000000000..2be91b65a16d
--- /dev/null
+++ b/games-arcade/fishsupper/files/fishsupper-0.1.6-ovflfix.patch
@@ -0,0 +1,11 @@
+--- a/src/main.cpp.old 2012-06-24 18:35:27.661894094 +0200
++++ b/src/main.cpp 2012-06-24 18:35:41.041954632 +0200
+@@ -293,7 +293,7 @@
+
+ if (!ok)
+ {
+- fs_dir = new char[ strlen(".") ];
++ fs_dir = new char[ strlen(".") + 1];
+ strcpy(fs_dir, ".");
+ } // if ... else
+
diff --git a/games-arcade/fishsupper/fishsupper-0.1.6-r3.ebuild b/games-arcade/fishsupper/fishsupper-0.1.6-r3.ebuild
new file mode 100644
index 000000000000..6a9bf28121b8
--- /dev/null
+++ b/games-arcade/fishsupper/fishsupper-0.1.6-r3.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop
+
+DESCRIPTION="A simple arcade/puzzle game, loosely based on the retro classic Frogger"
+HOMEPAGE="https://sourceforge.net/projects/fishsupper/"
+SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
+
+LICENSE="CC-BY-SA-2.5 GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[joystick,sound,video,opengl,X]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer[wav]
+ virtual/opengl
+"
+DEPEND="${RDEPEND}
+ dev-libs/boost
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-ovflfix.patch
+ "${FILESDIR}"/${P}-asneeded.patch
+ "${FILESDIR}"/${P}-gcc6.patch
+ "${FILESDIR}"/${P}-int16.patch
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_install() {
+ default
+
+ newicon data/images/fs_sprite_042.png ${PN}.png
+ make_desktop_entry ${PN} "Fish Supper"
+}
diff --git a/games-arcade/fishsupper/metadata.xml b/games-arcade/fishsupper/metadata.xml
new file mode 100644
index 000000000000..ff7a71c8e984
--- /dev/null
+++ b/games-arcade/fishsupper/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">fishsupper</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/frozen-bubble/Manifest b/games-arcade/frozen-bubble/Manifest
new file mode 100644
index 000000000000..d7eb83121255
--- /dev/null
+++ b/games-arcade/frozen-bubble/Manifest
@@ -0,0 +1 @@
+DIST frozen-bubble-2.2.1-beta1.tar.bz2 22424798 BLAKE2B 70d23961c45e10cca38afcd7bdbf407dcefde1248af87df7768fe99fc0d926740096942007ba871d57db6095f3ca4bfa126f30ab60514ba3c6eb5fb7759d96aa SHA512 a5d1432195bc41b2823678986fe71223acf5c740636a871758e6337072c74a84bca7aa7088af7b299586e4e261521ae0b3341805692ab684d93e85f52174b1ac
diff --git a/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-Werror.patch b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-Werror.patch
new file mode 100644
index 000000000000..0573e50fee94
--- /dev/null
+++ b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-Werror.patch
@@ -0,0 +1,15 @@
+From: Julian Ospald <hasufell@gentoo.org>
+Date: Sun Feb 10 14:48:58 UTC 2013
+Subject: remove Werror compiler flag wrt #456654
+
+--- a/inc/My/Builder.pm
++++ b/inc/My/Builder.pm
+@@ -123,7 +123,7 @@
+ push @ofiles, $cbuilder->compile(
+ source => catfile($server_directory, $cfile),
+ extra_compiler_flags => [
+- qw(-g -Wall -Werror -pipe), # verbatim from Makefile
++ qw(-Wall), # verbatim from Makefile
+ '-I' . $server_directory, # does not seem to be necessary
+ $cbuilder->split_like_shell(`pkg-config glib-2.0 --cflags`),
+ $cbuilder->split_like_shell(`pkg-config glib-2.0 --libs`),
diff --git a/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-fix-buffer-size.patch b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-fix-buffer-size.patch
new file mode 100644
index 000000000000..b1b3bfcb1edb
--- /dev/null
+++ b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-fix-buffer-size.patch
@@ -0,0 +1,69 @@
+From aa2ce32185b4477e659ed7c70d09c440610ef67b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Fri, 2 Feb 2018 12:44:15 +0100
+Subject: [PATCH] Fix buffer size when formatting current date
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+gcc-8 and glibc-2.26.9000 reports this error:
+
+server/log.c:64:54: error: '%03d' directive output may be truncated writing between 3 and 11 bytes into a region of size between 0 and 49 [-Werror=format-truncation=]
+ snprintf(current_date, sizeof(current_date), "%s.%03d", buf, (int)(1000 * (time-seconds)));
+ ^~~~
+
+This patch fixes two mistakes in the get_current_date() function:
+
+First strftime() can fail and then buf content is undefined. The patch
+makes sure the buf content is properly null-termited.
+
+Second if strftime() uses up the the whole buf array, no space will be
+left for appending miliseconds to current_date value in the subsequent
+snprintf() call. The patch increases current_data size so that things
+will always fit.
+
+In reality, all this should not matter because sane strftime() will
+return fixed-lenght string. But for all the cases and for sake of the
+compiler check this patch should be applied.
+
+Signed-off-by: Petr P鱈sa <ppisar@redhat.com>
+---
+ server/log.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/server/log.c b/server/log.c
+index 2fe7b7c..f696752 100644
+--- a/server/log.c
++++ b/server/log.c
+@@ -52,15 +52,17 @@ double get_current_time_exact(void)
+ return (double) now.tv_sec + now.tv_usec / 1e6; // bad bad idea to use float as precision is not down to the seconds then
+ }
+
+-char current_date[50];
++char current_date[70];
+ char* get_current_date(void)
+ {
+ struct tm * lt;
+ char buf[50];
+ double time = get_current_time_exact();
+ time_t seconds = (time_t)time;
++ size_t length;
+ lt = localtime(&seconds);
+- strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", lt);
++ length = strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", lt);
++ buf[length] = '\0';
+ snprintf(current_date, sizeof(current_date), "%s.%03d", buf, (int)(1000 * (time-seconds)));
+ return current_date;
+ }
+diff -up frozen-bubble-2.2.1-beta1/server/log.h~ frozen-bubble-2.2.1-beta1/server/log.h
+--- frozen-bubble-2.2.1-beta1/server/log.h~ 2010-08-07 15:36:27.000000000 +0200
++++ frozen-bubble-2.2.1-beta1/server/log.h 2018-02-08 14:09:52.472451694 +0100
+@@ -23,7 +23,7 @@
+ time_t get_current_time(void);
+ double get_current_time_exact(void);
+
+-extern char current_date[50];
++extern char current_date[70];
+ char* get_current_date(void);
+
+ enum output_types { OUTPUT_TYPE_DEBUG, OUTPUT_TYPE_CONNECT, OUTPUT_TYPE_INFO, OUTPUT_TYPE_ERROR };
diff --git a/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-perl-5.40.patch b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-perl-5.40.patch
new file mode 100644
index 000000000000..ba22b139e16c
--- /dev/null
+++ b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-perl-5.40.patch
@@ -0,0 +1,16 @@
+https://bugs.gentoo.org/934245
+
+Fix build error:
+Attempt to call undefined import method with arguments ("0.36") via package "Module::Build" (Perhaps you forgot to load the package?) at inc/My/Builder.pm line 11.
+
+--- a/inc/My/Builder.pm
++++ b/inc/My/Builder.pm
+@@ -8,7 +8,7 @@
+ use File::Slurp qw(read_file write_file);
+ use File::Spec::Functions qw(catdir catfile rootdir);
+ use IO::File qw();
+-use Module::Build '0.36' => qw();
++use Module::Build qw();
+ use autodie qw(:all move read_file write_file);
+ use parent 'Module::Build';
+ use Locale::Maketext::Extract;
diff --git a/games-arcade/frozen-bubble/frozen-bubble-2.2.1_beta1-r2.ebuild b/games-arcade/frozen-bubble/frozen-bubble-2.2.1_beta1-r2.ebuild
new file mode 100644
index 000000000000..644c49cd82d8
--- /dev/null
+++ b/games-arcade/frozen-bubble/frozen-bubble-2.2.1_beta1-r2.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop perl-module toolchain-funcs xdg
+
+MY_P="${P/_/-}"
+
+DESCRIPTION="A Puzzle Bubble clone written in perl (now with network support)"
+HOMEPAGE="https://github.com/kthakore/frozen-bubble"
+SRC_URI="mirror://gentoo/${MY_P}.tar.bz2"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ dev-lang/perl
+ dev-libs/glib:2
+ >=dev-perl/Alien-SDL-1.413
+ dev-perl/Compress-Bzip2
+ dev-perl/File-ShareDir
+ dev-perl/File-Slurp
+ dev-perl/File-Which
+ dev-perl/IPC-System-Simple
+ >=dev-perl/SDL-2.511
+ media-libs/sdl-image[gif,png]
+ media-libs/sdl-mixer[vorbis]
+ media-libs/sdl-pango
+ media-libs/sdl-ttf
+ virtual/libiconv
+ virtual/perl-Getopt-Long
+ virtual/perl-IO"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-perl/Locale-Maketext-Lexicon
+ dev-perl/Module-Build
+ virtual/perl-ExtUtils-CBuilder
+ virtual/perl-ExtUtils-ParseXS
+ virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-Werror.patch
+ "${FILESDIR}"/${P}-fix-buffer-size.patch
+ "${FILESDIR}"/${P}-perl-5.40.patch
+)
+
+src_configure() {
+ LD="$(tc-getCC)" perl-module_src_configure
+}
+
+src_compile() {
+ LD="$(tc-getCC)" perl-module_src_compile
+}
+
+src_install() {
+ mydoc="AUTHORS Changes HISTORY README" perl-module_src_install
+ newdoc server/README README.server
+ newdoc server/init/README README.server.init
+
+ local res
+ for res in 16 32 48 64; do
+ newicon -s ${res} share/icons/frozen-bubble-icon-${res}x${res}.png ${PN}.png
+ done
+
+ make_desktop_entry ${PN} Frozen-Bubble
+}
diff --git a/games-arcade/frozen-bubble/metadata.xml b/games-arcade/frozen-bubble/metadata.xml
new file mode 100644
index 000000000000..21f4fc756aba
--- /dev/null
+++ b/games-arcade/frozen-bubble/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+<upstream>
+ <remote-id type="github">kthakore/frozen-bubble</remote-id>
+</upstream>
+<longdescription>
+Full-featured, colorful animated penguin eyecandy, 100 levels of 1p game, hours and hours of
+2p game, a level-editor, 3 professional quality 20-channels music tracks, 15 stereo sound
+effects, 7 unique graphical transition effects.
+</longdescription>
+</pkgmetadata>
diff --git a/games-arcade/funnyboat/Manifest b/games-arcade/funnyboat/Manifest
new file mode 100644
index 000000000000..c95cc716393d
--- /dev/null
+++ b/games-arcade/funnyboat/Manifest
@@ -0,0 +1,2 @@
+DIST funnyboat-1.5-src.zip 3839990 BLAKE2B 30576f2bb20a236d518a5aca1b173d0e6f876a8411eef87d85950059536b3c6f1801b6f5a498d854ce6f390911ecc3a604f3c9bd438692943721b064f9c6d708 SHA512 7d38070e73825602d6f0a82e810fe8937fe919ce12f6e802ee25147ca1a2333c2b90821d92e20b8e071070505099bf9ec562e8c7b8cd8d241c3021b840e707cc
+DIST funnyboat_1.5-11.debian.tar.xz 12572 BLAKE2B 691a547cdc2ad07515268fe3e5c828d557f691746e9a9f136dc2634b9130210330ebd68b89fdc783373e5b660ddfe1caf2b74465e6d473b8e7c66a602b3a3f10 SHA512 9dd117e71715ec0a421061c1b71447ac9413b0d80f0337ab4cecc941324f6b9b2466981ed39a9670fa0c56075e60499eeb619ec0bfd8c7c010469d56d3ed66ec
diff --git a/games-arcade/funnyboat/files/funnyboat-1.5_p11-windowed.patch b/games-arcade/funnyboat/files/funnyboat-1.5_p11-windowed.patch
new file mode 100644
index 000000000000..a736a43e9fb9
--- /dev/null
+++ b/games-arcade/funnyboat/files/funnyboat-1.5_p11-windowed.patch
@@ -0,0 +1,10 @@
+Fullscreen can misdisplay depending on available modes and, while there
+is a command line option to enable it (-f), there is none to disable.
+
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=432693
+--- a/locals.py
++++ b/locals.py
+@@ -18,2 +18,2 @@
+ name = "Funny Boater"
+- fullscreen = True
++ fullscreen = False
diff --git a/games-arcade/funnyboat/funnyboat-1.5_p11-r3.ebuild b/games-arcade/funnyboat/funnyboat-1.5_p11-r3.ebuild
new file mode 100644
index 000000000000..d6f0efaabd6c
--- /dev/null
+++ b/games-arcade/funnyboat/funnyboat-1.5_p11-r3.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit desktop python-single-r1 wrapper
+
+DESCRIPTION="Side scrolling shooter game starring a steamboat on the sea"
+HOMEPAGE="https://funnyboat.sourceforge.net/"
+SRC_URI="
+ https://downloads.sourceforge.net/${PN}/${P/_p*}-src.zip
+ mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${PV/_p*}-${PV/*_p}.debian.tar.xz
+"
+S=${WORKDIR}/${PN}
+
+LICENSE="BitstreamVera GPL-2 MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep 'dev-python/pygame[${PYTHON_USEDEP}]')
+ media-libs/sdl2-image[png]
+ media-libs/sdl2-mixer[vorbis]
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+ app-arch/unzip
+"
+
+PATCHES=(
+ "${WORKDIR}"/debian/patches
+ "${FILESDIR}"/${P}-windowed.patch
+)
+
+src_prepare() {
+ # Drop Debian specific patch
+ rm -- "${WORKDIR}"/debian/patches/use_debian_vera_ttf.patch || die
+
+ default
+}
+
+src_install() {
+ insinto /usr/share/${PN}
+ doins -r data *.py
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ einstalldocs
+
+ make_wrapper ${PN} "${EPYTHON} main.py" /usr/share/${PN}
+
+ newicon data/titanic.png ${PN}.png
+ make_desktop_entry ${PN} "Trip on the Funny Boat"
+}
diff --git a/games-arcade/funnyboat/metadata.xml b/games-arcade/funnyboat/metadata.xml
new file mode 100644
index 000000000000..013c1b840585
--- /dev/null
+++ b/games-arcade/funnyboat/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">funnyboat</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/gav/Manifest b/games-arcade/gav/Manifest
new file mode 100644
index 000000000000..2c6e8e18a60b
--- /dev/null
+++ b/games-arcade/gav/Manifest
@@ -0,0 +1,8 @@
+DIST fabeach.tgz 163750 BLAKE2B d5cf3ef38925515caae67d78bc1623bd1ee5669d1d25d122023bbfe1deb59ef7f12859d4bcac95bc43f3a3c4b88208742b91b3acb73a16945f0e8356059a8e6a SHA512 c0ce8e20a2bece7beeb66a036abcffa1394fcddc0aa255fe244e86548b2c0d7ec4a72a903f2108a44e84590d9986ee6729d67e5ec103b867bbde01772d524978
+DIST florindo.tgz 175052 BLAKE2B 5c03691265fec40b3a20903383f070ccfe8527e06cb18cf5e65f32fcf16d17e8e6e56890790802ffeb9262f9933291a0bb1ca22c38f54cbcd5a00e346b4304b7 SHA512 91a42c209d9370f42a7918ea0b6b63ed9c2dcacdbf3051dc2535293b2e2a9b1b53795a7db476fd5c7b3da9682b5ddaf8a2ceab50bc4bdeefde33416de82197dc
+DIST gav-0.9.0.tar.gz 137729 BLAKE2B 15b27ed4019dd9306e629721e59c075b2189c180cc5b4ec866ce1007578ca9e9f8a85bfcb1d22bb7fecd4a6b39b4c62c48ed7e9268e22475bced8c4c8c925a34 SHA512 e702269371dc8ed4ce4415a24a703ef6c3604af69f2e0c548a48f282d812b4f3f76f74cb36a6036889b9e3628b844d2fa41e2cfde5b0fe647bceadc64c087a9f
+DIST inverted.tgz 35554 BLAKE2B 0bdd8ac39ec47ce9c3135cf3b59da1265726f5ea99ffbe9c64d05e314afa7bb26ea2c4ac87c5daa978c6ac9f2cdf2db6125aadac46437b9b8f4970459895f550 SHA512 a05bf4d580dcf509cfacf7bf8c8ab12e363dfcf646f24761daffd251bdaa15bc1df087b9d6618f70e1e6b17ac8bdbcaca18d6fe982938df2016dc4eaaafe0c04
+DIST naive.tgz 80169 BLAKE2B c2273b0056194d50ff7499c9440c0dd45175609bcb4ccab90957239e5c5230c845735a9b4963becdfa35a87aab33b2609bba38a00406a3c37e6c766a9dd5c225 SHA512 c962b4fa1dac20f1f1af46e816ed5fc1d46b58438391f1f496a24960a464b515ed296490bf113e5f6c428ea7f740e0bbc9d4343088f5a9da4c00909a5d584c9a
+DIST unnamed.tgz 156406 BLAKE2B db88b9863ca309b9b3236dd5940642912cd4a7fd1584b842171b65033f8c47fcc6d0eb9185d3759059f4648442b446c47c0dac21c1cb37a07850703ca04f1996 SHA512 530084b5e49e40447cb68545fb4b01f837e74efa3bfb9a110f13037a7f6c135e23f9ed49837abe918a8b393226f90a2d206e5bfd2f4e60335ebf7bc4e8341673
+DIST yisus.tgz 131021 BLAKE2B b095277fdf33968b2b5d28b2e737a465a09f34b6c570d0bdb7e3be2a0c36d8d0ae4d62d14e427a139e035343faf6b1972677fa94c4aa4b787a3ce79ab3c0a137 SHA512 2494e10998bf73c369e6591edeca4c466dfdba1901ca69d96838e0310eb36c94690b9fd6df3c0aa91e0ac611ec414acf402f532145eb795a43e15406aed4c604
+DIST yisus2.tgz 117923 BLAKE2B 57770e7326cbe203aca03d37411c8f9267e9ebbd3a104d91e5e4519eb22439066bf8ef7a5eb46476103731faf0c9726eda74351c01a5ae50c6265db49409d2e6 SHA512 a063908230e9085536322481bf511cc3f3df3997d27dd83e9f976762670e2bdbebc634c2566549fe856ddc93302422cf8676147937d2cbbcf7262e722c999f4d
diff --git a/games-arcade/gav/files/gav-0.9.0-gcc43.patch b/games-arcade/gav/files/gav-0.9.0-gcc43.patch
new file mode 100644
index 000000000000..c9b8a6e588bf
--- /dev/null
+++ b/games-arcade/gav/files/gav-0.9.0-gcc43.patch
@@ -0,0 +1,10 @@
+--- a/Configuration.cpp
++++ b/Configuration.cpp
+@@ -25,6 +25,7 @@
+ #include <stdlib.h>
+ #include <string>
+ #include <iostream>
++#include <cstring>
+ #include "Configuration.h"
+ #include "ControlsArray.h"
+
diff --git a/games-arcade/gav/files/gav-0.9.0-ldflags.patch b/games-arcade/gav/files/gav-0.9.0-ldflags.patch
new file mode 100644
index 000000000000..8579ce878e7c
--- /dev/null
+++ b/games-arcade/gav/files/gav-0.9.0-ldflags.patch
@@ -0,0 +1,37 @@
+--- a/CommonHeader
++++ b/CommonHeader
+@@ -22,18 +22,18 @@
+ NET = true
+
+ LD = ld
+-CXX = g++
+
+-CXXFLAGS= `sdl-config --cflags` -g -Wall -DAUDIO
++CXXFLAGS+= `sdl-config --cflags` -Wall
++CPPFLAGS+= -DAUDIO
+
+ ifndef NET
+ CXXFLAGS+= -DNONET
+ endif
+
+ ifdef NET
+-LDFLAGS= `sdl-config --libs` -lSDL_image -lSDL_net -lm
++LDLIBS= `sdl-config --libs` -lSDL_image -lSDL_net -lm
+ else
+-LDFLAGS= `sdl-config --libs` -lSDL_image -lm
++LDLIBS= `sdl-config --libs` -lSDL_image -lm
+ endif
+
+ SRCS = $(wildcard *.cpp)
+--- a/Makefile.Linux
++++ b/Makefile.Linux
+@@ -38,8 +38,7 @@
+ $(MAKE) -C $(@D:%_module.o=%)
+
+ gav: $(ALL_OBJ) $(OFILES)
+- $(CXX) -o gav $(OFILES) $(ALL_OBJ) $(LDFLAGS)
+- strip gav
++ $(CXX) $(LDFLAGS) -o gav $(OFILES) $(ALL_OBJ) $(LDLIBS)
+
+ clean:
+ for i in $(SUBDIRS) ; do \
diff --git a/games-arcade/gav/gav-0.9.0-r1.ebuild b/games-arcade/gav/gav-0.9.0-r1.ebuild
new file mode 100644
index 000000000000..eabe267b0d91
--- /dev/null
+++ b/games-arcade/gav/gav-0.9.0-r1.ebuild
@@ -0,0 +1,78 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="GPL Arcade Volleyball"
+HOMEPAGE="https://gav.sourceforge.net/"
+# the themes are behind a lame php-counter script.
+SRC_URI="
+ https://downloads.sourceforge.net/gav/${P}.tar.gz
+ mirror://gentoo/fabeach.tgz
+ mirror://gentoo/florindo.tgz
+ mirror://gentoo/inverted.tgz
+ mirror://gentoo/naive.tgz
+ mirror://gentoo/unnamed.tgz
+ mirror://gentoo/yisus.tgz
+ mirror://gentoo/yisus2.tgz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/sdl-image[jpeg,png]
+ media-libs/sdl-net
+ media-libs/libsdl[joystick,video]"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-ldflags.patch
+ "${FILESDIR}"/${P}-gcc43.patch
+)
+
+src_prepare() {
+ default
+
+ local d
+ for d in . automa menu net; do
+ cp ${d}/Makefile.Linux ${d}/Makefile || die "cp ${d}/Makefile failed"
+ done
+
+ # Now, move the additional themes in the proper directory
+ mv ../{fabeach,florindo,inverted,naive,unnamed,yisus,yisus2} themes || die
+
+ # No reason to have executable bit set on themes
+ find themes -type f -exec chmod a-x '{}' \; || die
+
+ # Respect LD, bug #779976
+ sed -i -e 's/LD = ld/LD ?= ld/' CommonHeader || die
+ sed -i -e 's/$(LD)/& $(LDFLAGS)/' */Makefile || die
+}
+
+src_configure() {
+ tc-export CXX
+
+ # Nobody _really_ sets LD. Tell the compiler what to do instead.
+ export LD="${CXX}"
+}
+
+src_compile() {
+ # bug #41530 - doesn't like the hot parallel make action.
+ emake -C automa
+ emake -C menu
+ emake -C net
+ emake
+}
+
+src_install() {
+ dodir /usr/bin
+ emake ROOT="${D}" install
+
+ insinto /usr/share/${PN}
+ doins -r sounds
+
+ einstalldocs
+}
diff --git a/games-arcade/gav/metadata.xml b/games-arcade/gav/metadata.xml
new file mode 100644
index 000000000000..4662664a83d2
--- /dev/null
+++ b/games-arcade/gav/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">gav</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/gish-demo/Manifest b/games-arcade/gish-demo/Manifest
new file mode 100644
index 000000000000..bea39469f4ca
--- /dev/null
+++ b/games-arcade/gish-demo/Manifest
@@ -0,0 +1 @@
+DIST gish-demo-1.6.tar.gz 12712912 BLAKE2B bb482ba341e688056a45077d6a6832e13e1a9785cbefbb7e76b7875e9df22f33f324a515ca3465bb3f4c4a34d1577b5eddf5ff7793d35556958b3f11d81f9f7f SHA512 2d6f37b8a7971ada524c75bafcbe7e92fd3dbb96677774b0295aad2553e6094027f9b43da8318f20071679412f95dd66ab9738178ffec4f853cf1845d536a0a6
diff --git a/games-arcade/gish-demo/gish-demo-1.6-r1.ebuild b/games-arcade/gish-demo/gish-demo-1.6-r1.ebuild
new file mode 100644
index 000000000000..3d80f29f2e3a
--- /dev/null
+++ b/games-arcade/gish-demo/gish-demo-1.6-r1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit wrapper
+
+DESCRIPTION="Play as an amorphous ball of tar that rolls and squishes around"
+HOMEPAGE="http://www.chroniclogic.com/gish.htm"
+SRC_URI="http://www.chroniclogic.com/demos/gishdemo.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}"/gishdemo
+
+LICENSE="all-rights-reserved"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+RESTRICT="mirror bindist strip"
+QA_PREBUILT="opt/${PN}/gish"
+
+RDEPEND="
+ >=media-libs/openal-1.6.372
+ media-libs/libsdl
+ media-libs/libvorbis
+ virtual/opengl
+ x11-libs/libX11
+"
+
+src_install() {
+ local dir=/opt/${PN}
+ local gishbin=gishdemo
+ use amd64 && gishbin=gishdemo_64
+
+ insinto ${dir}
+ doins -r *
+ fperms +x "${dir}"/${gishbin}
+ make_wrapper gish ./${gishbin} "${dir}"
+
+ einstalldocs
+}
diff --git a/games-arcade/gish-demo/metadata.xml b/games-arcade/gish-demo/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/gish-demo/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/gnake/Manifest b/games-arcade/gnake/Manifest
new file mode 100644
index 000000000000..a30f9da0769e
--- /dev/null
+++ b/games-arcade/gnake/Manifest
@@ -0,0 +1 @@
+DIST Gnake.0.94b.tar.gz 6656 BLAKE2B 2b230246b6dbb3ae9dcb3ed1dabf9f49c594180cb4e624e8e7cfb7c36823f64a0c60ec378773fea3fd1af5e036b8df98a3603b648e71f14a8e5523982aad5e83 SHA512 c5fb84cd8dc0a1b88f9eb6139f898515d109e2de0786284a4fa85f5efc0967ef02c2458d0e7f783d31fbd9a41e0f4114f7bd00717042ac9b2ca9ce4dc18e7fb7
diff --git a/games-arcade/gnake/files/gnake-0.94b-gcc15.patch b/games-arcade/gnake/files/gnake-0.94b-gcc15.patch
new file mode 100644
index 000000000000..062de7064c71
--- /dev/null
+++ b/games-arcade/gnake/files/gnake-0.94b-gcc15.patch
@@ -0,0 +1,39 @@
+https://bugs.gentoo.org/944252
+
+--- a/gnake.c
++++ b/gnake.c
+@@ -64,14 +64,14 @@ typedef struct {
+ void getOptions(int argc, char *argv[]);
+ void DrawWindow();
+ void Init();
+-void Step();
++void Step(int a);
+ void Draw();
+ void End();
+
+ coord getRandEmptyCell(int mandatory);
+ void createApple(int i);
+
+-void Resize();
++void Resize(int a);
+
+ char *TheGameName = "Gnake 0.94b";
+
+@@ -349,7 +349,7 @@ void CPUMove(int n) {
+ Snk[n].Dir = d;
+ }
+
+-void Step() {
++void Step(int a) {
+ node *Last;
+ int n, c;
+
+@@ -716,7 +716,7 @@ void Init() {
+ setitimer(ITIMER_REAL, &Timer, NULL);
+ }
+
+-void Resize() {
++void Resize(int a) {
+ FILE *p;
+ int l, c;
+
diff --git a/games-arcade/gnake/gnake-0.94b-r3.ebuild b/games-arcade/gnake/gnake-0.94b-r3.ebuild
new file mode 100644
index 000000000000..927951f2344b
--- /dev/null
+++ b/games-arcade/gnake/gnake-0.94b-r3.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic toolchain-funcs
+
+DESCRIPTION="ncurses-based Nibbles clone"
+HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
+SRC_URI="mirror://gentoo/${PN^}.${PV}.tar.gz"
+S="${WORKDIR}/${PN}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="sys-libs/ncurses:="
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${P}-gcc15.patch"
+)
+
+src_compile() {
+ tc-export CC
+
+ append-cppflags $($(tc-getPKG_CONFIG) --cflags ncurses || die)
+ append-libs $($(tc-getPKG_CONFIG) --libs ncurses || die)
+
+ emake LDLIBS="${LIBS}" gnake
+}
+
+src_install() {
+ dobin gnake
+ einstalldocs
+}
diff --git a/games-arcade/gnake/metadata.xml b/games-arcade/gnake/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/gnake/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/gnome-nibbles/Manifest b/games-arcade/gnome-nibbles/Manifest
new file mode 100644
index 000000000000..b3a26a6e401f
--- /dev/null
+++ b/games-arcade/gnome-nibbles/Manifest
@@ -0,0 +1,2 @@
+DIST gnome-nibbles-4.2.2.tar.xz 410712 BLAKE2B 12e5f84068866559c345cd7398047960c5a14c68bfd8a3e47aa8d04a0ccd89aca29bf62185e3ce1372b6f8aefc71df0346089f5cab8f0da602cbd6e3f41e12f4 SHA512 f35f411917e3fa04a0ef408dd24fda9f61f6dba44e62f38feac44d3d73ca97b75240381a8173e145bd5cbd3bd877cb5d315afb04ff9678bea495303bf4b3fa6b
+DIST gnome-nibbles-4.4.2.tar.xz 495008 BLAKE2B d5c4935268aff63c67336e03186c986cb83e2f2b35abc50fda9e03bb9c152f79be10fbe692fd4475b541f5799cc78031a95c49f1d5a52c0c9673b3106083ce1e SHA512 b1070c19153075ab0eba228d316480b6aa22cd52c91415271183305149f4e8cae3f74b22c1f013a848830cea8f8e9a7513052512cef11760b86b88e7776bbd56
diff --git a/games-arcade/gnome-nibbles/gnome-nibbles-4.2.2.ebuild b/games-arcade/gnome-nibbles/gnome-nibbles-4.2.2.ebuild
new file mode 100644
index 000000000000..3b4b1b3dd4e8
--- /dev/null
+++ b/games-arcade/gnome-nibbles/gnome-nibbles-4.2.2.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit gnome.org gnome2-utils meson vala xdg
+
+DESCRIPTION="Nibbles clone for GNOME"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/gnome-nibbles"
+
+LICENSE="GPL-3+ CC-BY-SA-3.0"
+SLOT="0"
+KEYWORDS="amd64 arm64 ~loong ~riscv x86"
+RDEPEND="
+ >=dev-libs/glib-2.80.0:2
+ dev-libs/libgee:0.8=
+ >=media-libs/gsound-1.0.2
+ >=gui-libs/gtk-4.6:4
+ >=gui-libs/libadwaita-1.5:1
+ x11-libs/pango
+ >=dev-libs/libgnome-games-support-2.0.0:2=
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-util/itstool
+ >=sys-devel/gettext-0.19.8
+ virtual/pkgconfig
+ $(vala_depend)
+ media-libs/gsound[vala]
+"
+
+src_prepare() {
+ default
+ vala_setup
+ xdg_environment_reset
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ gnome2_schemas_update
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ gnome2_schemas_update
+}
diff --git a/games-arcade/gnome-nibbles/gnome-nibbles-4.4.2.ebuild b/games-arcade/gnome-nibbles/gnome-nibbles-4.4.2.ebuild
new file mode 100644
index 000000000000..c40121545a8f
--- /dev/null
+++ b/games-arcade/gnome-nibbles/gnome-nibbles-4.4.2.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit gnome.org gnome2-utils meson vala xdg
+
+DESCRIPTION="Nibbles clone for GNOME"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/gnome-nibbles"
+
+LICENSE="GPL-3+ CC-BY-SA-3.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86"
+RDEPEND="
+ >=dev-libs/glib-2.80.0:2
+ dev-libs/libgee:0.8=
+ >=media-libs/gsound-1.0.2
+ >=gui-libs/gtk-4.14:4
+ >=gui-libs/libadwaita-1.5.0:1
+ >=x11-libs/pango-1.8
+ >=dev-libs/libgnome-games-support-2.0.0:2=
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ >=dev-build/meson-1.5
+ dev-util/itstool
+ >=sys-devel/gettext-0.19.8
+ virtual/pkgconfig
+ $(vala_depend)
+ media-libs/gsound[vala]
+"
+
+src_prepare() {
+ default
+ vala_setup
+ xdg_environment_reset
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ gnome2_schemas_update
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ gnome2_schemas_update
+}
diff --git a/games-arcade/gnome-nibbles/metadata.xml b/games-arcade/gnome-nibbles/metadata.xml
new file mode 100644
index 000000000000..e0c135044413
--- /dev/null
+++ b/games-arcade/gnome-nibbles/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>gnome@gentoo.org</email>
+ <name>Gentoo GNOME Desktop</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="gnome-gitlab">GNOME/gnome-nibbles</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/gnome-robots/Manifest b/games-arcade/gnome-robots/Manifest
new file mode 100644
index 000000000000..2848c9722ae6
--- /dev/null
+++ b/games-arcade/gnome-robots/Manifest
@@ -0,0 +1 @@
+DIST gnome-robots-40.0.tar.xz 420024 BLAKE2B 2cac9377914a4cc12bdfe23bf73fd1c63e80aee7c70d3817ebeac2cb044c6a1a4f00a6fd40f903bea5560ef598ad74d372dda91a61e486eb17b0bd85bc6c53ca SHA512 bff0caf40976b420f564abbfaa96ae1627da89cfa19a7ff3c14c313f7bbdd1d0452452d49ca7b150493915ae7eebdd022aada673405e0794e4c3abd8f5c39b4f
diff --git a/games-arcade/gnome-robots/files/gnome-robots-40.0-underlink-lm.patch b/games-arcade/gnome-robots/files/gnome-robots-40.0-underlink-lm.patch
new file mode 100644
index 000000000000..ed8ce4986493
--- /dev/null
+++ b/games-arcade/gnome-robots/files/gnome-robots-40.0-underlink-lm.patch
@@ -0,0 +1,38 @@
+https://bugs.gentoo.org/950339
+https://gitlab.gnome.org/GNOME/gnome-robots/-/issues/19
+https://gitlab.gnome.org/GNOME/gnome-robots/-/commit/f34f794554f6091071435874a18e1c39696e4d24
+
+From f34f794554f6091071435874a18e1c39696e4d24 Mon Sep 17 00:00:00 2001
+From: Dominique Leuenberger <dimstar@opensuse.org>
+Date: Thu, 2 May 2024 17:54:50 +0200
+Subject: [PATCH] build: Link against libm
+
+Fixes build in case none of our dependenices adds -lm to LDFLAGS.
+Since gnome-robot's own code uses atan2, it is our own responsibility
+to ensure the linking against libm.
+
+Fixes https://gitlab.gnome.org/GNOME/gnome-robots/-/issues/19
+--- a/meson.build
++++ b/meson.build
+@@ -22,6 +22,9 @@ gtk_dependency = dependency('gtk+-3.0', version: '>= 3.24.0')
+ gdk_dependency = dependency('gdk-3.0', version: '>= 3.24.0')
+ rsvg_dependency = dependency('librsvg-2.0', version: '>= 2.36.2')
+
++cc = meson.get_compiler('c')
++m_dep = cc.find_library('m', required : false)
++
+ bindir = join_paths(get_option('prefix'), get_option('bindir'))
+ datadir = join_paths(get_option('prefix'), get_option('datadir'))
+ pkgdatadir = join_paths(datadir, meson.project_name())
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -53,7 +53,8 @@ executable(
+ gsound_dependency,
+ gtk_dependency,
+ gdk_dependency,
+- rsvg_dependency
++ rsvg_dependency,
++ m_dep
+ ],
+ install_dir: get_option('bindir'),
+ install: true
diff --git a/games-arcade/gnome-robots/gnome-robots-40.0.ebuild b/games-arcade/gnome-robots/gnome-robots-40.0.ebuild
new file mode 100644
index 000000000000..8c23130976f2
--- /dev/null
+++ b/games-arcade/gnome-robots/gnome-robots-40.0.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit gnome.org gnome2-utils meson vala xdg
+
+DESCRIPTION="Avoid the robots and make them crash into each other"
+HOMEPAGE="https://wiki.gnome.org/Apps/Robots https://gitlab.gnome.org/GNOME/gnome-robots"
+
+LICENSE="GPL-3+ CC-BY-SA-3.0"
+SLOT="0"
+KEYWORDS="amd64 arm64 ~loong ~riscv x86"
+IUSE=""
+
+RDEPEND="
+ >=dev-libs/libgee-0.8:=
+ >=dev-libs/glib-2.32:2
+ >=dev-libs/libgnome-games-support-1.7.1:1=
+ >=media-libs/gsound-1.0.2
+ >=x11-libs/gtk+-3.24:3
+ >=gnome-base/librsvg-2.36.2:2
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ $(vala_depend)
+ gnome-base/librsvg:2[vala]
+ dev-libs/appstream-glib
+ dev-util/itstool
+ >=sys-devel/gettext-0.19.8
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-40.0-underlink-lm.patch
+)
+
+src_prepare() {
+ vala_src_prepare
+ xdg_src_prepare
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ gnome2_schemas_update
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ gnome2_schemas_update
+}
diff --git a/games-arcade/gnome-robots/metadata.xml b/games-arcade/gnome-robots/metadata.xml
new file mode 100644
index 000000000000..8fd18a68db63
--- /dev/null
+++ b/games-arcade/gnome-robots/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>gnome@gentoo.org</email>
+ <name>Gentoo GNOME Desktop</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="gnome-gitlab">GNOME/gnome-robots</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/gnujump/Manifest b/games-arcade/gnujump/Manifest
new file mode 100644
index 000000000000..499df86f1d14
--- /dev/null
+++ b/games-arcade/gnujump/Manifest
@@ -0,0 +1 @@
+DIST gnujump-1.0.8.tar.gz 2508641 BLAKE2B 2e6af8b316cedd37a0d8272ccafe548a62932bfede68bd8debc54d98ce3089c925192ae70f5fe9716fee0a82d3fe6b7cc3b8ca2d506abc2401138b5b7e7032d8 SHA512 fb8a06e17f700ea1e8c264b23a9f286d595cf48cc78efbe60ffdad298bc33ff0ecb2035a1db8281886614fbc8280d2b0c86a2099d55e31bff970f3b3c3caa421
diff --git a/games-arcade/gnujump/files/gnujump-1.0.8-musl.patch b/games-arcade/gnujump/files/gnujump-1.0.8-musl.patch
new file mode 100644
index 000000000000..83bb4214e722
--- /dev/null
+++ b/games-arcade/gnujump/files/gnujump-1.0.8-musl.patch
@@ -0,0 +1,10 @@
+locale.h is always needed, include here rather than rely on
+conditional macros which lead to failure with musl
+
+https://bugs.gentoo.org/831726
+--- a/src/gnujump.h
++++ b/src/gnujump.h
+@@ -38,2 +38,3 @@
+ #include <time.h>
++#include <locale.h>
+
diff --git a/games-arcade/gnujump/gnujump-1.0.8-r2.ebuild b/games-arcade/gnujump/gnujump-1.0.8-r2.ebuild
new file mode 100644
index 000000000000..d587ae52f45f
--- /dev/null
+++ b/games-arcade/gnujump/gnujump-1.0.8-r2.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop flag-o-matic
+
+DESCRIPTION="Xjump clone with added features"
+HOMEPAGE="https://jump.gnu.sinusoid.es/"
+SRC_URI="mirror://gnu/gnujump/${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libglvnd[X]
+ media-libs/libsdl[opengl,sound,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer[vorbis]
+ virtual/glu
+ virtual/libintl"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-build/autoconf-archive
+ sys-devel/gettext
+ virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-musl.patch
+)
+
+src_prepare() {
+ default
+
+ # change ac_unique_file given eautoreconf will move configure.in
+ sed -i 's/(configure.in)//' configure.in || die
+
+ # regenerate due to missing macros, ensure have autoconf-archive for GLU
+ # and remove acinclude.m4 which does unnecessary checks (bug #818814)
+ rm acinclude.m4 || die
+ eautoreconf
+
+ append-libs -lm #496924
+}
+
+src_install() {
+ default
+
+ newicon skins/xjump/hero1.0.png ${PN}.png
+ make_desktop_entry ${PN} "GNUjump"
+}
diff --git a/games-arcade/gnujump/metadata.xml b/games-arcade/gnujump/metadata.xml
new file mode 100644
index 000000000000..0f5219c82e8e
--- /dev/null
+++ b/games-arcade/gnujump/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>https://savannah.gnu.org/bugs/?group=gnujump</bugs-to>
+ <remote-id type="github">arximboldi/gnujump</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/grande-KXL/Manifest b/games-arcade/grande-KXL/Manifest
new file mode 100644
index 000000000000..70685eda9566
--- /dev/null
+++ b/games-arcade/grande-KXL/Manifest
@@ -0,0 +1,2 @@
+DIST grande-KXL-0.6.tar.gz 240869 BLAKE2B a9109dd37d72ffcfd02b9f160acd89c17d5ae13d53948ecc79718f420cb3826491a6f6b024ca65a12ada76b24110f01a52f502db2de8a736f628eda5c0054a4d SHA512 17916e54b2b2bad25d789bc3d4f182f3f104fd4e5cf7b745bb9613f76ec04a2a3d2740ca89b507ecdb653f1d42b793115e76b5b34d53b96fec3d55574632b980
+DIST grande-KXL.png 5949 BLAKE2B 4461b7f90c2abd332708c81829a5b03436163d7652f60c424c2468d08987338febf147457a16794123a7a6d5e64fea06a40071fb3e62fd5ea7bea6dadfb3dd2c SHA512 4fe68a2fa0cb3e57a590cd818953e82b3456d7e160f12d4a87d2160acf6f6b37d39da2ee1df96f14396c5a86765ab6c66e05c62a8fd246a1ce01fbec962be67d
diff --git a/games-arcade/grande-KXL/files/grande-KXL-0.6-cflags.patch b/games-arcade/grande-KXL/files/grande-KXL-0.6-cflags.patch
new file mode 100644
index 000000000000..94f6ce759b75
--- /dev/null
+++ b/games-arcade/grande-KXL/files/grande-KXL-0.6-cflags.patch
@@ -0,0 +1,17 @@
+From: Julian Ospald <hasufell@gentoo.org>
+Date: Wed Aug 8 19:37:19 UTC 2012
+Subject: build system
+
+respect CFLAGS
+
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -8,7 +8,7 @@
+
+ SUBDIRS = bmp wav stg
+
+-CFLAGS = @X_CFLAGS@ @KXL_CFLAGS@ @INST_FLAG@ @SCORE_FLAG@
++AM_CFLAGS = @X_CFLAGS@ @KXL_CFLAGS@ @INST_FLAG@ @SCORE_FLAG@
+ LIBS = @X_LIBS@ -lX11 @KXL_LIBS@ -lKXL
+
+ install-data-local:
diff --git a/games-arcade/grande-KXL/files/grande-KXL-0.6-clang16.patch b/games-arcade/grande-KXL/files/grande-KXL-0.6-clang16.patch
new file mode 100644
index 000000000000..7bc4a9c380fe
--- /dev/null
+++ b/games-arcade/grande-KXL/files/grande-KXL-0.6-clang16.patch
@@ -0,0 +1,27 @@
+https://bugs.gentoo.org/874990
+--- a/src/enemy.c
++++ b/src/enemy.c
+@@ -984,3 +984,3 @@
+ {
+- static fr[8] = {0, 0, 1, 1 ,2, 2, 1, 1};
++ static Uint8 fr[8] = {0, 0, 1, 1 ,2, 2, 1, 1};
+
+--- a/src/grande.h
++++ b/src/grande.h
+@@ -13,2 +13,3 @@
+ #include <sys/types.h>
++#include <time.h>
+ #include <unistd.h>
+--- a/src/my.c
++++ b/src/my.c
+@@ -527,3 +527,3 @@
+ {
+- static fr[8] = {0, 1, 0, 1, 2, 1, 2, 3};
++ static Uint8 fr[8] = {0, 1, 0, 1, 2, 1, 2, 3};
+
+--- a/src/ranking.h
++++ b/src/ranking.h
+@@ -10,2 +10,3 @@
+ void RankingScore(void);
++void ScoreRanking(void);
+ void ReadScore(void);
diff --git a/games-arcade/grande-KXL/files/grande-KXL-0.6-paths.patch b/games-arcade/grande-KXL/files/grande-KXL-0.6-paths.patch
new file mode 100644
index 000000000000..8aef0e382421
--- /dev/null
+++ b/games-arcade/grande-KXL/files/grande-KXL-0.6-paths.patch
@@ -0,0 +1,9 @@
+--- a/configure.in
++++ b/configure.in
+@@ -21,5 +21,5 @@
+ inst_path="${ac_default_prefix}/games/grande"
+ else
+- inst_path="${prefix}/games/grande"
++ inst_path="${datadir}/grande"
+ fi
+ score_path="/var/games"
diff --git a/games-arcade/grande-KXL/grande-KXL-0.6-r3.ebuild b/games-arcade/grande-KXL/grande-KXL-0.6-r3.ebuild
new file mode 100644
index 000000000000..13cf7743c7b8
--- /dev/null
+++ b/games-arcade/grande-KXL/grande-KXL-0.6-r3.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop
+
+DESCRIPTION="ZANAC type game"
+HOMEPAGE="http://triring.net/ps2linux/games/kxl/kxlgames.html"
+SRC_URI="
+ mirror://gentoo/${P}.tar.gz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ acct-group/gamestat
+ dev-games/KXL"
+RDEPEND="${DEPEND}
+ media-fonts/font-adobe-100dpi
+ media-fonts/font-bitstream-100dpi"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-cflags.patch
+ "${FILESDIR}"/${P}-paths.patch
+ "${FILESDIR}"/${P}-clang16.patch
+)
+
+src_prepare() {
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ econf --with-highscore-path="${EPREFIX}/var/games"
+}
+
+src_install() {
+ dodir /var/games
+ default
+
+ fowners :gamestat /var/games/grande.scores /usr/bin/grande
+ fperms g+s /usr/bin/grande
+ fperms 660 /var/games/grande.scores
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry grande Grande
+}
diff --git a/games-arcade/grande-KXL/metadata.xml b/games-arcade/grande-KXL/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/grande-KXL/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/gunocide2ex/Manifest b/games-arcade/gunocide2ex/Manifest
new file mode 100644
index 000000000000..f46eda5824e3
--- /dev/null
+++ b/games-arcade/gunocide2ex/Manifest
@@ -0,0 +1 @@
+DIST g2ex-setup.run 30844481 BLAKE2B 3d59d14e594c1f742d8f39098baeb68c4898f6d04aceefa1b6eeaf6c31378eda492b5984394c1b833e7b47b1360889e74f4e944fbf9721ac8f3456116bd469ca SHA512 e3c861843d88c3b09fa2e579d1be4b0590c04b7b401c7d592cf6b7150fc395445056ba599c0bc6f72ba7044cfc097070751d32bb66aa790e72e2b1c45407f2b2
diff --git a/games-arcade/gunocide2ex/files/gunocide2ex-1.0-build.patch b/games-arcade/gunocide2ex/files/gunocide2ex-1.0-build.patch
new file mode 100644
index 000000000000..a0ba41f50480
--- /dev/null
+++ b/games-arcade/gunocide2ex/files/gunocide2ex-1.0-build.patch
@@ -0,0 +1,165 @@
+--- a/src/cEffects.cpp
++++ b/src/cEffects.cpp
+@@ -180,7 +180,6 @@
+ {
+ if(!i->update())
+ i=lEffects.erase(i);
+- if(i==NULL)break;
+ }
+
+ for(p=lParticles.begin();p!=lParticles.end();++p)
+@@ -190,8 +189,6 @@
+ if(!p->active())
+ {
+ p=lParticles.erase(p);
+- if(p==NULL)
+- break;
+ }
+ }
+
+--- a/src/cFont.cpp
++++ b/src/cFont.cpp
+@@ -62,7 +62,7 @@
+ }
+
+ ///ldt einen TTF-Font ein
+-bool cFont::load(char *path,int size)
++bool cFont::load(const char *path,int size)
+ {
+ font = TTF_OpenFont(path,size);
+ if(font==NULL)
+--- a/src/cFont.h
++++ b/src/cFont.h
+@@ -34,7 +34,7 @@
+ static void delInstance();
+ static bool initttf();
+
+- bool load(char *path,int size);
++ bool load(const char *path,int size);
+ void setcolor(int r,int g,int b);
+ void setshader(int r,int g,int b);
+ void print(SDL_Surface *screen,int posx,int posy,const char *fmt, ...);
+--- a/src/cParticleSys.cpp
++++ b/src/cParticleSys.cpp
+@@ -81,9 +81,6 @@
+ if(time-p->getstarttime()>p->getlifetime())
+ {
+ p=lParticles.erase(p);
+- if(p==NULL)
+- break;
+-
+ }
+ }
+
+--- a/src/cSound.cpp
++++ b/src/cSound.cpp
+@@ -92,7 +92,7 @@
+ }
+
+ ///spielt eine ogg-datei ab
+-bool cSound::playogg(char *path)
++bool cSound::playogg(const char *path)
+ {
+ if(!sound_on)
+ return true;
+--- a/src/cSound.h
++++ b/src/cSound.h
+@@ -35,7 +35,7 @@
+
+ bool init();
+ void close();
+- bool playogg(char *path);
++ bool playogg(const char *path);
+ void stopogg();
+ bool loadwav(int index,char *path);
+ void playwav(int index);
+--- a/src/cSprite.cpp
++++ b/src/cSprite.cpp
+@@ -29,7 +29,7 @@
+
+ ///ldt ein BMP in das image-Surface
+ ///gibt false zurck falls es schief geht
+-bool cSprite::loadBMP(char *path)
++bool cSprite::loadBMP(const char *path)
+ {
+ image=SDL_LoadBMP(path);
+ if(!image)
+@@ -73,4 +73,4 @@
+ int cSprite::getheight()
+ {
+ return image->h;
+-}
+\ No newline at end of file
++}
+--- a/src/cSprite.h
++++ b/src/cSprite.h
+@@ -26,7 +26,7 @@
+ cSprite();
+ ~cSprite();
+
+- bool loadBMP(char *path);
++ bool loadBMP(const char *path);
+ void render(SDL_Surface *screen,int x,int y);
+ void setColorKey(int r,int g,int b);
+
+--- a/src/cSpriteAnim.cpp
++++ b/src/cSpriteAnim.cpp
+@@ -145,7 +145,7 @@
+ }
+
+ ///einladen einer Animation aus einer Datei
+-bool cSpriteAnim::load(char *path)
++bool cSpriteAnim::load(const char *path)
+ {
+ FILE *file;
+ char buffer[512];
+@@ -248,4 +248,4 @@
+ {
+ if(anim==NULL)return -1;
+ return gfx_sprite[anim->getAct()].getwidth();
+-}
+\ No newline at end of file
++}
+--- a/src/cSpriteAnim.h
++++ b/src/cSpriteAnim.h
+@@ -53,7 +53,7 @@
+ cSpriteAnim();
+ ~cSpriteAnim();
+
+- bool load(char *path);
++ bool load(const char *path);
+ void setColorKey(int r,int g,int b);
+ void render(SDL_Surface *screen,cAnim *anim,int x,int y);
+ int getMaxNum();
+--- a/src/cUtil.cpp
++++ b/src/cUtil.cpp
+@@ -85,7 +85,7 @@
+ }
+
+ ///liest einen wert aus einer config-datei
+-char* cUtil::getconfigvalue(char *path,char *value)
++char* cUtil::getconfigvalue(const char *path,const char *value)
+ {
+ FILE *file;
+ char buffer[512];
+--- a/src/cUtil.h
++++ b/src/cUtil.h
+@@ -31,7 +31,7 @@
+
+ void updatetime();
+ float sync(float Faktor);
+- char* getconfigvalue(char *path,char *value);
++ char* getconfigvalue(const char *path,const char *value);
+ void drawpixel(SDL_Surface *screen, int x, int y,Uint8 R, Uint8 G,Uint8 B);
+ bool collision(SDL_Rect objekt1,SDL_Rect objekt2);
+
+--- a/src/mmgr.cpp
++++ b/src/mmgr.cpp
+@@ -59,6 +59,7 @@
+ #include <time.h>
+ #include <stdarg.h>
+ #include <new>
++using namespace std;
+
+ #ifndef WIN32
+ #include <unistd.h>
diff --git a/games-arcade/gunocide2ex/files/gunocide2ex-1.0-glibc2.10.patch b/games-arcade/gunocide2ex/files/gunocide2ex-1.0-glibc2.10.patch
new file mode 100644
index 000000000000..2bfdd80f0f84
--- /dev/null
+++ b/games-arcade/gunocide2ex/files/gunocide2ex-1.0-glibc2.10.patch
@@ -0,0 +1,14 @@
+--- a/src/mmgr.cpp
++++ b/src/mmgr.cpp
+@@ -228,9 +228,9 @@
+
+ static const char *sourceFileStripper(const char *sourceFile)
+ {
+- char *ptr = strrchr(sourceFile, '\\');
++ char *ptr = strrchr((char *)sourceFile, '\\');
+ if (ptr) return ptr + 1;
+- ptr = strrchr(sourceFile, '/');
++ ptr = strrchr((char *)sourceFile, '/');
+ if (ptr) return ptr + 1;
+ return sourceFile;
+ }
diff --git a/games-arcade/gunocide2ex/gunocide2ex-1.0-r3.ebuild b/games-arcade/gunocide2ex/gunocide2ex-1.0-r3.ebuild
new file mode 100644
index 000000000000..e23e9c5ef6a7
--- /dev/null
+++ b/games-arcade/gunocide2ex/gunocide2ex-1.0-r3.ebuild
@@ -0,0 +1,88 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop edos2unix toolchain-funcs unpacker
+
+DESCRIPTION="Fast-paced 2D shoot'em'up"
+HOMEPAGE="https://sourceforge.net/projects/g2ex/"
+SRC_URI="https://downloads.sourceforge.net/g2ex/g2ex-setup.run"
+S="${WORKDIR}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~x86"
+
+DEPEND="
+ media-libs/libsdl[video]
+ media-libs/sdl-ttf
+ media-libs/sdl-mixer[vorbis]
+"
+RDEPEND="
+ ${DEPEND}
+ acct-group/gamestat
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-build.patch
+ "${FILESDIR}"/${P}-glibc2.10.patch
+)
+
+src_unpack() {
+ unpack_makeself
+ mkdir binary || die
+}
+
+src_prepare() {
+ default
+
+ edos2unix config.cfg
+
+ sed -i \
+ -e "s:/usr/local/games/gunocide2ex/config\.cfg:/etc/${PN}.cfg:" \
+ -e "s:/usr/local/games/gunocide2ex/hscore\.dat:/var/games/gunocide2ex/${PN}-hscore.dat:" \
+ -e "s:memleaks.log:/dev/null:" \
+ src/*.{h,cpp} || die
+
+ sed -i \
+ -e "s:/usr/local/games:/usr/share:" \
+ src/*.{h,cpp} $(find gfx -name '*.txt') || die
+}
+
+src_compile() {
+ cd src || die
+
+ tc-export CXX
+
+ emake \
+ CXXFLAGS="${CXXFLAGS} $(sdl-config --cflags)" \
+ $(echo *.cpp | sed 's/\.cpp/.o/g')
+
+ $(tc-getCXX) ${CPPFLAGS} ${CXXFLAGS} ${LDFLAGS} -o ${PN} *.o -lpthread -lSDL -lSDL_ttf -lSDL_mixer || die
+}
+
+src_install() {
+ dobin src/${PN}
+ dosym ${PN} /usr/bin/g2ex
+
+ insinto /usr/share/${PN}
+ doins -r gfx sfx lvl credits arial.ttf
+
+ insinto /etc
+ newins config.cfg ${PN}.cfg
+
+ insinto /var/games/${PN}
+ newins hscore.dat ${PN}-hscore.dat
+
+ fperms 660 /var/games/${PN}/${PN}-hscore.dat
+ fowners -R root:gamestat /var/games/${PN} /usr/bin/g2ex
+ fperms g+s /usr/bin/g2ex
+
+ dodoc history doc/MANUAL_DE
+ docinto html
+ dodoc doc/manual_de.html
+
+ newicon g2icon.xpm ${PN}.xpm
+ make_desktop_entry ${PN} "Gunocide II EX"
+}
diff --git a/games-arcade/gunocide2ex/metadata.xml b/games-arcade/gunocide2ex/metadata.xml
new file mode 100644
index 000000000000..531ebcaa0ed4
--- /dev/null
+++ b/games-arcade/gunocide2ex/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">g2ex</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/holotz-castle/Manifest b/games-arcade/holotz-castle/Manifest
new file mode 100644
index 000000000000..1b8bb7916f5f
--- /dev/null
+++ b/games-arcade/holotz-castle/Manifest
@@ -0,0 +1 @@
+DIST holotz-castle-1.3.14-src.tar.gz 3691364 BLAKE2B 82ec9336410634d5649eaabe55f69b4cce94d983b1713aa2e7472cec59cd7c1b843a4512a2e11b79c74cc869d96259ea9e21e4bd6d88ddbeeaf8437b63ab13b8 SHA512 129f15a51b13bc80ca068b1ec18cc4ae8bb5b80f11f852b81bff4492dab5bf4edbae714fcaafb197cdedf2b079070ab2f8750790b0b1680204ee7520f1d74576
diff --git a/games-arcade/holotz-castle/files/holotz-castle-1.3.14-build.patch b/games-arcade/holotz-castle/files/holotz-castle-1.3.14-build.patch
new file mode 100644
index 000000000000..cdf814546e1d
--- /dev/null
+++ b/games-arcade/holotz-castle/files/holotz-castle-1.3.14-build.patch
@@ -0,0 +1,71 @@
+--- a/JLib/Makefile
++++ b/JLib/Makefile
+@@ -19,7 +19,7 @@
+ endif
+
+ # Define -D_JLIB_DEBUG to debug JLib. Compile the app to debug also with this flag
+-CFLAGS=-I. -I/usr/local/include/SDL -O3 -ffast-math -fPIC -Wall -Wshadow `$(SDL_CONFIG) --cflags`
++CXXFLAGS+=-I. -Wall -Wshadow `$(SDL_CONFIG) --cflags`
+
+ # Sample LDFLAGS for applications
+ # LDFLAGS=-L. -ffast-math -lSDL_image -lSDL_ttf -lSDL_mixer `$(SDL_CONFIG) --libs`
+@@ -28,15 +28,14 @@
+
+ # JLib
+ libJLib: $(JLIB_OBJS)
+- g++-4.1 -shared -L/usr/lib -fPIC -o $@.so $? \
+- && ar rvus $@.a $? \
++ $(AR) rvus $@.a $?
+
+ $(GRAPHICS)/%.o: $(GRAPHICS)/%.cpp
+- g++-4.1 $(CFLAGS) -c -o $@ $<
++ $(CXX) $(CXXFLAGS) -c -o $@ $<
+ $(UTIL)/%.o: $(UTIL)/%.cpp
+- g++-4.1 $(CFLAGS) -c -o $@ $<
++ $(CXX) $(CXXFLAGS) -c -o $@ $<
+ $(MATH)/%.o: $(MATH)/%.cpp
+- g++-4.1 $(CFLAGS) -c -o $@ $<
++ $(CXX) $(CXXFLAGS) -c -o $@ $<
+
+ .PHONY: install
+ install:
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -30,7 +30,7 @@
+
+ DEFINES = -DHC_DATA_DIR=\"$(HC_DATA)\" -DHCED_DATA_DIR=\"$(HCED_DATA)\"
+
+-all: JLib HC HCed
++all: HC HCed
+
+ HC_OBJ_MAIN=HolotzCastle.o
+ HC_OBJS=HCUtil.o HCTimer.o HCLoadSaveSlot.o HCPlaylist.o HCPreferences.o HCTheme.o HCText.o \
+@@ -42,23 +42,23 @@
+
+ # Definir -D_JLIB_DEBUG para debug con JLib. Ponerlo tambi辿n en el Makefile de JLib.
+ # Define -D_JLIB_DEBUG for JLib debug mode. Put it also in JLib's Makefile.
+-CFLAGS=-fno-strict-aliasing -I. -I../JLib `$(SDL_CONFIG) --cflags` -I/usr/local/include/ -I/usr/local/include/SDL -O3 -Wall -Werror -Wshadow $(CPU_OPTS) -ffast-math -c
+-LDFLAGS=-L. -ffast-math -lSDL_image -lSDL_ttf -lSDL_mixer `$(SDL_CONFIG) --libs`
++CXXFLAGS+=-fno-strict-aliasing -I. -I../JLib `$(SDL_CONFIG) --cflags` -Wall -Wshadow
++LDLIBS=-L. -lSDL_image -lSDL_ttf -lSDL_mixer `$(SDL_CONFIG) --libs`
+
+
+ JLib:
+ $(MAKE) -C ../JLib;
+
+ %.o: %.cpp %.h
+- g++ $(CFLAGS) $(DEFINES) $< -o $@
++ $(CXX) -c $(CXXFLAGS) $(DEFINES) $< -o $@
+
+ HC: $(HC_OBJS) $(HC_OBJ_MAIN) ../JLib/libJLib.a
+- g++ $(LDFLAGS) $? -o $@;\
++ $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $? $(LDLIBS);\
+ mv HC ../holotz-castle
+
+ # HCed (Holotz's Castle editor).
+ HCed: $(HC_OBJS) $(HCED_OBJ_MAIN) ../JLib/libJLib.a
+- g++ $(LDFLAGS) $? -o $@;\
++ $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $? $(LDLIBS);\
+ mv HCed ../holotz-castle-editor
+
+ install:
diff --git a/games-arcade/holotz-castle/files/holotz-castle-1.3.14-gcc-11.patch b/games-arcade/holotz-castle/files/holotz-castle-1.3.14-gcc-11.patch
new file mode 100644
index 000000000000..311c352731d8
--- /dev/null
+++ b/games-arcade/holotz-castle/files/holotz-castle-1.3.14-gcc-11.patch
@@ -0,0 +1,30 @@
+https://bugs.gentoo.org/739092
+--- a/JLib/JLib/Util/JTextFile.cpp
++++ b/JLib/JLib/Util/JTextFile.cpp
+@@ -145,7 +145,7 @@ bool JTextFile::FindNext(const s8 *str, bool jump)
+
+ tmp = strstr(ptr, str);
+
+- if (tmp > 0)
++ if (tmp)
+ ptr = tmp;
+ else
+ {
+@@ -153,7 +153,7 @@ bool JTextFile::FindNext(const s8 *str, bool jump)
+ {
+ tmp = strstr(buff, str);
+
+- if (tmp > 0)
++ if (tmp)
+ ptr = tmp;
+ else
+ return false;
+@@ -233,7 +233,7 @@ bool JTextFile::ReadQuotedWord(s8 *str)
+ ++ptr;
+ end = ptr;
+
+- if (0 >= (end = strstr(ptr, "\"")))
++ if ((end = strstr(ptr, "\"")) == NULL)
+ {
+ // No hay comillas de cierre
+ ptr = org;
diff --git a/games-arcade/holotz-castle/files/holotz-castle-1.3.14-gcc44.patch b/games-arcade/holotz-castle/files/holotz-castle-1.3.14-gcc44.patch
new file mode 100644
index 000000000000..ecf9d5c32de9
--- /dev/null
+++ b/games-arcade/holotz-castle/files/holotz-castle-1.3.14-gcc44.patch
@@ -0,0 +1,11 @@
+--- a/JLib/JLib/Util/JFS.cpp
++++ b/JLib/JLib/Util/JFS.cpp
+@@ -887,7 +887,7 @@
+
+ // Si es un directorio lo importa recursivamente
+ struct dirent64 **namelist;
+- n = scandir64(filename, &namelist, 0, alphasort);
++ n = scandir64(filename, &namelist, 0, alphasort64);
+
+ if (n < 0)
+ {
diff --git a/games-arcade/holotz-castle/files/holotz-castle-1.3.14-underlink.patch b/games-arcade/holotz-castle/files/holotz-castle-1.3.14-underlink.patch
new file mode 100644
index 000000000000..efcf379fb129
--- /dev/null
+++ b/games-arcade/holotz-castle/files/holotz-castle-1.3.14-underlink.patch
@@ -0,0 +1,11 @@
+--- a/src/Makefile.old 2011-06-22 06:09:53.195025702 +0200
++++ b/src/Makefile 2011-06-22 06:10:54.774927134 +0200
+@@ -43,7 +43,7 @@
+ # Definir -D_JLIB_DEBUG para debug con JLib. Ponerlo tambi辿n en el Makefile de JLib.
+ # Define -D_JLIB_DEBUG for JLib debug mode. Put it also in JLib's Makefile.
+ CXXFLAGS+=-fno-strict-aliasing -I. -I../JLib `$(SDL_CONFIG) --cflags` -Wall -Wshadow
+-LDLIBS=-L. -lSDL_image -lSDL_ttf -lSDL_mixer `$(SDL_CONFIG) --libs`
++LDLIBS=-L. -lSDL_image -lSDL_ttf -lSDL_mixer `$(SDL_CONFIG) --libs` -lm -lz
+
+
+ JLib:
diff --git a/games-arcade/holotz-castle/holotz-castle-1.3.14-r1.ebuild b/games-arcade/holotz-castle/holotz-castle-1.3.14-r1.ebuild
new file mode 100644
index 000000000000..1ff2a004605f
--- /dev/null
+++ b/games-arcade/holotz-castle/holotz-castle-1.3.14-r1.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit desktop toolchain-funcs
+
+DESCRIPTION="2D platform game"
+HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
+SRC_URI="https://dev.gentoo.org/~chewi/distfiles/${P}-src.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RDEPEND="
+ virtual/opengl
+ virtual/glu
+ media-libs/sdl-mixer
+ media-libs/libsdl[joystick]
+ media-libs/sdl-ttf
+ media-libs/sdl-image
+"
+DEPEND="${RDEPEND}"
+
+S="${WORKDIR}/${P}-src"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-build.patch
+ "${FILESDIR}"/${P}-gcc44.patch
+ "${FILESDIR}"/${P}-underlink.patch
+ "${FILESDIR}"/${P}-gcc-11.patch
+)
+
+src_compile() {
+ tc-export AR CXX
+ emake -C JLib
+ emake -C src HC_BASE=/usr/share/${PN}/
+}
+
+src_install() {
+ dobin holotz-castle holotz-castle-editor
+ insinto /usr/share/${PN}/game
+ doins -r res/*
+ insinto /usr/share/${PN}/editor
+ doins -r HCedHome/res/*
+ newicon res/icon/icon.bmp ${PN}.bmp
+ make_desktop_entry ${PN} "Holotz's Castle" /usr/share/pixmaps/${PN}.bmp
+ make_desktop_entry ${PN}-editor "Holotz's Castle - Editor" \
+ /usr/share/pixmaps/${PN}.bmp
+ dodoc doc/MANUAL*.txt
+ doman man/*.6
+}
diff --git a/games-arcade/holotz-castle/metadata.xml b/games-arcade/holotz-castle/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/holotz-castle/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/jardinains/Manifest b/games-arcade/jardinains/Manifest
new file mode 100644
index 000000000000..bf8384a57842
--- /dev/null
+++ b/games-arcade/jardinains/Manifest
@@ -0,0 +1 @@
+DIST JN2_1_FREE_LIN.tar.gz 17433159 BLAKE2B de257584d5e0babc4c0304aec2451e92ec288c77e8aff68eaad63b43238126b4059dc56a1632b66b2bfd4a9f0408cf492a77c56de2521e12f630d498a751919b SHA512 ddb6e48e071b42b7871cb6396c61fdf9bfb85e9bb9f88720e8ac1b7bff499c43784de6bf3f67d3fe61bc05ed0e3f6a24f646aa6c54e387b95e744c16525978e8
diff --git a/games-arcade/jardinains/files/strings-pt.patch b/games-arcade/jardinains/files/strings-pt.patch
new file mode 100644
index 000000000000..f4dfe3f5d46e
--- /dev/null
+++ b/games-arcade/jardinains/files/strings-pt.patch
@@ -0,0 +1,303 @@
+--- a/data/strings.xml
++++ b/data/strings.xml
+@@ -35,5 +35,5 @@
+ <es>Espaol</es>
+ <it>Italiano</it>
+- <pt>Portuguese</pt>
++ <pt>Portugus</pt>
+ <pl>Polski</pl>
+ </message>
+@@ -61,5 +61,5 @@
+ <es>Parar</es>
+ <it>Uscita</it>
+- <pt>Parado</pt>
++ <pt>Sair</pt>
+ <pl>Koniec</pl>
+ </message>
+@@ -74,5 +74,5 @@
+ <es>Juego Nuevo</es>
+ <it>Nuovo Gioco</it>
+- <pt>Jogo Novo</pt>
++ <pt>Novo Jogo</pt>
+ <pl>Nowa Gra</pl>
+ </message>
+@@ -113,5 +113,5 @@
+ <es>Modo De La Ventana</es>
+ <it>Modo Della Finestra</it>
+- <pt>Modalidade Da Janela</pt>
++ <pt>Modo de Janela</pt>
+ <pl>Tryb Okienkowy</pl>
+ </message>
+@@ -165,5 +165,5 @@
+ <es>Pantalla Completa</es>
+ <it>Schermo Pieno</it>
+- <pt>Tela Cheia</pt>
++ <pt>Jogar em Ecr Completo</pt>
+ <pl>Pelny Ekran</pl>
+ </message>
+@@ -178,5 +178,5 @@
+ <es>Pantalla Completa/Ventana</es>
+ <it>Schermo Pieno/Finestra</it>
+- <pt>Tela Cheia/Janela</pt>
++ <pt>Ecr Completo/Janela</pt>
+ <pl>Pelny Ecran/Okno</pl>
+ </message>
+@@ -218,5 +218,5 @@
+ <es>Regresar</es>
+ <it>Andare Indietro</it>
+- <pt>Ir Para Trs</pt>
++ <pt>Voltar</pt>
+ <pl>Wstecz</pl>
+ </message>
+@@ -244,5 +244,5 @@
+ <es>Anular</es>
+ <it>Annullamento</it>
+- <pt>Cancelamento</pt>
++ <pt>Cancelar</pt>
+ <pl>Poniechaj</pl>
+ </message>
+@@ -257,5 +257,5 @@
+ <es>Continuar Jugando</es>
+ <it>Continuare A Giocare</it>
+- <pt>Continuar Jogando</pt>
++ <pt>Continuar a Jogar</pt>
+ <pl>Kontynuuj Gre</pl>
+ </message>
+@@ -270,5 +270,5 @@
+ <es>Terminar y Regresar</es>
+ <it>Rinunciato Al Menu</it>
+- <pt>Parado Ao Menu</pt>
++ <pt>Sair para o Menu</pt>
+ <pl>Wyjdz Do Menu</pl>
+ </message>
+@@ -283,5 +283,5 @@
+ <es>Terminar de Jugar</es>
+ <it>Uscita Jardinains 2</it>
+- <pt>Parado Jardinains 2</pt>
++ <pt>Sair do Jardinains 2</pt>
+ <pl>Zakoncz Jardinains 2</pl>
+ </message>
+@@ -296,5 +296,5 @@
+ <es>Pausa</es>
+ <it>Pausa</it>
+- <pt>Pausado/pt>
++ <pt>Pausa</pt>
+ <pl>Gra Przerwana</pl>
+ </message>
+@@ -322,5 +322,5 @@
+ <es>Calidad de los grficos</es>
+ <it>Qualit dei grafici</it>
+- <pt>Qualidade dos grficos</pt>
++ <pt>Qualidade dos Grficos</pt>
+ <pl>Jakosc Grafiki</pl>
+ </message>
+@@ -335,5 +335,5 @@
+ <es>Conductor de los grficos</es>
+ <it>Driver dei grafici</it>
+- <pt>Excitador dos grficos</pt>
++ <pt>Controlador dos Grficos</pt>
+ <pl>Sterowniki Graficzne</pl>
+ </message>
+@@ -361,5 +361,5 @@
+ <es>Crear A Nuevo Jugador</es>
+ <it>Generare Il Nuovo Giocatore</it>
+- <pt>Criar O Jogador Novo</pt>
++ <pt>Criar um Jogador Novo</pt>
+ <pl>Utworz Nowego Gracza</pl>
+ </message>
+@@ -374,5 +374,5 @@
+ <es>Entrar Contrasea</es>
+ <it>Digitare La Parola d'Accesso</it>
+- <pt>Incorporar A Senha</pt>
++ <pt>Introduzir A Senha</pt>
+ <pl>Wpisz Haslo</pl>
+ </message>
+@@ -387,5 +387,5 @@
+ <es>Volver A Entrar La Contrasea</es>
+ <it>Digitare Ancora La Parola d'Accesso</it>
+- <pt>Incorporar A Senha Outra Vez</pt>
++ <pt>Re-Introduzir A Senha</pt>
+ <pl>Wprowadz Haslo Ponownie</pl>
+ </message>
+@@ -400,5 +400,5 @@
+ <es>Las Contraseas No Emparejan!</es>
+ <it>Parole d'Accesso Male!</it>
+- <pt>As Senhas No Combinam!</pt>
++ <pt>As Senhas No Coincidem!</pt>
+ <pl>Hasla Nie Sa Identyczne!</pl>
+ </message>
+@@ -426,5 +426,5 @@
+ <es>Contrasea Incorrecta</es>
+ <it>Parola d'Accesso Errata</it>
+- <pt>Senha Incorreta</pt>
++ <pt>Senha Incorrecta</pt>
+ <pl>Niepoprawne Haslo</pl>
+ </message>
+@@ -439,5 +439,5 @@
+ <es>Incorporar Nombre Del Jugador</es>
+ <it>Introdurre Nome Del Giocatore</it>
+- <pt>Dar Entrada Nome Do Jogador</pt>
++ <pt>Introduzir o Nome Do Jogador</pt>
+ <pl>Wprowadz Imie Gracza</pl>
+ </message>
+@@ -452,5 +452,5 @@
+ <es>Nombre No Existe!</es>
+ <it>Nessun Nome Introdotto!</it>
+- <pt>Nenhum Nome Dado Entrada Com!</pt>
++ <pt>Nenhum Nome Introduzido!</pt>
+ <pl>Nie Podano Imienia!</pl>
+ </message>
+@@ -465,5 +465,5 @@
+ <es>El Jugador Existe!</es>
+ <it>Il Giocatore Gi Esiste!</it>
+- <pt>O Jogador Existe J!</pt>
++ <pt>O Jogador J Existe!</pt>
+ <pl>Gracz Juz Istnieje!</pl>
+ </message>
+@@ -478,5 +478,5 @@
+ <es>No Se Puede Crear!</es>
+ <it>Non Ha Potuto Generare!</it>
+- <pt>No Podia Criar O Jogador!</pt>
++ <pt>No Consegui Criar O Jogador!</pt>
+ <pl>Utworzenie Gracza Niemozliwe!</pl>
+ </message>
+@@ -504,5 +504,5 @@
+ <es>Fin</es>
+ <it>Gioco Sopra</it>
+- <pt>Jogo Sobre</pt>
++ <pt>Fim do Jogo</pt>
+ <pl>Koniec Gry</pl>
+ </message>
+@@ -517,5 +517,5 @@
+ <es>Nuevo Juego De Este Nivel</es>
+ <it>Nuovo Gioco (Questo Livello)</it>
+- <pt>Jogo Novo Deste Nvel</pt>
++ <pt>Jogo Novo a partir Deste Nvel</pt>
+ <pl>Nowa Gra Od Tego Poziomu</pl>
+ </message>
+@@ -583,5 +583,5 @@
+ <es>Cuenta Mejor</es>
+ <it>Segno Migliore</it>
+- <pt>Contagem Superior</pt>
++ <pt>Pontos Mximos</pt>
+ <pl>Najlepszy Wynik</pl>
+ </message>
+@@ -687,5 +687,5 @@
+ <es>PROYECTILES</es>
+ <it>PROIETTILI</it>
+- <pt>PROJECTILES</pt>
++ <pt>PROJCTEIS</pt>
+ <pl>POCISKI</pl>
+ </message>
+@@ -739,5 +739,5 @@
+ <es>PRIMAS</es>
+ <it>INDENNIT</it>
+- <pt>BNUS</pt>
++ <pt>BNUS</pt>
+ <pl>BONUSY</pl>
+ </message>
+@@ -804,5 +804,5 @@
+ <es>Solamente Sonido</es>
+ <it>Suono Soltanto</it>
+- <pt>Som Somente</pt>
++ <pt>Apenas Som</pt>
+ <pl>Tylko Dzwieki</pl>
+ </message>
+@@ -817,5 +817,5 @@
+ <es>Solamente Msica</es>
+ <it>Suono Musica</it>
+- <pt>Som Msica</pt>
++ <pt>Apenas Msica</pt>
+ <pl>Tylko Muzyka</pl>
+ </message>
+@@ -856,5 +856,5 @@
+ <es>Solamente $19,99 USD!</es>
+ <it>Suono $19,99 USD!</it>
+- <pt>Som $19,99 USD!</pt>
++ <pt>S $19,99 USD!</pt>
+ <pl>Tylko $19,99 USD!</pl>
+ </message>
+@@ -882,5 +882,5 @@
+ <es>Ms Primas!</es>
+ <it>Pi Indennit!</it>
+- <pt>Mais Bnus!</pt>
++ <pt>Mais Bnus!</pt>
+ <pl>Wiecej Bonusow!</pl>
+ </message>
+@@ -923,5 +923,5 @@
+ <es>Clque Aqu Para Comprar!</es>
+ <it>Clicca Qui Per Comprare!</it>
+- <pt>Estalar aqui para comprar!</pt>
++ <pt>Clicar Aqui Para Comprar!</pt>^M
+ <pl>Kliknij tu, aby kupic!</pl>
+ </message>
+@@ -989,5 +989,5 @@
+ <es>Abandonar el Juego Actual?</es>
+ <it>Abbandonare il Gioco Corrente?</it>
+- <pt>Abandonar o Jogo Atual?</pt>
++ <pt>Abandonar o Jogo Actual?</pt>
+ <pl>Koniec Biezacej Gry?</pl>
+ </message>
+@@ -1004,5 +1004,5 @@
+ <es>Suprimir</es>
+ <it>Cancellare</it>
+- <pt>Suprimir</pt>
++ <pt>Apagar</pt>
+ <pl>Usunac</pl>
+ </message>
+@@ -1030,5 +1030,5 @@
+ <es>Estadstica</es>
+ <it>Statistiche</it>
+- <pt>Statistics</pt>
++ <pt>Estatsticas</pt>
+ <pl>Statystyka</pl>
+ </message>
+@@ -1043,5 +1043,5 @@
+ <es>Tiempo Perdi</es>
+ <it>Tempo Perso</it>
+- <pt>Tempo Perdeu</pt>
++ <pt>Tempo Total</pt>
+ <pl>Czas Stracony</pl>
+ </message>
+@@ -1069,5 +1069,5 @@
+ <es>ao</es>
+ <it>anno</it>
+- <pt>anos</pt>
++ <pt>ano</pt>
+ <pl>rok</pl>
+ </message>
+@@ -1199,5 +1199,5 @@
+ <es>Tramposo?</es>
+ <it>Frode?</it>
+- <pt>Fraude?</pt>
++ <pt>Ajudas?</pt>
+ <pl>Oszukac?</pl>
+ </message>
+@@ -1212,5 +1212,5 @@
+ <es>Nmero de Juegos</es>
+ <it>Numero di Giochi</it>
+- <pt>Nmero dos Jogos</pt>
++ <pt>Nmero de Jogos</pt>
+ <pl>Gra Ogolny</pl>
+ </message>
+@@ -1225,5 +1225,5 @@
+ <es>Nmero de Niveles</es>
+ <it>Numero di Livelli</it>
+- <pt>Nmero dos Nveis</pt>
++ <pt>Nmero de Nveis</pt>
+ <pl>Poziomy Ogolem</pl>
+ </message>
+@@ -1251,5 +1251,5 @@
+ <es>Los paquetes del juego modificado estn disponibles solamente en la versin completa de Jardinains 2!</es>
+ <it>I pacchetti su ordinazione del gioco sono disponibili soltanto nella versione completa di Jardinains 2!</it>
+- <pt>Os blocos feitos sob encomenda do jogo esto disponveis somente na verso cheia de Jardinains 2!</pt>
++ <pt>Os blocos modificados do jogo esto disponveis somente na verso completa do Jardinains 2!</pt>
+ <pl>Custom game packs are available only in the full version of Jardinains 2!</pl>
+ </message>
+@@ -1293,5 +1293,5 @@
+ <es>Ningunos Rastros de la Bola</es>
+ <it>Nessun Tracce della Sfera</it>
+- <pt>Nenhumas Fugas de Esfera</pt>
++ <pt>Nenhuns rastos de Esfera</pt>
+ <pl>Pilka Proste</pl>
+ </message>
diff --git a/games-arcade/jardinains/jardinains-2.0-r4.ebuild b/games-arcade/jardinains/jardinains-2.0-r4.ebuild
new file mode 100644
index 000000000000..d7a4082c3986
--- /dev/null
+++ b/games-arcade/jardinains/jardinains-2.0-r4.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop wrapper
+
+DESCRIPTION="Arkanoid with Gnomes"
+HOMEPAGE="https://jardinains2.com"
+SRC_URI="mirror://gentoo/JN2_1_FREE_LIN.tar.gz"
+
+LICENSE="jardinains"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+
+RESTRICT="strip"
+
+RDEPEND="
+ acct-group/gamestat
+ sys-libs/glibc
+ sys-libs/libstdc++-v3:5
+ >=virtual/opengl-7.0-r1[abi_x86_32(-)]
+ >=virtual/glu-9.0-r1[abi_x86_32(-)]
+ >=x11-libs/libX11-1.6.2[abi_x86_32(-)]
+ >=x11-libs/libXxf86vm-1.1.3[abi_x86_32(-)]
+ amd64? ( sys-libs/libstdc++-v3:5[multilib] )
+"
+
+dir=/opt/${PN}
+QA_PREBUILT="${dir#/}/${PN}"
+QA_EXECSTACK="${dir#/}${PN}/jardinains"
+
+PATCHES=(
+ "${FILESDIR}"/strings-pt.patch
+)
+
+src_unpack() {
+ unpack JN2_1_FREE_LIN.tar.gz
+ cd "${WORKDIR}" || die
+ mv "Jardinains 2!" ${P} || die
+}
+
+src_prepare() {
+ default
+
+ # clean Mac fork files (bug #295782)
+ find . -type f -name "._*" -exec rm -f '{}' + || die
+}
+
+src_install() {
+ exeinto ${dir}
+ doexe jardinains
+
+ insinto ${dir}
+ doins -r LICENSE.txt data help
+
+ make_wrapper jardinains ./jardinains "${dir}" "${dir}"
+ make_desktop_entry jardinains "Jardinains 2"
+ touch "${ED}"/${dir}/data/prefs.xml || die
+
+ chmod g+rw "${ED}"/${dir}/data/prefs.xml || die
+ chmod -R g+rw "${ED}"/${dir}/data/players || die
+
+ fperms -R 660 /opt/${PN}/data
+ fowners -R root:gamestat /opt/${PN}/data /opt/${PN}/jardinains
+ fperms g+s /opt/${PN}/${PN}
+}
+
+pkg_postinst() {
+ elog "Due to the way this software is designed all user preferences for"
+ elog "graphics, audio and other in game data are shared among all users"
+ elog "of the computer."
+}
diff --git a/games-arcade/jardinains/metadata.xml b/games-arcade/jardinains/metadata.xml
new file mode 100644
index 000000000000..03fc3d8c82d7
--- /dev/null
+++ b/games-arcade/jardinains/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <longdescription>Jardinains 2!, the sequel to Jardinains 1! (surprisingly
+ enough) is a fairly straightforward game. You have a paddle. You have a
+ ball. You have a whole bunch of bricks. Inside these bricks live nains.
+ Nains are cute little critters who pop out of their bricks every now and
+ then to have some fun and give you a headache. </longdescription>
+</pkgmetadata>
diff --git a/games-arcade/jazz2-data/Manifest b/games-arcade/jazz2-data/Manifest
new file mode 100644
index 000000000000..75c84ef3ba60
--- /dev/null
+++ b/games-arcade/jazz2-data/Manifest
@@ -0,0 +1,3 @@
+DIST jazz2-shareware-demo.zip 7658261 BLAKE2B b2b4412cd62feba07878a091a2a47d432a10d09f5f552eeb49095938d9ca6f97e94ab31e9cc8545019d9bdd8e5f97270dd9c1b25ba2099b260ff731dee5847c6 SHA512 208aedbb581f001c8215932166c71e5a160c70af6343d06aa35211558f898f18c47f066c896f016372aaefc8dbc495bc28ace18ce5fcbb729a9d2444a445d9ce
+DIST setup_jazz_jackrabbit_2_1.24hf_(16886).exe 58050816 BLAKE2B 6a6492aedc3d7387e5ef5bfc641d54c46dbe850f65f9269268c962cf963164dcd98c2f2651e9dc3b7c2d0ea9ea00836e9cc1332a158b08c34f8fa9fbfb44859e SHA512 df6fc47abf24aaa1895df5f897f698b53865fdc499e2454e07b273eddc8fcdeeebe8fc2992292fb27e077da252d3d5728823ce6a2e83412c150fb8742a52116f
+DIST setup_jazz_jackrabbit_2_cc_1.2x_(16742).exe 57273872 BLAKE2B 85cd51fbe706bd6a040931d084102cf46c13d3508653ac429f721b93b8bcef131bea688a1d49cc6e789fa108fed5611e2bd476a2f50ceee4ac0c16531d49795a SHA512 fafce9bb318903970b8ba8e3c08cd261c748180158c162db4f67408d12b436a1a091b2423e2df0859e6c65df5ffe1e7e07d370089b6ebf70f8fc32ff5c260a86
diff --git a/games-arcade/jazz2-data/jazz2-data-0-r20241219.ebuild b/games-arcade/jazz2-data/jazz2-data-0-r20241219.ebuild
new file mode 100644
index 000000000000..50ae121bfcfd
--- /dev/null
+++ b/games-arcade/jazz2-data/jazz2-data-0-r20241219.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit estack
+
+DESCRIPTION="Jazz Jackrabbit 2 data files for games-arcade/jazz2"
+HOMEPAGE="https://www.gog.com/game/jazz_jackrabbit_2_collection"
+
+# Order is significant!
+SRC_URI="
+ demo? (
+ https://deat.tk/jazz2/misc/shareware-demo.zip -> jazz2-shareware-demo.zip
+ )
+ !demo? (
+ setup_jazz_jackrabbit_2_1.24hf_(16886).exe
+ cc? ( setup_jazz_jackrabbit_2_cc_1.2x_(16742).exe )
+ )
+"
+
+S="${WORKDIR}/app"
+LICENSE="free-noncomm GOG-EULA"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="+cc demo"
+RESTRICT="!demo? ( bindist fetch )"
+
+RDEPEND=">=games-arcade/jazz2-3.0.0-r1"
+
+BDEPEND="
+ demo? ( app-arch/unzip )
+ !demo? ( app-arch/innoextract )
+"
+
+DIR="/usr/share/jazz2"
+
+pkg_nofetch() {
+ einfo "Please buy and download the following files from"
+ einfo "${HOMEPAGE}."
+ einfo
+ local EXE
+ for EXE in ${A}; do
+ einfo " - ${EXE}"
+ done
+}
+
+src_unpack() {
+ if use demo; then
+ unzip -qoL -d app "${DISTDIR}/${A}" || die
+ else
+ local EXE
+ for EXE in ${A}; do
+ innoextract -e -s -p0 -L -I app "${DISTDIR}/${EXE}" || die
+ done
+ fi
+}
+
+src_install() {
+ eshopts_push -s nullglob
+ insinto /usr/share/jazz2/Source
+ doins -r *.j?? *.it *.mod *.s3m tiles*/
+ eshopts_pop
+}
diff --git a/games-arcade/jazz2-data/metadata.xml b/games-arcade/jazz2-data/metadata.xml
new file mode 100644
index 000000000000..fcd190be0a62
--- /dev/null
+++ b/games-arcade/jazz2-data/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <use>
+ <flag name="cc">Install The Christmas Chronicles additional data</flag>
+ <flag name="demo">Use the free demo data instead of the full retail game data</flag>
+ </use>
+</pkgmetadata>
diff --git a/games-arcade/jazz2/Manifest b/games-arcade/jazz2/Manifest
new file mode 100644
index 000000000000..41da38ec6412
--- /dev/null
+++ b/games-arcade/jazz2/Manifest
@@ -0,0 +1,2 @@
+DIST jazz2-2.9.1.tar.gz 3700152 BLAKE2B dee3ada0bfa95294dac9fa2c37019edc20dd9a9f462671dea1d083575bc1f231e013bb5f9076b9163cdf0682a7775932f07050e894dad2f492e65150d47b42dd SHA512 d908a2c24d010122d4c9e2db17ed7392780785ef98799401f960cee41b5dfd9504859e30410e0bcf4678d1a73e5e153f4c46259da672b923cdc8decae25aae1c
+DIST jazz2-3.0.0.tar.gz 3781625 BLAKE2B d044d4fe5128eaff45ddf57c5bf9090c279730e7c0b5ddf3951744f6fdd81be09335d3d1c9089f930dadbdac906746686af13791ec8f212fed034afa8e8dd35a SHA512 e643e5b3196020737a9a25929684254becd77cb5ba0715f70c313b1d254e42a2178f082abae5155028ad2ffdf605563a3553e8c7beede3bd6a10c0001c7ecfe7
diff --git a/games-arcade/jazz2/files/jazz2-system-source.patch b/games-arcade/jazz2/files/jazz2-system-source.patch
new file mode 100644
index 000000000000..35cbb3a9d9c3
--- /dev/null
+++ b/games-arcade/jazz2/files/jazz2-system-source.patch
@@ -0,0 +1,226 @@
+diff --git a/README.md b/README.md
+index fe466e50..e91dd4ed 100644
+--- a/README.md
++++ b/README.md
+@@ -46,7 +46,7 @@ Jazz族 Resurrection is reimplementation of the game **Jazz Jackrabbit 2** releas
+ * Install dependencies: `sudo apt install libglew2.2 libglfw3 libsdl2-2.0-0 libopenal1 libvorbisfile3 libopenmpt0`
+ * Alternatively, install provided `.deb` or `.rpm` package and dependencies should be installed automatically
+ * Copy contents of original *Jazz Jackrabbit 2* directory to `Game/Source/`
+- * If packages are used, the files must be copied to `~/.local/share/Jazz族 Resurrection/Source/` instead
++ * If packages are used, the files must be copied to `~/.local/share/Jazz族 Resurrection/Source/` or `/usr/local/share/Jazz族 Resurrection/Source/` instead, please follow instructions of specific package
+ * Run `Game/jazz2` or `Game/jazz2_sdl2` application
+ * If packages are used, the game should be visible in application list
+
+diff --git a/Sources/Common.h b/Sources/Common.h
+index 865d42bb..cf6f112c 100644
+--- a/Sources/Common.h
++++ b/Sources/Common.h
+@@ -33,6 +33,10 @@
+
+ #include <stdlib.h>
+
++#if !defined(NCINE_INSTALL_PREFIX) && defined(DEATH_TARGET_UNIX)
++# define NCINE_INSTALL_PREFIX "/usr/local"
++#endif
++
+ // Check platform-specific capabilities
+ #if defined(WITH_SDL) || defined(DEATH_TARGET_WINDOWS_RT)
+ # define NCINE_HAS_GAMEPAD_RUMBLE
+diff --git a/Sources/Jazz2/ContentResolver.cpp b/Sources/Jazz2/ContentResolver.cpp
+index 737582db..a7c5d460 100644
+--- a/Sources/Jazz2/ContentResolver.cpp
++++ b/Sources/Jazz2/ContentResolver.cpp
+@@ -207,7 +207,7 @@ namespace Jazz2
+ # elif defined(NCINE_OVERRIDE_CONTENT_PATH)
+ _contentPath = NCINE_OVERRIDE_CONTENT_PATH;
+ # else
+- _contentPath = "/usr/share/" NCINE_LINUX_PACKAGE "/Content/";
++ _contentPath = NCINE_INSTALL_PREFIX "/share/" NCINE_LINUX_PACKAGE "/Content/";
+ # endif
+ # if defined(NCINE_PACKAGED_CONTENT_PATH)
+ // If Content is packaged with binaries, always use standard XDG paths for everything else
+@@ -226,18 +226,25 @@ namespace Jazz2
+ auto localStorage = fs::GetLocalStorage();
+ if (!localStorage.empty()) {
+ // Use "$XDG_DATA_HOME/Jazz族 Resurrection/" if exists (for backward compatibility), otherwise "$XDG_DATA_HOME/{NCINE_LINUX_PACKAGE}/"
+- _sourcePath = fs::CombinePath(localStorage, "Jazz族 Resurrection/Source/"_s);
+- if (fs::DirectoryExists(_sourcePath)) {
+- _cachePath = fs::CombinePath(localStorage, "Jazz族 Resurrection/Cache/"_s);
+- } else {
++ _cachePath = fs::CombinePath(localStorage, "Jazz族 Resurrection/Cache/"_s);
++ if (!fs::DirectoryExists(_cachePath)) {
+ auto appData = fs::CombinePath(localStorage, NCINE_LINUX_PACKAGE);
+- _sourcePath = fs::CombinePath(appData, "Source/"_s);
+ _cachePath = fs::CombinePath(appData, "Cache/"_s);
+ }
+ } else {
+- _sourcePath = "Source/"_s;
+ _cachePath = "Cache/"_s;
+ }
++
++ // Prefer system-wide Source only if it exists and local one doesn't exist
++ _sourcePath = fs::CombinePath(fs::GetDirectoryName(_cachePath), "Source/"_s);
++ if (!fs::FindPathCaseInsensitive(fs::CombinePath(_sourcePath, "Anims.j2a"_s)) &&
++ !fs::FindPathCaseInsensitive(fs::CombinePath(_sourcePath, "AnimsSw.j2a"_s))) {
++ auto systemWideSource = NCINE_INSTALL_PREFIX "/share/" NCINE_LINUX_PACKAGE "/Source/";
++ if (fs::FindPathCaseInsensitive(fs::CombinePath(systemWideSource, "Anims.j2a"_s)) ||
++ fs::FindPathCaseInsensitive(fs::CombinePath(systemWideSource, "AnimsSw.j2a"_s))) {
++ _sourcePath = systemWideSource;
++ }
++ }
+ } else {
+ // Fallback to relative paths
+ _contentPath = "Content/"_s;
+diff --git a/Sources/Shared/IO/FileSystem.cpp b/Sources/Shared/IO/FileSystem.cpp
+index 5b5199b0..0d4850bd 100644
+--- a/Sources/Shared/IO/FileSystem.cpp
++++ b/Sources/Shared/IO/FileSystem.cpp
+@@ -701,73 +701,91 @@ namespace Death { namespace IO {
+ #if !defined(DEATH_TARGET_WINDOWS) && !defined(DEATH_TARGET_SWITCH)
+ String FileSystem::FindPathCaseInsensitive(const StringView path)
+ {
+- if (Exists(path)) {
++ if (path.empty() || Exists(path)) {
+ return path;
+ }
+
+- std::size_t l = path.size();
+- char* p = (char*)alloca(l + 1);
+- strncpy(p, path.data(), l);
+- p[l] = '\0';
+- std::size_t rl = 0;
+- bool isAbsolute = (p[0] == '/' || p[0] == '\\');
++ DIR* d = nullptr;
++ String result = path;
++ MutableStringView partialResult = result;
++ char* nextPartBegin;
+
+- String result(NoInit, path.size() + (isAbsolute ? 0 : 2));
++ while (MutableStringView separator = partialResult.findLast('/')) {
++ if DEATH_UNLIKELY(separator.begin() == result.begin()) {
++ // Nothing left, only first slash of absolute path
++ break;
++ }
+
+- DIR* d;
+- if (isAbsolute) {
+- d = ::opendir("/");
+- p = p + 1;
+- } else {
+- d = ::opendir(".");
+- result[0] = '.';
+- result[1] = '\0';
+- rl = 1;
++ partialResult = partialResult.prefix(separator.begin());
++ separator[0] = '\0';
++ d = ::opendir(result.data());
++ separator[0] = '/';
++ if (d != nullptr) {
++ nextPartBegin = separator.end();
++ break;
++ }
+ }
+
+- bool last = false;
+- char* c = strsep(&p, "/");
+- while (c) {
+- if (d == nullptr) {
+- return {};
++ if (d == nullptr) {
++ if (result[0] == '/' || result[0] == '\\') {
++ d = ::opendir("/");
++ nextPartBegin = result.begin() + 1;
++ } else {
++ d = ::opendir(".");
++ nextPartBegin = result.begin();
+ }
+
+- if (last) {
+- ::closedir(d);
++ if DEATH_UNLIKELY(d == nullptr) {
+ return {};
+ }
++ }
++
++ while (true) {
++ partialResult = result.suffix(nextPartBegin);
++ MutableStringView nextSeparator = partialResult.findOr('/', result.end());
++ if DEATH_UNLIKELY(nextSeparator.begin() == nextPartBegin) {
++ // Skip empty parts
++ nextPartBegin = nextSeparator.end();
++ continue;
++ }
+
+- result[rl] = '/';
+- rl += 1;
+- result[rl] = '\0';
++ bool hasNextSeparator = (nextSeparator.begin() != result.end());
++ if DEATH_LIKELY(hasNextSeparator) {
++ nextSeparator[0] = '\0';
++ }
+
+ struct dirent* entry = ::readdir(d);
+ while (entry != nullptr) {
+- if (::strcasecmp(c, entry->d_name) == 0) {
+- strcpy(&result[rl], entry->d_name);
+- rl += strlen(entry->d_name);
+-
++ if (::strcasecmp(partialResult.begin(), entry->d_name) == 0) {
++ std::size_t fileNameLength = std::strlen(entry->d_name);
++ DEATH_DEBUG_ASSERT(partialResult.begin() + fileNameLength == nextSeparator.begin());
++ std::memcpy(partialResult.begin(), entry->d_name, fileNameLength);
+ ::closedir(d);
++
++ nextPartBegin = nextSeparator.end();
++ if (!hasNextSeparator || nextPartBegin == result.end()) {
++ if (hasNextSeparator) {
++ nextSeparator[0] = '/';
++ }
++ return result;
++ }
++
+ d = ::opendir(result.data());
++ if DEATH_UNLIKELY(d == nullptr) {
++ return {};
++ }
++ nextSeparator[0] = '/';
+ break;
+ }
+
+ entry = ::readdir(d);
+ }
+
+- if (entry == nullptr) {
+- strcpy(&result[rl], c);
+- rl += strlen(c);
+- last = true;
++ if DEATH_UNLIKELY(entry == nullptr) {
++ ::closedir(d);
++ return {};
+ }
+-
+- c = strsep(&p, "/");
+ }
+-
+- if (d != nullptr) {
+- ::closedir(d);
+- }
+- return result;
+ }
+ #endif
+
+diff --git a/cmake/ncine_compiler_options.cmake b/cmake/ncine_compiler_options.cmake
+index 9ca461ad..6d981fdc 100644
+--- a/cmake/ncine_compiler_options.cmake
++++ b/cmake/ncine_compiler_options.cmake
+@@ -10,6 +10,10 @@ target_compile_definitions(${NCINE_APP} PUBLIC "NCINE_VERSION=\"${NCINE_VERSION}
+ string(TIMESTAMP NCINE_BUILD_YEAR "%Y")
+ target_compile_definitions(${NCINE_APP} PUBLIC "NCINE_BUILD_YEAR=\"${NCINE_BUILD_YEAR}\"")
+
++if(UNIX)
++ target_compile_definitions(${NCINE_APP} PUBLIC "NCINE_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
++endif()
++
+ if(NCINE_OVERRIDE_CONTENT_PATH)
+ message(STATUS "Using overriden `Content` path: ${NCINE_OVERRIDE_CONTENT_PATH}")
+ target_compile_definitions(${NCINE_APP} PUBLIC "NCINE_OVERRIDE_CONTENT_PATH=\"${NCINE_OVERRIDE_CONTENT_PATH}\"")
diff --git a/games-arcade/jazz2/jazz2-2.9.1.ebuild b/games-arcade/jazz2/jazz2-2.9.1.ebuild
new file mode 100644
index 000000000000..d23c7cf81062
--- /dev/null
+++ b/games-arcade/jazz2/jazz2-2.9.1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake xdg-utils
+
+DESCRIPTION="Open source reimplementation of Jazz Jackrabbit 2"
+HOMEPAGE="
+ https://deat.tk/jazz2/
+ https://github.com/deathkiller/jazz2-native
+"
+SRC_URI="
+ https://github.com/deathkiller/jazz2-native/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.tar.gz
+"
+S="${WORKDIR}/${PN}-native-${PV}"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="+openal sdl"
+
+DEPEND="
+ virtual/zlib:=
+ media-libs/libglvnd
+ openal? (
+ media-libs/libopenmpt
+ media-libs/openal
+ )
+ !sdl? ( media-libs/glfw )
+ sdl? ( media-libs/libsdl2 )
+"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ # We need to install README.md to a different directory, default
+ # src_install will handle that.
+ sed -i '/README_INSTALL_DESTINATION/d' cmake/ncine_installation.cmake || die
+ cmake_src_prepare
+}
+
+src_configure() {
+ local backend=GLFW
+ use sdl && backend=SDL2
+ local mycmakeargs=(
+ -DNCINE_LINUX_PACKAGE="${PN}"
+
+ -DNCINE_DOWNLOAD_DEPENDENCIES=OFF
+ -DNCINE_LINKTIME_OPTIMIZATION=OFF
+ -DNCINE_STRIP_BINARIES=OFF
+ -DNCINE_VERSION_FROM_GIT=OFF
+ -DNCINE_WITH_BACKWARD=OFF
+
+ -DNCINE_WITH_GLEW=OFF
+
+ -DNCINE_PREFERRED_BACKEND=${backend}
+
+ -DNCINE_WITH_AUDIO=$(usex openal)
+ )
+ cmake_src_configure
+}
+
+pkg_postinst() {
+ xdg_icon_cache_update
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+}
diff --git a/games-arcade/jazz2/jazz2-3.0.0-r1.ebuild b/games-arcade/jazz2/jazz2-3.0.0-r1.ebuild
new file mode 100644
index 000000000000..3c1a68123872
--- /dev/null
+++ b/games-arcade/jazz2/jazz2-3.0.0-r1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake optfeature prefix xdg
+
+DESCRIPTION="Open source reimplementation of Jazz Jackrabbit 2"
+HOMEPAGE="https://deat.tk/jazz2/"
+SRC_URI="https://github.com/deathkiller/jazz2-native/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${PN}-native-${PV}"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="+openal sdl"
+
+DEPEND="
+ media-libs/libglvnd
+ virtual/zlib:=
+ openal? (
+ media-libs/libopenmpt
+ media-libs/openal
+ )
+ !sdl? ( media-libs/glfw )
+ sdl? ( media-libs/libsdl2 )
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-system-source.patch
+)
+
+src_prepare() {
+ cmake_src_prepare
+ hprefixify Sources/Shared/Environment.cpp
+
+ # We need to install README.md to a different directory, default
+ # src_install will handle that.
+ sed -i '/README_INSTALL_DESTINATION/d' cmake/ncine_installation.cmake || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DNCINE_LINUX_PACKAGE="${PN}"
+
+ -DNCINE_DOWNLOAD_DEPENDENCIES=OFF
+ -DNCINE_LINKTIME_OPTIMIZATION=OFF
+ -DNCINE_STRIP_BINARIES=OFF
+ -DNCINE_VERSION_FROM_GIT=OFF
+ -DNCINE_WITH_BACKWARD=OFF
+
+ -DNCINE_WITH_GLEW=OFF
+
+ -DNCINE_PREFERRED_BACKEND=$(usex sdl SDL2 GLFW)
+
+ -DNCINE_WITH_AUDIO=$(usex openal)
+ )
+ cmake_src_configure
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ optfeature "game data unless you want to install it manually" ${CATEGORY}/${PN}-data
+}
diff --git a/games-arcade/jazz2/metadata.xml b/games-arcade/jazz2/metadata.xml
new file mode 100644
index 000000000000..4a5c41fe6a64
--- /dev/null
+++ b/games-arcade/jazz2/metadata.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">deathkiller/jazz2-native</remote-id>
+ </upstream>
+ <use>
+ <flag name="sdl">Prefer SDL2 over GLFW backend</flag>
+ </use>
+</pkgmetadata>
diff --git a/games-arcade/jumpnbump/Manifest b/games-arcade/jumpnbump/Manifest
new file mode 100644
index 000000000000..15d7dc64525a
--- /dev/null
+++ b/games-arcade/jumpnbump/Manifest
@@ -0,0 +1 @@
+DIST jumpnbump-1.61_p20210421.tar.bz2 377140 BLAKE2B c2f0b250f980de4789def1040b40b1d3e70ca3bbd84b6789ef88c99ad291147571551e375ff28c1cb8ac5057c3299582f9185bb897d66a36eeba5e179f27214b SHA512 82fda51762f06837a8530571439bdfdd8de6c74f38a53e9538aa28b4d9f3bd014f0ff7f550cc458cffeb38fadc2773b9b99ee7f9797ec84b546620bf93cfa9da
diff --git a/games-arcade/jumpnbump/files/jumpnbump-1.61-ranlib.patch b/games-arcade/jumpnbump/files/jumpnbump-1.61-ranlib.patch
new file mode 100644
index 000000000000..10d6d48b6deb
--- /dev/null
+++ b/games-arcade/jumpnbump/files/jumpnbump-1.61-ranlib.patch
@@ -0,0 +1,7 @@
+--- a/sdl/Makefile
++++ b/sdl/Makefile
+@@ -10,3 +10,3 @@
+ $(AR) cru $(TARGET) $(OBJS)
+- ranlib $(TARGET)
++ $(RANLIB) $(TARGET)
+
diff --git a/games-arcade/jumpnbump/jumpnbump-1.61_p20210421.ebuild b/games-arcade/jumpnbump/jumpnbump-1.61_p20210421.ebuild
new file mode 100644
index 000000000000..33bcb84f5e7f
--- /dev/null
+++ b/games-arcade/jumpnbump/jumpnbump-1.61_p20210421.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit desktop python-single-r1 toolchain-funcs
+
+MY_COMMIT="73c5fe86fd831dec45a22077e8d63dd2b6a6349e"
+
+DESCRIPTION="Funny multiplayer game about cute little fluffy bunnies"
+HOMEPAGE="https://libregames.gitlab.io/jumpnbump"
+SRC_URI="https://gitlab.com/LibreGames/jumpnbump/-/archive/${MY_COMMIT}/${P}.tar.bz2"
+S=${WORKDIR}/${PN}-${MY_COMMIT}
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="gui"
+REQUIRED_USE="gui? ( ${PYTHON_REQUIRED_USE} )"
+
+DEPEND="
+ app-arch/bzip2:=
+ media-libs/libsdl2[joystick,sound,video]
+ media-libs/sdl2-mixer[mod]
+ media-libs/sdl2-net
+ virtual/zlib:=
+"
+RDEPEND="
+ ${DEPEND}
+ gui? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ ')
+ x11-libs/gdk-pixbuf:2[introspection]
+ x11-libs/gtk+:3[introspection]
+ )"
+BDEPEND="gui? ( ${PYTHON_DEPS} )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.61-ranlib.patch
+)
+
+pkg_setup() {
+ use gui && python-single-r1_pkg_setup
+}
+
+src_compile() {
+ tc-export AR CC RANLIB
+
+ emake PREFIX="${EPREFIX}"/usr
+
+ if use gui; then
+ emake PREFIX="${EPREFIX}"/usr jnbmenu
+ python_fix_shebang menu/jumpnbump_menu.py
+ fi
+}
+
+src_install() {
+ emake PREFIX="${ED}"/usr install
+
+ use gui && emake -C menu PREFIX="${ED}"/usr install
+
+ doicon dist/${PN}.png
+ rm -- "${ED}"/usr/share/icons/${PN}.png || die
+
+ einstalldocs
+}
diff --git a/games-arcade/jumpnbump/metadata.xml b/games-arcade/jumpnbump/metadata.xml
new file mode 100644
index 000000000000..1d0c993d37f9
--- /dev/null
+++ b/games-arcade/jumpnbump/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="gitlab">LibreGames/jumpnbump</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/jvgs/Manifest b/games-arcade/jvgs/Manifest
new file mode 100644
index 000000000000..fe640de3c6ab
--- /dev/null
+++ b/games-arcade/jvgs/Manifest
@@ -0,0 +1 @@
+DIST jvgs-0.5.1-src.tar.gz 25932185 BLAKE2B 317e1005fd6107c6ef9ddd9d5614df0e889d4f7a529b39a2b00bb1d6ec81d6cfe101af31b7b17873ea224b28148c9c19eb2618f194a12b6ca5b4b7fc5c9f97d4 SHA512 f1a9cb96a1a40f1a27fced0aa1809c06d4fef79d88508d1503bfa3e35f58255673d900ea4f8902b65b3fa63c029423b622e96b14c9aa71e5825c907a4b59e1af
diff --git a/games-arcade/jvgs/files/jvgs-0.5-fix-build-system.patch b/games-arcade/jvgs/files/jvgs-0.5-fix-build-system.patch
new file mode 100644
index 000000000000..5f5ba191bb7e
--- /dev/null
+++ b/games-arcade/jvgs/files/jvgs-0.5-fix-build-system.patch
@@ -0,0 +1,43 @@
+* Respect user CXXFLAGS
+* Build out-of-source
+
+--- a/src/bind/CMakeLists.txt
++++ b/src/bind/CMakeLists.txt
+@@ -1,16 +1,25 @@
+-ADD_CUSTOM_TARGET(
+- swig
+- ${SWIG_EXECUTABLE} -lua -c++ -o ${JVGS_BINARY_DIR}/src/bind/jvgslua.cpp ${JVGS_BINARY_DIR}/src/bind/jvgslua.i
++ADD_CUSTOM_COMMAND(
++ OUTPUT
++ ${CMAKE_CURRENT_BINARY_DIR}/jvgslua.cpp
++ COMMAND
++ ${SWIG_EXECUTABLE} -lua -c++ -o ${CMAKE_CURRENT_BINARY_DIR}/jvgslua.cpp ${CMAKE_CURRENT_SOURCE_DIR}/jvgslua.i
++ VERBATIM
+ )
+
+ ADD_LIBRARY(
+ bind STATIC
+- jvgslua.cpp
++ ${CMAKE_CURRENT_BINARY_DIR}/jvgslua.cpp
+ ScriptManager.cpp
+ )
+
+ ADD_DEPENDENCIES( bind swig )
+
++TARGET_INCLUDE_DIRECTORIES(
++ bind
++ PRIVATE
++ ${CMAKE_CURRENT_SOURCE_DIR}
++)
++
+ TARGET_LINK_LIBRARIES(
+ bind
+ ${LUA_LIBRARIES}
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-SET( CMAKE_CXX_FLAGS "-DTIXML_USE_STL -ggdb" )
++SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTIXML_USE_STL" )
+
+ INCLUDE_DIRECTORIES(
+ ${SDL_INCLUDE_DIR}
diff --git a/games-arcade/jvgs/files/jvgs-0.5-path.patch b/games-arcade/jvgs/files/jvgs-0.5-path.patch
new file mode 100644
index 000000000000..30e5cf8cdb97
--- /dev/null
+++ b/games-arcade/jvgs/files/jvgs-0.5-path.patch
@@ -0,0 +1,32 @@
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -6,6 +6,7 @@
+
+ #include <string>
+ using namespace std;
++#include <unistd.h>
+
+ /* Needed on windows to link main with SDLmain. */
+ #include <SDL/SDL.h>
+@@ -20,9 +21,20 @@
+
+ if(argc < 2) {
+ /* Some default. */
++ chdir("/usr/share/jvgs/");
+ fileName = "main.lua";
+ } else {
+- fileName = argv[1];
++ char *pos;
++ pos = strrchr(argv[1],'/');
++ if(pos) {
++ *pos='\0';
++ pos++;
++ chdir(argv[1]);
++ fileName=pos;
++ }
++ else {
++ fileName = argv[1];
++ }
+ }
+
+ scriptManager->runScript(fileName);
diff --git a/games-arcade/jvgs/files/jvgs-0.5-unbundle-tinyxml.patch b/games-arcade/jvgs/files/jvgs-0.5-unbundle-tinyxml.patch
new file mode 100644
index 000000000000..fd9c0d8702a9
--- /dev/null
+++ b/games-arcade/jvgs/files/jvgs-0.5-unbundle-tinyxml.patch
@@ -0,0 +1,333 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 87b28ab..2ec725c 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -1,10 +1,14 @@
+ SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTIXML_USE_STL" )
+
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(TinyXml REQUIRED tinyxml)
++
+ INCLUDE_DIRECTORIES(
+ ${SDL_INCLUDE_DIR}
+ ${LUA_INCLUDE_DIR}
+ ${FREETYPE_INCLUDE_DIRS}
+ ${SDLMIXER_INCLUDE_DIR}
++ ${TINYXML_INCLUDE_DIRS}
+ ${ZLIB_INCLUDE_DIRS}
+ )
+
+@@ -12,7 +16,6 @@ ADD_SUBDIRECTORY( input )
+ ADD_SUBDIRECTORY( core )
+ ADD_SUBDIRECTORY( game )
+ ADD_SUBDIRECTORY( math )
+-ADD_SUBDIRECTORY( tinyxml )
+ ADD_SUBDIRECTORY( video )
+ ADD_SUBDIRECTORY( audio )
+ ADD_SUBDIRECTORY( sketch )
+@@ -25,5 +28,5 @@ ADD_EXECUTABLE(
+ )
+
+ TARGET_LINK_LIBRARIES(
+- jvgs bind input
++ jvgs bind input ${TINYXML_LIBRARIES}
+ )
+diff --git a/src/core/PropertyMap.cpp b/src/core/PropertyMap.cpp
+index 190b317..3f7dd1a 100644
+--- a/src/core/PropertyMap.cpp
++++ b/src/core/PropertyMap.cpp
+@@ -1,7 +1,7 @@
+ #include "PropertyMap.h"
+ #include "LogManager.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+ using namespace std;
+
+ namespace jvgs
+diff --git a/src/core/XMLLoadable.cpp b/src/core/XMLLoadable.cpp
+index f5cbc46..b819184 100644
+--- a/src/core/XMLLoadable.cpp
++++ b/src/core/XMLLoadable.cpp
+@@ -1,7 +1,7 @@
+ #include "XMLLoadable.h"
+ #include "LogManager.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace std;
+
+diff --git a/src/game/AbstractCamera.cpp b/src/game/AbstractCamera.cpp
+index b349418..725a2e2 100644
+--- a/src/game/AbstractCamera.cpp
++++ b/src/game/AbstractCamera.cpp
+@@ -5,7 +5,7 @@ using namespace jvgs::video;
+
+ using namespace jvgs::math;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ namespace jvgs
+ {
+diff --git a/src/game/Animation.cpp b/src/game/Animation.cpp
+index ac563a6..6aa3b10 100644
+--- a/src/game/Animation.cpp
++++ b/src/game/Animation.cpp
+@@ -7,7 +7,7 @@ using namespace jvgs::sketch;
+ #include "../core/LogManager.h"
+ using namespace jvgs::core;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace std;
+
+diff --git a/src/game/BullController.cpp b/src/game/BullController.cpp
+index 78f81af..56930b4 100644
+--- a/src/game/BullController.cpp
++++ b/src/game/BullController.cpp
+@@ -8,7 +8,7 @@ using namespace jvgs::core;
+ #include "../math/Vector2D.h"
+ using namespace jvgs::math;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace std;
+
+diff --git a/src/game/CollisionResponsePositioner.cpp b/src/game/CollisionResponsePositioner.cpp
+index 8065efe..657c1c6 100644
+--- a/src/game/CollisionResponsePositioner.cpp
++++ b/src/game/CollisionResponsePositioner.cpp
+@@ -15,7 +15,7 @@ using namespace jvgs::sketch;
+ #include "../math/QuadTree.h"
+ using namespace jvgs::math;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ #include <iostream>
+ using namespace std;
+diff --git a/src/game/DefaultInputController.cpp b/src/game/DefaultInputController.cpp
+index a05aec9..c6da502 100644
+--- a/src/game/DefaultInputController.cpp
++++ b/src/game/DefaultInputController.cpp
+@@ -7,7 +7,7 @@
+ #include "../input/InputManager.h"
+ using namespace jvgs::input;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace jvgs::math;
+
+diff --git a/src/game/Entity.cpp b/src/game/Entity.cpp
+index 914297f..f353541 100644
+--- a/src/game/Entity.cpp
++++ b/src/game/Entity.cpp
+@@ -27,7 +27,7 @@ using namespace jvgs::video;
+ #include "../bind/ScriptManager.h"
+ using namespace jvgs::bind;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace std;
+ using namespace jvgs::math;
+diff --git a/src/game/FlyStraightController.cpp b/src/game/FlyStraightController.cpp
+index 1217b62..62f8c1a 100644
+--- a/src/game/FlyStraightController.cpp
++++ b/src/game/FlyStraightController.cpp
+@@ -5,7 +5,7 @@
+ #include "../math/Vector2D.h"
+ using namespace jvgs::math;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ namespace jvgs
+ {
+diff --git a/src/game/FollowCamera.cpp b/src/game/FollowCamera.cpp
+index 4a1006b..4b1fe2c 100644
+--- a/src/game/FollowCamera.cpp
++++ b/src/game/FollowCamera.cpp
+@@ -12,7 +12,7 @@ using namespace jvgs::video;
+
+ using namespace jvgs::math;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ namespace jvgs
+ {
+diff --git a/src/game/InputController.cpp b/src/game/InputController.cpp
+index 0d76dd7..1e07609 100644
+--- a/src/game/InputController.cpp
++++ b/src/game/InputController.cpp
+@@ -5,7 +5,7 @@
+ #include "../input/InputManager.h"
+ using namespace jvgs::input;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace jvgs::math;
+
+diff --git a/src/game/Level.cpp b/src/game/Level.cpp
+index a02e818..bf0c485 100644
+--- a/src/game/Level.cpp
++++ b/src/game/Level.cpp
+@@ -14,7 +14,7 @@ using namespace jvgs::video;
+ #include "../audio/AudioManager.h"
+ using namespace jvgs::audio;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace jvgs::sketch;
+ using namespace jvgs::math;
+diff --git a/src/game/PatrollingController.cpp b/src/game/PatrollingController.cpp
+index 74e5171..7d56754 100644
+--- a/src/game/PatrollingController.cpp
++++ b/src/game/PatrollingController.cpp
+@@ -5,7 +5,7 @@
+ #include "../math/MathManager.h"
+ using namespace jvgs::math;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ namespace jvgs
+ {
+diff --git a/src/game/Positioner.cpp b/src/game/Positioner.cpp
+index 6297c09..5fb2f37 100644
+--- a/src/game/Positioner.cpp
++++ b/src/game/Positioner.cpp
+@@ -1,7 +1,7 @@
+ #include "Positioner.h"
+ #include "Entity.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace jvgs::math;
+
+diff --git a/src/game/SillyController.cpp b/src/game/SillyController.cpp
+index 25070e5..4954091 100644
+--- a/src/game/SillyController.cpp
++++ b/src/game/SillyController.cpp
+@@ -1,7 +1,7 @@
+ #include "SillyController.h"
+ #include "Entity.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace jvgs::math;
+
+diff --git a/src/game/SimpleBirdController.cpp b/src/game/SimpleBirdController.cpp
+index 54b95bc..82f371f 100644
+--- a/src/game/SimpleBirdController.cpp
++++ b/src/game/SimpleBirdController.cpp
+@@ -1,7 +1,7 @@
+ #include "SimpleBirdController.h"
+ #include "Entity.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace std;
+ using namespace jvgs::math;
+diff --git a/src/game/SimpleCamera.cpp b/src/game/SimpleCamera.cpp
+index 00deb92..e640481 100644
+--- a/src/game/SimpleCamera.cpp
++++ b/src/game/SimpleCamera.cpp
+@@ -2,7 +2,7 @@
+
+ using namespace jvgs::math;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ namespace jvgs
+ {
+diff --git a/src/game/Sprite.cpp b/src/game/Sprite.cpp
+index 19caa35..ee314df 100644
+--- a/src/game/Sprite.cpp
++++ b/src/game/Sprite.cpp
+@@ -1,7 +1,7 @@
+ #include "Sprite.h"
+ #include "Animation.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ using namespace std;
+
+diff --git a/src/math/Vector2D.cpp b/src/math/Vector2D.cpp
+index ba8a05e..61673b3 100644
+--- a/src/math/Vector2D.cpp
++++ b/src/math/Vector2D.cpp
+@@ -2,7 +2,7 @@
+ #include <cmath>
+ #include "MathManager.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ namespace jvgs
+ {
+diff --git a/src/sketch/GroupParser.cpp b/src/sketch/GroupParser.cpp
+index 0924f95..58d5584 100644
+--- a/src/sketch/GroupParser.cpp
++++ b/src/sketch/GroupParser.cpp
+@@ -3,7 +3,7 @@
+ #include "Group.h"
+ #include "SketchElement.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ #include "../core/LogManager.h"
+ using namespace jvgs::core;
+diff --git a/src/sketch/Parser.cpp b/src/sketch/Parser.cpp
+index 2b55c16..390f9ae 100644
+--- a/src/sketch/Parser.cpp
++++ b/src/sketch/Parser.cpp
+@@ -13,7 +13,7 @@ using namespace jvgs::core;
+ #include "../math/Vector2D.h"
+ using namespace jvgs::math;
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ namespace jvgs
+ {
+diff --git a/src/sketch/PathParser.cpp b/src/sketch/PathParser.cpp
+index 1eb2027..eb63cf2 100644
+--- a/src/sketch/PathParser.cpp
++++ b/src/sketch/PathParser.cpp
+@@ -3,7 +3,7 @@
+ #include "Path.h"
+ #include "PathDataParser.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ #include "../core/LogManager.h"
+ using namespace jvgs::core;
+diff --git a/src/sketch/SketchElementParser.cpp b/src/sketch/SketchElementParser.cpp
+index b7c4968..fc40dfb 100644
+--- a/src/sketch/SketchElementParser.cpp
++++ b/src/sketch/SketchElementParser.cpp
+@@ -3,7 +3,7 @@
+ #include "SketchElement.h"
+ #include "Parser.h"
+
+-#include "../tinyxml/tinyxml.h"
++#include "tinyxml.h"
+
+ #include "../core/LogManager.h"
+ using namespace jvgs::core;
diff --git a/games-arcade/jvgs/jvgs-0.5.1.ebuild b/games-arcade/jvgs/jvgs-0.5.1.ebuild
new file mode 100644
index 000000000000..a2b8eb71b2e5
--- /dev/null
+++ b/games-arcade/jvgs/jvgs-0.5.1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-{1,3,4} luajit )
+
+inherit cmake desktop lua-single
+
+DESCRIPTION="Open-source platform game with a sketched and minimalistic look"
+HOMEPAGE="https://jvgs.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/jvgs/${P}-src.tar.gz"
+S="${WORKDIR}/${P}-src"
+
+LICENSE="WTFPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+
+RDEPEND="${LUA_DEPS}
+ dev-libs/tinyxml[stl]
+ media-libs/libsdl[video]
+ media-libs/sdl-mixer[vorbis]
+ media-libs/freetype:2
+ virtual/zlib:=
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libXext
+ virtual/opengl
+ virtual/glu
+"
+DEPEND="${RDEPEND}"
+BDEPEND="dev-lang/swig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.5-fix-build-system.patch
+ "${FILESDIR}"/${PN}-0.5-unbundle-tinyxml.patch
+ "${FILESDIR}"/${PN}-0.5-path.patch
+)
+
+src_prepare() {
+ # Make sure we don't use bundled copy
+ rm -r src/tinyxml/ || die
+
+ cmake_src_prepare
+}
+
+src_install() {
+ dobin "${BUILD_DIR}"/src/${PN}
+
+ insinto /usr/share/${PN}
+ doins -r main.lua resources
+
+ newicon resources/drawing.svg ${PN}.svg
+ make_desktop_entry ${PN} ${PN}
+
+ einstalldocs
+}
diff --git a/games-arcade/jvgs/metadata.xml b/games-arcade/jvgs/metadata.xml
new file mode 100644
index 000000000000..ac032ed19754
--- /dev/null
+++ b/games-arcade/jvgs/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">jvgs</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/kajaani-kombat/Manifest b/games-arcade/kajaani-kombat/Manifest
new file mode 100644
index 000000000000..534a5565999d
--- /dev/null
+++ b/games-arcade/kajaani-kombat/Manifest
@@ -0,0 +1 @@
+DIST kajaani-kombat-0.7.tar.gz 1805504 BLAKE2B 664210a44e5dd5b27ca7b47ca9cb9445373d1243c01fcfb227251c6b48fb8b9e2ebd608eec2244f1b12f47bf5c886482bf70a0700538bbf415d93df41c34fcfe SHA512 84f6923b73c9529fa600c533b5a3de9ea9411f81060c5ad9fb85346fa17c9cb70bf6ba8222319e123372b01286a11b40bb355e8ef8c9bec95cd98f4d0e0460cb
diff --git a/games-arcade/kajaani-kombat/files/0.7-makefile.patch b/games-arcade/kajaani-kombat/files/0.7-makefile.patch
new file mode 100644
index 000000000000..d67f394fa623
--- /dev/null
+++ b/games-arcade/kajaani-kombat/files/0.7-makefile.patch
@@ -0,0 +1,22 @@
+--- a/Makefile.orig 2005-02-28 22:55:55.000000000 -0500
++++ b/Makefile 2005-02-28 22:58:45.000000000 -0500
+@@ -39,8 +39,8 @@
+ endif
+ ## UNIX RELEASE (default option)
+ ifeq ($(sys), )
+- MEDIA=-D MEDIA_PATH=\"./\"
+- DEBUG= -O $(MEDIA)
++ MEDIA=-D MEDIA_PATH=\"GENTOODIR\"
++ DEBUG= $(CFLAGS) $(MEDIA)
+ endif
+
+
+@@ -55,7 +55,7 @@
+
+ server_objs = game_obj.o terrain.o msg.o game_server.o server_main.o coord.o block.o connects.o player.o config.o
+
+-CXXFLAGS=`sdl-config --cflags` -Wall $(DEBUG)
++CXXFLAGS+=`sdl-config --cflags` $(MEDIA)
+
+ all: client
+
diff --git a/games-arcade/kajaani-kombat/files/kajaani-kombat-0.7-gcc11.patch b/games-arcade/kajaani-kombat/files/kajaani-kombat-0.7-gcc11.patch
new file mode 100644
index 000000000000..9a3968fcf83f
--- /dev/null
+++ b/games-arcade/kajaani-kombat/files/kajaani-kombat-0.7-gcc11.patch
@@ -0,0 +1,31 @@
+These SDL_* return NULL on error, and gcc11/clang won't allow this.
+https://bugs.gentoo.org/739086
+--- a/client_net.cpp
++++ b/client_net.cpp
+@@ -33,3 +33,3 @@
+ cond = SDL_CreateCond();
+- if (cond <0)
++ if (!cond)
+ {
+@@ -39,3 +39,3 @@
+ mutex = SDL_CreateMutex();
+- if (mutex < 0)
++ if (!mutex)
+ {
+@@ -47,3 +47,3 @@
+ trans_th = SDL_CreateThread (&client_tcpnet::transf_func, (void *) this);
+- if (trans_th < 0)
++ if (!trans_th)
+ {
+@@ -53,3 +53,3 @@
+ input_th = SDL_CreateThread (&client_tcpnet::input_func, (void *) this);
+- if (input_th < 0)
++ if (!input_th)
+ {
+--- a/game_server.cpp
++++ b/game_server.cpp
+@@ -66,3 +66,3 @@
+ con_th = SDL_CreateThread (&game_server::connection_accepter, (void *) this);
+- if (con_th < 0)
++ if (!con_th)
+ {
diff --git a/games-arcade/kajaani-kombat/files/kajaani-kombat-0.7-ldflags.patch b/games-arcade/kajaani-kombat/files/kajaani-kombat-0.7-ldflags.patch
new file mode 100644
index 000000000000..268dcf24ce37
--- /dev/null
+++ b/games-arcade/kajaani-kombat/files/kajaani-kombat-0.7-ldflags.patch
@@ -0,0 +1,11 @@
+--- a/Makefile.old 2010-10-15 15:48:06.000000000 +0200
++++ b/Makefile 2010-10-15 15:48:18.000000000 +0200
+@@ -85,7 +85,7 @@
+ client_net.o: client_net.h client_net.cpp globals.h monitor_queue.h msg.h
+
+ client: $(client_objs)
+- $(CXX) $(client_objs) -o kajaani-kombat $(client_libs)
++ $(CXX) $(LDFLAGS) $(client_objs) -o kajaani-kombat $(client_libs)
+ server: $(server_objs)
+ $(CXX) $(server_objs) -o kajaani-kombat-server $(server_libs)
+
diff --git a/games-arcade/kajaani-kombat/kajaani-kombat-0.7-r2.ebuild b/games-arcade/kajaani-kombat/kajaani-kombat-0.7-r2.ebuild
new file mode 100644
index 000000000000..72fc100bce3c
--- /dev/null
+++ b/games-arcade/kajaani-kombat/kajaani-kombat-0.7-r2.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop flag-o-matic toolchain-funcs
+
+DESCRIPTION="Rampart-like game set in space"
+HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
+SRC_URI="mirror://gentoo/${P}.tar.gz"
+
+LICENSE="BitstreamVera GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer[vorbis]
+ media-libs/sdl-net
+ media-libs/sdl-ttf
+ sys-libs/ncurses:=
+ sys-libs/readline:="
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${PV}-makefile.patch
+ "${FILESDIR}"/${P}-ldflags.patch
+ "${FILESDIR}"/${P}-gcc11.patch
+)
+
+src_prepare() {
+ default
+
+ sed -i "s|GENTOODIR|${EPREFIX}/usr/share/${PN}/|" Makefile || die
+
+ tc-export CXX
+ append-cxxflags -std=c++14 #790743
+}
+
+src_install() {
+ dobin ${PN}
+ doman ${PN}.6
+
+ insinto /usr/share/${PN}
+ doins *.{ogg,png,ttf}
+
+ einstalldocs
+
+ newicon 1face.png ${PN}.png
+ make_desktop_entry ${PN} "Kajaani Kombat"
+}
diff --git a/games-arcade/kajaani-kombat/metadata.xml b/games-arcade/kajaani-kombat/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/kajaani-kombat/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/kobodeluxe/Manifest b/games-arcade/kobodeluxe/Manifest
new file mode 100644
index 000000000000..6298bbb42c6b
--- /dev/null
+++ b/games-arcade/kobodeluxe/Manifest
@@ -0,0 +1 @@
+DIST KoboDeluxe-0.5.1.tar.bz2 1781752 BLAKE2B d7f08ab9603b861f8992629bac9a65051a3c5fee6822f1951d57cbc5c31055a6cefeed098637dda84c0a1538645f47816848d767a4fa7916726b5784dfbc0414 SHA512 fc107e4367fd300574823aa40c68311d95de3a403d7c930963b8754aac14293f0624996fd77c4de0677921d11883047b68dd95df81eeb03078c37426ebd58afd
diff --git a/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-clang.patch b/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-clang.patch
new file mode 100644
index 000000000000..7732b6e147d4
--- /dev/null
+++ b/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-clang.patch
@@ -0,0 +1,22 @@
+--- a/filemap.cpp
++++ b/filemap.cpp
+@@ -851,7 +851,7 @@
+ while(k)
+ {
+ if(strcmp(k->key, key) == 0 || all)
+- fprintf(f, "%s"FM_DEREF_TOKEN" --> \"%s\"\n", k->key, k->path);
++ fprintf(f, "%s" FM_DEREF_TOKEN " --> \"%s\"\n", k->key, k->path);
+ k = k->next;
+ }
+ }
+--- a/prefs.cpp
++++ b/prefs.cpp
+@@ -30,7 +30,7 @@
+ void prefs_t::init()
+ {
+ comment("--------------------------------------------");
+- comment(" Kobo Deluxe "VERSION" Configuration File");
++ comment(" Kobo Deluxe " VERSION " Configuration File");
+ comment("--------------------------------------------");
+ comment(" Switches - [no]<switch>");
+ comment(" Values - <key> [<value>|\"<string>\"]");
diff --git a/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-glibc2.10.patch b/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-glibc2.10.patch
new file mode 100644
index 000000000000..c6c06d9ce2a6
--- /dev/null
+++ b/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-glibc2.10.patch
@@ -0,0 +1,11 @@
+--- a/graphics/window.cpp
++++ b/graphics/window.cpp
+@@ -398,7 +398,7 @@
+ */
+ if(token)
+ {
+- char *tok = strchr(txt, token);
++ const char *tok = strchr(txt, token);
+ if(tok)
+ tokpos = tok-txt;
+ else
diff --git a/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-glibc29.patch b/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-glibc29.patch
new file mode 100644
index 000000000000..7a9ef355a821
--- /dev/null
+++ b/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-glibc29.patch
@@ -0,0 +1,83 @@
+--- a/enemies.h
++++ b/enemies.h
+@@ -70,9 +70,9 @@
+ extern const enemy_kind bomb2;
+ extern const enemy_kind bombdeto;
+ extern const enemy_kind cannon;
+-extern const enemy_kind pipe1;
++extern const enemy_kind pipeone;
+ extern const enemy_kind core;
+-extern const enemy_kind pipe2;
++extern const enemy_kind pipetwo;
+ extern const enemy_kind rock;
+ extern const enemy_kind ring;
+ extern const enemy_kind enemy_m1;
+@@ -430,7 +430,7 @@
+
+ inline int _enemy::is_pipe()
+ {
+- return ((_state != notuse) && ((ek == &pipe1) || (ek == &pipe2)));
++ return ((_state != notuse) && ((ek == &pipeone) || (ek == &pipetwo)));
+ }
+
+
+--- a/enemy.cpp
++++ b/enemy.cpp
+@@ -713,7 +713,7 @@
+
+ void _enemy::kill_cannon()
+ {
+- enemies.make(&pipe1, CS2PIXEL(x), CS2PIXEL(y));
++ enemies.make(&pipeone, CS2PIXEL(x), CS2PIXEL(y));
+ sound.g_base_node_explo(x, y);
+ release();
+ }
+@@ -755,10 +755,10 @@
+
+ void _enemy::kill_core()
+ {
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
+ enemies.make(&explosion4, CS2PIXEL(x), CS2PIXEL(y));
+ sound.g_base_core_explo(x, y);
+ release();
+@@ -851,7 +851,7 @@
+ screen.set_map(x1, y1, m ^ a);
+ release();
+ }
+-const enemy_kind pipe1 = {
++const enemy_kind pipeone = {
+ 0,
+ &_enemy::make_pipe1,
+ &_enemy::move_pipe1,
+@@ -978,19 +978,19 @@
+ }
+ p ^= a;
+ if(p & U_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
+ if(p & R_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
+ if(p & D_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
+ if(p & L_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
+ manage.add_score(10);
+ release();
+ }
+
+
+-const enemy_kind pipe2 = {
++const enemy_kind pipetwo = {
+ 0,
+ &_enemy::make_pipe2,
+ &_enemy::move_pipe2,
diff --git a/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-midi-crash-fix.patch b/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-midi-crash-fix.patch
new file mode 100644
index 000000000000..0b0fd10d9b08
--- /dev/null
+++ b/games-arcade/kobodeluxe/files/kobodeluxe-0.5.1-midi-crash-fix.patch
@@ -0,0 +1,13 @@
+diff -up KoboDeluxe-0.5.1/sound/a_midicon.c~ KoboDeluxe-0.5.1/sound/a_midicon.c
+--- KoboDeluxe-0.5.1/sound/a_midicon.c~ 2015-06-03 20:31:31.000000000 +0200
++++ KoboDeluxe-0.5.1/sound/a_midicon.c 2015-06-03 20:47:40.836311461 +0200
+@@ -120,7 +120,8 @@ static inline void __press(unsigned ch,
+ {
+ m[ch].next[key] = -1;
+ m[ch].prev[key] = m[ch].last;
+- m[ch].next[m[ch].last] = (char)key;
++ if (m[ch].last != -1)
++ m[ch].next[m[ch].last] = (char)key;
+ m[ch].last = (char)key;
+ }
+
diff --git a/games-arcade/kobodeluxe/kobodeluxe-0.5.1-r5.ebuild b/games-arcade/kobodeluxe/kobodeluxe-0.5.1-r5.ebuild
new file mode 100644
index 000000000000..0ec2a391fc60
--- /dev/null
+++ b/games-arcade/kobodeluxe/kobodeluxe-0.5.1-r5.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop xdg toolchain-funcs
+
+MY_P="KoboDeluxe-${PV/_/}"
+DESCRIPTION="An SDL port of xkobo, a addictive space shoot-em-up"
+HOMEPAGE="http://www.olofson.net/kobodl/"
+SRC_URI="http://www.olofson.net/kobodl/download/${MY_P}.tar.bz2"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~x86"
+IUSE="opengl"
+
+DEPEND="media-libs/libsdl[joystick]
+ media-libs/sdl-image[png]
+ opengl? ( virtual/opengl )
+"
+RDEPEND="${DEPEND}
+ acct-group/gamestat
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-glibc29.patch
+ "${FILESDIR}"/${P}-glibc2.10.patch
+ "${FILESDIR}"/${P}-clang.patch
+ "${FILESDIR}"/${P}-midi-crash-fix.patch
+)
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}" || die
+ unpack ./icons.tar.gz
+}
+
+src_prepare() {
+ default
+
+ # Fix paths
+ sed -i \
+ -e 's:\$(datadir)/kobo-deluxe:$(datadir)/kobodeluxe:' \
+ -e "s:\$(sharedstatedir)/kobo-deluxe/scores:${EPREFIX}/var/games/kobodeluxe:" \
+ configure || die "sed configure failed"
+
+ sed -i \
+ -e 's:kobo-deluxe:kobodeluxe:' \
+ data/gfx/Makefile.in \
+ data/sfx/Makefile.in || die "sed data/Makefile.in failed"
+}
+
+src_configure() {
+ econf $(use_enable opengl)
+}
+
+src_compile() {
+ emake AR="$(tc-getAR)" #bug 761694
+}
+
+src_install() {
+ default
+
+ for size in 16 22 32 48 64 128; do
+ newicon -s "${size}" icons/KDE/icons/${size}x${size}/kobodl.png KoboDeluxe.png
+ done
+ make_desktop_entry kobodl "Kobo Deluxe" KoboDeluxe
+
+ keepdir /var/games/kobodeluxe
+ fowners -R :gamestat /var/games/kobodeluxe/ /usr/bin/kobodl
+ fperms g+s /usr/bin/kobodl
+ fperms -R g+w /var/games/kobodeluxe
+}
diff --git a/games-arcade/kobodeluxe/metadata.xml b/games-arcade/kobodeluxe/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/kobodeluxe/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/komi/Manifest b/games-arcade/komi/Manifest
new file mode 100644
index 000000000000..61052014abc0
--- /dev/null
+++ b/games-arcade/komi/Manifest
@@ -0,0 +1,2 @@
+DIST komi-1.04.tar.gz 954526 BLAKE2B b7be781da0143f4cd563e885ff7688c2f50b5c1be6fbd8d383aeda06873b25a2081ae58b750a00a70d140757a57ec49652ff5e8c4ebf6ba0f306539707c06c31 SHA512 60babb3642bea7598089b342ba582b2f63f6aa051352ad9b2fa5bad0222a32306775a207712d2e7a9242be5e3ff5b4734f5b62708e451e7230499c6812d4c8a3
+DIST komi.png 352 BLAKE2B 676acccaf198680b62143c436b21aae418ffeacefbcdf32b03b6a78d69e529a499dd4c7a4e2cdf7bdf996d330b683d09cd7b485b7a76dc6805e7798c13acf2e2 SHA512 ba899f07a56e38ccd7fe35b2060f651ab8a5a7edb099ec0bcc69bb70c43b94d459910fc4fb5fe931617cd8d17aa945e2847325ce5aba0b2550713a35216cf88f
diff --git a/games-arcade/komi/komi-1.04-r2.ebuild b/games-arcade/komi/komi-1.04-r2.ebuild
new file mode 100644
index 000000000000..f4458b00c1b7
--- /dev/null
+++ b/games-arcade/komi/komi-1.04-r2.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop flag-o-matic toolchain-funcs
+
+DESCRIPTION="Komi the Space Frog - a simple SDL game"
+HOMEPAGE="https://komi.sourceforge.net/"
+SRC_URI="
+ https://downloads.sourceforge.net/komi/${P}.tar.gz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-mixer"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+src_compile() {
+ tc-export CC
+
+ append-cppflags $($(tc-getPKG_CONFIG) --cflags sdl SDL_mixer || die) \
+ -DDATAPATH="'\"${EPREFIX}/usr/share/${PN}/\"'"
+ append-libs $($(tc-getPKG_CONFIG) --libs sdl SDL_mixer || die)
+
+ # simpler to use implicit rules than fix the Makefile
+ emake -f /dev/null LDLIBS="${LIBS}" ${PN}
+}
+
+src_install() {
+ dobin ${PN}
+
+ insinto /usr/share/${PN}
+ doins -r komidata/.
+
+ doman ${PN}.6
+ dodoc CHANGELOG.txt README.txt
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} ${PN^}
+}
diff --git a/games-arcade/komi/metadata.xml b/games-arcade/komi/metadata.xml
new file mode 100644
index 000000000000..fa16e75d6f06
--- /dev/null
+++ b/games-arcade/komi/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">komi</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/late/Manifest b/games-arcade/late/Manifest
new file mode 100644
index 000000000000..ef23ab3133e7
--- /dev/null
+++ b/games-arcade/late/Manifest
@@ -0,0 +1,2 @@
+DIST late-0.1.0.tar.bz2 1560232 BLAKE2B c8d80639fba66d605ea37dbd3ad1fb790b50854f7b2223b4bba0c4f6b94fed2471a725e3e9be66a74526ef4666464377e773b93b0de5dba0b3bcf6fd5ad33fac SHA512 6b3f4d27a723ae450bd8dda375c8663c1a3f457ffbe0a91f5eb96efdd797c2370ec68894df7a4d31e7124b28f3b41b3b952805901427c6ea3502b0d4d13cd72e
+DIST late.png 6564 BLAKE2B 9170d82259c632f44ba6149333e33c61fc8d39cf2b5002d3142b685e3ae6bd642dbc137cd5955cd807a412eb1270446a7b3d1b8cc0b92ceb0fd0d53516a0846d SHA512 2038e18857266dcb1aea3ab9c5c2a09b6d3d43c9e97bb4e141d1d7f650b20d743262e29aafe7fc04ecb6583ea209513f49cb3787ed15c7eb96fbbda86f9ee185
diff --git a/games-arcade/late/files/late-0.1.0-gcc43.patch b/games-arcade/late/files/late-0.1.0-gcc43.patch
new file mode 100644
index 000000000000..a769f61465ab
--- /dev/null
+++ b/games-arcade/late/files/late-0.1.0-gcc43.patch
@@ -0,0 +1,7 @@
+--- a/src/init.cpp
++++ b/src/init.cpp
+@@ -28,2 +28,4 @@
+ #include <iostream>
++#include <cstdlib>
++#include <cstring>
+ using namespace std;
diff --git a/games-arcade/late/files/late-0.1.0-gcc46.patch b/games-arcade/late/files/late-0.1.0-gcc46.patch
new file mode 100644
index 000000000000..a40d93914f8f
--- /dev/null
+++ b/games-arcade/late/files/late-0.1.0-gcc46.patch
@@ -0,0 +1,7 @@
+https://bugs.gentoo.org/362367
+--- a/src/ball.h
++++ b/src/ball.h
+@@ -27,2 +27,3 @@
+ #include "square.h"
++#include <cstddef>
+
diff --git a/games-arcade/late/late-0.1.0-r2.ebuild b/games-arcade/late/late-0.1.0-r2.ebuild
new file mode 100644
index 000000000000..adc8e4d76ae8
--- /dev/null
+++ b/games-arcade/late/late-0.1.0-r2.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop
+
+DESCRIPTION="Game similar to Barrack by Ambrosia Software"
+HOMEPAGE="https://late.sourceforge.net/"
+SRC_URI="
+ https://downloads.sourceforge.net/late/${P}.tar.bz2
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ acct-group/gamestat
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-image[jpeg]"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-gcc43.patch
+ "${FILESDIR}"/${P}-gcc46.patch
+)
+
+src_prepare() {
+ default
+
+ # handle score file and permissions ourselves
+ sed -i '/score/d;/chgrp/d' Makefile.in || die
+
+ # want /var/games rather than /var/lib/lib/games
+ sed -i "s|LOCALSTATEDIR\"/lib|\"${EPREFIX}/var|" src/arch.cpp || die
+}
+
+src_install() {
+ default
+
+ dodir /var/games
+ :> "${ED}"/var/games/${PN}.scores || die
+
+ fowners :gamestat /usr/bin/${PN} /var/games/${PN}.scores
+ fperms g+s /usr/bin/${PN}
+ fperms 660 /var/games/${PN}.scores
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} ${PN^}
+}
diff --git a/games-arcade/late/metadata.xml b/games-arcade/late/metadata.xml
new file mode 100644
index 000000000000..45da2e467b6e
--- /dev/null
+++ b/games-arcade/late/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">late</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/lbreakout/Manifest b/games-arcade/lbreakout/Manifest
new file mode 100644
index 000000000000..7cf5ad731533
--- /dev/null
+++ b/games-arcade/lbreakout/Manifest
@@ -0,0 +1,2 @@
+DIST lbreakout-010315.tar.gz 655418 BLAKE2B f8d893c16de045f172e2ece3158420a880fff4775e81f714d390cc92cfbc6296cc968442388097d6be7fd23e19be614d872fe4b9e730284dcb7044d06bf9d72f SHA512 92421ceb4e643df2123d084b0d2c5edfd311e39dd8da85c01da5cfd872f787a6969e514efab2c5f110979434e773fce211e755e4c45438c4469ab9095cb595b7
+DIST lbreakout.png 8673 BLAKE2B ce4f7e35617729063ad80507f8d85127195d217e82dcadbdb409dcb1710fd297f19619e038881ed769778265caef19db39879a45cb28ddc7c1242744b2858c2e SHA512 47eb104ebb9bb103a370986af7a4663f0b9b24afc013c4f78eb7f023a64d51c7dc353e2f2a2729bdeb80ca5894bf1acf2fb5f4257cd67a93f9088c692bdcaf72
diff --git a/games-arcade/lbreakout/lbreakout-010315-r1.ebuild b/games-arcade/lbreakout/lbreakout-010315-r1.ebuild
new file mode 100644
index 000000000000..849efc4ad77b
--- /dev/null
+++ b/games-arcade/lbreakout/lbreakout-010315-r1.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Breakout clone written with the SDL library"
+HOMEPAGE="https://lgames.sourceforge.io/LBreakout/"
+SRC_URI="
+ https://downloads.sourceforge.net/lgames/${P}.tar.gz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ acct-group/gamestat
+ media-libs/libsdl[sound,video]"
+DEPEND="${RDEPEND}"
+
+HTML_DOCS=( lbreakout/manual/. )
+
+src_prepare() {
+ default
+
+ # remove /games from datadir, and use /var/games for highscore file
+ sed -e '/^sdir=/s|/games.*||;' \
+ -e "/^hdir=/s|=.*|=${EPREFIX}/var/games|" \
+ -i configure || die
+
+ tc-export CC CXX
+}
+
+src_install() {
+ dodir /var/games #655000
+
+ default
+
+ fowners :gamestat /usr/bin/${PN} /var/games/${PN}.hscr
+ fperms g+s /usr/bin/${PN}
+ fperms 660 /var/games/${PN}.hscr
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} LBreakout
+}
diff --git a/games-arcade/lbreakout/lbreakout-010315-r2.ebuild b/games-arcade/lbreakout/lbreakout-010315-r2.ebuild
new file mode 100644
index 000000000000..60bb9689c9b8
--- /dev/null
+++ b/games-arcade/lbreakout/lbreakout-010315-r2.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs autotools
+
+DESCRIPTION="Breakout clone written with the SDL library"
+HOMEPAGE="https://lgames.sourceforge.io/LBreakout/"
+SRC_URI="
+ https://downloads.sourceforge.net/lgames/${P}.tar.gz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ acct-group/gamestat
+ media-libs/libsdl[sound,video]"
+DEPEND="${RDEPEND}"
+
+HTML_DOCS=( lbreakout/manual/. )
+
+src_prepare() {
+ default
+
+ # bug 880949
+ eautoreconf
+
+ # remove /games from datadir, and use /var/games for highscore file
+ sed -e '/^sdir=/s|/games.*||;' \
+ -e "/^hdir=/s|=.*|=${EPREFIX}/var/games|" \
+ -i configure || die
+
+ tc-export CC CXX
+}
+
+src_install() {
+ dodir /var/games #655000
+
+ default
+
+ fowners :gamestat /usr/bin/${PN} /var/games/${PN}.hscr
+ fperms g+s /usr/bin/${PN}
+ fperms 660 /var/games/${PN}.hscr
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} LBreakout
+}
diff --git a/games-arcade/lbreakout/metadata.xml b/games-arcade/lbreakout/metadata.xml
new file mode 100644
index 000000000000..c2edfd91b2cc
--- /dev/null
+++ b/games-arcade/lbreakout/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">lgames</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/lbreakout2/Manifest b/games-arcade/lbreakout2/Manifest
new file mode 100644
index 000000000000..464f632d13c1
--- /dev/null
+++ b/games-arcade/lbreakout2/Manifest
@@ -0,0 +1,3 @@
+DIST lbreakout2-2.6.5.tar.gz 3491519 BLAKE2B b382b391f3aa12f975ed52ec9f7de21f864c2171e0b6d1469ae1224b3cb240ff8a680ebae9ea37a85aa95c432c164058e8a9a0a1d094bbef572670bdbd17ca4e SHA512 45c54bc9401131c96eba5fdcc08ca1324904fb50d3967acf7f29034045cbcd4c1d0b65f38eb33d8aace4cfe35f2a2e7a6c2319e4a6d6a1b41274dbe293a1747b
+DIST lbreakout2-levelsets-20141220.tar.gz 372221 BLAKE2B 16da9ee84e856734645a2ddf1665a8ebf8a52aa63be5d91e20f359bfb270d7bed16e7a4903c0847543141120d8d633bf84ceda867000354eedf201e389faf0db SHA512 482c1e95a37735f7bca510fa34d0f046e89b5aa9528b9af9dfff5bcb3fe656140285a95670caae2565cc9ebd30c3dc87a1fe77a6b75061ce9349ee7e36aa13d5
+DIST lbreakout2-themes-20141220.tar.gz 34006503 BLAKE2B 5262e04368d1c77b2690f70ded0c3da17b7ce31175271f22142b0418dfabb840561f4dbd97d16a12da6addb9d15e22e5ca97f96c8380bd0e7983642ee55fd1e3 SHA512 6088ff4bd9dfbbeb91c74e4adb500593af88ea6796bdec577afb43fc4ea9819c4f2dae76b6b7a8ad1ce2ec32ef575e41a6fa924463107a5dcd211f50bb94a906
diff --git a/games-arcade/lbreakout2/files/lbreakout2-2.6.5-gentoo.patch b/games-arcade/lbreakout2/files/lbreakout2-2.6.5-gentoo.patch
new file mode 100644
index 000000000000..3284426749af
--- /dev/null
+++ b/games-arcade/lbreakout2/files/lbreakout2-2.6.5-gentoo.patch
@@ -0,0 +1,75 @@
+--- a/common/gettext.h
++++ b/common/gettext.h
+@@ -24,6 +24,7 @@
+
+ /* Get declarations of GNU message catalog functions. */
+ # include <libintl.h>
++# include <locale.h>
+
+ /* We need locale.h too, otherwise setlocale() bails out; cf. #643471 */
+ #if HAVE_LOCALE_H
+--- a/configure.in
++++ b/configure.in
+@@ -12,6 +12,7 @@
+ dnl Checks for programs.
+ AM_GNU_GETTEXT
+ AC_PROG_CC
++AM_PROG_AR
+ AC_PROG_RANLIB
+ AC_EXEEXT
+
+@@ -80,8 +81,6 @@
+ [ --enable-netdebug Enable net packet debugging.], netdebug_flag="-DNET_DEBUG_MSG" )
+ AC_SUBST(netdebug_flag)
+
+-dnl set localedir
+-localedir=$datadir/locale
+ locdir_flag="-DLOCALEDIR=\\\"$localedir\\\""
+
+ dnl installation&highscore path
+--- a/docs/Makefile.am
++++ b/docs/Makefile.am
+@@ -7,11 +7,11 @@
+ warp.jpg screen.jpg
+
+ install-data-local:
+- $(mkinstalldirs) $(DESTDIR)$(doc_dir)/lbreakout2
++ $(mkinstalldirs) $(DESTDIR)$(doc_dir)
+ @for file in *.jpg; do\
+- $(INSTALL_DATA) $$file $(DESTDIR)$(doc_dir)/lbreakout2/$$file;\
++ $(INSTALL_DATA) $$file $(DESTDIR)$(doc_dir)/$$file;\
+ done
+- $(INSTALL_DATA) index.html $(DESTDIR)$(doc_dir)/lbreakout2/index.html
++ $(INSTALL_DATA) index.html $(DESTDIR)$(doc_dir)/index.html
+
+ win32-install-script:
+ @for file in $(EXTRA_DIST); do \
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,13 +1,8 @@
+ SUBDIRS = intl m4 po common gui game server client docs
+
+ EXTRA_DIST = config.rpath AUTHORS COPYING ChangeLog INSTALL README \
+-README-SDL.txt TODO lbreakout2.spec touchall lbreakout32.gif \
+-lbreakout48.gif lbreakout2.desktop.in win32_mancomp win32_preparchive
+-
+-desktopdir = $(datadir)/applications
+-desktop_DATA = lbreakout2.desktop
+-icondir = $(datadir)/icons
+-icon_DATA = lbreakout48.gif
++README-SDL.txt TODO lbreakout2.spec touchall \
++win32_mancomp win32_preparchive
+
+ WIN32_TEXT = AUTHORS COPYING ChangeLog INSTALL README README-SDL.txt \
+ TODO lbreakout2.spec ABOUT-NLS
+--- a/po/Makefile.in.in
++++ b/po/Makefile.in.in
+@@ -24,7 +24,7 @@
+ exec_prefix = @exec_prefix@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+-localedir = $(datadir)/locale
++localedir = @localedir@
+ gettextsrcdir = $(datadir)/gettext/po
+
+ INSTALL = @INSTALL@
diff --git a/games-arcade/lbreakout2/lbreakout2-2.6.5-r2.ebuild b/games-arcade/lbreakout2/lbreakout2-2.6.5-r2.ebuild
new file mode 100644
index 000000000000..56f7a8b54f6a
--- /dev/null
+++ b/games-arcade/lbreakout2/lbreakout2-2.6.5-r2.ebuild
@@ -0,0 +1,95 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop
+
+LB_LEVELS_V="20141220"
+LB_THEMES_V="20141220"
+
+DESCRIPTION="Breakout clone written with the SDL library"
+HOMEPAGE="https://lgames.sourceforge.io/LBreakout2/"
+SRC_URI="
+ https://downloads.sourceforge.net/lgames/${P}.tar.gz
+ https://downloads.sourceforge.net/lgames/add-ons/lbreakout2/${PN}-levelsets-${LB_LEVELS_V}.tar.gz
+ themes? ( https://downloads.sourceforge.net/lgames/add-ons/lbreakout2/${PN}-themes-${LB_LEVELS_V}.tar.gz )"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="nls themes"
+
+RDEPEND="
+ acct-group/gamestat
+ media-libs/libpng:=
+ media-libs/libsdl[joystick,sound,video]
+ media-libs/sdl-mixer
+ media-libs/sdl-net
+ nls? ( virtual/libintl )"
+DEPEND="
+ ${RDEPEND}
+ virtual/zlib:="
+BDEPEND="
+ nls? ( sys-devel/gettext )
+ themes? ( app-arch/unzip )"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-gentoo.patch
+)
+
+src_unpack() {
+ unpack ${P}.tar.gz
+
+ cd "${S}/client/levels" || die
+ unpack ${PN}-levelsets-${LB_LEVELS_V}.tar.gz
+
+ if use themes; then
+ mkdir "${WORKDIR}"/themes || die
+ cd "${WORKDIR}"/themes || die
+ unpack ${PN}-themes-${LB_THEMES_V}.tar.gz
+
+ # Delete a few duplicate themes (already shipped with lbreakout2
+ # tarball). Some of them have different case than built-in themes, so it
+ # is harder to just compare if the filename is the same.
+ rm absoluteB.zip oz.zip moiree.zip || die
+ local f
+ for f in *.zip; do
+ unpack ./${f}
+ rm ${f} || die
+ done
+ fi
+}
+
+src_prepare() {
+ default
+
+ mv configure.{in,ac} || die
+ eautoreconf
+}
+
+src_configure() {
+ local econfargs=(
+ $(use_enable nls)
+ --enable-sdl-net
+ --localstatedir="${EPREFIX}"/var/games
+ --with-docdir="${EPREFIX}"/usr/share/doc/${PF}/html
+ )
+ econf "${econfargs[@]}"
+}
+
+src_install() {
+ default
+
+ fowners :gamestat /usr/bin/${PN} /var/games/${PN}.hscr
+ fperms g+s /usr/bin/${PN}
+ fperms 660 /var/games/${PN}.hscr
+
+ if use themes; then
+ insinto /usr/share/lbreakout2/gfx
+ doins -r "${WORKDIR}"/themes/.
+ fi
+
+ newicon client/gfx/win_icon.png ${PN}.png
+ make_desktop_entry ${PN} LBreakout2
+}
diff --git a/games-arcade/lbreakout2/metadata.xml b/games-arcade/lbreakout2/metadata.xml
new file mode 100644
index 000000000000..ecffed01742f
--- /dev/null
+++ b/games-arcade/lbreakout2/metadata.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <use>
+ <flag name="themes">Install additional themes</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">lgames</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/metadata.xml b/games-arcade/metadata.xml
new file mode 100644
index 000000000000..f3c287ba8e23
--- /dev/null
+++ b/games-arcade/metadata.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE catmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<catmetadata>
+ <longdescription lang="en">
+ The games-arcade category contains arcade games.
+ </longdescription>
+ <longdescription lang="de">
+ Die Kategorie games-arcade enth辰lt Arcadespiele.
+ </longdescription>
+ <longdescription lang="es">
+ La categor鱈a games-arcade contiene juegos arcade.
+ </longdescription>
+ <longdescription lang="ja">
+ games-arcade眼若≪若宴若祉蚊若障障
+ </longdescription>
+ <longdescription lang="nl">
+ De games-arcade categorie bevat arcadespellen.
+ </longdescription>
+ <longdescription lang="vi">
+ Nh坦m games-arcade ch畛a c叩c tr嘆 ch董i d畉ng "arcade".
+ </longdescription>
+ <longdescription lang="it">
+ La categoria games-arcade contiene giochi arcade.
+ </longdescription>
+ <longdescription lang="pt">
+ A categoria games-arcade cont辿m jogos de arcade.
+ </longdescription>
+ <longdescription lang="pl">
+ Kategoria games-arcade zawiera gry zrcznociowe.
+ </longdescription>
+ <longdescription lang="ru">
+ 舒亠亞仂亳 games-arcade 仂亟亠亢亳 亳亞-舒从舒亟.
+ </longdescription>
+</catmetadata>
diff --git a/games-arcade/methane/Manifest b/games-arcade/methane/Manifest
new file mode 100644
index 000000000000..fce51af9bddb
--- /dev/null
+++ b/games-arcade/methane/Manifest
@@ -0,0 +1,3 @@
+DIST methane-2.0.1.tar.gz 1058487 BLAKE2B 2fc450c03dbbd57439b22e8e6ac8eebd2db18f97a3338180decdc0a437207b581a00e664e6353595c9eb50c16f7d9fead96bddf6ca50b67326ecea6dd4bb935a SHA512 96b005eb5964185adea89aa43afda375c474db8088a132b2d46a843a1eca6ba91f83bf41277a3f3cfa24c4f9b9dae7098527414284fd0521e92a34c225e06bd9
+DIST methane-2.1.0.tar.gz 1059462 BLAKE2B 9a280875e5e7d44d4be88006fe97d3bbdb277f50609ad46fcdb33fcaaf10a22d8a7d4dc541637dd3f8a6e96b391b56533861d10abee38ddcb643f143c5ba632e SHA512 0854792d52a9f66d4fd43a6428fd27e92f1a8e324b085d0ab7612a7dac59e8e51d23acd10f4ac27975485049ea99e3ebb1ebae18f479a0c4286b7709438b06bf
+DIST methane.png 4034 BLAKE2B b10ebd8ca4bf2f6330aa89e3adb77a14bb183bf3d0dd40e305c87d58e0a6a4249662cdee8a457fc3df93a9c0b0daecf0dd8cb307c33a6b5f6e48543062b1b18f SHA512 a56e453c9971b8819904f19af4ed3e417ef0538f87bfa121918c8fa4f93c14ba922b7d29584f0c69497a7b56585a92a7df902997cf18f6f2672c31c960ea7772
diff --git a/games-arcade/methane/files/methane-2.0.1-makefile.patch b/games-arcade/methane/files/methane-2.0.1-makefile.patch
new file mode 100644
index 000000000000..0cf205041ed7
--- /dev/null
+++ b/games-arcade/methane/files/methane-2.0.1-makefile.patch
@@ -0,0 +1,41 @@
+From 7fa0b482546993d5279911a43ad6cb75c96ec1f0 Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Wed, 14 Dec 2022 00:28:51 +0300
+Subject: [PATCH] Use portable variables in Makefile
+
+---
+ Makefile | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 35c3eb1..f827efc 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,5 +1,6 @@
+-METHANE_FLAGS = `pkg-config --cflags clanCore-4.1 clanDisplay-4.1 clanApp-4.1 clanGL-4.1 clanSound-4.1 libmikmod` -Isources
+-METHANE_LIBS = `pkg-config --libs clanCore-4.1 clanDisplay-4.1 clanApp-4.1 clanGL-4.1 clanSound-4.1 libmikmod`
++PKG_CONFIG ?= pkg-config
++METHANE_FLAGS := $(shell ${PKG_CONFIG} --cflags clanCore-4.1 clanDisplay-4.1 clanApp-4.1 clanGL-4.1 clanSound-4.1 libmikmod) -Isources
++METHANE_LIBS := $(shell ${PKG_CONFIG} --libs clanCore-4.1 clanDisplay-4.1 clanApp-4.1 clanGL-4.1 clanSound-4.1 libmikmod)
+
+ OBJF = sources/precomp.o \
+ sources/player.o \
+@@ -37,7 +38,7 @@ message:
+ @echo "================================="
+
+ methane: ${OBJF}
+- g++ ${CXXFLAGS} ${OBJF} -o methane ${METHANE_LIBS}
++ $(CXX) ${CXXFLAGS} ${LDFLAGS} ${OBJF} -o methane ${METHANE_LIBS}
+
+ clean:
+ @rm -f sources/*.o
+@@ -49,5 +50,5 @@ distclean: clean
+ # The main source code
+ %.o:%.cpp
+ @echo " Compiling $<..."
+- gcc ${CXXFLAGS} ${METHANE_FLAGS} -c $< -o $@
++ $(CXX) ${CXXFLAGS} ${METHANE_FLAGS} -c $< -o $@
+
+--
+2.37.4
+
diff --git a/games-arcade/methane/files/methane-2.1.0-makefile.patch b/games-arcade/methane/files/methane-2.1.0-makefile.patch
new file mode 100644
index 000000000000..3d39888b97a2
--- /dev/null
+++ b/games-arcade/methane/files/methane-2.1.0-makefile.patch
@@ -0,0 +1,27 @@
+--- a/Makefile~ 2024-08-20 13:13:02.000000000 +0200
++++ b/Makefile 2024-11-08 20:13:10.069539923 +0100
+@@ -1,5 +1,6 @@
+-METHANE_FLAGS = `pkg-config --cflags clanCore-4.2 clanDisplay-4.2 clanApp-4.2 clanGL-4.2 clanSound-4.2 libmikmod` -Isources
+-METHANE_LIBS = `pkg-config --libs clanCore-4.2 clanDisplay-4.2 clanApp-4.2 clanGL-4.2 clanSound-4.2 libmikmod`
++PKG_CONFIG ?= pkg-config
++METHANE_FLAGS = `$(PKG_CONFIG) --cflags clanCore-4.2 clanDisplay-4.2 clanApp-4.2 clanGL-4.2 clanSound-4.2 libmikmod` -Isources
++METHANE_LIBS = `$(PKG_CONFIG) --libs clanCore-4.2 clanDisplay-4.2 clanApp-4.2 clanGL-4.2 clanSound-4.2 libmikmod`
+
+ OBJF = sources/precomp.o \
+ sources/player.o \
+@@ -37,7 +38,7 @@
+ @echo "================================="
+
+ methane: ${OBJF}
+- g++ ${CXXFLAGS} ${OBJF} -o methane ${METHANE_LIBS}
++ $(CXX) ${CXXFLAGS} ${LDFLAGS} ${OBJF} -o methane ${METHANE_LIBS}
+
+ clean:
+ @rm -f sources/*.o
+@@ -49,5 +50,5 @@
+ # The main source code
+ %.o:%.cpp
+ @echo " Compiling $<..."
+- gcc ${CXXFLAGS} ${METHANE_FLAGS} -c $< -o $@
++ $(CXX) ${CXXFLAGS} ${METHANE_FLAGS} -c $< -o $@
+
diff --git a/games-arcade/methane/metadata.xml b/games-arcade/methane/metadata.xml
new file mode 100644
index 000000000000..b826a80f7a10
--- /dev/null
+++ b/games-arcade/methane/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">rombust/Methane</remote-id>
+ <remote-id type="sourceforge">methane</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/methane/methane-2.0.1.ebuild b/games-arcade/methane/methane-2.0.1.ebuild
new file mode 100644
index 000000000000..33e4e2941888
--- /dev/null
+++ b/games-arcade/methane/methane-2.0.1.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Port from an old Amiga game"
+HOMEPAGE="https://methane.sourceforge.net/"
+SRC_URI="https://github.com/rombust/Methane/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
+ https://src.fedoraproject.org/rpms/methane/raw/f37/f/methane.png
+"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+S="${WORKDIR}/Methane-${PV}"
+
+RDEPEND="
+ dev-games/clanlib:4.1[opengl,sound]
+ media-libs/libmikmod
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${P}-makefile.patch"
+)
+
+src_prepare() {
+ default
+
+ tc-export PKG_CONFIG
+}
+
+src_install() {
+ dobin methane
+
+ insinto /usr/share/${PN}
+ doins resources/*
+
+ doicon "${DISTDIR}/${PN}.png"
+ make_desktop_entry ${PN} "Super Methane Brothers"
+ HTML_DOCS="docs/*" dodoc authors.txt history.txt readme.txt
+}
diff --git a/games-arcade/methane/methane-2.1.0.ebuild b/games-arcade/methane/methane-2.1.0.ebuild
new file mode 100644
index 000000000000..621d499a87f9
--- /dev/null
+++ b/games-arcade/methane/methane-2.1.0.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Port from an old Amiga game"
+HOMEPAGE="https://methane.sourceforge.net/ https://github.com/rombust/Methane"
+SRC_URI="https://github.com/rombust/Methane/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
+ https://src.fedoraproject.org/rpms/methane/raw/f41/f/methane.png
+"
+S="${WORKDIR}/Methane-${PV}"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ dev-games/clanlib:4.2[opengl,sound]
+ media-libs/libmikmod
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${P}-makefile.patch"
+)
+
+src_prepare() {
+ default
+
+ tc-export PKG_CONFIG CXX
+}
+
+src_install() {
+ dobin methane
+
+ insinto /usr/share/${PN}
+ doins resources/*
+
+ doicon "${DISTDIR}/${PN}.png"
+ make_desktop_entry ${PN} "Super Methane Brothers"
+ HTML_DOCS="docs/*" dodoc authors.txt history.txt readme.txt
+}
diff --git a/games-arcade/missile/Manifest b/games-arcade/missile/Manifest
new file mode 100644
index 000000000000..640968c58919
--- /dev/null
+++ b/games-arcade/missile/Manifest
@@ -0,0 +1 @@
+DIST missile-1.0.1.tar.gz 214933 BLAKE2B a1131971051008b9be4d79b3b92d630653cc045988c62ba1090f482bccd62ba4f63320882e75c889c64c9b54bad0c5270400c0b9f54dfc6be4cb1e3ac2f42a36 SHA512 32d30213d433fd3d02d74c4614747bdc2e3012c77793dfb7b869d774b7f43f4d0eb6b1a0e5db805d976e7919404c57cbbaa20f21954dfd4475ddaa6c2f6c0cc2
diff --git a/games-arcade/missile/metadata.xml b/games-arcade/missile/metadata.xml
new file mode 100644
index 000000000000..8dc6fcc8d984
--- /dev/null
+++ b/games-arcade/missile/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">missile</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/missile/missile-1.0.1-r2.ebuild b/games-arcade/missile/missile-1.0.1-r2.ebuild
new file mode 100644
index 000000000000..ae74bfb7a35a
--- /dev/null
+++ b/games-arcade/missile/missile-1.0.1-r2.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop flag-o-matic toolchain-funcs
+
+DESCRIPTION="Port of the Atari Missile Command game for Linux"
+HOMEPAGE="https://missile.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="+sound"
+
+RDEPEND="
+ media-libs/libsdl[sound?,video]
+ media-libs/sdl-image[png]
+ sound? ( media-libs/sdl-mixer )"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+src_compile() {
+ tc-export CC
+
+ local cppargs=(
+ -DDATA="'\"${EPREFIX}/usr/share/${PN}\"'"
+ -DVERSION=\\\"${PV}\\\"
+ $(usev sound -DUSE_SOUND)
+ $($(tc-getPKG_CONFIG) --cflags sdl SDL_image $(usev sound SDL_mixer))
+ )
+ append-cppflags "${cppargs[@]}"
+
+ LDLIBS="$($(tc-getPKG_CONFIG) --libs sdl SDL_image $(usev sound SDL_mixer)) -lm" \
+ emake -f /dev/null ${PN}
+}
+
+src_install() {
+ dobin ${PN}
+
+ insinto /usr/share/${PN}
+ doins -r data/{graphics,missile_icon.png,sound}
+
+ einstalldocs
+
+ newicon icons/${PN}_icon_red.png ${PN}.png
+ make_desktop_entry ${PN} "Missile Command"
+}
diff --git a/games-arcade/moleinvasion/Manifest b/games-arcade/moleinvasion/Manifest
new file mode 100644
index 000000000000..3173b0ea0f41
--- /dev/null
+++ b/games-arcade/moleinvasion/Manifest
@@ -0,0 +1,2 @@
+DIST MoleInvasion-0.4.tar.bz2 11213919 BLAKE2B be42f4530f86e347ca2d6d3e94203e698328c96150a82f8307080ecfef288e631dcf14f9b86003a40792e49d6ed899cd867b1ad9dc43272e9c29a784a1a48bb6 SHA512 e1d661758391c24b9daab8ba183a265b77f4b2454c8a55f8405b63a78e040491d0c1421a64736a590a574c364e43a8989ef1b958fa565419938d0c8daadbe03f
+DIST moleinvasion-music-20090731.tar.gz 83772534 BLAKE2B 46b5cedb23604a178cb5fa8dab4546219f5318490b607093f2a0be831fbbe1b7c901b6db474e2a2f590993b11934e0286f62068268b0251368da6b33070e8c25 SHA512 ca3a2d32705afbc878bd370ceb07367a175eae0ea722e92d2993b4a1c6605763922279c15bb0cc42cf1ed15d5c7f1b13c9f8e000adbebf1f709bfbd92b5e791c
diff --git a/games-arcade/moleinvasion/files/moleinvasion-0.4-fno-common.patch b/games-arcade/moleinvasion/files/moleinvasion-0.4-fno-common.patch
new file mode 100644
index 000000000000..3d1833148792
--- /dev/null
+++ b/games-arcade/moleinvasion/files/moleinvasion-0.4-fno-common.patch
@@ -0,0 +1,11 @@
+--- a/worldmap.h
++++ b/worldmap.h
+@@ -24,7 +24,7 @@
+ void draw_level_name(int current_level,myList * all_level_desc);
+
+ /* on stocke ici toutes les datas evoluant relatives au monde en cours */
+-#ifdef MAIN_WORLDMAP
++#ifndef MAIN_WORLDMAP
+ #define EXTERN_WLD extern
+ #else
+ #define EXTERN_WLD
diff --git a/games-arcade/moleinvasion/files/moleinvasion-0.4-gcc14.patch b/games-arcade/moleinvasion/files/moleinvasion-0.4-gcc14.patch
new file mode 100644
index 000000000000..63734f6ef711
--- /dev/null
+++ b/games-arcade/moleinvasion/files/moleinvasion-0.4-gcc14.patch
@@ -0,0 +1,29 @@
+--- a/editor.c
++++ b/editor.c
+@@ -98,7 +98,7 @@ void init()
+ level_tab=InitList();
+ }
+
+-void perform_mouse_motion(mousex,mousey)
++void perform_mouse_motion(int mousex,int mousey)
+ { int x,y;
+ static SDL_Surface* rubber=NULL;
+ mySprite *sprite;
+@@ -134,7 +134,7 @@ void perform_mouse_motion(mousex,mousey)
+ displaySprite(disp_sprite,g_SDL_screen,0,0);
+ }
+
+-void perform_mouse_add(mousex,mousey)
++void perform_mouse_add(int mousex,int mousey)
+ { int x,y;
+ mySprite *sprite;
+ mySprite disp_sprite;
+@@ -174,7 +174,7 @@ void perform_mouse_add(mousex,mousey)
+ AddToList(level_tab,&disp_sprite,sizeof(mySprite));
+ }
+
+-void perform_mouse_del(mousex,mousey)
++void perform_mouse_del(int mousex,int mousey)
+ { int x,y;
+ mySprite *sprite;
+ unsigned int i;
diff --git a/games-arcade/moleinvasion/files/moleinvasion-0.4-opengl.patch b/games-arcade/moleinvasion/files/moleinvasion-0.4-opengl.patch
new file mode 100644
index 000000000000..357f1bc2b466
--- /dev/null
+++ b/games-arcade/moleinvasion/files/moleinvasion-0.4-opengl.patch
@@ -0,0 +1,18 @@
+--- src/MoleInvasion.c
++++ src/MoleInvasion.c
+@@ -159,6 +159,7 @@
+ else
+ printf("Video mode set to %ux%u at %u bpp\n",800, 600, bpp);
+
++ if(g_opengl) {
+ /* pour opengl */
+ glEnable (GL_TEXTURE_2D);
+ glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+@@ -169,6 +170,7 @@
+ glEnable( GL_BLEND );
+ glMatrixMode(GL_PROJECTION);
+ /* fin opengl */
++ }
+
+ /* titre */
+ SDL_WM_SetCaption ("Mole Invasion", NULL);
diff --git a/games-arcade/moleinvasion/files/moleinvasion-0.4-underlink.patch b/games-arcade/moleinvasion/files/moleinvasion-0.4-underlink.patch
new file mode 100644
index 000000000000..9d5d651a809b
--- /dev/null
+++ b/games-arcade/moleinvasion/files/moleinvasion-0.4-underlink.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -11,7 +11,7 @@
+ EDTOB = editor
+ EDWOB = editworld
+
+-LINLIBS=$(LDLIBS) -lGL
++LINLIBS=$(LDLIBS) -lGL -ldl
+ LINEXE = ../lin/moleinvasion
+ LINEDT = ../lin/editor
+ LINEDW = ../lin/editworld
diff --git a/games-arcade/moleinvasion/metadata.xml b/games-arcade/moleinvasion/metadata.xml
new file mode 100644
index 000000000000..f66b7b1cc3e3
--- /dev/null
+++ b/games-arcade/moleinvasion/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <use>
+ <flag name="music">Download and install the music files</flag>
+ </use>
+</pkgmetadata>
diff --git a/games-arcade/moleinvasion/moleinvasion-0.4-r4.ebuild b/games-arcade/moleinvasion/moleinvasion-0.4-r4.ebuild
new file mode 100644
index 000000000000..119469eb29a2
--- /dev/null
+++ b/games-arcade/moleinvasion/moleinvasion-0.4-r4.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Mole infested 2D platform game"
+HOMEPAGE="http://moleinvasion.tuxfamily.org/"
+SRC_URI="
+ ftp://download.tuxfamily.org/minvasion/packages/MoleInvasion-${PV}.tar.bz2
+ music? ( mirror://gentoo/${PN}-music-20090731.tar.gz )"
+S="${WORKDIR}/${P}/src"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="music"
+
+DEPEND="
+ media-libs/libsdl[joystick,opengl,video]
+ media-libs/sdl-image[jpeg,png]
+ media-libs/sdl-mixer[vorbis]
+ media-libs/sdl-ttf
+ virtual/opengl"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-opengl.patch
+ "${FILESDIR}"/${P}-underlink.patch
+ "${FILESDIR}"/${P}-fno-common.patch
+ "${FILESDIR}"/${P}-gcc14.patch
+)
+
+src_prepare() {
+ default
+
+ if use music; then
+ mv -f "${WORKDIR}"/music ../ || die
+ fi
+
+ sed -i \
+ -e '/^CFLAGS/s:= -g:+=:' \
+ -e '/^LDFLAGS/d' \
+ -e "/^FINALEXEDIR/s:/usr.*:/usr/bin:" \
+ -e "/^FINALDATADIR/s:/usr.*:/usr/share/${PN}:" \
+ Makefile || die "sed failed"
+}
+
+src_configure() {
+ tc-export CC
+}
+
+src_install() {
+ emake DESTDIR="${D}" install install-data
+ doman ../debian/*.6
+
+ newicon ../gfx/icon.xpm moleinvasion.xpm
+ make_desktop_entry moleinvasion "Mole Invasion"
+}
diff --git a/games-arcade/mrrescue/Manifest b/games-arcade/mrrescue/Manifest
new file mode 100644
index 000000000000..6618ea13c1d0
--- /dev/null
+++ b/games-arcade/mrrescue/Manifest
@@ -0,0 +1,2 @@
+DIST mrrescue-1.02b-love.zip 11874167 BLAKE2B fce98b602fa276fb922671e6f197d7ad2f7d50539efe2a8c6dcb99b1e904a17039559b7390717ad7be443c291ca37296214a5efb93fa02b9db979a87db75c408 SHA512 24186570c89694889c1d9f17522dd201f20bae2c43237f366397065a7023c89bab3bb9cdc6677cf09bc7cbeaf9926710a3db15818eee9ce8024fedbfcb8fb516
+DIST mrrescue.png 4738 BLAKE2B ca440b008c8870f822c52778aa2ee5eb78a5ec318f133b9d3deba990c49870bcc69d2d6638b3072baedd8cfa27d1ec8a2fc320eda3da643ce2d022a4aff540c7 SHA512 9395e239e300397ed791573758242d75003caaf8c1d66c4f7a0299114ee4f1b40376bb2d532ed4a02fa97f773408ad5ef00ba228ee976fd30ddaa2f60ea80b9c
diff --git a/games-arcade/mrrescue/metadata.xml b/games-arcade/mrrescue/metadata.xml
new file mode 100644
index 000000000000..dda8e7ff7103
--- /dev/null
+++ b/games-arcade/mrrescue/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">SimonLarsen/mrrescue</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/mrrescue/mrrescue-1.02b-r2.ebuild b/games-arcade/mrrescue/mrrescue-1.02b-r2.ebuild
new file mode 100644
index 000000000000..a34d56ef3213
--- /dev/null
+++ b/games-arcade/mrrescue/mrrescue-1.02b-r2.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop wrapper xdg
+
+DESCRIPTION="Arcade 2d action game based around evacuating civilians from burning buildings"
+HOMEPAGE="https://tangramgames.dk/games/mrrescue/"
+SRC_URI="https://github.com/SimonLarsen/mrrescue/releases/download/v${PV}/${P}-love.zip
+ mirror://gentoo/${PN}.png"
+S="${WORKDIR}/${P}-love"
+
+LICENSE="CC-BY-SA-3.0 MIT ZLIB"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+LVSLOT="0.8"
+RDEPEND="games-engines/love:${LVSLOT}"
+BDEPEND="app-arch/unzip"
+
+src_install() {
+ local dir=/usr/share/love/${PN}
+
+ exeinto "${dir}"
+ doexe ${PN}.love
+
+ einstalldocs
+
+ doicon -s 64 "${DISTDIR}"/${PN}.png
+ make_wrapper ${PN} "love-${LVSLOT} ${PN}.love" "${dir}"
+ make_desktop_entry ${PN}
+}
diff --git a/games-arcade/netris/Manifest b/games-arcade/netris/Manifest
new file mode 100644
index 000000000000..3d03e4938193
--- /dev/null
+++ b/games-arcade/netris/Manifest
@@ -0,0 +1,2 @@
+DIST netris-0.52.tar.gz 33135 BLAKE2B e6958494b3f1e269b87d5e6833355af98c3936e282870afd8153711603b8115998cebe91f5e86afacc58b20cc8ad9ea2fae69906fa544948de7cb6ad77425cfd SHA512 842ad8602394dee929c3c4ba222f9f5ffe628e52348c3faf7c9098bbd5b0b0279fffc7927320f8ee8a5102537c995a8ed605d851f1cd32e4bd8976a7889c84e1
+DIST netris_0.52-10.debian.tar.xz 13160 BLAKE2B 80c4a27ecef79b63ddf72deffe10bcb9b4f83d1be8982d9b8761f2a5e7c1622ab03042fe51112882a188f431ecbf17db05ede7339dadcead98012ea5ad334873 SHA512 94b6fd6a938efe156a44687fdf3d4ba141513a13130548e552ec20864ee73625817d79c6821030bfcff7d05edecec69c78b5a1048b9597c932c7731165877469
diff --git a/games-arcade/netris/files/netris-0.52-clang16.patch b/games-arcade/netris/files/netris-0.52-clang16.patch
new file mode 100644
index 000000000000..7d13d02975bf
--- /dev/null
+++ b/games-arcade/netris/files/netris-0.52-clang16.patch
@@ -0,0 +1,31 @@
+https://bugs.gentoo.org/874021
+--- a/Configure
++++ b/Configure
+@@ -78,3 +78,3 @@
+ echo "Checking for libraries"
+-echo 'main(){}' > test.c
++echo 'int main(void){return 0;}' > test.c
+ LFLAGS=""
+@@ -96,4 +96,5 @@
+ cat << END > test.c
+-void handler(void) {}
+-main() { on_exit(handler, (void *)0); }
++#include <stdlib.h>
++void handler(int a, void *b) {}
++int main(void) { on_exit(handler, (void *)0); return 0; }
+ END
+@@ -108,3 +109,3 @@
+ #include <signal.h>
+-main() { sigset_t set; sigprocmask(SIG_BLOCK, &set, &set); }
++int main(void) { sigset_t set; sigprocmask(SIG_BLOCK, &set, &set); return 0; }
+ END
+@@ -119,3 +120,3 @@
+ #include <getopt.h>
+-main(){}
++int main(void){return 0;}
+ END
+@@ -131,3 +132,3 @@
+ #include <memory.h>
+-main(){}
++int main(void){return 0;}
+ END
diff --git a/games-arcade/netris/files/netris-0.52-tinfo.patch b/games-arcade/netris/files/netris-0.52-tinfo.patch
new file mode 100644
index 000000000000..2b2363a1c61a
--- /dev/null
+++ b/games-arcade/netris/files/netris-0.52-tinfo.patch
@@ -0,0 +1,14 @@
+diff --git a/Configure b/Configure
+index a8bf8f6..3fa9097 100755
+--- a/Configure
++++ b/Configure
+@@ -80,6 +80,9 @@ for lib in -lcurses -lncurses; do
+ LFLAGS="$lib"
+ fi
+ done
++if $CC $CFLAGS $LEXTRA test.c -ltinfo > /dev/null 2>&1; then
++ LFLAGS="$LFLAGS -ltinfo"
++fi
+ for lib in -lsocket -lnsl -ltermcap; do
+ if $CC $CFLAGS $LEXTRA test.c $lib > /dev/null 2>&1; then
+ LFLAGS="$LFLAGS $lib"
diff --git a/games-arcade/netris/metadata.xml b/games-arcade/netris/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/netris/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/netris/netris-0.52-r4.ebuild b/games-arcade/netris/netris-0.52-r4.ebuild
new file mode 100644
index 000000000000..81086d655920
--- /dev/null
+++ b/games-arcade/netris/netris-0.52-r4.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic toolchain-funcs
+
+DEB_VER="10"
+DESCRIPTION="Classic networked version of T*tris"
+HOMEPAGE="http://www.netris.org/"
+SRC_URI="ftp://ftp.netris.org/pub/netris/${P}.tar.gz
+ mirror://debian/pool/main/n/netris/netris_${PV}-${DEB_VER}.debian.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~mips ~x86"
+IUSE=""
+
+DEPEND="sys-libs/ncurses:0="
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+
+ tc-export CC CXX LD AR RANLIB
+
+ eapply "${S}"/../debian/patches/[01]*
+ eapply "${FILESDIR}"/${P}-tinfo.patch
+ eapply "${FILESDIR}"/${P}-clang16.patch
+
+ # bug #185332
+ sed -i \
+ -e '/sys\/time/ i\
+#include <sys/types.h> \
+#include <time.h>
+' \
+ -e '/netint2/ s/short/int16_t/' \
+ -e '/netint4/ s/long/int32_t/' \
+ netris.h || die
+ sed -i \
+ -e 's/volatile //g' \
+ -e '/Be more forgiving/d' \
+ -e 's/static myRandSeed/static int myRandSeed/' \
+ util.c || die
+ sed -i \
+ -e 's/\(long pauseTimeLeft\)/\1 = 0/' \
+ game.c || die
+ sed -i \
+ -e '/^CC/d' \
+ -e '/^COPT/d' \
+ -e '/^CFLAGS/d' \
+ -e 's/(LFLAGS)/(LDFLAGS) $(LFLAGS)/' \
+ Configure || die
+}
+
+src_configure() {
+ append-cppflags -D_DEFAULT_SOURCE #874021, for on_exit()
+ append-cflags ${CPPFLAGS}
+
+ bash ./Configure -O || die
+}
+
+src_install() {
+ dobin netris
+ newbin sr netris-sample-robot
+ dodoc FAQ README robot_desc
+}
diff --git a/games-arcade/nibbles/Manifest b/games-arcade/nibbles/Manifest
new file mode 100644
index 000000000000..bdb4b9022b2a
--- /dev/null
+++ b/games-arcade/nibbles/Manifest
@@ -0,0 +1 @@
+DIST nibbles-v0.0.4.tar.gz 18610 BLAKE2B 264331c2ef612d1421c370df601da3d8bd5b04c34f7a41e8a8b78480a308d9e8b24177db3666785603efefabd873af04b24bf31d1b320e3fac7698b1b98e2ee0 SHA512 a10af4f20af371c2a8ab4cf69c4a73120670815467177d3bc2a05aa198e9edf80cc1d47edf40d06059baf6e51cf7018ed4830a3a5bda6a35868548403f5f414b
diff --git a/games-arcade/nibbles/files/nibbles-0.0.4-as-needed.patch b/games-arcade/nibbles/files/nibbles-0.0.4-as-needed.patch
new file mode 100644
index 000000000000..0f1a587a41db
--- /dev/null
+++ b/games-arcade/nibbles/files/nibbles-0.0.4-as-needed.patch
@@ -0,0 +1,24 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1,19 +1,14 @@
+-CC = gcc -Wall -g
+-
+ SRCS = player.c main.c loadMap.c cmdline.c ncdrawlib.c scoring.c
+ OBJS = $(SRCS:.c=.o)
+-LIBS = -lncurses
++LDLIBS = $(shell $(PKGCONFIG) --libs ncurses)
+
+ INSTALL=/usr/bin/install -c
+ INSTALL_FOLDER=/usr/games
+
+ all: nibbles
+
+-.c.o:
+- $(CC) -c $*.c -o $*.o
+-
+ nibbles: $(OBJS)
+- $(CC) $(LIBS) $(OBJS) -o $@
++ $(CC) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $@
+
+ clean:
+ rm -f *~ *.o nibbles
diff --git a/games-arcade/nibbles/files/nibbles-0.0.4-gcc-10.patch b/games-arcade/nibbles/files/nibbles-0.0.4-gcc-10.patch
new file mode 100644
index 000000000000..e70203f73c7e
--- /dev/null
+++ b/games-arcade/nibbles/files/nibbles-0.0.4-gcc-10.patch
@@ -0,0 +1,22 @@
+--- a/scoring.c
++++ b/scoring.c
+@@ -12,6 +12,8 @@
+ #include <time.h>
+ #include "scoring.h"
+
++char highscoref[255];
++
+ int get_high_scores(struct highscoreent *highscores[], int *numscores)
+ {
+ FILE *scorefile;
+--- a/scoring.h
++++ b/scoring.h
+@@ -11,7 +11,7 @@
+ /* Max number of high scores we store */
+ #define MAXHIGHSCORES 20
+
+-char highscoref[255];
++extern char highscoref[255];
+
+ struct highscoreent {
+ char name[16];
diff --git a/games-arcade/nibbles/metadata.xml b/games-arcade/nibbles/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/nibbles/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/nibbles/nibbles-0.0.4-r1.ebuild b/games-arcade/nibbles/nibbles-0.0.4-r1.ebuild
new file mode 100644
index 000000000000..1c13efc8f053
--- /dev/null
+++ b/games-arcade/nibbles/nibbles-0.0.4-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+MY_P="${PN}-v${PV}"
+DESCRIPTION="An ncurses-based Nibbles clone"
+HOMEPAGE="http://www.earth.li/projectpurple/progs/nibbles.html"
+SRC_URI="http://www.earth.li/projectpurple/files/${MY_P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+IUSE=""
+
+DEPEND="sys-libs/ncurses:0="
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+GAMES_DATADIR="/usr/share"
+GAMES_STATEDIR="/var/games/${PN}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-as-needed.patch
+ "${FILESDIR}"/${P}-gcc-10.patch
+)
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e "s#/usr/local/games/nibbles.levels#${GAMES_DATADIR}/${PN}#" \
+ nibbles.h || die
+
+ sed -i \
+ -e "s#/var/lib/games/nibbles.score#${GAMES_STATEDIR}/nibbles.scores#" \
+ scoring.h || die
+}
+
+src_compile() {
+ PKGCONFIG="$(tc-getPKG_CONFIG)" emake
+}
+
+src_install() {
+ dobin nibbles
+
+ insinto "${GAMES_DATADIR}/${PN}"
+ doins nibbles.levels/*
+
+ dodir "${GAMES_STATEDIR}"
+ touch "${ED}${GAMES_STATEDIR}/nibbles.scores"
+
+ dodoc HISTORY CREDITS TODO README
+
+ fperms 664 "${GAMES_STATEDIR}/nibbles.scores"
+}
diff --git a/games-arcade/njam/Manifest b/games-arcade/njam/Manifest
new file mode 100644
index 000000000000..0ee9dedf3443
--- /dev/null
+++ b/games-arcade/njam/Manifest
@@ -0,0 +1 @@
+DIST njam-1.25.tar.gz 1665803 BLAKE2B 7e505bd2b6d1d50046c98a3e0edbe5cdd4831ee8d8525562d2b85296f98881f7aaab7154c2482c24be88015a81dc82d3d1b89693d6e7cc16a163a6f342f3b5e3 SHA512 d19c249ade34ede322245718fbc6fc79c5a0ed5f5da50989f88de48410dda3d7ae29f8968185166dfdc1dd23dae8126efe4a5f3c76c3731b90afd1c798f66917
diff --git a/games-arcade/njam/files/njam-1.25-format-security.patch b/games-arcade/njam/files/njam-1.25-format-security.patch
new file mode 100644
index 000000000000..66c8b17085ba
--- /dev/null
+++ b/games-arcade/njam/files/njam-1.25-format-security.patch
@@ -0,0 +1,13 @@
+diff -up njam-1.25-src/src/njamgame.cpp~ njam-1.25-src/src/njamgame.cpp
+--- njam-1.25-src/src/njamgame.cpp~ 2005-12-13 12:56:42.000000000 +0100
++++ njam-1.25-src/src/njamgame.cpp 2014-06-14 11:54:12.320854217 +0200
+@@ -227,8 +227,7 @@ void NjamEngine::StartGame(GameType Gt)
+ SDL_Surface *temp = IMG_Load(filename);
+ if (!temp)
+ {
+- printf("Loading file: %s", filename);
+- printf(SDL_GetError());
++ printf("Error loading file %s: %s\n", filename, SDL_GetError());
+ return;
+ }
+
diff --git a/games-arcade/njam/files/njam-1.25-gcc45.patch b/games-arcade/njam/files/njam-1.25-gcc45.patch
new file mode 100644
index 000000000000..c6515ef0aaa9
--- /dev/null
+++ b/games-arcade/njam/files/njam-1.25-gcc45.patch
@@ -0,0 +1,24 @@
+Fix buiding with gcc 4.5
+
+http://bugs.gentoo.org/show_bug.cgi?id=318411
+
+--- a/src/njamedit.cpp
++++ b/src/njamedit.cpp
+@@ -114,7 +114,7 @@
+ key = SDLK_a;
+ else if (CheckForSave())
+ {
+- LogFile::LogFile("Saving maps");
++ LogFile("Saving maps");
+ m_Maps.Save(filename);
+ level_type_was = level_type;
+ changed = false;
+@@ -131,7 +131,7 @@
+ char types[2][5] = { "COOP", "DUEL" };
+ sprintf(buf, "levels/%s.%s\0", filename, types[level_type]);
+ sprintf(filename, "%s\0", buf);
+- LogFile::LogFile("Saving maps");
++ LogFile("Saving maps");
+ m_Maps.Save(filename);
+ level_type_was = level_type;
+ changed = false;
diff --git a/games-arcade/njam/metadata.xml b/games-arcade/njam/metadata.xml
new file mode 100644
index 000000000000..e4671b1865a3
--- /dev/null
+++ b/games-arcade/njam/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">njam</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/njam/njam-1.25-r2.ebuild b/games-arcade/njam/njam-1.25-r2.ebuild
new file mode 100644
index 000000000000..1edfaed1cc14
--- /dev/null
+++ b/games-arcade/njam/njam-1.25-r2.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop flag-o-matic
+
+MY_P="${PN}_${PV}.orig"
+DESCRIPTION="Multi or single-player network Pacman-like game in SDL"
+HOMEPAGE="https://archive.org/details/njam1.25-src"
+SRC_URI="https://archive.org/download/njam1.25-src/${MY_P}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${P}-src"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="media-libs/sdl-mixer
+ media-libs/sdl-image
+ media-libs/libsdl
+ media-libs/sdl-net"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ sed -i \
+ -e "s:hiscore.dat:/var/${PN}/\0:" \
+ src/njam.cpp \
+ || die "sed failed"
+ sed -i \
+ -e "/hiscore.dat/ s:\$(DEFAULT_LIBDIR):/var:" \
+ Makefile.in \
+ || die "sed failed"
+
+ eapply "${FILESDIR}"/${P}-gcc45.patch
+ eapply "${FILESDIR}"/${P}-format-security.patch #542124
+
+ # njam segfaults on startup with -Os
+ replace-flags "-Os" "-O2"
+ eautoreconf
+}
+
+src_install() {
+ default
+
+ HTML_DOCS="${ED}/usr/share/njam/html/*"
+ rm -rf "${ED}/usr/share/njam/html/" || die
+ rm -f "${ED}"/README "${ED}"/levels/readme.txt || die
+
+ newicon data/njamicon.bmp njam.bmp
+ make_desktop_entry njam Njam /usr/share/pixmaps/njam.bmp
+}
diff --git a/games-arcade/notpacman/Manifest b/games-arcade/notpacman/Manifest
new file mode 100644
index 000000000000..e4196b489dc9
--- /dev/null
+++ b/games-arcade/notpacman/Manifest
@@ -0,0 +1,2 @@
+DIST notpacman-1.0.4.zip 439775 BLAKE2B 223017b71220330167d948c46649ea6b98f6a0b165a2879c348ca5e20ce4ba0b60af6486a598bfd2b327b2e32bb9ff1f70e005b90395b1d0cc50c5d23ad8294a SHA512 c64d74cad972c22fe7674b55c0155fcd6e0176c580f53645a0cef7ae1e2c3453807f13fd9bbc9992cdc1176bc1687800f957ef5c11034a2ffe0774ec0118a863
+DIST notpacman.png 1556 BLAKE2B d745ece089b9d829a47202e0e5d9a0cc4bd7365625fd0771b44d28c59d14ac903df586ec395c08a84115bf50e5842b6749239e37ec246fe6d112092db8aa541d SHA512 38fca81429255a5857476cbbcccb188ae4cc7fae4c044b45d82206ffcb41da5737e20135be2a6ab15ec1ff5faa74e5208a33a4966b3e9e99293c0ccb276b0c1b
diff --git a/games-arcade/notpacman/metadata.xml b/games-arcade/notpacman/metadata.xml
new file mode 100644
index 000000000000..2cfd89a1fc44
--- /dev/null
+++ b/games-arcade/notpacman/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ Ever wondered how Pacman would be like with physics? No? Well, it's
+ revolutionary. This mashup of "Not" and "Pacman" puts The Pac and
+ the Ghosts in a in a Pacworld cage, at mercy of gravity and the
+ level's shape, controlled solely by you. Ghosts still don't like
+ you very much, so you should be careful to make Pacman avoid them.
+ </longdescription>
+</pkgmetadata>
diff --git a/games-arcade/notpacman/notpacman-1.0.4-r1.ebuild b/games-arcade/notpacman/notpacman-1.0.4-r1.ebuild
new file mode 100644
index 000000000000..de7d45a2d9cd
--- /dev/null
+++ b/games-arcade/notpacman/notpacman-1.0.4-r1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop wrapper xdg
+
+DESCRIPTION="Mashup of \"Not\" and \"Pacman\""
+HOMEPAGE="https://stabyourself.net/notpacman/"
+SRC_URI="https://stabyourself.net/dl.php?file=notpacman-1004/notpacman-linux.zip -> ${P}.zip
+ https://dev.gentoo.org/~chewi/distfiles/${PN}.png"
+S="${WORKDIR}"
+
+LICENSE="WTFPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+LVSLOT="0.7"
+RDEPEND=">=games-engines/love-0.7.2:${LVSLOT}
+ media-libs/devil[png]"
+BDEPEND="app-arch/unzip"
+
+src_install() {
+ local dir=/usr/share/love/${PN}
+
+ exeinto "${dir}"
+ newexe not_pacman.love ${PN}.love
+
+ einstalldocs
+
+ doicon -s 32 "${DISTDIR}"/${PN}.png
+ make_wrapper ${PN} "love-${LVSLOT} ${PN}.love" "${dir}"
+ make_desktop_entry ${PN}
+}
diff --git a/games-arcade/nottetris2/Manifest b/games-arcade/nottetris2/Manifest
new file mode 100644
index 000000000000..7f23c98eed90
--- /dev/null
+++ b/games-arcade/nottetris2/Manifest
@@ -0,0 +1 @@
+DIST nottetris2-1.zip 2774048 BLAKE2B 2bc1edc06aeca837d39b226b5a288506a98a4a9bd2e7f884fba57c8335944689758c6cb74d2985fc8450bdba19759a177ad3036d816035770638e6520d896201 SHA512 63478640fadf91134dec86f88d6422a317b4523ececff836e40984500f2771d564012cbd587a46b300e084c3c64531f3758c648edf3d683b136c9da69924a187
diff --git a/games-arcade/nottetris2/metadata.xml b/games-arcade/nottetris2/metadata.xml
new file mode 100644
index 000000000000..a15eeb00627c
--- /dev/null
+++ b/games-arcade/nottetris2/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ Not Tetris 2 is the spiritual successor of the classic Tetris
+ mixed with physics. The result is a fun spinoff in which blocks
+ are no longer bound to the usual grid. Blocks can be rotated and
+ placed at any angle, resulting in a complete mess if not careful.
+ And with the newest cutting edge technology, Not tetris 2 allows
+ line clears when the lines are sufficiently filled. The old mode
+ is still available for play and is now called Stack.
+ </longdescription>
+</pkgmetadata>
diff --git a/games-arcade/nottetris2/nottetris2-1-r1.ebuild b/games-arcade/nottetris2/nottetris2-1-r1.ebuild
new file mode 100644
index 000000000000..329cea1efb91
--- /dev/null
+++ b/games-arcade/nottetris2/nottetris2-1-r1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop wrapper
+
+DESCRIPTION="The spiritual successor of the classic Tetris mixed with physics"
+HOMEPAGE="https://stabyourself.net/nottetris2/"
+SRC_URI="https://stabyourself.net/dl.php?file=nottetris2/nottetris2-linux.zip -> ${P}.zip"
+S="${WORKDIR}"
+
+LICENSE="CC-BY-NC-SA-3.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+LVSLOT="0.7"
+RDEPEND="
+ >=games-engines/love-0.7.2:${LVSLOT}
+ media-libs/devil[png]
+"
+BDEPEND="app-arch/unzip"
+
+src_install() {
+ local dir=/usr/share/love/${PN}
+
+ exeinto ${dir}
+ newexe "Not Tetris 2.love" ${PN}.love
+
+ newdoc "Not Readme.txt" README
+
+ make_wrapper ${PN} "love-${LVSLOT} ${PN}.love" "${dir}"
+ make_desktop_entry ${PN}
+}
diff --git a/games-arcade/open-supaplex/Manifest b/games-arcade/open-supaplex/Manifest
new file mode 100644
index 000000000000..3e0a3d5ec2ed
--- /dev/null
+++ b/games-arcade/open-supaplex/Manifest
@@ -0,0 +1,2 @@
+DIST open-supaplex-7.1.2.tar.gz 50157943 BLAKE2B 74811edf2dbf65b21fc502703ecadaa293ac5219e0c17b6876a6c6d81c46456d3d06717b56124ce5a675dbfa2c228235479ab8e5baf33fc3618576936dc9b62c SHA512 960c916d9af142511c755babeed24e4cde71bf9b61a5d77b988c45dc9fb9065ca6c65f07b72a2c413a1a7a5158da597f72e9d4d907de9585c4a6cc410e6134f6
+DIST open-supaplex-7.2.tar.gz 17696996 BLAKE2B 6faf95fa889ae6d176d1f180c021a00d59f6481636ba3f0222333c247496fd7cab1fdca7a3a98d679ce0170d8c5047692d9961fe2857f84795f1152cec333313 SHA512 267bb17320da9c26be573fc287fa299a630f05bc9982905e0503af4299a9431798d4f24ea9c19d570031bb96c243fc49524d47a23d3c4b88b6a4272d9d0a0826
diff --git a/games-arcade/open-supaplex/files/open-supaplex.svg b/games-arcade/open-supaplex/files/open-supaplex.svg
new file mode 100644
index 000000000000..7b91141b63fb
--- /dev/null
+++ b/games-arcade/open-supaplex/files/open-supaplex.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="128" height="128" version="1.0" viewBox="0 0 1280 1280" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(-640,-110)">
+<g>
+<path d="m1040 1350v-40h-160v-80h-80v-80h-80v-80h-80v-640h80v-80h80v-80h80v-80h80v-80h640v80h160v80h80v160h80v640h-80v80h-80v80h-80v80h-160v80h-480z"/>
+</g>
+<g fill="#303030">
+<path d="m1040 1350v-40h-160v-80h-80v-80h-80v-80h-80v-640h80v-80h80v-80h80v-80h80v-80h640v80h160v80h80v160h80v640h-80v80h-80v80h-80v80h-160v80h-480zm0-800v-40h-80v80h80zm640 0v-40h-80v80h80z"/>
+</g>
+<g fill="#b00000">
+<path d="m1040 1350v-40h-160v-80h-80v-80h-80v-80h-80v-640h80v-80h80v-80h80v-80h80v-80h640v80h160v80h80v160h80v640h-80v80h-80v80h-80v80h-160v80h-480zm480-320v-40h-400v80h400zm-480-80v-40h-80v80h80zm640 0v-40h-80v80h80zm-800-160v-40h-80v80h80zm960 0v-40h-80v80h80zm-800-240v-40h-80v80h80zm640 0v-40h-80v80h80z"/>
+</g>
+<g fill="#e01010">
+<path d="m1040 1190v-40h-160v-80h-80v-80h-80v-160h-80v-320h80v-160h80v-80h80v-80h160v-80h480v80h160v80h80v80h80v160h80v400h-80v80h-80v80h-80v80h-160v80h-480zm480-80v-40h80v-80h160v-80h80v-160h-80v80h-80v80h-160v80h-400v-80h-160v-80h-80v-80h-80v160h80v80h160v80h80v80h400zm-480-560v-40h-80v80h80zm640 0v-40h-80v80h80z"/>
+</g>
+<g fill="#767676">
+<path d="m880 550v-40h80v-80h80v80h-80v80h-80z"/>
+<path d="m1680 550v-40h-80v-80h80v80h80v80h-80z"/>
+</g>
+<g fill="#f09040">
+<path d="m720 390v-40h80v-80h80v-80h80v80h-80v80h-80v80h-80z"/>
+<path d="m1680 310v-40h-160v-80h160v80h80v80h-80z"/>
+</g>
+<g fill="#f0f0f0">
+<path d="m960 470v-40h80v80h-80z"/>
+<path d="m1600 470v-40h80v80h-80z"/>
+</g>
+</g>
+</svg>
diff --git a/games-arcade/open-supaplex/metadata.xml b/games-arcade/open-supaplex/metadata.xml
new file mode 100644
index 000000000000..c0497eea28b7
--- /dev/null
+++ b/games-arcade/open-supaplex/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>alexey+gentoo@asokolov.org</email>
+ <name>Alexey Sokolov</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">sergiou87/open-supaplex</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/open-supaplex/open-supaplex-7.1.2-r1.ebuild b/games-arcade/open-supaplex/open-supaplex-7.1.2-r1.ebuild
new file mode 100644
index 000000000000..0235c790c240
--- /dev/null
+++ b/games-arcade/open-supaplex/open-supaplex-7.1.2-r1.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop flag-o-matic toolchain-funcs
+
+DESCRIPTION="OSS reimplementation of Supaplex in C and SDL"
+HOMEPAGE="https://github.com/sergiou87/open-supaplex"
+SRC_URI="https://github.com/sergiou87/open-supaplex/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ media-libs/libsdl2[joystick,sound,video]
+ media-libs/sdl2-mixer[vorbis]
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ test? ( dev-lang/ruby )
+"
+
+src_prepare() {
+ default
+ rm -r resources/audio-{l,m}q || die
+}
+
+src_compile() {
+ append-cflags -DFILE_FHS_XDG_DIRS -DFILE_DATA_PATH="${EPREFIX}/usr/share/OpenSupaplex"
+ emake -C linux CC="$(tc-getCC)"
+}
+
+src_test() {
+ emake -C tests CC="$(tc-getCC)"
+ # Avoid installing savegames, configs, etc, if any were written during the test
+ cp -R resources "${T}/test" || die
+ cd tests || die
+ # gems are not used by the test, but by default ruby fails to start if
+ # dev-ruby/rubygems is not installed. dev-lang/ruby depends on that package
+ # via PDEPEND which is why it's not available if ruby was pulled as a
+ # dependency to open-supaplex on clean machine.
+ # https://bugs.gentoo.org/739126
+ OPENSUPAPLEX_PATH="${T}/test" ruby --disable=gems ./run-tests.rb ./opensupaplex || die
+}
+
+src_install() {
+ dobin linux/opensupaplex
+ insinto /usr/share/OpenSupaplex
+ doins -r resources/*
+ doicon "${FILESDIR}/open-supaplex.svg"
+ make_desktop_entry opensupaplex OpenSupaplex open-supaplex
+}
diff --git a/games-arcade/open-supaplex/open-supaplex-7.2.ebuild b/games-arcade/open-supaplex/open-supaplex-7.2.ebuild
new file mode 100644
index 000000000000..b6aff5409ae4
--- /dev/null
+++ b/games-arcade/open-supaplex/open-supaplex-7.2.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop flag-o-matic toolchain-funcs
+
+DESCRIPTION="OSS reimplementation of Supaplex in C and SDL"
+HOMEPAGE="https://github.com/sergiou87/open-supaplex"
+SRC_URI="https://github.com/sergiou87/open-supaplex/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ media-libs/libsdl2[joystick,sound,video]
+ media-libs/sdl2-mixer[wav]
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ test? ( dev-lang/ruby )
+"
+
+src_compile() {
+ append-cflags -DFILE_FHS_XDG_DIRS -DFILE_DATA_PATH="${EPREFIX}/usr/share/OpenSupaplex"
+ emake -C linux CC="$(tc-getCC)"
+}
+
+src_test() {
+ emake -C tests CC="$(tc-getCC)"
+ # Avoid installing savegames, configs, etc, if any were written during the test
+ cp -R resources "${T}/test" || die
+ cd tests || die
+ # gems are not used by the test, but by default ruby fails to start if
+ # dev-ruby/rubygems is not installed. dev-lang/ruby depends on that package
+ # via PDEPEND which is why it's not available if ruby was pulled as a
+ # dependency to open-supaplex on clean machine.
+ # https://bugs.gentoo.org/739126
+ OPENSUPAPLEX_PATH="${T}/test" ruby --disable=gems ./run-tests.rb ./opensupaplex || die
+}
+
+src_install() {
+ dobin linux/opensupaplex
+ insinto /usr/share/OpenSupaplex
+ doins -r resources/*
+ doicon open-supaplex.svg
+ make_desktop_entry opensupaplex OpenSupaplex open-supaplex
+}
diff --git a/games-arcade/openbubbles/Manifest b/games-arcade/openbubbles/Manifest
new file mode 100644
index 000000000000..72b8b6aa051a
--- /dev/null
+++ b/games-arcade/openbubbles/Manifest
@@ -0,0 +1 @@
+DIST openbubbles-1.2.tar.bz2 1090220 BLAKE2B 8ff4a8b877f2834aded15cf3f60706485f0c9534036ea008b74628185af6035769cba3589b54b24f8fa62fc1397944bbe1b0ad55fef01e0f5471696634a05c4c SHA512 fe546f12e6d045cb37f4c9f88dd42fc627d614933525066bd3eb867e5d8732f2f23fe117ff1a444fc3c33d471ae51099c865d9082134e0e8a051ce8a3df58244
diff --git a/games-arcade/openbubbles/files/openbubbles-1.2-glibc2.10.patch b/games-arcade/openbubbles/files/openbubbles-1.2-glibc2.10.patch
new file mode 100644
index 000000000000..df2bcebc58b8
--- /dev/null
+++ b/games-arcade/openbubbles/files/openbubbles-1.2-glibc2.10.patch
@@ -0,0 +1,20 @@
+--- a/src/BFont.cpp
++++ b/src/BFont.cpp
+@@ -319,7 +319,7 @@
+ int i = 0;
+
+ /* Calculate the space occupied by the text without spaces */
+- while ((p=strchr(&text[pos+1],SPACE)) != NULL) {
++ while ((p=strchr((char *)&text[pos+1],SPACE)) != NULL) {
+ i++;
+ pos = p - text;
+ }
+@@ -359,7 +359,7 @@
+ xpos=0;
+ pos = -1;
+ while ( spaces > 0 ) {
+- p = strstr(&text[pos+1]," ");
++ p = strstr((char *)&text[pos+1]," ");
+ strtmp = NULL;
+ strtmp = (char *) calloc ((p - &text[pos+1]) + 1,sizeof(char));
+ if (strtmp != NULL)
diff --git a/games-arcade/openbubbles/metadata.xml b/games-arcade/openbubbles/metadata.xml
new file mode 100644
index 000000000000..c784e12f82f5
--- /dev/null
+++ b/games-arcade/openbubbles/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+<longdescription lang="en">
+This is a clone of Evan Bailey's game Bubbles. Why did I reinvent the wheel? In
+this case, the wheel is made in Game Maker, so anyone who wants to do any
+serious programming would not be able to unless they A) ran Windows and B) ran a
+program that doesn't give the user very great power. OpenBubbles is written in
+C++ using SDL, so the programmer has some pretty powerful tools at his/her
+disposal; in addition, because SDL is cross-platform, OpenBubbles can be ported
+to any (major) platform, including Windows. Of course, I only run Unix, so I
+will only be producing Unix source code. Though it was a relatively minor issue,
+Evan's license is only semi-free because it doesn't permit commercial use of the
+source code. Now, you are free to make as much money as you want off of
+improvements of OpenBubbles (provided, of course, that you share them with me
+and everyone else under the GPL, too).
+</longdescription>
+</pkgmetadata>
diff --git a/games-arcade/openbubbles/openbubbles-1.2-r1.ebuild b/games-arcade/openbubbles/openbubbles-1.2-r1.ebuild
new file mode 100644
index 000000000000..621fcba7e7ab
--- /dev/null
+++ b/games-arcade/openbubbles/openbubbles-1.2-r1.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop
+
+DESCRIPTION="Clone of Evan Bailey's game Bubbles"
+HOMEPAGE="https://web.archive.org/web/20101126190910/http://www.freewebs.com/lasindi/openbubbles/"
+SRC_URI="https://web.archive.org/web/20101126190910/http://www.freewebs.com/lasindi/openbubbles/${P}.tar.bz2"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~hppa ~x86"
+
+DEPEND="media-libs/libsdl[sound,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-gfx"
+RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}"/${P}-glibc2.10.patch )
+
+src_install() {
+ default
+ newicon data/bubble.png ${PN}.png
+ make_desktop_entry ${PN} "OpenBubbles"
+}
diff --git a/games-arcade/openmortal/Manifest b/games-arcade/openmortal/Manifest
new file mode 100644
index 000000000000..520ea1426bbb
--- /dev/null
+++ b/games-arcade/openmortal/Manifest
@@ -0,0 +1 @@
+DIST openmortal-0.7.tar.bz2 51197736 BLAKE2B b4744bde2a9695cc5a1323f4e258fe7cf191d7e15e086e37f476feed0ed4039c27a58ee8d0a28b00945a2ba985dc0591bcf1832f070ace6b65ae04826df7ea3b SHA512 8af0b64a3d894dfdbdddafdbdc4c853dc2bfc9b52fd507db2818e67af5ad6cdbbb45f2e42e32103e841759225b1b8c4f33ac5a8ad70e4763698c54803fb81fce
diff --git a/games-arcade/openmortal/files/openmortal-0.7-freetype.patch b/games-arcade/openmortal/files/openmortal-0.7-freetype.patch
new file mode 100644
index 000000000000..2c545edc1d13
--- /dev/null
+++ b/games-arcade/openmortal/files/openmortal-0.7-freetype.patch
@@ -0,0 +1,15 @@
+--- a/src/sge_tt_text.cpp
++++ b/src/sge_tt_text.cpp
+@@ -37,9 +37,9 @@
+
+ #ifndef _SGE_NOTTF
+ #include <ft2build.h>
+-#include <freetype/freetype.h>
+-#include <freetype/ftoutln.h>
+-#include <freetype/ttnameid.h>
++#include FT_FREETYPE_H
++#include FT_OUTLINE_H
++#include FT_TRUETYPE_IDS_H
+
+ /* The structure used to hold glyph information (cached) */
+ struct glyph {
diff --git a/games-arcade/openmortal/files/openmortal-0.7-freetype_pkgconfig.patch b/games-arcade/openmortal/files/openmortal-0.7-freetype_pkgconfig.patch
new file mode 100644
index 000000000000..cde67a66e107
--- /dev/null
+++ b/games-arcade/openmortal/files/openmortal-0.7-freetype_pkgconfig.patch
@@ -0,0 +1,24 @@
+--- a/configure.in
++++ b/configure.in
+@@ -25,6 +25,7 @@
+ AC_C_CONST
+ AC_PROG_CXX
+
++PKG_PROG_PKG_CONFIG
+
+ dnl
+ dnl Switches
+@@ -122,11 +123,8 @@
+
+ dnl Check for Freetype 2 library
+
+-FT2_VERSION=2.1.0
+-AC_CHECK_FT2(
+- $FT2_VERSION,
+- :,
+- AC_MSG_ERROR([*** FreeType 2 version $FT2_VERSION not found!])
++PKG_CHECK_MODULES(FT2, freetype2,,
++ AC_MSG_ERROR([*** FreeType2 not found!])
+ )
+ CXXFLAGS="$CXXFLAGS $FT2_CFLAGS"
+ LIBS="$LIBS $FT2_LIBS"
diff --git a/games-arcade/openmortal/files/openmortal-0.7-gcc41.patch b/games-arcade/openmortal/files/openmortal-0.7-gcc41.patch
new file mode 100644
index 000000000000..888a06868d01
--- /dev/null
+++ b/games-arcade/openmortal/files/openmortal-0.7-gcc41.patch
@@ -0,0 +1,11 @@
+--- a/src/OnlineChat.cpp
++++ b/src/OnlineChat.cpp
+@@ -56,7 +56,7 @@
+ class CChallengeMenu: public Menu
+ {
+ public:
+- CChallengeMenu::CChallengeMenu( std::string a_sChallenger )
++ CChallengeMenu( std::string a_sChallenger )
+ : Menu( "You have been challenged!" ),
+ m_sChallenger( a_sChallenger )
+ {
diff --git a/games-arcade/openmortal/metadata.xml b/games-arcade/openmortal/metadata.xml
new file mode 100644
index 000000000000..c87dac1d31f2
--- /dev/null
+++ b/games-arcade/openmortal/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">openmortal</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/openmortal/openmortal-0.7-r4.ebuild b/games-arcade/openmortal/openmortal-0.7-r4.ebuild
new file mode 100644
index 000000000000..b44b485bc84f
--- /dev/null
+++ b/games-arcade/openmortal/openmortal-0.7-r4.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop
+
+DESCRIPTION="Spoof of the famous Mortal Kombat game"
+HOMEPAGE="https://openmortal.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="media-libs/libsdl[joystick,video]
+ media-libs/sdl-image
+ media-libs/sdl-mixer
+ media-libs/sdl-ttf
+ media-libs/sdl-net
+ >=media-libs/freetype-2.4.0:2
+ dev-lang/perl
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${P}"-gcc41.patch
+ "${FILESDIR}/${P}"-freetype.patch
+ "${FILESDIR}/${P}"-freetype_pkgconfig.patch
+)
+
+src_prepare() {
+ default
+
+ mv configure.{in,ac} || die
+ eautoreconf
+}
+
+src_install() {
+ default
+
+ newicon data/gfx/icon.png ${PN}.png
+ make_desktop_entry ${PN} OpenMortal
+}
diff --git a/games-arcade/opensonic/Manifest b/games-arcade/opensonic/Manifest
new file mode 100644
index 000000000000..223b8148355e
--- /dev/null
+++ b/games-arcade/opensonic/Manifest
@@ -0,0 +1,2 @@
+DIST loggcompat-4.4.2.tar.gz 3105 BLAKE2B 846430f7a7252ee4de168274b21c9ffd18e9ba40733aaa45def8a8a4a7a938d00ab61267712008bc599ce91d5a283ab586a4dae77c3cd33af10e2dc641b8be12 SHA512 4d704f999fc3ae3caa094a8a32d5285549c40485c7af9015dc67f832255f2d3963ae1d0db9194b101d66a168b85609ec4926b8ebb39fb7ce7986f7df40f293af
+DIST opensnc-src-0.1.4.tar.gz 10525059 BLAKE2B d5cb825512dfeb614d146e6e7ec45cc3eb56dae0f2cf6c2582e022a1e8ac54e6c87f7bee8795b0e520fa6c24433cb7a748889892cd288f122d7b885e6e91c790 SHA512 239c7b4c7f9663e4d46c54d8bdaefed8d12274b71feaf9c637feb04f3567465f265c50bf3419f4c881ae3fa48a62ab339fe8a0b005c2b080b53d54ebf1e2f29d
diff --git a/games-arcade/opensonic/files/opensonic-0.1.4-allegro-4.4.2-loggcompat.patch b/games-arcade/opensonic/files/opensonic-0.1.4-allegro-4.4.2-loggcompat.patch
new file mode 100644
index 000000000000..1289e846fe2b
--- /dev/null
+++ b/games-arcade/opensonic/files/opensonic-0.1.4-allegro-4.4.2-loggcompat.patch
@@ -0,0 +1,46 @@
+Source: FreeBSD
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -82,12 +82,6 @@ IF(NOT LJPGALLEG)
+ MESSAGE(FATAL_ERROR "Fatal error: libjpgalleg not found! ${RTFM}")
+ ENDIF(NOT LJPGALLEG)
+
+-# LOGG: liblogg, libogg, libvorbis, libvorbisfile
+-FIND_LIBRARY(LLOGG NAMES logg PATH "${CMAKE_LIBRARY_PATH}")
+-IF(NOT LLOGG)
+- MESSAGE(FATAL_ERROR "Fatal error: liblogg not found! ${RTFM}")
+-ENDIF(NOT LLOGG)
+-
+ FIND_LIBRARY(LOGG NAMES ogg PATH "${CMAKE_LIBRARY_PATH}")
+ IF(NOT LOGG)
+ MESSAGE(FATAL_ERROR "Fatal error: libogg not found! ${RTFM}")
+@@ -150,6 +144,7 @@ SET(
+ src/core/util.c
+ src/core/v2d.c
+ src/core/video.c
++ loggcompat-4.4.2/logg-4.4.2.c
+
+ src/scenes/util/editorgrp.c
+ src/scenes/util/grouptree.c
+@@ -250,7 +245,8 @@ IF(UNIX)
+ IF(UNIX)
+ SET(GAME_SRCS ${GAME_SRCS} src/misc/iconlin.c)
+ ADD_EXECUTABLE(${GAME_UNIXNAME} ${GAME_SRCS})
+- TARGET_LINK_LIBRARIES(${GAME_UNIXNAME} m logg vorbisfile vorbis ogg jpgalleg z png loadpng ${ALLEGRO_UNIX_LIBS})
++ INCLUDE_DIRECTORIES(loggcompat-4.4.2)
++ TARGET_LINK_LIBRARIES(${GAME_UNIXNAME} m vorbisfile vorbis ogg jpgalleg z png loadpng ${ALLEGRO_UNIX_LIBS})
+ SET_TARGET_PROPERTIES(${GAME_UNIXNAME} PROPERTIES COMPILE_FLAGS "-Wall")
+ ENDIF(UNIX)
+
+--- a/src/core/audio.c
++++ b/src/core/audio.c
+@@ -18,7 +18,7 @@
+ */
+
+ #include <allegro.h>
+-#include <logg.h>
++#include <logg-4.4.2.h>
+ #include <stdlib.h>
+ #include "audio.h"
+ #include "osspec.h"
diff --git a/games-arcade/opensonic/files/opensonic-0.1.4-clang16.patch b/games-arcade/opensonic/files/opensonic-0.1.4-clang16.patch
new file mode 100644
index 000000000000..f375d757eb4f
--- /dev/null
+++ b/games-arcade/opensonic/files/opensonic-0.1.4-clang16.patch
@@ -0,0 +1,26 @@
+--- a/src/core/audio.c
++++ b/src/core/audio.c
+@@ -385,3 +385,3 @@
+ */
+-void audio_init(int nomusic)
++void audio_init()
+ {
+--- a/src/entities/object_decorators/dialog_box.c
++++ b/src/entities/object_decorators/dialog_box.c
+@@ -39,3 +39,3 @@
+
+-static objectmachine_t* make_decorator(objectmachine_t *decorated_machine, const char *title, const char *message, void (*strategy)());
++static objectmachine_t* make_decorator(objectmachine_t *decorated_machine, const char *title, const char *message, void (*strategy)(objectdecorator_dialogbox_t*));
+
+@@ -60,3 +60,3 @@
+ /* private methods */
+-objectmachine_t* make_decorator(objectmachine_t *decorated_machine, const char *title, const char *message, void (*strategy)())
++objectmachine_t* make_decorator(objectmachine_t *decorated_machine, const char *title, const char *message, void (*strategy)(objectdecorator_dialogbox_t*))
+ {
+--- a/src/scenes/level.c
++++ b/src/scenes/level.c
+@@ -214,3 +214,3 @@
+ static void update_dlgbox(); /* dialog boxes */
+-static void render_dlgbox(); /* dialog boxes */
++static void render_dlgbox(v2d_t camera_position); /* dialog boxes */
+
diff --git a/games-arcade/opensonic/files/opensonic-0.1.4-cmake.patch b/games-arcade/opensonic/files/opensonic-0.1.4-cmake.patch
new file mode 100644
index 000000000000..53d76faafae2
--- /dev/null
+++ b/games-arcade/opensonic/files/opensonic-0.1.4-cmake.patch
@@ -0,0 +1,107 @@
+From: hasufell <julian.ospald@googlemail.com>
+Date: Sat Apr 28 16:38:56 UTC 2012
+Subject: build system
+
+use allegro-config
+remove "-O2" from pre-defined CFLAGS
+make paths modifiable
+add rules for icon, desktop-file and game-wrapper
+fix compilation for as-needed
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -35,16 +35,14 @@
+ MESSAGE("Using CFLAGS='${CFLAGS}'")
+
+ IF(UNIX)
+- SET(ALLEGRO_UNIX_LIBS "$ENV{_ALLEGRO_LIBS}")
++ exec_program(allegro-config ARGS --libs OUTPUT_VARIABLE ALLEGRO_LIBRARY)
++ SET(ALLEGRO_UNIX_LIBS "${ALLEGRO_LIBRARY}")
+ IF(NOT ALLEGRO_UNIX_LIBS)
+- MESSAGE(FATAL_ERROR "Please do not invoke CMake directly. Run ./configure instead.")
++ MESSAGE(FATAL_ERROR "Allegro libs not found!")
+ ENDIF(NOT ALLEGRO_UNIX_LIBS)
+ ENDIF(UNIX)
+
+
+-
+-
+-
+ # Finding the required libraries:
+
+ # Allegro: liballeg
+@@ -53,7 +51,8 @@
+ MESSAGE(FATAL_ERROR "Fatal error: couldn't find the Allegro game programming library (liballeg)! ${RTFM}")
+ ELSE(NOT LALLEG)
+ IF(UNIX)
+- SET(ALLEGRO_UNIX_VERSION "$ENV{_ALLEGRO_VERSION}")
++ exec_program(allegro-config ARGS --version OUTPUT_VARIABLE ALLEGRO_VERSION)
++ SET(ALLEGRO_UNIX_VERSION "${ALLEGRO_VERSION}")
+ IF(NOT ALLEGRO_UNIX_VERSION STREQUAL ALLEGRO_RECOMMENDED_VERSION)
+ MESSAGE("\nWARNING: your Allegro version is ${ALLEGRO_UNIX_VERSION}. The recommended version is ${ALLEGRO_RECOMMENDED_VERSION}.\n ${GAME_NAME} may not compile properly!.\n")
+ ENDIF(NOT ALLEGRO_UNIX_VERSION STREQUAL ALLEGRO_RECOMMENDED_VERSION)
+@@ -249,9 +248,8 @@
+ IF(UNIX)
+ SET(GAME_SRCS ${GAME_SRCS} src/misc/iconlin.c)
+ ADD_EXECUTABLE(${GAME_UNIXNAME} ${GAME_SRCS})
+- SET_TARGET_PROPERTIES(${GAME_UNIXNAME} PROPERTIES LINK_FLAGS ${ALLEGRO_UNIX_LIBS})
+- TARGET_LINK_LIBRARIES(${GAME_UNIXNAME} m logg vorbisfile vorbis ogg jpgalleg z png loadpng)
+- SET_TARGET_PROPERTIES(${GAME_UNIXNAME} PROPERTIES COMPILE_FLAGS "-Wall -O2 ${CFLAGS} ${CFLAGS_EXTRA}")
++ TARGET_LINK_LIBRARIES(${GAME_UNIXNAME} m logg vorbisfile vorbis ogg jpgalleg z png loadpng ${ALLEGRO_UNIX_LIBS})
++ SET_TARGET_PROPERTIES(${GAME_UNIXNAME} PROPERTIES COMPILE_FLAGS "-Wall")
+ ENDIF(UNIX)
+
+
+@@ -407,19 +405,43 @@
+ SET_TARGET_PROPERTIES(${GAME_UNIXNAME} PROPERTIES PROJECT_NAME "${GAME_NAME}")
+
+
+-
+ # Installing on *nix
+ IF(UNIX)
+- SET(GAME_INSTALL_DIR "/usr/share/${GAME_UNIXNAME}")
+- SET(GAME_FINAL_DIR "/usr/bin")
++ SET(GAME_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/${GAME_UNIXNAME}" CACHE PATH "")
++ SET(GAME_FINAL_DIR "bin" CACHE PATH "")
++ SET(GAME_LIBDIR "games/lib" CACHE PATH "")
++ SET(GAME_DOCDIR "share/doc/${GAME_UNIXNAME}-${GAME_VERSION}" CACHE PATH "")
++ SET(GAME_HTMLDIR "share/doc/${GAME_UNIXNAME}-${GAME_VERSION}/html" CACHE PATH "")
++ SET(GAME_ICONDIR "share/pixmaps" CACHE PATH "")
++ SET(GAME_DESKTOPDIR "share/applications" CACHE PATH "")
++
++ FILE(WRITE ${GAME_UNIXNAME}.sh
++"#!/bin/sh
++cd ${GAME_LIBDIR}
++exec ./${GAME_UNIXNAME} \"$@\"
++"
++)
+
+- INSTALL(CODE "MESSAGE(\"Installing ${GAME_NAME} ${GAME_VERSION}... Make sure you have root privileges.\")")
+- INSTALL(TARGETS ${GAME_UNIXNAME} RUNTIME DESTINATION ${GAME_INSTALL_DIR})
+- INSTALL(FILES license.txt readme.html DESTINATION ${GAME_INSTALL_DIR})
+- INSTALL(DIRECTORY objects sprites config images levels licenses musics quests samples screenshots themes languages DESTINATION ${GAME_INSTALL_DIR} PATTERN ".svn" EXCLUDE)
++ FILE(WRITE ${GAME_UNIXNAME}.desktop
++"[Desktop Entry]
++Name=${GAME_NAME}
++Type=Application
++Comment=A free open-source clone of the Sonic the Hedgehog universe
++Exec=${GAME_UNIXNAME}
++TryExec=${GAME_UNIXNAME}
++Icon=${GAME_UNIXNAME}
++Categories=Game;ArcadeGame;
++"
++)
+
+- INSTALL(CODE "MESSAGE(\"Creating files at ${GAME_FINAL_DIR}...\")")
+- INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"cmake\" \"-E\" \"copy\" \"${GAME_INSTALL_DIR}/${GAME_UNIXNAME}\" \"${GAME_FINAL_DIR}/${GAME_UNIXNAME}\")")
++ INSTALL(CODE "MESSAGE(\"Installing ${GAME_NAME} ${GAME_VERSION}... Make sure you have root privileges.\")")
++ INSTALL(TARGETS ${GAME_UNIXNAME} RUNTIME DESTINATION ${GAME_LIBDIR})
++# INSTALL(FILES license.txt DESTINATION ${GAME_DOCDIR})
++ INSTALL(FILES readme.html DESTINATION ${GAME_HTMLDIR})
++ INSTALL(FILES icon.png DESTINATION ${GAME_ICONDIR} RENAME ${GAME_UNIXNAME}.png)
++ INSTALL(FILES ${GAME_UNIXNAME}.desktop DESTINATION ${GAME_DESKTOPDIR})
++ INSTALL(DIRECTORY objects sprites config images levels musics quests samples themes languages DESTINATION ${GAME_INSTALL_DIR} PATTERN ".svn" EXCLUDE)
++ INSTALL(PROGRAMS ${GAME_UNIXNAME}.sh DESTINATION ${GAME_FINAL_DIR} RENAME ${GAME_UNIXNAME})
+
+ INSTALL(CODE "MESSAGE(\"Done! Please run ${GAME_UNIXNAME} to start ${GAME_NAME}.\")")
+ ENDIF(UNIX)
diff --git a/games-arcade/opensonic/metadata.xml b/games-arcade/opensonic/metadata.xml
new file mode 100644
index 000000000000..f3240aa4c725
--- /dev/null
+++ b/games-arcade/opensonic/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">opensnc</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/opensonic/opensonic-0.1.4-r4.ebuild b/games-arcade/opensonic/opensonic-0.1.4-r4.ebuild
new file mode 100644
index 000000000000..20b3742fc529
--- /dev/null
+++ b/games-arcade/opensonic/opensonic-0.1.4-r4.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Free open-source game based on the Sonic the Hedgehog universe"
+HOMEPAGE="https://opensnc.sourceforge.net/"
+SRC_URI="
+ https://downloads.sourceforge.net/project/opensnc/Open%20Sonic/${PV}/opensnc-src-${PV}.tar.gz
+ mirror+https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/loggcompat-4.4.2.tar.gz"
+S="${WORKDIR}/opensnc-src-${PV}"
+
+LICENSE="GPL-2+ MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+RESTRICT="mirror" # unsure about legality of graphics
+
+RDEPEND="
+ media-libs/allegro:0[X,jpeg,png,vorbis]
+ media-libs/libvorbis"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-cmake.patch
+ "${FILESDIR}"/${P}-allegro-4.4.2-loggcompat.patch # bug 711542
+ "${FILESDIR}"/${P}-clang16.patch
+)
+
+src_prepare() {
+ mv "${WORKDIR}"/loggcompat-4.4.2 . || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DGAME_FINAL_DIR="${EPREFIX}"/usr/bin
+ -DGAME_HTMLDIR="${EPREFIX}"/usr/share/doc/${PF}/html
+ -DGAME_INSTALL_DIR="${EPREFIX}"/usr/share/${PN}
+ -DGAME_LIBDIR="${EPREFIX}"/usr/$(get_libdir)/${PN}
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ local d
+ for d in "${ED}"/usr/share/${PN}/*; do
+ dosym -r /usr/{share,$(get_libdir)}/${PN}/${d##*/}
+ done
+}
diff --git a/games-arcade/opensurge/Manifest b/games-arcade/opensurge/Manifest
new file mode 100644
index 000000000000..01c6d51954fc
--- /dev/null
+++ b/games-arcade/opensurge/Manifest
@@ -0,0 +1 @@
+DIST opensurge-0.6.1.2.tar.gz 37406904 BLAKE2B 3d028f616bbc400a89b54c1d83d803f9d7333f00b1559176e9ebcf9a4d270960108705693adb770da944e235e5d7429dcaf8502d775f31b2f7456f0861e640f2 SHA512 9ec9ddd7a7b37732c3c2cfe9993c352c59c5b65ed378b680c38bf93b3dc45144b77c8e026335d187831ca7427225e900a994ced99cd9498ed0cfc9ebd400ca3a
diff --git a/games-arcade/opensurge/metadata.xml b/games-arcade/opensurge/metadata.xml
new file mode 100644
index 000000000000..4f1dd75ea26f
--- /dev/null
+++ b/games-arcade/opensurge/metadata.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>contact@hacktivis.me</email>
+ <name>Haelwenn (lanodan) Monnier</name>
+ </maintainer>
+ <longdescription lang="en">
+ Open Surge is a fun 2D retro platformer inspired by old-school Sonic games. Play, hack, become a creator and unleash your creativity!
+ </longdescription>
+ <upstream>
+ <remote-id type="github">alemart/opensurge</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/opensurge/opensurge-0.6.1.2.ebuild b/games-arcade/opensurge/opensurge-0.6.1.2.ebuild
new file mode 100644
index 000000000000..7a67fbd45548
--- /dev/null
+++ b/games-arcade/opensurge/opensurge-0.6.1.2.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2019-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ "${PV}" == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/alemart/opensurge"
+else
+ SRC_URI="https://github.com/alemart/opensurge/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64"
+fi
+
+DESCRIPTION="fun 2D retro platformer inspired by old-school Sonic games"
+HOMEPAGE="https://opensurge2d.org/"
+LICENSE="Allegro Apache-2.0 CC-BY-3.0 CC-BY-4.0 CC-BY-SA-3.0 CC-BY-SA-4.0 CC0-1.0 GPL-3+ MIT OFL-1.1 WTFPL-2"
+SLOT="0"
+
+# Allegro:5 libs to USE
+# - image: jpeg,png
+# - primitives: opengl
+# - font+ttf: truetype
+# - acodec+audio: alsa/openal/oss/pulseaudio (present in REQUIRED_USE)
+# - dialog: gtk
+# allegro[vorbis] isn't in CMakeList.txt but is required for the .ogg assets
+DEPEND="
+ >=media-libs/allegro-5.2.7:5[jpeg,png,opengl,truetype(-),gtk(-),vorbis,physfs]
+ >=dev-games/surgescript-0.6.1:=
+ >=dev-games/physfs-3.2.0
+"
+RDEPEND="${DEPEND}"
+
+src_configure() {
+ local mycmakeargs=(
+ -DGAME_BINDIR="/usr/bin"
+ -DGAME_DATADIR="/usr/share/${PN}"
+ )
+
+ cmake_src_configure
+}
diff --git a/games-arcade/opensurge/opensurge-9999.ebuild b/games-arcade/opensurge/opensurge-9999.ebuild
new file mode 100644
index 000000000000..7a67fbd45548
--- /dev/null
+++ b/games-arcade/opensurge/opensurge-9999.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2019-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ "${PV}" == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/alemart/opensurge"
+else
+ SRC_URI="https://github.com/alemart/opensurge/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64"
+fi
+
+DESCRIPTION="fun 2D retro platformer inspired by old-school Sonic games"
+HOMEPAGE="https://opensurge2d.org/"
+LICENSE="Allegro Apache-2.0 CC-BY-3.0 CC-BY-4.0 CC-BY-SA-3.0 CC-BY-SA-4.0 CC0-1.0 GPL-3+ MIT OFL-1.1 WTFPL-2"
+SLOT="0"
+
+# Allegro:5 libs to USE
+# - image: jpeg,png
+# - primitives: opengl
+# - font+ttf: truetype
+# - acodec+audio: alsa/openal/oss/pulseaudio (present in REQUIRED_USE)
+# - dialog: gtk
+# allegro[vorbis] isn't in CMakeList.txt but is required for the .ogg assets
+DEPEND="
+ >=media-libs/allegro-5.2.7:5[jpeg,png,opengl,truetype(-),gtk(-),vorbis,physfs]
+ >=dev-games/surgescript-0.6.1:=
+ >=dev-games/physfs-3.2.0
+"
+RDEPEND="${DEPEND}"
+
+src_configure() {
+ local mycmakeargs=(
+ -DGAME_BINDIR="/usr/bin"
+ -DGAME_DATADIR="/usr/share/${PN}"
+ )
+
+ cmake_src_configure
+}
diff --git a/games-arcade/opentyrian/Manifest b/games-arcade/opentyrian/Manifest
new file mode 100644
index 000000000000..3346c0baa7ac
--- /dev/null
+++ b/games-arcade/opentyrian/Manifest
@@ -0,0 +1,2 @@
+DIST opentyrian-2.1.20130907-src.tar.gz 297517 BLAKE2B 9d6d357cdda59da22ed039be0a5038cf744045dcb30fe0528137a5ac70a4cd512b24eeee3fe233b4ff2a819bf2aa4187e5109d88c72d18db7e1d64e8ad8db5d8 SHA512 1a560f2061496fbbb57b6334ab207b00a6b2e6a4d6164c6df6ad535ae9d0435c32c3db51d3ce2a0a79eb66d72723d112c1993f59b781750f9bd97afb643a0b67
+DIST tyrian21.zip 4754048 BLAKE2B 6bef66fbc34a4d2d865fe7088a6942a29348153d0d10347860952a152b882fd9eef1748fbfa9fd32d030593d2f8c21e1cd227dd6ca540488ba5093b95a95fb33 SHA512 639aa773778386c14ce508feb4729512d00f80182a3bb0fe8bba4ee38bce91da1867ca93f1a7e5e30ff127da077eed275d8dd6ba82042b627b84f1606e2d6bce
diff --git a/games-arcade/opentyrian/files/opentyrian-2.1.20130907-cflags.patch b/games-arcade/opentyrian/files/opentyrian-2.1.20130907-cflags.patch
new file mode 100644
index 000000000000..3654e22ef45e
--- /dev/null
+++ b/games-arcade/opentyrian/files/opentyrian-2.1.20130907-cflags.patch
@@ -0,0 +1,14 @@
+--- a/Makefile
++++ b/Makefile
+@@ -21,11 +21,6 @@
+
+ # FLAGS ####################################################
+
+-ifneq ($(MAKECMDGOALS), release)
+- EXTRA_CFLAGS += -g3 -O0 -Werror
+-else
+- EXTRA_CFLAGS += -g0 -O2 -DNDEBUG
+-endif
+ EXTRA_CFLAGS += -MMD -pedantic -Wall -Wextra -Wno-missing-field-initializers
+ ifeq ($(WITH_NETWORK), true)
+ EXTRA_CFLAGS += -DWITH_NETWORK
diff --git a/games-arcade/opentyrian/files/opentyrian-2.1.20130907-datapath.patch b/games-arcade/opentyrian/files/opentyrian-2.1.20130907-datapath.patch
new file mode 100644
index 000000000000..8ebf427d0797
--- /dev/null
+++ b/games-arcade/opentyrian/files/opentyrian-2.1.20130907-datapath.patch
@@ -0,0 +1,24 @@
+--- a/Makefile
++++ b/Makefile
+@@ -49,6 +49,10 @@
+ ALL_LDFLAGS += $(LDFLAGS)
+ LDLIBS += $(EXTRA_LDLIBS) $(SDL_LDLIBS)
+
++ifneq ($(DATA_PATH), )
++ CFLAGS += -DDATA_PATH=\"$(DATA_PATH)\"
++endif
++
+ # RULES ####################################################
+
+ .PHONY : all release clean
+--- a/src/file.c
++++ b/src/file.c
+@@ -34,7 +34,7 @@
+ #ifdef TARGET_MACOSX
+ tyrian_game_folder(),
+ #endif
+- "/usr/share/opentyrian/data"
++ DATA_PATH
+ };
+
+ static const char *dir = NULL;
diff --git a/games-arcade/opentyrian/files/opentyrian-2.1.20130907-gcc10.patch b/games-arcade/opentyrian/files/opentyrian-2.1.20130907-gcc10.patch
new file mode 100644
index 000000000000..6f0bfcf64cf3
--- /dev/null
+++ b/games-arcade/opentyrian/files/opentyrian-2.1.20130907-gcc10.patch
@@ -0,0 +1,353 @@
+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
+
+--- 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
+
+--- 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
new file mode 100644
index 000000000000..8b8ac653c809
--- /dev/null
+++ b/games-arcade/opentyrian/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">opentyrian/opentyrian</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/opentyrian/opentyrian-2.1.20130907-r3.ebuild b/games-arcade/opentyrian/opentyrian-2.1.20130907-r3.ebuild
new file mode 100644
index 000000000000..1161edc3135f
--- /dev/null
+++ b/games-arcade/opentyrian/opentyrian-2.1.20130907-r3.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2021 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[joystick,video]
+ media-libs/sdl-net"
+RDEPEND="${DEPEND}"
+BDEPEND="app-arch/unzip"
+
+PATCHES=(
+ "${FILESDIR}/${P}-datapath.patch"
+ "${FILESDIR}/${P}-cflags.patch"
+ "${FILESDIR}/${P}-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
+}
diff --git a/games-arcade/orthorobot/Manifest b/games-arcade/orthorobot/Manifest
new file mode 100644
index 000000000000..4cbe4d99a6c2
--- /dev/null
+++ b/games-arcade/orthorobot/Manifest
@@ -0,0 +1 @@
+DIST orthorobot-0.zip 3429026 BLAKE2B d21023045cce73142f03179719591f4f0e58a3a968a1094da07611ec77cac37bcf822ddd3748699c21718e27534ee2e993a1f4cab038dd745fc94337f277a374 SHA512 cf73bfd7d136c0d408dcee80db1193c4ae1d418128b8879a67c5fbfc013ce33ffab4255c0ea2e7d2a70f22301192fb77bd5b3105d69ff511d2d5a5b99fbd0cf0
diff --git a/games-arcade/orthorobot/metadata.xml b/games-arcade/orthorobot/metadata.xml
new file mode 100644
index 000000000000..115e9d64a669
--- /dev/null
+++ b/games-arcade/orthorobot/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+</pkgmetadata>
diff --git a/games-arcade/orthorobot/orthorobot-0-r2.ebuild b/games-arcade/orthorobot/orthorobot-0-r2.ebuild
new file mode 100644
index 000000000000..1da2dac05619
--- /dev/null
+++ b/games-arcade/orthorobot/orthorobot-0-r2.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop wrapper
+
+DESCRIPTION="Perspective based puzzle game, where you flatten the view to move across gaps"
+HOMEPAGE="https://stabyourself.net/orthorobot/"
+SRC_URI="https://stabyourself.net/dl.php?file=${PN}/${PN}-source.zip -> ${P}.zip"
+S="${WORKDIR}"
+
+LICENSE="CC-BY-NC-ND-3.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+LVSLOT="0.8"
+RDEPEND="games-engines/love:${LVSLOT}"
+BDEPEND="app-arch/unzip"
+
+src_unpack() {
+ default
+
+ # It is only one .love file (but with crappy name), so we can use asterisk
+ mv *.love "${P}.zip" || die "mv failed"
+ unpack "./${P}.zip"
+
+ rm "${P}.zip" || die "rm failed"
+}
+
+src_prepare() {
+ default
+ # Fix error on quit
+ sed -i -e 's/love.event.push("q")/love.event.push(fadegoal)/' menu.lua || die "sed failed"
+}
+
+src_install() {
+ local dir=/usr/share/love/${PN}
+
+ insinto ${dir}
+ doins -r .
+
+ make_wrapper "${PN}" "love-${LVSLOT} ${dir}"
+ make_desktop_entry "${PN}"
+}
diff --git a/games-arcade/oshu/Manifest b/games-arcade/oshu/Manifest
new file mode 100644
index 000000000000..c9f1a8279787
--- /dev/null
+++ b/games-arcade/oshu/Manifest
@@ -0,0 +1,2 @@
+DIST oshu-2.0.3.tar.gz 146175 BLAKE2B 52cd7ee0c6d1361e622b67246597ba2494b7b64b583ae76d294143035022c9f5c317019156e7c86a7a9ca245a3403ccdc1874aeb416ab8b3b7bcfe217b2b479f SHA512 d3db0b996ce2e21400fd874682afb31ad20fdd852f44a297255a65d84a53d3c4d8110ed5268906eb70583c9cb2126c3530653057f3a809b76487c766aac9857c
+DIST oshu-skin-v1.tar.gz 2224947 BLAKE2B 0b463133dd7ab54421551627d12932f5257848b1130d57af8c2ff6b6836a49c9322b8f2f7e95de540909390d0139e547650a6bb321614cf92fac464b09075674 SHA512 d562294ac5e122a9d9971e3ab92f6168d848177cc5e22a94bbc450fde2b3b14007796a24d33722da9b6675467b109ce128ba94dca5dcc7c61c91c1e373032618
diff --git a/games-arcade/oshu/files/oshu-2.0.0-use_unpacked_osu-skin.patch b/games-arcade/oshu/files/oshu-2.0.0-use_unpacked_osu-skin.patch
new file mode 100644
index 000000000000..3786c2ed8adf
--- /dev/null
+++ b/games-arcade/oshu/files/oshu-2.0.0-use_unpacked_osu-skin.patch
@@ -0,0 +1,34 @@
+commit 1dffc1a763f33af12715f4abcf8fd2043055a9a2
+Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
+Date: Sun Apr 1 23:21:55 2018 +0200
+
+ share/skins/CMakeLists.txt: Use already unpacked osu-skin
+
+diff --git a/share/skins/CMakeLists.txt b/share/skins/CMakeLists.txt
+index 54e20e5..2501757 100644
+--- a/share/skins/CMakeLists.txt
++++ b/share/skins/CMakeLists.txt
+@@ -24,22 +24,10 @@ if ("minimal" IN_LIST OSHU_ENABLED_SKINS)
+ endif ("minimal" IN_LIST OSHU_ENABLED_SKINS)
+
+ if ("osu" IN_LIST OSHU_ENABLED_SKINS)
+- file(
+- DOWNLOAD "https://www.mg0.fr/oshu/skins/osu-v1.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/osu.tar.gz"
+- EXPECTED_HASH SHA256=bc645534371bf5ccba66d4a6729dc1deffb6f148b6ce115efd305f9ffab1d183
+- )
+- add_custom_command(
+- OUTPUT osu/README.md
+- COMMAND "${CMAKE_COMMAND}" -E tar xf osu.tar.gz
+- COMMAND "${CMAKE_COMMAND}" -E touch osu/README.md
+- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/osu.tar.gz"
+- COMMENT "Unpacking the osu skin"
+- VERBATIM
+- )
+ add_custom_target(osu-skin DEPENDS osu/README.md)
+ add_dependencies(skins osu-skin)
+ install(
+- DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/osu"
++ DIRECTORY osu
+ DESTINATION "${OSHU_SKINS_INSTALL_DIRECTORY}"
+ )
+ endif ("osu" IN_LIST OSHU_ENABLED_SKINS)
diff --git a/games-arcade/oshu/metadata.xml b/games-arcade/oshu/metadata.xml
new file mode 100644
index 000000000000..53e3da6f88a6
--- /dev/null
+++ b/games-arcade/oshu/metadata.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="person" proxied="yes">
+ <email>contact@hacktivis.me</email>
+</maintainer>
+<maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+</maintainer>
+<use>
+ <flag name="osu-skin">Include more complete osu-skin (other is minimal)</flag>
+</use>
+</pkgmetadata>
diff --git a/games-arcade/oshu/oshu-2.0.3.ebuild b/games-arcade/oshu/oshu-2.0.3.ebuild
new file mode 100644
index 000000000000..2adec5bd5bfd
--- /dev/null
+++ b/games-arcade/oshu/oshu-2.0.3.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake xdg
+
+DESCRIPTION="Lightweight osu! port"
+HOMEPAGE="https://github.com/fmang/oshu"
+
+if [[ ${PV} = *9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/fmang/oshu.git"
+ SRC_URI="osu-skin? ( https://www.mg0.fr/oshu/skins/osu-v1.tar.gz -> ${PN}-skin-v1.tar.gz )"
+else
+ SRC_URI="https://github.com/fmang/oshu/archive/${PV}.tar.gz -> oshu-${PV}.tar.gz
+ osu-skin? ( https://www.mg0.fr/oshu/skins/osu-v1.tar.gz -> ${PN}-skin-v1.tar.gz )"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="GPL-3 CC-BY-NC-4.0"
+SLOT="0"
+IUSE="osu-skin"
+
+RDEPEND="
+ media-libs/libsdl2
+ media-libs/sdl2-image
+ x11-libs/cairo
+ x11-libs/pango
+ >media-video/ffmpeg-5:=
+"
+
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+ default
+
+ if [[ ${PV} = *9999 ]]; then
+ git-r3_src_unpack
+ fi
+}
+
+src_prepare() {
+ if use osu-skin; then
+ eapply "${FILESDIR}/oshu-2.0.0-use_unpacked_osu-skin.patch"
+ mv "${WORKDIR}/osu" share/skins/ || die "Failed to move osu-skin"
+ fi
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DOSHU_DEFAULT_SKIN=$(usex osu-skin osu minimal)
+ -DOSHU_SKINS=minimal$(usev osu-skin ';osu')
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ cmake_build check
+}
diff --git a/games-arcade/oshu/oshu-9999.ebuild b/games-arcade/oshu/oshu-9999.ebuild
new file mode 100644
index 000000000000..cf543ede25bd
--- /dev/null
+++ b/games-arcade/oshu/oshu-9999.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake xdg
+
+DESCRIPTION="Lightweight osu! port"
+HOMEPAGE="https://github.com/fmang/oshu"
+
+if [[ ${PV} = *9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/fmang/oshu.git"
+ SRC_URI="osu-skin? ( https://www.mg0.fr/oshu/skins/osu-v1.tar.gz -> ${PN}-skin-v1.tar.gz )"
+else
+ SRC_URI="https://github.com/fmang/oshu/archive/${PV}.tar.gz -> oshu-${PV}.tar.gz
+ osu-skin? ( https://www.mg0.fr/oshu/skins/osu-v1.tar.gz -> ${PN}-skin-v1.tar.gz )"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="GPL-3 CC-BY-NC-4.0"
+SLOT="0"
+IUSE="osu-skin"
+
+RDEPEND="
+ media-libs/libsdl2
+ media-libs/sdl2-image
+ x11-libs/cairo
+ x11-libs/pango
+ >media-video/ffmpeg-5:=
+"
+
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+ default
+
+ if [[ ${PV} = *9999 ]]; then
+ git-r3_src_unpack
+ fi
+}
+
+src_prepare() {
+ if use osu-skin; then
+ eapply "${FILESDIR}/oshu-2.0.0-use_unpacked_osu-skin.patch"
+ mv "${WORKDIR}/osu" share/skins/ || die "Failed to move osu-skin"
+ fi
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DOSHU_DEFAULT_SKIN=$(usex osu-skin osu minimal)
+ -DOSHU_SKINS=minimal$(usev osu-skin ';osu')
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ cmake_build check
+}
diff --git a/games-arcade/osu-lazer/Manifest b/games-arcade/osu-lazer/Manifest
new file mode 100644
index 000000000000..c05803e2069a
--- /dev/null
+++ b/games-arcade/osu-lazer/Manifest
@@ -0,0 +1,325 @@
+DIST automapper.13.0.1.nupkg 143069 BLAKE2B c38c52f66717a55b40cff148a54b71a8b5803f7255bd551a0aae5339d321c0205018b3630818aba86ffe1430dcee18dcb389c22616a0224e2c51c8972bdc75f8 SHA512 86c21a303f4725f738f4318e448cabdab8c27770d00508f1079e218a2f308dc709329d32fb6ac7576b7ba6c2748c882a6c2883523f9d26943c3b09435a8f82f4
+DIST diffplex.1.7.2.nupkg 92255 BLAKE2B dc735fc95dad6a62d97e0aacf27f3b6cf2c094cfa8d490c125f67f93fc7ef416665033bbdcc778109a08b7cf2adc9440e314235796c290e3d156e1a75ee27348 SHA512 24fb44832dc3c975afa54eee2558a43a1c14e5ae0dfdbde80a155f61efe8f25a9cc8a290a8c24916a8db648afb90a91ceec800ea24edb0a9af0c37074c864d99
+DIST discordrichpresence.1.2.1.24.nupkg 145124 BLAKE2B 583f3bdc9235448ca110841f9e12e149c30e4c28e1ae1004e3b0bfeff9ee884bed18da6186f488d5c7e10981ae0702ec1c22c5ae4d8f29bb2fab3c814c3e1096 SHA512 6aaa67d7a7ff242cb4ad2660ff983fe7da4e48f4e4372dde26f5f24983752b123d1d8bb2baa881ed3dd26bdc52f50f756140ab8a7c0260d9320bd2f2bc3c68ae
+DIST ffmpeg.autogen.4.3.0.1.nupkg 1537629 BLAKE2B 2be0069229ef94461919476076c2480c745deaf7798c746df5043c0ac97f265d60fc705c4119b69171320668a11fdd00b4cc607229259a35a4848d2e2ec1a122 SHA512 c9e70c8a81c10928a4c48c17fc1543dfc108d765620e118ba0a54297fcd590dd09ea12c755adf0257d05cc333d11bcc9ae4aa2873eb81223823db13b794e77fe
+DIST fody.6.9.1.nupkg 939362 BLAKE2B 1ab87f5b68c279a70016316b5060bbcf717a88d9246324129a705f4b4001cb278dd5976938dc3653527a664ee573f44ffc8b99d7b2d8571244d5fa99f37a785a SHA512 dbbb21b7b1436ef50264be1d5bbbe7c4fd9116e55348e6f6d30660a6112751acbaf28b3b3ced9a28fcf3d4e47b33bd6e403f54634e261601c5045cf70e690a5a
+DIST hidsharpcore.1.2.1.1.nupkg 111978 BLAKE2B 73e57a3e9af3a9b221a857fa7f015704824fc073c9bbc75898d5b88611322d64e3383b8993e8333c839e019860ad0dda5328ec2c43a83da3f17115c75bf8c8af SHA512 7234be491380eeb0f9c0725b54907821013227a72e4a5324845be4d4cc0fe438a46764d0f662e4cb5beda5db4991d50a41c4ecef43e3736ccc78693092000726
+DIST htmlagilitypack.1.11.72.nupkg 1517013 BLAKE2B 04f56455c7623eadfe3bb49fe0d202928b9296866cc1f177da410af8d3ecea90198fcd5f0307f2353b46de23386d98eaa755020dbecd9330b258b89a5e9d4dc8 SHA512 dd2e6d55e6645a9074e84612878409a129e976b70a482d7c8343da9e3e72825e3eb5d371ca71220d661235d446bf25a6c8a05b6899b837e0c1ec191ebc7dc787
+DIST humanizer.2.14.1.nupkg 28677 BLAKE2B af00a07cc6f4067d00ec44056985d101867eaa167485c4288aae39d7ac5b0f4247473388079216a474ee134dd0f9c5e60ae5b496d68fd19196cfd3e623f4d8d8 SHA512 c167af0a6287547e3d4e0d16b31f15742816d0284acafb21dde5e5c8baade8b8ae92343687d311cdcd9fe8991a96ba24c1cdf2eb7bc4d4910feee1a6e454158a
+DIST humanizer.core.2.14.1.nupkg 538179 BLAKE2B c3e3c3c7d3fb3484dc85f5eaf25ff4f4428cd36b3458c5664fa7c29cb62ea291aded48a369823459d684ff79ce63a16650dcd37e8cd123c23ab943faea92cfd7 SHA512 cb3a8653f1ca34b67d52fafa92f49cdf0615fd2e4efc8be4948516e5617b32e8af18b63cc12e486672cf92dec3d4a5bc12dd849e5d08dcbce0daf196336e17b3
+DIST humanizer.core.af.2.14.1.nupkg 54985 BLAKE2B 137f8080650b0ab2de922adc5aa26b85925625fe6d6928651bda111c534772075f55d8304289d35b3b91d4e750633a7d969feebf5914d9986a449077eefe9dd3 SHA512 ab9dc8bc4382544e4dd36c069babac009c5b801bcd6fa9ce7a12340e593e8d95736a661016bb628db7b5ce3ce5648776b3896cbc4b24cef6d6b07c8950f1d2b8
+DIST humanizer.core.ar.2.14.1.nupkg 57900 BLAKE2B 9cfea2322c0f86636456b13fd81c20559a4e6ce908be25f7a1a3b856df5b466f70d2f43c31fac1ddfd708fbe2eed3d81f575d2bdf100fd3a23caaf085092758a SHA512 6819c2473a8139007322b400f814e93c5c8be8c6d6d436ebf976b32af1d1d4b7a9ffc55bb5502ef9e92d2c8de4ab14269df6064ef2c496b56e85bb0ad7d5b0be
+DIST humanizer.core.az.2.14.1.nupkg 54973 BLAKE2B 90993c92ce69d7e13090384d1008e0501b55721aa6efa374ef91eb9dcd18e474c248cb881e3c0995b46521012b6163cd2561732cfdfab3888cbc916242774e9a SHA512 c035548aae4f2a2d005818769cf3270a95892cbd513a49306af7b2f49e7e173fbadf06bd658e4f8522e9b61059ac0d05b48edb4a429cf8765ed9a6407974736c
+DIST humanizer.core.bg.2.14.1.nupkg 55143 BLAKE2B c431bd07ec661d876e571e3b6fa094597e236cfd8c1f773774827935e2990e1d64c4cfc435048afb6bd7f29c4af98112b6745c970b8f9b9256d3527e006915d6 SHA512 d448737436a11a0d35c1ccafcd326e6ef687b492d0a3fb7335403e3b6094bec16e6a817f228930a708925917d4546a068365ab045ba566b10d7a47ad2243680f
+DIST humanizer.core.bn-bd.2.14.1.nupkg 55253 BLAKE2B 7973cded5487e29dd425bf3c517c6ca1655efb591406691e3c7075cfd4b5df7b60ee5cd5a9bd5950586fcf671da093375f1e7a722bbfc923a4faf6d4134df356 SHA512 84854ac0f8142072c22077a74fc1ef82d4d232ff050e792c776a78465153ecc5b7dbc85635fa64b905cfb04193c369a07f285f7d3bc77514b0afe166c8d17faf
+DIST humanizer.core.cs.2.14.1.nupkg 56198 BLAKE2B 5b4b5eb76b526bebd86ad34727e6217a4a9489a36fabe9ee552887a2933e23a67b3bb08b73f1127ba87d7f5514a16676cbead47e1d30cd22e12e74a7f51e432f SHA512 e97cb1fa2a9eec1e1e711f0aabc5cae14ddd67887db65c50d8255eeba02e18c37863226bdf7ee8a0d17bd38862781ba7331a5d50d44df9a5ec359de1e8a32479
+DIST humanizer.core.da.2.14.1.nupkg 56370 BLAKE2B 54e0a4722aea9b4f7fd86c0542319c1bb9052597c9e9fda0744d630766f121c7b048793a730f5254b1f222818e3510b71d27f05971835bab7b8bf34c3bb936ab SHA512 df63ffe161a5375835be00938f89f439c3eb06543d82c933885218b0366531ef8cd2a63ece9504e1463ad37e623a34ea3efcac40ff6309b88418857f5c544461
+DIST humanizer.core.de.2.14.1.nupkg 58281 BLAKE2B c8afef854e2e059000fb4db6286edf3ff844f9932d2d2e6dd4aedc7c2f969b3ac630862e7f7ab93f8b580e0cf3df811c0879821f30c222ff83c14a42279df401 SHA512 72802cf8b635582c2ee15de34d6f96da5983481d8262f73826068a94c479c7ecee68579167fc2e3665c004e7b7276edb5f292c5902d945594101670d3949e4d7
+DIST humanizer.core.el.2.14.1.nupkg 55394 BLAKE2B 5ea09aa4f568a8a029caeb81ad9bf5efa4acf9a74872191f5e3abe892e201ad6ec94a4af3ba22a30700762cab1e1a48048384e74d4d73831ad06039747fb526e SHA512 4ce5a5c15f087e0eaa3abe712b1f5909ce79b2caf365f12c1c72950a678a3ec2a69a57641fb6d4284f21e0ed97c1d82a99fc516c17cbdfec26b058652d0e3847
+DIST humanizer.core.es.2.14.1.nupkg 65308 BLAKE2B 52227f627cf069de05e43ef5afd3e76e0ce14c5fa8231a341532070c8e5f472b94791d73a3487ceee7c0c52339e64caf9028af77d2449a965a4dd3216574a8d1 SHA512 4e6c7e561ef6d9ff871b0d90174582f5e2903a38e81dd6bdfcbb2315dd50d36a83d19e308befe7351ac9b75115f7af6d282a1c1444942b5b3d34951aa2a6ef1e
+DIST humanizer.core.fa.2.14.1.nupkg 55011 BLAKE2B 54e7dc23d04de852c5a371ae93fa6ecbf29bde71d319fb0fde6e2a9e0640ee47dccb3cf69b95b7d53714ca6702f95fbf8d51070309f3eb848a4a239ac39694a9 SHA512 09e2e32538307b9da55c86952def9b57a294b4b6ad1b32eef6b7dcc8ad7071bbfb86d2e04de3b9386a26bacedc0cf2f4902f229bbc67bb4a03eff9eeab4d7fa2
+DIST humanizer.core.fi-fi.2.14.1.nupkg 53077 BLAKE2B b4bde138437619e806defcfb374c05b693c37568dafe9e71ee35bc92a75d8df7d8a5358e6ed0ce88d044f7c13a60c9edfd3db958d34b8f4bde6f20210ea2e8ca SHA512 f320d2b318de501b59e08065a48ec2ea1fbd3ad88d254d977070fa166ab9f97494217a060cbeb727f95f1470bbc519224af648fdf8a436728af25595ab92a8eb
+DIST humanizer.core.fr-be.2.14.1.nupkg 55204 BLAKE2B a95ec6b679e9541873d7a83976de57ab892ff699cd716275c8132f4919d7a26a1de6675bf96bd1c26a479ec5a40f8a32cb0b587f6802fd9313ad51ca472fedf6 SHA512 02d1ec8e702331865439371e6731d97cb5cd5f9816ee7fc4eeee4e896a23b6481a82a336e99c39898f8881323e6b85fd7710bf4b4b7e828fea5eba49dc3fc5e4
+DIST humanizer.core.fr.2.14.1.nupkg 56956 BLAKE2B d25f7293758e87a9514f28dbfeebd4215b66874be57bf12b9733660c3aa9dd69e8bb2860157cb2a8a0e2156965da14bef32f2dd7334092e77e18ff9f5a77580c SHA512 096cfa2a0f4f5449e6bf381f4ca9e9f23acd94cb4d7e1ac79c7fc954e6189c16f478712327263538ca31599fd771634eec1be8386cce4a32432f1b8e2f28b629
+DIST humanizer.core.he.2.14.1.nupkg 57444 BLAKE2B c297bf557de9a9379fb2c211dbfd5776fd9673dc007261d0e7caa7c642fa8166826d4f54ee67e8d44206f1f277223182d6e69d807265593bbdc365bec4bcc8c7 SHA512 b8ca8bdf86220d2da24928b03365c67e316607f5efa3a6195ce6615a3c1881db0ce5fcf96dc6e99962e922ab6b0ebc5a734fb3536c0ba0477e82f6e47cff6396
+DIST humanizer.core.hr.2.14.1.nupkg 56177 BLAKE2B 6139e7c752ff1e0b32f62b9c2c2467be4d13b273604b64d3742ccd800bd87dc9190bec3c767c26ee0b7e960d1b3e942f3a43d80a540dd523d18386bdc098dc02 SHA512 a83c8f85ae2d7d456986b8023ec297479106640d4ddf442dcdd80775d9561d232e7ddb76713d6e7821d17a24e8fe32458baa7a198b610dc96cca1214cd47f35a
+DIST humanizer.core.hu.2.14.1.nupkg 54922 BLAKE2B 2888f41c2cf26a127bf7687c43a6919e40643f1601f5cc275426d2697cc197e9a11fd266853cb2e03d2e1c07cd3545935ccc4249c25537cfcde0f3d03cece60a SHA512 be3d3b194f163d81834405f3b5ffff4e7a55f8497f1a5e92b92d8e86ae01e5a78876c2e71370b81cb7c8e6301e5f26e59455ac79766373e087f7ebf17d5e44c4
+DIST humanizer.core.hy.2.14.1.nupkg 55111 BLAKE2B 0ea7e39d2f04e789645583fcb26e42ccc1e3e1965d0ec3c5b10a75bf8a8ac1c20b64656c37817c3d74f0f6f8038b574b7e5cf878692e9e29f4aae68853254c6a SHA512 6ef922df2fd94b29a813808fbe678837931b5ce3fea35ed8ce41b4a10863bf9c1ca348867ed1da6b9cfe62443f3951777091a1a4734b714473faf67a812e2a73
+DIST humanizer.core.id.2.14.1.nupkg 54992 BLAKE2B 2f4547a167b2ee3055dd2d5ae0acb659cfc1f383fbb3684c581049468e2e6ec333d941e3765958bf56d2e737cb74b3b6c2823bb8eaa488729d9b68857009d993 SHA512 66eab78ad07fae2196aa1454e08c5541330cf7bbecda93a359288b125e0a7b83e5b47622c10709a243d2e5c045945ad7be79315b0c8f88988093270ad2a98096
+DIST humanizer.core.is.2.14.1.nupkg 60639 BLAKE2B 7f1a2bdbea5ae3ebda267886acf8cf65da8aaec259641f08e9c0754c2d3a4b81510fd2833b6b9bfd325bae8647912068e1486d9b90270ac36457abfc18c7c075 SHA512 8b12be32e0b267926fa3ccaef2ff67f2bfc423d285913481e9bf82bfa00cbb819c7225478d14fac3c63e255440d3904d7a4112f39e460173d36d3e857139fe31
+DIST humanizer.core.it.2.14.1.nupkg 54951 BLAKE2B 95c786620e4500e3003a20b4d4e0dd7b44caea94387a51532512f6080960cd40248e5b249555f9c5bc5b3ab918f21684e3142914537092a1b2da3df93765d204 SHA512 2cb65a6a6a775df3c61babb972ad9619dd74324b01ebdf94292c501cd620ccd653a705b0fdaba4917d4bbea3c05bd416f737f0815355c71916964d749a5a56eb
+DIST humanizer.core.ja.2.14.1.nupkg 54867 BLAKE2B 31c2dbbe8586128e22ee9b794b38bf64e36309db7da4075e816c16f5367a98e278e18b3084524b06c4dcb355ba2c7ca3c2233283cce494774178365390fcab8e SHA512 9cef8d54342e93d2c4bfbe2e2eb1ddb31300d13686b45685eac17f5ed8ef165b0de8676173fedf0cb736fdf6d9c9eda83362cf3e8462ecab72e99217678910f2
+DIST humanizer.core.ko-kr.2.14.1.nupkg 49289 BLAKE2B ff5b2c4b491e4e04fb34bab5be1d4a4a8b689996383c47a6a22918170b1288bc2da0f241f3bc9b12fcb83d011ae2e836c913b2b66e9f233ac79b0466288b8363 SHA512 bb5233e2467a79cd65832c7bf01a7fc65fd858c6ab0fe8802a46d514cd9b9a34c8a9eb94094ebfd153621d41b2956287d5911a68c67462548b13ba9178e44462
+DIST humanizer.core.ku.2.14.1.nupkg 61243 BLAKE2B 59f7f792d516b1f0031f28934e40bc64f03b36cfb9400c54b62f78c6e36f3ce4812375c6a8b6644714af10c87b3a055b95fd1785bcbf032b66accb6318fab582 SHA512 da07569d4c1fe545b96393872bb172944ccf736ba5f88568478aec567f273af0207071e1f922d39b3e2f1fb92fc84ad28a9f276c9f3797b06282558e69180aee
+DIST humanizer.core.lv.2.14.1.nupkg 60213 BLAKE2B e6860c1b838d6c3b411b44f03538d9f79e4a5f17236f0477123db6a2dadb984c40288b7b64d60f22ff4b23aa96b8a3cc870a665a86934126240839c2ae7a0de6 SHA512 b976ed021bf47255a5c303bdb085c80ff8f2f08feb3b509c3be11e3844f4fa38bd12cee0da6a28e94a551b3b1014c98570794f3189acbcbe4fb2eb476e9b9066
+DIST humanizer.core.ms-my.2.14.1.nupkg 49425 BLAKE2B cc161fe4b2b922dfc9347e628f2169db57fd03dd53d88fdb44f4f5d7a196e8c31aeca5ca53719d7333d14507d5084a7a62854bdc0c21d660c750de3d8757ce12 SHA512 e4478cc1e689effd66520d889cd779b16c3898d1acd557cb62c9f4d293a389be34608e68778e1b72a45994497f9b04b4bbb635be1132b19949fe2969f36a788c
+DIST humanizer.core.mt.2.14.1.nupkg 51512 BLAKE2B 999719935cbb4985ace45ad2ceef182b803970f58e206f1f209c5d12adaba44c666a6d6ff42146c22ab1980f235cecdc98716af1aa515c8673c870b783d43340 SHA512 fb7bfdda10a5893c22dbe37545a9fd6d734730502d3e22b3226259eb183f7d47fd62a043b9bc606cf3cdbd21df166ac38447f4b5980ecdeed287cfab54b5b36a
+DIST humanizer.core.nb-no.2.14.1.nupkg 55548 BLAKE2B 2a9c0dfc655aab11c660210c88eecae8d1b5c3529355c8e2812afef4b7871f0e4a875121fd049e115ead91aeec6a4df0a3e0c03b72c53aeee23dbde127db60e1 SHA512 d3ff3f34ff9f8a8b1636e0867239d424064fdcabf262e69ccae2b6e9f31bd6d6eddb1c8c5e9e50ad2d72a308421152859355f88bad558d38f05f6dfbc6030e15
+DIST humanizer.core.nb.2.14.1.nupkg 55496 BLAKE2B d3e55f28120f0d2a5d8154b054b2d915df61b40e436d7870342d860c0de36e37aa5e09a5717d9e554e9bf1e797d57e98c5e04b45d5d2892ad6d01de684b6e890 SHA512 1853a6e51ad295e68266851b5f492875ec54ec46d0ac23003bcaa456c74d1354ac508998c4e4cd404adf9e599ce62ec835ced390c2d31b277e1f5522a232ecb4
+DIST humanizer.core.nl.2.14.1.nupkg 54953 BLAKE2B 68f7f7576b6eacd18e3b33156aefce14c087fa74ebea35cbe7124a7ee5aa8e51c38df638bce408119ff61c32bde355d42f2ed370c20056353d0d1f20a5881685 SHA512 39da68d62ef7e0f0fc2629c6d05186c1a181b3fb310b1b8a924b1a4ffe272a4fadfdd09d011d7d0f01a4012a5bc01aa2479f3d4ec3201d6f523d33ee48d6b429
+DIST humanizer.core.pl.2.14.1.nupkg 56265 BLAKE2B 5231198df1861a9812e4ea8f922b1b1ea5432cfc3804043a5e0b10009878f6313d076291833aaea612da2be91296465c12bb802c63f7a3cfaa7a0b856a6e37de SHA512 e645f2a540f9faad73b0441db3803c6d1f79c2df291dadf96bcc039708d7f765e1cfc52794c7eae53db52d0595d5f597f7ce246d8dddb377bdbad6754dff8d02
+DIST humanizer.core.pt.2.14.1.nupkg 54986 BLAKE2B 1edd85e6534c6b90f1423a7c097d214f4de3c45be29e2c7bff5de5a6c8e43c9d3e97cd4de79c7876e4e04b178fc2ef345dc7960b2dc3fc6354099ad89d48ce38 SHA512 44939399ff726aa3dd09014b5664a64018dac533fcee01d2d00f625f7588d51f6651e565275a8c4783054ce6e00f20a84cb7838bef5be17d1a18aeafaf2a2577
+DIST humanizer.core.ro.2.14.1.nupkg 54962 BLAKE2B 9fff7a9b2b3a6708179f07e191a1a669364368a59b5015e7216ba11f48e8202a1bb62ccefe041f3367cdff113990312788377c5e6136121073b3f9ece57a000c SHA512 24709147cc3ff951de6d70a2b6d1e23b5a833bd05cd82260053fa0175029c71c0fb7c9cb57b95d8c924af991ce8998502cfb3f4c5543505a9fa03c78ab3f90ef
+DIST humanizer.core.ru.2.14.1.nupkg 57775 BLAKE2B c10df43a69d556f0d3c6e842c535b5996f526a7ebb3831d52e70c8a96f6c7154fb4bf2836bf9586f207a7b651354d86eb8786d8fc2d4cd9fe4167533c7e35d7a SHA512 af6304b2a2307a7c773af3a5b82e5053a61ac7e15d1852ef4d578f3215df7aaa4c430c3f3c8ca7da778e86682b0eba443a23f8e6942ca5c20120c2e5807f0b99
+DIST humanizer.core.sk.2.14.1.nupkg 56277 BLAKE2B beccfbd1b293570d9dcb999c326abe939dddedda5a8a0f3264ebb90d7c71a4e09c9b2fca2b912dc5904bf3ad6268a337651f1b23224aa65a99b244fe4c7c9c76 SHA512 9a9c1210e52aa630820ca890993fe451501f436e65b7406d332e4711b92d43d31c0ed2f0c3fa26dd07b3191e992aeb34175c1c83cd880012f1504efe22b22f91
+DIST humanizer.core.sl.2.14.1.nupkg 57605 BLAKE2B 6276a10bde48bf2cd447af44db9f88abcfe2fd9f0f40b590bc639a2e9347137c9f84ff30d0b6d8ac0274e35b0a87b498706ab9cb0d1dce6f0080c188fc043752 SHA512 6bc6554487df8e00d3a98e98137ceaae34b22c6b05c7556b7cf57b31b582aab58fdfb89cdc971f3083f156cb0994f7b3a5fc3bfd7f3b45fdf86242e871b2a2e5
+DIST humanizer.core.sr-latn.2.14.1.nupkg 56180 BLAKE2B 2a265663cbde0f2451dc7148c101e2e650cfa5df6482813619bbf309f9e560a3fdb009effc0a79ea473d21d2183bd50474a407fbae9ab93086fbffebf37cdd84 SHA512 1d68e4d6517e677a2c6214d4d8aad8aecc1f421bd6b6d213289144dd63bc5ddd25721035e9ddad7a1a2cfec95d2e16ef9a0a745e2881424c1b7c2a9082855918
+DIST humanizer.core.sr.2.14.1.nupkg 56326 BLAKE2B 11d613b57c33c5093ca2f3b3a485ef074f1adb782ee769d37e7da129faea5d47fa9c41fa77cd2ff4febd20baa763dcd047ea146e8ef8585b605b40ba0d2efb18 SHA512 d2bbec20fad2f039cad9159c9c6b9fe577a49285458318356dfd773caf75e3305da3222a7303eb7a5f00abdd802c23602e76cbae8199ec9ee2a6a40c83e42afa
+DIST humanizer.core.sv.2.14.1.nupkg 54968 BLAKE2B 9178a7621f594ef7d07a03d4327eb8e0a303fa0627054670b9666f785f70e9e7af10a2943d85003e91c2511b107cc8b38228b774968889e3159bd842a6037326 SHA512 224b73defd9e85b845ffce7b1423cb9167dc35cba476ffc70729aac2c5e13730a7daf55a2cc978c1a49fa3511372f181d04f16af7c6d1814fd3fb2d82d3e35c6
+DIST humanizer.core.th-th.2.14.1.nupkg 49735 BLAKE2B df88aa87e25e274d1d16b6005b67c73d629acb4b0eafe420f01371b1c8d1227d97ca7f7d10e1180e7e24225a211bd627633e01b7030014f5d890701797de1200 SHA512 cb30028a11380c53e595b15a567d3ffc5450a05f1b3d80e7d1744a5c28e631f616ed28e0752867a8dba763b0c0f58d1557956ce225055c008012d48a5b0332b2
+DIST humanizer.core.tr.2.14.1.nupkg 54915 BLAKE2B 2646c2ea9431b9d91e8626215ef746eaceda32b89a920c1ad5a513925b67346ab983daa2052516d0a2744bddb8a605f28156efc8391f5be3020b9832d6263f4f SHA512 bae26af2cb26d092bfeda8e47cf5caf69b5b0ce1ec76a2e0cbd11d500fd0e455a35d9fd38f95f7c780f48bb13a7eb51d65303529131612171e14e1e82bfd314e
+DIST humanizer.core.uk.2.14.1.nupkg 57753 BLAKE2B ec7db44efb7f37ebf9414e32b46606ed62148aed8b8f6799af907b2306d3196d2f0b997a98873e4a4e76a4ebf44f27b734752a7794e5e2ef9b0e0b68529c9aa0 SHA512 c17aed51857057f87535ac293da2ecc43a829ac6d0f3001e8759a655318e4753eaf6ab4876b4e1118845133453121d0ead34d56087d26ac262fe4c993c9b3d2f
+DIST humanizer.core.uz-cyrl-uz.2.14.1.nupkg 55331 BLAKE2B a619cfd91ed2cdfd61499db4a3b516f6cedd35d7b766f2892caac0db415f40f700e4600f4262f4a562e1d47bf8fe15ca066dc701b9d26732456c6f182c6f23cc SHA512 d22e2a725fbc278968c3f24159f6850c441d480b48613bc333f89f357392376bc7c677faa11b669a9ee511dbd86db122033b4c3c55152f497a324b6d05a84354
+DIST humanizer.core.uz-latn-uz.2.14.1.nupkg 55097 BLAKE2B b63e03bc8b62fb880ae50abc016aced367a4b6002eda1ceb67a9dc4d0a8ec68ea054bdc1e4bf110303c73411b6a32117ce248459d063ae2d7c36bba6f8b2a965 SHA512 ac7258cc516fd2142e39ee623b6ada7197632170623de74d0ac665caa363359b72d31d42cb4f1a2981d57ea755d43133df49bebf0e2103f22ea516333310f6cb
+DIST humanizer.core.vi.2.14.1.nupkg 55044 BLAKE2B 802c415b31a5e2ce63395533a9dca92d29116cf29ea29145c428f237b42d9e9af5e315ef6d342820ab5f38c36677840bf7e7e35100b3116f409264218624cfcc SHA512 c2e0fc75d97458507b92f89a6201959eb1e00362268e670deef8ae4a801475e6b937c8af3f802e0c70b00923eef86d2a4870fb2a8061f0a3ae22ea8d85d89c7b
+DIST humanizer.core.zh-cn.2.14.1.nupkg 54872 BLAKE2B bd5f4e9d8ea860f8a64b4eb814fb5a370c0da9c4872f05cde13015fc12bdaed68767b9ce943e2057f8c739861ef23e94d8de22ae0850ab57d1c5bb416377a987 SHA512 a978a46501a32a4f6944061cc9107415d2bb5131511e375a65603ebe99eb9e4ddc20b0c9bdcc95d15a41c0852af5034089d970da162532fb3e9e0db0f0864f44
+DIST humanizer.core.zh-hans.2.14.1.nupkg 54879 BLAKE2B 1627e0058cf7a9a93ef6507965f5bcb0fa0d877143747c4a8bd0cdaabcd251f8077acd30804b0107708659ceb5d3f2f201a6ac4bd5eb8f7ef75f37b283b15178 SHA512 8c96ee6d1d8663c89584af657b9a827297b2097d78803e0ae1a368b8d90827ab8c4975c7c1dafd2d5abd4fbeaed36ba18d19eb42ffc12205a382f2cfda4c901d
+DIST humanizer.core.zh-hant.2.14.1.nupkg 54889 BLAKE2B 4a36cc884794d7ef9952e33fdeba278264fcef27dba9573aede1f7a08e088aa247b79e2409779793d404bef8b69ea67d16b31b3dbd59ebf89103a711c816756e SHA512 2041d5d1f9bc550256a5a117b9b119a7b37a2d0013a00025f77fe1a7de4e5cfcd8465be0035286156279902db47d0eb05d41a910bcebd657fa8464760180a4c2
+DIST jetbrains.annotations.2023.3.0.nupkg 178167 BLAKE2B 33d0925118b20ecace0cf491ad5533ffdc282fa395e41f030fe49438d8753e9c244eeb65950e5c1abbeb1f8383526fe780cbb4f7df001a260358ac2fce84482e SHA512 29dae1d9dd6197048e0ad1d41749ec19e2b4a0a94c280f29cd48af3d507857cc8343b8693504c646a9f42ddfda69ee3e60fc8a65c0c7ce5463d5b8a12d7e455c
+DIST managed-midi.1.10.1.nupkg 1575444 BLAKE2B 880343891e7dc3d48a5c673fa7929399f1cd01471d4701348ecbb9d4772dfab07e3cf6de12a4f041e8c9697d95e06fa9eb8a45055c202c69658eb5a44dd9efff SHA512 66649487408286ae66014a9b85283c77652ebb9d70c48b34bc40e3e825bd76bd93052d291ade3fc6ebfee2a69df6796b231e3e41242c2fb9492e4b4764892b94
+DIST markdig.0.23.0.nupkg 967616 BLAKE2B 0957fcbcec7f3c5324384bbf7f15f1d6604c9698a0f09daf6f352c33c7f82a19692d51bebc8b14e8ca740e3d3cdf7b384fe12376905d0a1872393c070b9becba SHA512 0360f8993ddc9b54c8309e3a1ffaa4f09009f94f3ce0f9b02422cf2c3d72f7f5730d8aa25c89eb164bee126d0b8b98ac080009ed26d1e830fe5622bafc88a1b2
+DIST messagepack.3.1.3.nupkg 936269 BLAKE2B 81a709eaca4de4462af538615330b0255d5a8b2760e4048acad4d36b14f7f85adc186a41370c5752b6b7d9a6db8df24e9c30a7ae9b15882387989ae18fca5e09 SHA512 ff99f69619169209c158b2fcb6a31840a58edce9a94910cc3feb8089dfb0e0eb349cd97c7f095195c5471ed3cbb752e5e51069979fc6fe0451c75bd1c0805b09
+DIST messagepack.annotations.3.1.3.nupkg 29777 BLAKE2B 77a3121d4b3365af0932e2a31bfb691e72baf6e20df287c5754bb5f0712047e8dc94acb9b9c68d32e42d56dd960b16c7897f8dbc1ddc39f5e2209963910801b1 SHA512 48a76867edebc8a9935a2e2824489acc6b60d95f445c40fe2b524c9ca3136ce690e78844055e36ce3b722cb43c4f859702453e135d26754f0c3e2dbbd557de31
+DIST messagepackanalyzer.3.1.3.nupkg 177384 BLAKE2B 41887436c8d2a39df6d90225ecd775bd214e92c50c4c5c5f999539c93c17f1e4cec2834071d464aec3133b94b9a087ca35b2b2d2437fbb11c6f118ecdc50479d SHA512 824362fe7fd0d1386c2802142d8a27ac05ec1d04afd7ccefbeabc4c1ba4cce56f35218c14b80166cb30c0235dc4665ca78922ca126aa0f473baf4b3b4690edcb
+DIST microsoft.aspnetcore.connections.abstractions.9.0.2.nupkg 161980 BLAKE2B 2abc21266d5b742ac9a014302a5effaa8bf339d729228cf18d02373238205b9a158dfbc0a60f170308696d4282b5aa77d7dbbfe8c3704a22579698e8acae9809 SHA512 619983b0614594e6ffa364d238bda3dbcd93f96a036221d0faac5229304aaaded12e427b0373970db492a01159bde3820aaeeb67f724ff81f309f23ceeb165c6
+DIST microsoft.aspnetcore.http.connections.client.9.0.2.nupkg 256049 BLAKE2B 6faf3bd2d89907c66323d5c3737b5852fe3439fd9fcce8c1e2dc3f87d83112d3f32a3e19c9fe77195100b085095cd3af785fff19420847d962a10561a1b1d269 SHA512 f5a3f8a59744a26c90b76c1d0a8d0b8118b7534ad54f0da6ef6a92925f79d4ebf47fd6b0b637bc93c5b5c90d92882e371fe3276fc022bc25d3dc581283792a9b
+DIST microsoft.aspnetcore.http.connections.common.9.0.2.nupkg 94071 BLAKE2B 56f65631834ce2a6db109a212cc8e17babc509e771f34fad7e3a4d575015dadfd1bf71c34e3ddd82e5159fdb26a65f6e0356eec1c740292222a9b30b4ce7eefb SHA512 2a13247dfca40fc262351bc058edddf19be7b0be5482367f83a595bef47dac5905138bdb6d0f0a28aa69596e5da0f45ef3e6db1f3c9e3b6b0c387374b8246968
+DIST microsoft.aspnetcore.signalr.client.9.0.2.nupkg 82171 BLAKE2B 37e60682b81deada618c96f5c05de00475eeb3ccb5f0f7db9a9c5f6c0078354298c2a072bc8324da6240a8589c89651fc38247ea26aa2083daac8b4014aae7d9 SHA512 cf41550c40b92f0d0b9169813c7bb607a9d90389a1bfcef980d03485d705261eb1fa99aa2b1d140dc4cda0e0f17e53f18a96e377da7405bf1d9172a7e9dc35b2
+DIST microsoft.aspnetcore.signalr.client.core.9.0.2.nupkg 407949 BLAKE2B eb86ad4986505870aecbcb3d556371dc3bb5bfae209a50bb9a5429798f6cd4fd4e295f2d7bad1207ba609a05a0401a72824db1d13b95941f09dde2bd388e9e88 SHA512 cefa361ac7e44d76271920b8518aef714cd87863d6c90e572752046160f41b8a3916718d5f1f242893fc7f0082d677113b128e499f4378949f79da5f6fe642a5
+DIST microsoft.aspnetcore.signalr.common.9.0.2.nupkg 123706 BLAKE2B c08e8f92f942640792923784433daad8cd718edee1135d192d54d535a79b1e37f55fff94ccea60726271a79777b2df2f3e9c0024d26775f33aba4976458691e2 SHA512 cf2d0604e090d013b1393c15453a3b8683d24ccdd54072334c7b403cce71804c8d7a204c594c4861168d6da86a2ad39f10c9f48b6b7e745765e9aa2a878fc71d
+DIST microsoft.aspnetcore.signalr.protocols.json.9.0.2.nupkg 114098 BLAKE2B 9985ee489f420b2bd91dfbb017f997c50fbca484096c859b08dbf6c6e6e36d5c8570dded27235146beef95b9d8bffb65e3d3598c2985d13815553a56fb015d88 SHA512 a0704fdfc96525b6ff2b39f3988b87a59c010dfe60a2b0a48544ba451199658288086dfaf4c5594f862e21553c1a9470a6a80852ff4aecfced1eb3b399733e71
+DIST microsoft.aspnetcore.signalr.protocols.messagepack.9.0.2.nupkg 117390 BLAKE2B 72d4fdcd589943537775e015d362885250d48bdff4809da392b45282917a89a141d845655570cfeac1dfb4d16c05eb8b00fd47473c1204425da04d09dbe9cf02 SHA512 d46ed7103956ba20bcf688871c8f5561e0b0fc1e964fcc52245a990ba4aad934ca74bac2fd3159769a2e01a2124473bd4eba3973c34a92ec842e07d86255c096
+DIST microsoft.aspnetcore.signalr.protocols.newtonsoftjson.9.0.2.nupkg 124174 BLAKE2B ec2fa77c097a983bc2402675d3678fe40aa2103d615444726049f0448612ad01485335c54438d503a051ccf0f06724a561b88b4ec6c20efd1ebb492bf30803eb SHA512 415bc2c35f1e16b5c5f6ae08ec67ff0fcdcbbc579427efbffb33545276b0959d77843d22aa480eca5d13a075b59030f0d8d962ee03a8353612f185da8ee8dee0
+DIST microsoft.bcl.asyncinterfaces.9.0.2.nupkg 98031 BLAKE2B 22cd263ce6b715c2f564f6eb52487587c7128ecdcc3ab7b76ad72d0f7a0b844dd78394194060d3b2bf6cf7a3d089cb40a7808aac78465cf7452393d36c6e9f44 SHA512 d03a595bdfb0b55e5504d8aa76cdc96ffb374595e333d9b69344c246b786f6adf6d3904d782240d0da83b6248f179d44ba71690803632befee37343b9e90fe67
+DIST microsoft.bcl.timeprovider.9.0.2.nupkg 103032 BLAKE2B 5391cecd94f1e5fa43682a8d3dac68b512e5817b19684bc911b662f02bb672233cf65f59302fe2e7cae11fd11f51d82bc6ac687bdcf9777f0f0a0a6ff2a17593 SHA512 4a7dd3cbbf7ede56f4cfe4bd78613733e410473d6a8ad785621444abd15ef4cbf8c08078d12bddbce72ad13f7f390d99116bfc06f2bf1255759e02ec7b2c52cb
+DIST microsoft.codeanalysis.bannedapianalyzers.3.3.4.nupkg 637301 BLAKE2B 827a5670efb7256d3db4de82742cb72cf5b0fb28b0f639bfbd7ade7a520e6b1c535eb29cdcc907d3494db7f6ce3ca29c03161c9119eb3b6693853d880629711b SHA512 0b8e5e7aa98142864edd0073512f11c899f9b5aad535012726477cc1189de63252895a829c7ffc5730d09e5df8a6db7ccd9d0c6a17007bc94ca0ca5a36e04042
+DIST microsoft.csharp.4.5.0.nupkg 627579 BLAKE2B 38a3fc28ff01a1af2a368b1a3d6d17b37dc78dc2efcc426a70a70893815ebfbf22a918ad04694e8c123985521e295b4bb93d130d372e731ea35e11a290488a0a SHA512 c9659e4db182cc13a544f583088c624d95b579c66231b6a8d194fdeca28459d061acbbd4a94f11773921cee091433be8c73c6547bbf2b4ee3738e805764c6fea
+DIST microsoft.data.sqlite.core.9.0.2.nupkg 291755 BLAKE2B d26539092e8b60805e21038245fc4c7ab5cdaca27b98ce94c9a6cc4f6c4dab40cf6de34f0ec824b5857d4d421afd5ed17445e2512a330708ea0882a86481fc27 SHA512 55583d4eed25a39ebe1b74955a34e1358f8ffca039fec18d55d8f701d7e218a011715eb296c26961cc6beda798cddf48477de09f9f8774d1aaada604e1dabda0
+DIST microsoft.diagnostics.netcore.client.0.2.61701.nupkg 55078 BLAKE2B 5a6ea1105815d11353b3400f65bee8716a1387f3caafe6a44acd8aa7561f2f4a04a1aead5bb21785d8a988cadee3ef43d9c36402a86775b24d9bf70b047a2de5 SHA512 c3075fc37ca749ea9785b37bb0d4dd99fa37d0d1549fb94f5ad27d8fd114f0091584ac9a095aa2e8eb1738e9a47125891e3906267e25ce92cc1f562b7028c350
+DIST microsoft.diagnostics.runtime.2.0.161401.nupkg 1342678 BLAKE2B 4926898fc6ab1611190a130f35e553ac7a9e6235f82815fafb14771dc0e1640c4d3f166216ba8c86ee8cc305a5503f9bbe7a3b066f8f58b23f3d1f4d6cb22936 SHA512 ee761f2be554068e9318a8fa1db087985064270db46d752f89119ae1ba8abc87ad55b4925930f78fc032356b8bd22a7e6851c71e416c69ab31ee70f80ab24b5c
+DIST microsoft.dotnet.platformabstractions.2.0.3.nupkg 38880 BLAKE2B f1289ea431cfb99f8ead92d777da1133ddcc2cce35308cb6afd0671d4aebd96f99ef0c356d111542dee1e1a9e3bca1b9019de53f721f08faf4bdb89aa9b09d2a SHA512 4a33f381937a429e15edf0ad579810d9b5f8489c051d069cd935d197fccdf99e942caba8980b7f3dc960094f58818b165af2829cdd2f3263fb53bd5d9d782db5
+DIST microsoft.extensions.configuration.abstractions.9.0.2.nupkg 127591 BLAKE2B 802120b53b927bacffc2acd0a7d4f793425dc99bb45bdb7b7371fe95748d7d51d337e2c42c8e83d93c77bea8be9ac5608a2781c250ce6e89aa4dc6d83283edb5 SHA512 b53b6898c556f478f991bf425f2cc8566ee821afce513d1b90e785ae02df3774970d20a1c646d5adfc6e4d68397607d52554d25dc4638dff20e9c01e1ba9d584
+DIST microsoft.extensions.dependencyinjection.6.0.0-rc.1.21451.13.nupkg 198627 BLAKE2B 385ea8935b27604db8602fa2aeca84772f60be864872e2e6138f9c867309793ba43ecfca19c6fb53bbcdabb583ba182d83c84ad77333d45400e9586db08d00b4 SHA512 cd6cf1b59b8c9030a0d892006d8a72cc95f5d6c0427dc7cf9d98dc00e11b83167abe54247e9a10ecaeb16121e66a94cdaaf4ac5e3d35e25c2c71fbfc03966245
+DIST microsoft.extensions.dependencyinjection.9.0.2.nupkg 291675 BLAKE2B 7b137f897e0dc44096ac713b55d00ff0ebe39a9f6e9a44f69f7e08c97c39a4c19d71294dd6693ee0fc314ebc6fa23d05617ac115d26663a3b78e132af7a21d57 SHA512 2beeba3ee1962ebb359ed7342bda5e8e92da3cc32899de0def42531bf4b8c9cab8664edae7432861cb6c8316a22cb08f83b735e0472ee5a737ce2d2312b31982
+DIST microsoft.extensions.dependencyinjection.abstractions.6.0.0-rc.1.21451.13.nupkg 138519 BLAKE2B 5a7cb5f01aeaab67492cbe2ed0ea7ba605040867ce6c60623a4a6804ff3d3d6a0e3c5a36a800d242ae12c66163629c40d824ff30a8aadf13b30ecc5458bba86e SHA512 7e764cec76616ede23c006221e6da4f7591cd037c4c76aa61f8db8828c0dd08474a2f95d3a297ef41cf259553810fd0784ba1148f30a12551a450838449ce614
+DIST microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg 149541 BLAKE2B 0113d06e60abee710275fe7d9addf5297952f8c8759755ecf6c17265d303bd5d2e19a8213d6a023374cd8e8439dd05a8625f48af688fd3bc2abe25fab16e8d59 SHA512 015a392a362c81b35143b19c5da4eac0928cc2f2e13329ab2e945a15a5c9dea077cd66b0c467c75f2dfe6f90c3e0bf2ecdc059d75096bac39b4156a53f997bd2
+DIST microsoft.extensions.dependencyinjection.abstractions.9.0.2.nupkg 241305 BLAKE2B 00b936311408c1f47c41399ec474e2672c97ed379bf9e22898d3a24bd8307f6d3c22863dc3d9b23c658bebcc13774f88474af7f765247a3391aebe77849ed6ee SHA512 7c5decbab569a4fcb4a8bfb8ab9267b985ac18557d0ad2d3ba6dc65a42f0a63dfec20197aa4b1e31ae3724c07a8b003b9f297e6bc5adc30e653e3dbad1782fcf
+DIST microsoft.extensions.dependencymodel.2.0.3.nupkg 95922 BLAKE2B b2c852c6c0493f61aeb52ef02295abe65247589cabdb4d4b4e7c00ada92f907bd6b881c999436c2606a76db7a436607c2f4f59bcb2e583067e3664dc9a798cb8 SHA512 854453a101c1ddfe65ac0cdd0c5b5c995fdbfea83ba3c2dd9e3de253af3fba75c4ce61140b0857364a9e20d6faecbfeb6e89849017f06cbe8b5ae9aff60fcb70
+DIST microsoft.extensions.features.9.0.2.nupkg 92532 BLAKE2B 95acd58b5abca34dd4ffa8195ead96dacf12994441db9ed576cfbd914ebb744d00f4a81feff5b0fbfa71da22464959b2ecc0d349616cff254e122b8086085ecb SHA512 5f451a5cfe4a770a39325aabc073f3a5f4e094b10c1f3369c1bf19592edb8b20ffc04577fbe32648ceabef0ca93a54278c9c161a51ecaafbc052c2170cdac1bc
+DIST microsoft.extensions.logging.9.0.2.nupkg 201002 BLAKE2B 3ebe8b985b54467789c5f2ecdb8a050f51a6ab22ee92f4c1058f836c606ac3855e3f5b86d75bf7e1ad9af570609e6990328c0a773767bc6e7dee108c0d7528c0 SHA512 031c72a9ecaf3f3cb8a987c1ef25d2fdc8fe1e27d00b78cfcd883a348af8aa0ba1031cf9b5cc148160edfb1060f65feee06d68cc3a2415210d767b34fc451747
+DIST microsoft.extensions.logging.abstractions.9.0.2.nupkg 777792 BLAKE2B 7658ca635417dd920c9492bac55fddfbb0d2c7488e9b5e086d8cb123909e84b1572458caca5ad47e715fd6895985b8a8d44fdb872c26eb0edeeec2f11e8ecd76 SHA512 33a9d77bcf8c3194470e07eb42218c1e5800f8afb70f99241e46cf52e418b15d6417b0f1d21dd0e8d05eabc7e093eaf8d222e88ab90f72150702d1ac7aff4f3c
+DIST microsoft.extensions.objectpool.5.0.11.nupkg 71100 BLAKE2B a9fe9211e333ca7b2be52faee494e810ea88c6c7ff1fcba7f0266e1713804e81000eff17c709954806724cca8c4641ecfa695b8df7ce21884c2cbb05e59db8aa SHA512 1c1bdc3b7124e0dd33e20c285d001177a22b1b64a80517d9eb09d502f443f21a46012f7b003a10f0344498448074f8833401c35122267ed928cb7a24727f1150
+DIST microsoft.extensions.options.6.0.0.nupkg 140038 BLAKE2B 16df4c4c02eaf0cb07515ce2e82ef40ad7da8b4f2202f207c30bb5b1fd5e84d2e1613e17a940391a88e61083fce3899d187af9c4d66b9a95b4788defffc8c689 SHA512 3c34452bac02193264b0563654ba5282a74b03ede2b675ad25fa85ebd915bdcca857158153eb4a4a024065eb4e9d7bc1ebbd23485493cd895c4d049aba4a5dd2
+DIST microsoft.extensions.options.9.0.2.nupkg 454009 BLAKE2B 813dfe8f486c8bad672aa3fe89f0f12274fa09d005358cd7dd55b77ecfb5784c29d198c67af33357857497f4db61b667f3c7ea0cfba01a03b98671285b98baf4 SHA512 759e02c984870db8e460a5ace5d8fa998f2cfb3e4cd51c76f2bea656a678bbf6c25fde0c7b5a98c6f75d5d4f068824ecaebf50410695a1cf865f40a6cb695c95
+DIST microsoft.extensions.primitives.6.0.0.nupkg 144250 BLAKE2B 690d4b002a62d241d98968a16ae61ba731276eb08c234ce9d56bdf525ce952232b969bbfd1153361061ac5a5cb12acb74610fe050b6f3fa9a06bbd0b4e0bdcce SHA512 0b2697f35557aeff0784b10ae6a4eafd7601bf706121ed6584a61879ec6e494514ec7a3e0da0aa6baa99f3f716f69030ec7c4c82f657c8dfdbacb637bac4547f
+DIST microsoft.extensions.primitives.9.0.2.nupkg 176128 BLAKE2B e4aa004e03d6952863746095b76ab8462358c828ded1d033a64709871ecc3c4632879b6c93f60ed83700c38ed70197263e8878763d6a121855ffce862c06bd8f SHA512 752b91748314f7d7e97c7e724eb0e4ebd8c9e5b7f7ad94a5958c6ee4a3bf66ec4ab28343f8d993190001197fff6d20e721707d4efa154756f8fcfc6dc8141f87
+DIST microsoft.net.stringtools.17.11.4.nupkg 180598 BLAKE2B 9e93cbd320c6bffa9fbadf83f3540d0a5e2aa85117a85c0a88e9ffe88bb560d725613e62ca918fda1f70e4265d0741d43be39b33e8592d0398f8db7a228ab0f4 SHA512 5b57e6df5a0e5b0b2fd5e6c06da0a5061e1f3612546e744f6786006ea286f322c9f7c9651331d79db45a40a7ab22e8fdb71ce22a7758b66fbf252135a4b99892
+DIST microsoft.netcore.platforms.1.0.1.nupkg 17876 BLAKE2B 13250226ef4869ad62b8acbe8b8f791f9bca1932562cb7a7e8162c3fa502c02200673cc9839f79953cb2d3a75f64f92d43ed1dcd9081732e4917197483188163 SHA512 5f3622dafd8fe8f3406c7a7ee506a7363c9955b28819ae1f2b067c38eae7ab6e620eb63442929b967c94fc511e47a2b7547ab62b6f1aafe37daa222499c9bb19
+DIST microsoft.netcore.platforms.1.1.0.nupkg 17960 BLAKE2B 6a9fa22d75f5a1c65746dd71a63c3d4e37c393e99c23007c10f5ecce248a04863bf26e7562c7751177a6985eaac266c29cc6a5443a4a853e773f88994ad2a3fd SHA512 6bf892c274596fe2c7164e3d8503b24e187f64d0b7bec6d9b05eb95f04086fceb7a85ea6b2685d42dc465c52f6f0e6f636c0b3fddac48f6f0125dfd83e92d106
+DIST microsoft.netcore.platforms.2.0.0.nupkg 19181 BLAKE2B c784d2315e721a847facc7ce095baf628fe0e0afc626ada488a246a6b49f0f990f9ed3c4a9ff05654d8d8fe05bf80860970a5d3c999a03a63773e48f065bdb89 SHA512 0827f83639833a88ac7bb1408a3d953ee1c880a2acbbaf7abe44f084e90f5507cbb13981d962c57d0e3278ee5476d93c143eb7e9404cc7a63d7a8bf324a4fbe8
+DIST microsoft.netcore.platforms.5.0.0.nupkg 39826 BLAKE2B a122f0d2afb77455c005740fe5096c055f72eb658b0d1f10e6a17f9d07c3bf91ad0010ff472ee1d05b84bfbb75c9de3c46d2a2d33fdcaa245d64d6c3a956f233 SHA512 8493fe11648c7ecc20b6530490d30fd63744961345c0501a7a10b11046661da09b783ddceb8b3208ae52a72a8a94cafdce8dc1bd6073c32081e30d0e7407f174
+DIST microsoft.netcore.targets.1.0.1.nupkg 18189 BLAKE2B d43a064d4c6f836be5164708ff0401913b32fc3340cad7c8fd08f421ea553805ac150a134a0d60a55d41eec124514a5e5197eebcc85aa6595cc6b91e33025d61 SHA512 6ed8e75f945a18651066fe9ee31cf6c8257a5974340fe4d262438903c4959a479f4a515a4d1389e6d3d3ab34f09a3c7bc2009aada2e8a7f697b6655a82d3bfc9
+DIST microsoft.netcore.targets.1.1.0.nupkg 18162 BLAKE2B 419d19e0da934ab4b9db75dd66cc22b83a003f34e93cf7a92feccf4f32d3d695e18b826b1aba13073dd4ec53aa7905a67346921d1055516647ddcde0d79009f1 SHA512 1ef033a68688aab9997ec1c0378acb1638b4afb618e533fcaf749d93389737ba94f4a0a94481becdf701c7e988ae2fe390136a8eae225887ee60db45063490fe
+DIST microsoft.toolkit.highperformance.7.1.2.nupkg 702514 BLAKE2B beb1b809081f4ae7b488ef896590c01285166e6eeb87f6444e59974cfa1f9c20ad71222067a0a60d996d65c17b604747adc97c4b87f54283f8cc069124c232bc SHA512 613214ca320e1af4a3c4c33f1255d7b5e3d9918111bec4edf6644fd044c116a941d7f3db686537d8516a22115b953bef0f1be51ea52cd4d01f978c0414850211
+DIST microsoft.win32.primitives.4.3.0.nupkg 63333 BLAKE2B 132ec29940d4b716110980c4f9a06ba15183d29de638379d09998124605165e51652b2727e3892b57dbc7cacfdc71f9e1b59c9dd5463a524657351f5385d896d SHA512 366f07a79d72f6d61c2b7c43eaa938dd68dfb6b83599d1f6e02089b136fa82bec74b6d54d6e03e08a3c612d51c5596e3535cbc2b29f39b97a827b3e7c79826f0
+DIST microsoft.win32.registry.4.5.0.nupkg 350921 BLAKE2B 05e3d715a76486275ba1a00beff693894fd8d2bf6ff67f2f3b42332d299eecf0ea73bad2a17b97061cf89bb2e5dbe503288f649e4fb317539a1f7d84199044f8 SHA512 2ca99fd058a083064184da33d12f72a5c43412151d426c309e2284a5df4b722b2f26dc72616ab6452a24ed81693839b756861d47eea27d60d7db7ff6749ab664
+DIST microsoft.win32.registry.5.0.0.nupkg 354731 BLAKE2B 3e98fbda73990aa8d4a8fe584d317ae59804c3ac40fb42194e332826b5be57ab78e563111dd3278a8099b9cd890d4e37f1bb74e6ec4a443edf7c783ea0cceb0b SHA512 471e66567ce59cc86475aece7815d05261264ce114e0c1688ba2551dd51494901fa72dd7a8f74f8e8f0f3dba74af8595f177552f3c06abb4bfce76692197076e
+DIST mongodb.bson.2.21.0.nupkg 853033 BLAKE2B e8219f6dd8ce2d97fac2ed98a87ad0302524cb6f9bbcfb7a1d8154673ac09e7f42e1e0d1c9dd776e7b0196e427b7169a83df1cc553fbbd12591d9843609d019d SHA512 69989c2811405e60b4e6cb5b9c8882714ccfc2915cc486206c8cac02c334bfb707f57d6026750259c9d2f3316dcaf410ea39f7e45cec982500d3e3133d0dc918
+DIST nativelibraryloader.1.0.13.nupkg 21157 BLAKE2B d0af8088d286783bbb1a6856a227ac091da4de1b57f455bea10c63f7144528340f961d350f199056f905d556fc1c9fbab437dffae0e8bbafb195893f03a03c3c SHA512 17236e5a78c52018cd51a40cfa02c006b4630abf4f7c2f34dd6e63fc29f1d10ad7566081c98deaeae77ac9be22578e1dd1f4e81bb4084bcd18ead8a4f30c01e4
+DIST netstandard.library.1.6.1.nupkg 17360 BLAKE2B 02badd3473451f83997f0b66d05f1541c741e65b9127b8b27ab391260df7939f235eb6648b11c7c11cc5400489ddf1cd26820b7bdf6fd9f1d8f0dfdfeef96acc SHA512 0972dc2dbb4925e896f62bce2e59d4e48639320ee38ad3016dcd485fbd6936a0ed08073ad5eef2a612dff05dfc390f3930fff9e79d87a06070eeb8128277cbd0
+DIST netstandard.library.2.0.0.nupkg 3143842 BLAKE2B 7e3fc865e7893fb531b21e2ca791b788af01481316e49a79c4676050c2b8ad413fd8a4ef9890557582ec8b9741c8aa01b080b8d2caa16e02bfff2a7b38777989 SHA512 e3d64072b9cd9f9e86209c06a22688ecda7070427c9a35327d2a9560824c0e1381ccf7bc1d21d2ef8b301761f4bfc7f38fba712df7188d2f4fe4f748aac4d0c7
+DIST newtonsoft.json.13.0.1.nupkg 2065787 BLAKE2B 000c38ce26a2a00bb25a9c1d6fb069ada521ff089bb624a5c1255b25767c10616cc51821524e7bc3d8b45eb8f8ee54c97454db1db9ae5e5c78eb6300a99f979d SHA512 83731b662eaf05379a23f8446ef47bbc111349dd4358b7bd8b51383fe9cf637e2fe62f78cea52a0d7bdd582dc6fbbb5837d4a7b1d53dcf37a0ae7473e21ee7b1
+DIST newtonsoft.json.13.0.3.nupkg 2441966 BLAKE2B 0c83cd81b9eb647fd9106c5b8b7af4ff6b35eae4fa24712f16cef1db070857b072b9e40a52ed006a82125c860dc48b89ac54224baa24bfdedfa573183e19d169 SHA512 99b252bc77d1c5f5f7b51fd4ea7d5653e9961d7b3061cf9207f8643a9c7cc9965eebc84d6467f2989bb4723b1a244915cc232a78f894e8b748ca882a7c89fb92
+DIST nuget.versioning.6.14.0.nupkg 144682 BLAKE2B ad39a68277e6832cb718ae0f790ca8f6bab8e08c0a3ef68d4e6772d4468419178cdabfd771b0bebe585c324c6a6aac9dd948adab7bf28d4f1e3ef8752819e87e SHA512 4e5d3ec8a7b1563b76422a6f91c5b86c7969b9e7867f0ef958d115aa35995dd36ee86b94cd74f94043427ff68789ce9fcd597b9103e6cefb3ef228733172dad1
+DIST nunit.3.14.0.nupkg 1318234 BLAKE2B 4891e0c5bd367bddf1318fb4a1825b7833d46dfab5b5ecded69812a247acdf0e057b8ff0f27236c6ad5c655370bb9867547d4a44475a30aab07b98277f3513c9 SHA512 5d711925b947c9e4a9f53f6b5d769bc4a702efd72bcff6b4fe4fe51a724544a5266d02317fdb5fe5e312f924cebe31549e5eeb2c5781c9c2f35c3e4e31ae3484
+DIST opentabletdriver.0.6.5.1.nupkg 44859 BLAKE2B b3ba392d92fda2261f7f2c856b44c64f0caa336de5ef71bc765e2d5627022edb2ee14a1c809e9b98eef10ba4c6191c8388996dccaa6651032c89a2cc0a608858 SHA512 1b958d8ccd3faf661b0cea93b10a93144a778a9774353451c804bcf655c53faf5bf1169bc93d67a02ab824baef7c7f89a29cb6fa4e76e7a3824c185d6b42ece9
+DIST opentabletdriver.configurations.0.6.5.1.nupkg 54994 BLAKE2B ae964a1d0f41b383042e0bf5a7e829de116d7d4af4e0ddb7461ef9330ed82f9210ebb8230179b7fb9a5bbf18ea61fd99fff1646de8c38a221a30066f0319ff88 SHA512 a19507e4366e7ed2ec32f49068abe4bf0c487f84000b8b4c70d8659bb3331dada2a1219ef1c791c2ec386bb7fe37eaf238515ce42c118ed356d1eff8337c7774
+DIST opentabletdriver.native.0.6.5.1.nupkg 47023 BLAKE2B adc842e79456ce9eec02cce6b29c82e673e9f7db15ba92353b7e57b4606a6cd09e6090067e6647e66b2906d79436e3c509aeb3edc48afe3f202cb1c51e598d24 SHA512 2b473ef1a6a8b2f845144e2071173e70d97ca4bb8ee59516c2cd47f2b8d4961c2ed6dc09c08c5d69fbe56968c98eac0295047c01262dc6216b73a26bc534f997
+DIST opentabletdriver.plugin.0.6.5.1.nupkg 39242 BLAKE2B 4bdf02945acc51d952bcb4bb3e9d42618842d10ff62d7db78d5015239b390fedc96466980a0f3c12f373fae619662535f9763eb57ecc643c4841d6e41c73d5cd SHA512 9493eae312295e1944975f1fb1810418f2a460262980129a0d386056dc604b86178cb2e54dff7124447f7eca62b9c54388c394e77c533b083cc90ef3ec3e7063
+DIST osu-lazer-2025.710.0.gh.tar.gz 20720008 BLAKE2B 61c2f876b18fd5bfbb283e2ea2fef7d571ae894975c17b2f0543dd63a3d56a0273aa121be0eab73357529d8322c4737efbed9bb560273baa868cbc3e304b3a57 SHA512 1bc8f467c9718da3cfe5f82b704ad5667224467f8fb46b1f369fb86a0fed99df1ad6607dc6167e7cd5a85b094b66415abb07663b75253220717b7b15a39e4c61
+DIST polysharp.1.10.0.nupkg 87007 BLAKE2B e373583de452f1e29e2e658d869e075fdb384b8e49e89544abd9b1a921daea79625788676f661642a7357ce2858809690ffc6e35d0130920b9ea85fdf6bcf3f5 SHA512 12217bca03ef305a7032047fa9cc3d7dc8a11b678af3c0b7cf4a573b7764a423b9878949feff3761e2b9cb1d4ea15853a89e9459942b5a8544da8e041e7a1188
+DIST ppy.localisationanalyser.2024.802.0.nupkg 44574 BLAKE2B ec6f1ec5d8c92ca070d0e3b537ad186ea95c95cffbd21beea981900c5a34e4f6d3a48b34d8ec9161a247c803202d666b7df25fc19a2f13278fb0d758a09bb69f SHA512 41b9ecbd94e16de0974da2ab85a89ee58bf70190b6149eb8f2dff08cfb8ef746329471c97346d659728d08aba96c73c4fc5dacb741c6dd7855c943f2327ef71a
+DIST ppy.managedbass.2022.1216.0.nupkg 422053 BLAKE2B b615d9b24f7b40ced1ad27174181ea2c750d49171bd6a0ad689a6c438bbdea585db6068e0e9c8adedf0b9e1daf7897e49bc785f110031dc20006f697a14dc5bd SHA512 c4245e3143a75cc1e00f32da4a6252b9fe64dacbfef7bd8a107746b73301a993723af299c292ca28579955e3e425adf7eaffbe3866d7c10b270c63688b82d6e7
+DIST ppy.managedbass.fx.2022.1216.0.nupkg 45721 BLAKE2B 3d9d11cba7dacaa89b71aea386a5a2b5cb6d6b595ef953706faca272f2a9c7e112f5a847951e1037345b07d083c78a0d29d17e7763dce54e2702cdc054ab85f8 SHA512 1a4b704bd536384f1b3575cde15c0d0b92bcfc73c64e7be432a775658411d8fac60be134057ada0fbae12337fb5e01daf802706f6dc6a00a506905096595fec3
+DIST ppy.managedbass.mix.2022.1216.0.nupkg 44531 BLAKE2B 271bf75a79deae367c14e341727dc183e8353e9e3198b955d221fd247497aa7d48412c05d5ba78880fb66155428a80361113ab0df6739154d74e6c0874a1632d SHA512 b55cd9a613cee8bbc3f81d5b11ec1ed228bbb03bb4ffd6d48fa109019a65c20aec4ffd6e3025db74d430d7d0a77704f54105a192840d1bc33e78c5dafcca6698
+DIST ppy.managedbass.wasapi.2022.1216.0.nupkg 43664 BLAKE2B e925d9ced6e8c59c6a584a2fd2a490819c25663becb6d8ac60323f83a8c40724a6bf6a4d2dd4cbefbb047057824e7837ae4915dacffee7643fb93c7cfa4fa8c9 SHA512 972da5c7b75b86418736d10fce9a944446ba9fcfb30ee3eb489d41291b2fed7e2dd9736f2db32b9802de74a9bbd2755770dc7c37d1beaef0ce8e05e73c752053
+DIST ppy.osu.framework.2025.710.0.nupkg 2670975 BLAKE2B 49c6d8bd9b52dcd4dddc9b3fbb1998e9290ac89bd4adf4bf39e3b28c5e4f0c406a829769aa23af4ffe68fc27de5b0d033ee1f7429bc6483cf0432c77a224963d SHA512 8fe2bf683ba0c7ce8217ee217967d0a569013f930b318f6c03e795d26a87de205ce2f6ecd8fe435fec13ce27a1828d219d8ee55f77a428a38475ab3ee2959500
+DIST ppy.osu.framework.nativelibs.2024.809.1-nativelibs.nupkg 15390094 BLAKE2B 899ddac21ce14d59fb5fd924a8240a100c129192c612772e6ab98928960c9fcf8a0548fb2f9a2e86c3c8a37849eea91577e563977afae09b8c0889f3e028a5fd SHA512 b5a6558fa942bb09070cee8f877ea0b304f659ad8d06483551e28bdd5f7e85e42ffa606e2c8eb43fca8bf3a004b61bda81d77286140c21eda389e869a20ee378
+DIST ppy.osu.framework.sourcegeneration.2024.1128.0.nupkg 57800 BLAKE2B 48c6ee0067a50349ce730dbc9316e8fa98233ec66127626059bfc032385cd3e18ca9bb2fe69558bbcaf62f3b77f026d51c5a13bbb3727177a57d1fc9c730e551 SHA512 afc5490b44fb964ed06b95e421f93283eada206a76ce0bd325c63ac4cb8e2ae7086b726eb62c9f2cc5a1539d9a434a25308de4d66dd116419bf3f2f2a568aa96
+DIST ppy.osu.game.resources.2025.708.0.nupkg 94168452 BLAKE2B d1b22b01cb5dc24d0a3340bbc54b0836624b513e044f77145b521a965fb5fc5a09a7b2d7b99374c5cbc117c4ec8777ab752fea1d9d1ce7d9cf5e5be1e6aff68a SHA512 ba47fc09898ee0b85a998115c00360a3eb2769badd150e056a3fa41266400f67a3e4ac316cbe2572c520bf219f1c81d8c55595f2d7d7290a899f3aeca474d183
+DIST ppy.osutk.ns20.1.0.211.nupkg 1439892 BLAKE2B 2e8078af58005af01670368873e062afb5a67b19049c214c76aad227463537fce9fd2b347f453d051c802203e2e091b1df231cb271286512c11895d6430bedc1 SHA512 613fa5cda6437bd1ecf369f3a7090d9f250b944e50d6151f0a8a85e7a47d9b650901510adf8e9629e17d1e5147a0430ce09053f10467667fd740ec31fc99534d
+DIST ppy.sdl2-cs.1.0.741-alpha.nupkg 6639058 BLAKE2B 3741ed016a1b28560d6c3ad3ba6dbae7548617d18a148a3ca81a0ce592a2231d5765d54499f0bc8cfbbeb44d790ff1cee25e990c079fa17b26026ea9d38635c7 SHA512 ab7306ef58ca3098f0d57c1a98caaa9d9f1fb7f0c4650bee6f03dd7e322a279dc99c88616bfab0b8be1e42ac6d3d55a4232410fbb8c33b99a330e21a32d81a2a
+DIST ppy.sdl3-cs.2025.220.0.nupkg 14912496 BLAKE2B 7eb4b9fe42d18d778ca1546466640c6a6a3449f154eda5450f188e064ab290fd881358af7c71b569dc3e52f6c5d48064b596113c72afc3a9c43f56198631fee2 SHA512 f6132bd1ba060645d47748b512d19467231a4c1811d42093aa1e56172be83e45ec1dac5d0c2fe0ecb7bf8e92c2af912f27915df2123c235abf5d866e1a40a656
+DIST ppy.veldrid.4.9.62-gca0239da6b.nupkg 327138 BLAKE2B 9b925e9f8232d7ababfc9d66a2a2f2a9747712d14d75b60e2e1d32caa89c5cc7f487eaa158bc559b2ce86268c3896c47a790ea656af1a2242fbeea5f86ea4caf SHA512 cab2414d3ffab6f085da5dae8b9f2e5760433f642733e20334ef970f2bef93e9715c9c526ed1706d474f80c09822014a0bd650812c89092957f7256d5d1ec4a9
+DIST ppy.veldrid.metalbindings.4.9.62-gca0239da6b.nupkg 63888 BLAKE2B 6afbcd57e9dbae67ab754ad701bf77e1c8a7f38c2d5de4bec3188a93369617aa9a1680c913e59847fa1b632dabc7953a673ed20fc674980285479f1cd27812f3 SHA512 c375b883b33742341a98cc7dc3f8ef8280eb5e3e5ba1d865f107178332624f022b59f0c59abf1cef350a8ec36d8f57c5e7a3db246a4ea7740d66647e8330e537
+DIST ppy.veldrid.openglbindings.4.9.62-gca0239da6b.nupkg 70610 BLAKE2B 5b02d4e1ca0a6319b5df0ace08858677d14b2ce82e63781e19ba33505f15bfe89484d4f463f0268a1b6f6e6d995ec6061a5b05253510e76ac7c4f1cf5dbfa25c SHA512 30697a788aee444ebfcd3b47ce25e6aa2d446075549fb3fc7fa1e3d9ed71a178007d562b824fa9d0fd491500e4b6541c8691cfc264d764512e872cfed869c3d4
+DIST ppy.veldrid.spirv.1.0.15-gb66ebf81d2.nupkg 49174427 BLAKE2B 1c771afcfcc368802a2cf91bf036ad7dc59876840df7e0ccecebc03363fb99f286aed66a215d9bd74ca1626b069ae545b2f515e5c19fb23c71a7e0ed9ca9ca57 SHA512 2c26b71cb1e74a3043728aee0e1fe3d96c8e651f00049f47c3a9990b66551be9cb7d9271752a365213228e44513d2d0845119444e196df4625d3c1747c01000a
+DIST ppy.vk.1.0.26.nupkg 224037 BLAKE2B d20e2664469ffbf6d48ffd3f1da744d757c7bf6071842a50814d22f512764b8e7461d7f038fd3b8f5b28726d5464fd18e8be1f7de97753cfc57c6805c848e774 SHA512 e649b1a8156dd4990326657376090d05893c071f8abd9624f418f1740415f1b3a7b2a636e53e672499cc3b2f13a52adb1da4cabd96f1594ec3c9281d04ec5f46
+DIST realm.20.1.0.nupkg 53540733 BLAKE2B cd418d635225715c1c7a20c4c43461933627d58af9ca295d4fc8be6dc42d8fd1baf911b5d8890c0dc9f5ceee87741ff451444092a500d2a372aef3271bf3012e SHA512 300c16c92bd3c1293706f6e06251e305a7ba849e478795203459b78e2b3506b842ab99741b87a223771a74d4010116522a4f32109418014f30d646dce3b3a470
+DIST remotion.linq.2.2.0.nupkg 565124 BLAKE2B 4562ede9c7a06ac5f76a82334b571ad0b1629b3c0cca81f5a9b250009a551792041e71d2b6a4261d3529c4f52c98525a77b176b13c3d99d2dc7415798f94c6cf SHA512 b700c01fc7405d70807f7b11bf54dff78bbae9e107be053be617e7d679f6bf87d25970f9d17a0338093c5a94ab6d588db8c901e243751259ce1a6d5ce75f481e
+DIST runtime.any.system.collections.4.3.0.nupkg 107990 BLAKE2B 802e2ae919a4834150d825ac086d8f47e2185e31b60b45f3dbe5f63b1d714953d9faaa7d8fe4cc25a1ea8495c4f8fd925bb198eea0b67e594a8558238b18196c SHA512 9f8833176c139b71a58694ae401c5aec209a63227be07c7ab559bef772082bd1f6cc38ba2949cb1c8e5c5514ad9f4ff51859838dc2f28191f8bb7ae611a50239
+DIST runtime.any.system.diagnostics.tools.4.3.0.nupkg 43707 BLAKE2B 33d1c57eb4e50c06488da02ab2bb1b8dba9948026053e662986af05b74045c014e76815edbb588f10d6a904de22e4c50177f31f3fac36d159b9af361a4cb2b62 SHA512 bd257401e179d4b836a4a2f7236a0e303ae997d2453c946bf272036620a0b14e85e5f42c229332930a954655ab4cae359d191a3e3d9746df09535a651367764c
+DIST runtime.any.system.diagnostics.tracing.4.3.0.nupkg 49844 BLAKE2B e35998e1369bacc9fa90f74825e021c62b9c671ac9b7cfad4e9b455656bd40e968f348ba8943ed670c74c22bddb1c94ccf5058885233607e3c73a5c7d2a56688 SHA512 0b480d21e23c38965222be7fa1e1a0c7e444cebdf400d1db8d3ac609f893b82d78c5d8b271da61808b7b179dd6466a0090bd807fc2d35020f93a00f0213bb436
+DIST runtime.any.system.globalization.4.3.0.nupkg 43718 BLAKE2B d6f90f72f080afc0dbaaf487e2966d2569ec8dd51d573ba2afd1d705cc8c1f5d47ea77beb63ffe4fbc75dd6aae869a9b52e9e293b737ab32321420f635113d80 SHA512 3aac1a076212fae7d0ac81d2b5fdf216b064a1d890577307f89c9a4984c239838c3bdfac4dea052027de090704839319231eef49ce542f3e8bb2f85ba23d28dc
+DIST runtime.any.system.globalization.calendars.4.3.0.nupkg 43456 BLAKE2B 6453e347e796d426fe00afa28c182e53d764e58e52a21eea8d71661029608de957bcc9a6d9f073f2897d4b5d601f1e056a8d2334fd7cd708461148549454fbc9 SHA512 19053b502b7160af6f6b0bc5b334a8d124f77f6b4418993294fb485d0bb318cd6e97cdbda9bf8c9927366288413cad7209c9d8156a5425a6320c453a8804fb3d
+DIST runtime.any.system.io.4.3.0.nupkg 54553 BLAKE2B 0066bcf13ad4f769cced6704e3d5bce057138e35650699df8c84fb67aad1dd0f2b9ac62eec023fd1b2845e3e2038d1a56602e0cbe59795219b34b9b47d0aa880 SHA512 7e0d4a238322d434a19afc79ea988d3727c1687fdd5bcd1c4c39cb6201073caabb924cc201c70545d60acf8b94cde8b783d0c268743e040c357d100677e4c5ed
+DIST runtime.any.system.reflection.4.3.0.nupkg 43499 BLAKE2B dbfed54ebbe3c7814773dc60e586bc6442024c4565dc7579c2a3dea9ecb7fa6eb554bb7d8da7d2603fb455d38caffab9ce553e6cb82f8c6202700e2a3c80d6db SHA512 293d3dd8be87e1c5cd76ece4ed64ebb5ae6b50be95a39bee401eeed64355e34641905f8c14392fbc3acf8609f5d6fca731f39ce7607962eb5951f09516480015
+DIST runtime.any.system.reflection.extensions.4.3.0.nupkg 44123 BLAKE2B 77dd6ebec2090e9902b5fb9a0505d07f953baedf9ae30bb823f18867b0e4096af08175203efc2205a5439d53eb264b085615978c782969ac8e051b5c7ac8b516 SHA512 8de7a4c53fc0324e766bfec360342ee4a4b99a5975a9d61faab0a715ef71ff97aa83383a5a8affb354c02a4e2fbbb91e1b4ae6b282d2880108cb489f06aba500
+DIST runtime.any.system.reflection.primitives.4.3.0.nupkg 43106 BLAKE2B 9be774d083220f790c2710bf0add5f186c30da37cdab7abe6fd084e8b3e43926350cbde084ddbab58295b9bdfff34f63de6f24d72c9333c8f0dc0fd6b04b9ddb SHA512 a2f374276290ad9b799d3e49cd8fe7839c07b52f22894bcd77b9470841564319fb2ebbd7503e76feef42db4e8a362af8648cf0842a1cb0b5d9a60a58ef8b205e
+DIST runtime.any.system.resources.resourcemanager.4.3.0.nupkg 42939 BLAKE2B f0a3df9518b008cdfa62fa7b7aae3d419bdd8f77e7b400cd06f03bfd20d2ac7abf570b26c63ab32329cb47f7b9763db786e4e397ad958dd81e55d9ee8926bcd0 SHA512 39fab03cbade2b3848d62e137313530c06b37216e24cd58c70ed6ae54bdaf9d9613a3b410375ee167c87ff935a558b1f8766ee016b8b244fde99c38fcf42a49b
+DIST runtime.any.system.runtime.4.3.0.nupkg 55302 BLAKE2B 2de44260ec821b818b3c0cb3517be7ade5c16f29e0ced086460dfabc29479743947134214c037df83b9646724cad004f55c2f518cd4bc2079853f2f6e1cd70fe SHA512 bfee3c68312296860e5459af5e770c2e9fcd4ac134361fd569a9ce1e6574b9ae3978aad403f89639a4b5bac8ee5bb0ee1b8edb819e9a60f13ca5bd1812889bbd
+DIST runtime.any.system.runtime.handles.4.3.0.nupkg 30945 BLAKE2B 27f615ec387f75416d05d0d545f1f90bda9cd7ace1e7370cf935735ae7e6ecec9c8d54b0b267aa42c041981b7d4ff22603f8a12e18290e0f354e7656f4271d81 SHA512 95cdae2867a2182535bd0f4d01dc3eff70319dff044b070ab7791fa2bf8688a69b00a279ed569b7f0c5f3e26bf705303dc344ecf7d1ea014c579436d8e7b7389
+DIST runtime.any.system.runtime.interopservices.4.3.0.nupkg 71496 BLAKE2B 56aea647e26b0b6fe2e8786732100a20b66dcda904df76d0463c5cd048d842e9899be7482f819bd8d4a62dd6b8d9f2f8289efa99ef6c76d2cbfd0fabe6c5b36b SHA512 70eeb2469726d092bb95568e51ba5cfdd1cc07a9e65077e2b6dd5b7c8b164d4b45c749ef4a52f45928f63a27e8accdb83b861ea73c9ad3d42dc38e6afdbd0e8c
+DIST runtime.any.system.text.encoding.4.3.0.nupkg 43396 BLAKE2B 99ea1ca2da0e85683e240129d4adba28eee337d0a3ca937b61123d775255f738b27f00db4b08e1fa9242bf29ad916828552639ab3b55eea05e0f307bdb1bb58b SHA512 cbe6df98acd50e2251d3343620c408af56cfe7c1979277a8ec65b5eef093e93ed93c05980902a7152ed83302d5a625d7058921baa7f446c5e67194fa4c06f20a
+DIST runtime.any.system.text.encoding.extensions.4.3.0.nupkg 43296 BLAKE2B eb16dfc6e2fafe299fe49dcc5cd1d2d18180d18caee2b0e65fe5c75b6b4206260e18f4e2bf509fe1d2dc3366541bb38de219929db6e7e12f08b64b3a5d3abac3 SHA512 656aa8bd9d7e19534964ac7b8405615f00359779e322d4cfe1f18c132fec4a4f52c5588bfe61cec9966a9142a73315f5d2b9e5a7c524b418364f0322b20961c3
+DIST runtime.any.system.threading.tasks.4.3.0.nupkg 47940 BLAKE2B 950e0a58dcda7dcb15167d028380ae4ba1ac576b141d95ba8eda08e0d346a9e0452e64ceff1169959eb9f4435231466be209fd6e9d17f8dae05254443f0ffe1e SHA512 5f37a56f5d6c7fc198c7ef76b822b85284f9d7d1c06583c26a698793ade65da1b273d5fb03c20be1eb91a9c835f7122ad2775f4e51dffb2758fabac2a30f8c23
+DIST runtime.any.system.threading.timer.4.3.0.nupkg 43098 BLAKE2B ed9d0f7aa58934bb099bc750d7d433cf82a3b54369143ae4e3b27178213ae3d3c79c17463b2a4a2f1dc2e55a9130b7a8349c0832549a404b82c2b08b9016e9ce SHA512 c0a1fc3661b4e21f329f88a8d2cbf7152698427778add9f850476fc9abe7cdf9b86df79362d6df025f7e15d53f5eb7937d8ac49bdef13fd9eca973a284929fcf
+DIST runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 44390 BLAKE2B 60483871cb9b81514f5b63f1f9ab9cf1c7a6ddb1d33a2a65608b47a2cf8cc3b7eee8e087250a1c49eb2893f36f29410e897387346fa4c3fc5c71e41046f13673 SHA512 b2cf809fe50c4b46bd6f2372265cd3059622550123afceb5dbb2410906c07a7f47bae4273584d29253d5e7a63a17c68c7ba0434608bbc8fd4d00e479b2f128ff
+DIST runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 44424 BLAKE2B 03ee263658048f24116b9f1ba16441bc197c8868113a457aec34ef84574ae3e73557bc6b144fa1f53135ffc201cd23fc86f8d76032e77576f2a69ee7ad4320f0 SHA512 8f071552ee042f0cba39b1ba0a1205cf73de447d662995bae68f857a5946f7d154c029a79e37469081675687873c8bf2b9efe57f5cbd660c366b1ca51823f7f2
+DIST runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 42827 BLAKE2B d2b79a9b83e0bdf569a5c333ba4f86ccb1d5b532d2e1cff3ba7bb597688ac78268a515be4c35a025c66727070100634a4bc946e02ae7b93061be968fab241bed SHA512 fd8e32d7d3e9a465202e391b0ab8b95e212900879bc4d8ac22954fd2d0f98fa579e9d25f88885ac2a4bf1eba755db940f8d131250a3ffec34dbe77431a379cab
+DIST runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 42852 BLAKE2B 9c98b0726b226f275e29eefc0058f5f5616f9e2786596d5aa213421366e93f7c790583090ef719249ea3aef835b8724275667556fac3bb9935a46769d0e1bf2b SHA512 a135ca0f4f5a49319b5a52b7f4338f8a5fc4387edf26f29e6cbf63a3c3a37b2b5c51c9caf562ec41e470fba281060362465bc56915be782d6c75778aa6195e46
+DIST runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 42833 BLAKE2B be9197f3008b3dda19a45e5b5df2ce3604f58a98045a122aa77f082708de67ad953fba761c39ec419e945155ad74d5800638feb581e5d84424ba104f32541640 SHA512 4afac5cc1734330a6103880e790d639e825bfb1b34dbd42083762c47db5e5dab6c03efd16049ac03861d7d87746caed09c7534241d51b7341d47ba6af7e8dd31
+DIST runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 42843 BLAKE2B 22e270cc59cf6a4bbc857569499baab7ace2596db57cba867111bb46a609e1c98461e7710f964ea9a5886a9b416b6ac271e2b045ef470ed644d757135162853f SHA512 2f24e2cba88a96bb23848e1404878e4478a65642387b7b76aa4007587fe7c4d8208cbde53d3ed65f8d0d71cd688bfc16be66dc5f7bcf84c7b2ccf1b3c505b0b4
+DIST runtime.native.system.4.0.0.nupkg 16852 BLAKE2B 6914c7090188cc27789c962931875892dde24e1fc43080935d337840164d361e4410d8228c576a3eb1c0eacb82603f2015c05b39516893cabc718d8ce67467f7 SHA512 55ff3eafa406ec3d8e33d8be44d0d06352ce746abffdec1378716b275d634e133fc1bc56fc312bf0d921efc59e8de4ac811022cc34a77fc1f1abc982c931932b
+DIST runtime.native.system.4.3.0.nupkg 16854 BLAKE2B be46e3bd8781915572308ed7d4d8a0338a5c79b901a27c7e7c7fb7fb25788cf00968a40f96cc43b1202e56e5bbb2f87602d247295d8c98f2c143a0ad3a8d7664 SHA512 299c5a96fffdcaf1972e3e3d1c727837d18ac9e88cb79c09914f12ff1de7280dff10c9232a49a1c1d3ba7785a5cf76f28c9dce414f0a2a567688de7fd5331dc8
+DIST runtime.native.system.io.compression.4.3.0.nupkg 16918 BLAKE2B a158ea64e917d9117684a9974482172fa2450cbc3e41a2918cae1ccbe004988fa31d975c8f06fd9a3bd320bf9b5a0e329eed36491b928df6db242507162dc3b3 SHA512 bff1f0cac94327014bb07c1ebee06c216e6e4951b1ddaa0c8a753a4a0338be621fd15ec621503490dbca54a75809abc4f420669b33052b28d24d726ac79c9891
+DIST runtime.native.system.net.http.4.3.0.nupkg 16894 BLAKE2B c803da4a0e31f509b83e061c0dde9b990188418ee29efe9bb0b7f5873fb2b14990560b4191d78ad16e9ecd53ec701a4fdbec3ff66b88c3e49b5f41b57ae11df1 SHA512 ddd1e5b67545477f7c72b5883666de40e89efb0836d91e7a349e2f3d4ac05ce1125e6add3cb09c39cbdfe7ab7c5dc8fdaeaf6ac25acd92f6de3d8ce2d6db7918
+DIST runtime.native.system.net.security.4.3.0.nupkg 16910 BLAKE2B 273ea11a959e7213f6eda872607a7ce42ee0585ca05445c35db13b7282a11bd9886b1a895bcf819363082805d8183d2ca1b4efb073825a583b09fef978c9e7c9 SHA512 c5db086a026eb52ff432dfce1ed295bc390e0701fd61e78ec443014d2c6e9c7c2d528236f7838d9aa55a93adb7203654dafbf4b8cf5a25578347a727d0b1262d
+DIST runtime.native.system.security.cryptography.apple.4.3.0.nupkg 16967 BLAKE2B 4ce2983bbf2c2c6a30c2433151458e4790f43b289e9faecf38e07505e5519bc042f85a46a331ead5f31419971a5af3ad4ca5f18b477c4dfd7e4e7f33cb8a3eb4 SHA512 23c6a99b323cd71cdcb28c6faa71f099f69ff0972d5125607ae8bbc99ba7c08513571d14526e8c2805ab3a8b70d3d3a6dd76dfa193320393ecb05906ee91f37d
+DIST runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 17048 BLAKE2B f3d49c45e52d4e317fd5750de6dbd6628b414d127ef38f9fb4e2ebe447b13a0f93f38c91850c9df4c0a6a3fa738f58daf2c440827bcf7c7d3436a8174b5d212d SHA512 ee5d047908b99b776ff9bb54856454b24b09a0f9271b127239543b1f5faa3381a032d9eeb4d813d01b5a4b7d183b6a16250f159fdc450d5314a7eace1550bea3
+DIST runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 17049 BLAKE2B 4440283e2844f2e900eee3505cb6ae038288117a452ea41b3fb4b2f6bccd3649749d655436bb6a87f4fad0880a9960630f016f6ffae68ea162e4cc5e4db15401 SHA512 a34ad2dbe67efcae97fcbea57af386b30660a98ab8229a56c0dca241316e673cf7a26e19c6efb6b7117cc271fdf208741ba6f8447ae254c91acba3ddb7d2923a
+DIST runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 44200 BLAKE2B 30ee247fc53f9de0147a5c5666bcfbfb674ebf03ceaa4ea3c73671154caa6ccee2c9254c0fca588e9a21f98e27ad86f387255b554ce37d7e36f8a69502049e71 SHA512 81bdb93c1c86c560343df6cc367499fb2a01a9b3016617be416874a23c4355a8d95c7be34f175510f3fdea4872302a87c8efab98a328dfa39422db520c3f291c
+DIST runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 44199 BLAKE2B 475710c40d856c6ea97201e800a3d8f418a7489043bb48b42c79f4e63fbf390630c0b2379f45f0e183f98bd2f3963c93b1efebd4650c2e1f2f08002788f0a8e1 SHA512 ce0873e07000df98e640bd265e969d4a9236535cee2699c5363f3ab297557b0d756260557995f2ee163cff05fc2ba922d66ba0e4cb28521f841e7d546ab3b63e
+DIST runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 44118 BLAKE2B f89226f71e042a6bf70a45db59dddf06fb5083da2ccc1cbc17e8b3381a1462c36e0ddee7cb38a2003ccd07ec4f2a987a9e69ab143054a3a106ec314e3ac4947e SHA512 6de9544b4da49f127680cf5b3b4afea96bfcac3293038a1b0a12eea0ad60be368af31ee1dfd66d48d458b40200738c04aa0c71adcc54ae2dddbea2cd50d6f28d
+DIST runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 44143 BLAKE2B a46295bfc89c96c9fb28650d64b2ffaa1bb10c005227c2982da898955e85b04e8f344813c2b37edd6ae855bd24de3ae8dd39dfca6523fcce1f9b2dae9cd4ba14 SHA512 bf754c1a66cd70dc1bd38d54fe675e9dd470417ebba62e2f79e278be8f06cc3496ff58ed90d30b5dd4d3efea9accbd09eb17cd87be882951c0fdfb833c371f70
+DIST runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg 19581 BLAKE2B b8bbe11bed19360bb221715acff84d41f7f6cf871e66b09517a3932ce6a4ff454d548dd58c75561a18dcd6395f4ad11eb1e5106330fb702330b8ccee6618d8d1 SHA512 9929942914071e0ea0944a952ff9ad3c296be39e719a2f4bb3eac298d41829b4468b332fba880ebe242871a02145e1c26dc7660021375d12c7efcae4d200278a
+DIST runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 37682 BLAKE2B 0fd5229c9394741456079a6eed8efb2c99e4211cb7be1873882ae6708c5e87a4f5116a9cdd6fda005896d2af4237779f1bd3c2332a1fcc993690e2ef6f5d889c SHA512 61da1667a5dd1e53a5d19fbe90abbfe332d84fe755fb811a080668a47d41a97db44539e3174fd1d2a0770ff1bd83afa68c82ce06df5775da65a6054ccc12c4be
+DIST runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 37725 BLAKE2B d777e672cf2cca1b8df607fb9e38a1349f99d68c2ac4cc553db4ef98cf00d637182da19842acf774cce1e1ae78d52a5bdfd1b21f79ea59294344600fc2d4d5fd SHA512 0a38f25e8773b58155b5d3f94f849b93353d0809da56228b8ebab5c976e6458ca50eb5a38acca4c8940678e6e9521fb57ae487337f7cbf2ea7893ae9e3f43935
+DIST runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 42668 BLAKE2B be90c86ebb383a1d7e037d0a0b24aeb8a7e9974388ded41964a82a2d2a4dce0e62feae830fe7dcd29c0fa19584c0b15281f1959d326fd6b7e17c6e70bf125c1b SHA512 e65a6a1f1928cfb760c395a399542dc7f9087399c53874376604504ae60abd2da24ed735ebd148d335000a5e35c8108ea55404685e902df392eac2e8d38fb665
+DIST runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 42676 BLAKE2B 92c345d649195d7ebf1ae645fd122b77ceb423f391dc631f142c7e1890f6b1fe63fa896f6842dae5aa1ea33994d3fc9a7f44f52954f0f50ea682988373ba071f SHA512 2ae9db4b719b31fa7e40c60f52c70038fc8668e029cf4e1d120fde8c295631d6b08207d7018a22937b79546016c560c894e27dd6ebc01d5e0f677567e6b2c4f2
+DIST runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 43118 BLAKE2B 242cc78b2b335d3c15e798c81cb19654b44ecb79e29e6babdc404bcbffd1691b07e0640143cde2d03a0640d6e1851228188eb91cc6b8b9f8759d13e8aa258e52 SHA512 c9f219515e268cf40e16b135bd64cba95c35e866dd9bc34954159562314d01d2f9ea7eb8b0db94acf6bdac83d651d90bad7890cb657ffe40fa3440ec662c9944
+DIST runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 43121 BLAKE2B 5b079a85f032b9933cb9033acd4531f49b862c9aa4a35ff260141c228068e62dacdaae59f95e309e4ea2278da046ad82b0b88be37420849d67bbd2325def7e00 SHA512 cd4b7ba744de80086521ab67cad2db3085d488388d3d9cb83d9946389f0f4c784539bf3a4ffb8d4f3347c5c7813aadef95b355fd2563e30c948a883c27b95287
+DIST runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 42901 BLAKE2B c62ae072f63c79e2fbd080688852a545df160e6be41c68365508d6bc96c85927feb6859b32c2d8450b07058c2955aa94d4763600f12efdc76fb4d161081cdc81 SHA512 4981b2d7a106703b185e176ad35bfda149156f3b752778fa71c56b3686407765fd2b6625de352bd563aac1e1e8769d7886cc59a0d5d0bfb41ed60277360beb81
+DIST runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 42947 BLAKE2B 12495fa67415ebb0ff203ce50c3a3bc63bb6adf53a55a72d73d80eec8607533a69036cc3286dd8e52a645bea6519655b31855c473dac70a08fd228f0a3381df0 SHA512 d7fc28a9f600e471edce0989c01c485d4e2a7e99551f531413afa75039a4004d4e2c27e88976d65432635a321d86316a3c6cdaebc7b2fefa42141b64f4f10d66
+DIST runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg 42939 BLAKE2B f166d9c0b266e7c7fa6d6ac61201a755ddca3ca6d3f13e52e4a04575c7143af5bfda9929d3701ac7cacb0e61d8debedae4419fc202d8cef73c8c1496776ffe28 SHA512 5dbe6bc007a9b46491e5299602291f5dbf8cc8d51e6c1b08db2fa0efd365990b41b6e181ed6bf82e873a659396427bc0e33e85b47d645d273fef8bf8ec643631
+DIST runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg 42971 BLAKE2B 876fa77151634597a78a5e31771f370fe0632fc3d2cd5d5e5eaa216ace436483e7cb04beb8c101340b63899efd40e3e5fa649b4cf208656d9064adf61e3993ea SHA512 5fe0e6a878eff59cfe24a8d57af51140576d8e0fec4988e4892c233c47b3a3eed27dec072a6c0d55dd615777cd9ce3fe545c5353b4a95289376ad0b9408ed4be
+DIST runtime.unix.microsoft.win32.primitives.4.3.0.nupkg 31929 BLAKE2B 18ff9482cae737a7098f352f59948119b4f9982eefc1d835245c5336ee6fecdb7fdb92445d0c1fefd4e4c7cc4e64fec3d317e8b5dc160320781a3f820cf34da7 SHA512 93e6d3db61f9c2ca2048f25990dda92acd5ec74561e0c776d2c6dd8d1d55128f2c953f33d6832fb6a72bd9edca304a2551085bdeafe6e18af87619c9ba943c32
+DIST runtime.unix.system.console.4.3.0.nupkg 62174 BLAKE2B 5e0394b879ea85a36c22948a006d41d6d77e2283139265ce5fa6089faf209e447a90a02965dd576c20c28ead4faa232eaf4073343be69c70f4913a3b52f340ab SHA512 7c5cbda7d12315fff6b1e036d55ea27140de8b849f1a9705fd2710a00a2b70f06f534eb0d3e3c8ffb019e1a47d96c559ac61d5fc9d840e48f6e56542fdaccb83
+DIST runtime.unix.system.diagnostics.debug.4.3.0.nupkg 38808 BLAKE2B c7bc02cd3fcc7f547c9d1786fd12da492bea65cf9e01a385e40366614c6e90bbb2a46103096ab491ef6765af5f5ffbad9506f0bae8e68b6d33c40f7672bba0e9 SHA512 a8ce331953b1f4424aa7f4b6dfedfce9ad138940bc92f332de2bc6d05185830ec6eb832e752f62eaf425f749caadd4ea1789121cb7ed79740fa5868eba55c838
+DIST runtime.unix.system.io.filesystem.4.3.0.nupkg 62460 BLAKE2B 6431b1bbf73d43f5d49afcfdac3f4e6a21b4d6c86db7a99f339d97c86fd9f98fe64d2a4873350076a42d1f7faf479fe744220d14d1badaa56370e1c615afb4de SHA512 6d4c80aceffac60e1560fda34c5984bbfa2e1bd106bde2c6d3540905cc30c58e6f5f2eaf5703cef5e68e3d25a4b97982193b2db8130a50c622a498e43eb9bdca
+DIST runtime.unix.system.net.primitives.4.3.0.nupkg 125060 BLAKE2B 76f760a4fe1f14bf65ecad43c73f51b819cae80b259d32cc9d5af74cd559dfc86267ba58cf15c577de697c9e1add532da380b267bff5487a2974904fba1e2813 SHA512 c2a0ecf5c72b226b4776eb6281f00267827d6086a0ad758ebf6e6c64a1c148d2056fe99c87ab4207add5fa67f1db73dd1ed3dca81141fc896be6b6e98795c97e
+DIST runtime.unix.system.net.sockets.4.3.0.nupkg 105673 BLAKE2B 06119cfdac3ce590b2f12f5587c75b6799fa876d7def559a78a1ccf53e34e6e1bf79410bfd676b04f1ab3f34a887eb919078a55cf79dc75faa75fc62094c2cbe SHA512 31b62be088315ead04d89f452a6c49a656b88f0668f7dadb2790511675d48705e01c9df24dbed3a0095157875c208ab6e6b5b6afc82bac13e4d6cdd3026f8424
+DIST runtime.unix.system.private.uri.4.3.0.nupkg 75969 BLAKE2B 82611545be3eba44ccfbef1f104e9b5afade845fd3b30c6cb40171368330f9d4bb2ad8752e415aa3b1678ec140c40f8e72cd4cc3731f42ca64016c1a1dce70cf SHA512 203ebe272791d79ab0c40afe9d0543852ee91b9fb4ae5bc15524d97728bc8bc9d7e0cbcf65d1fab8cfb0aa7a4ae37e7938933eef127aa5ea46f60e57b6ad2d91
+DIST runtime.unix.system.runtime.extensions.4.3.0.nupkg 54075 BLAKE2B f81d86cc15c63aa0b4a3d03546a07649587af7a0285af0de4123734e719fc023fa4227b7abb18307d4fc060e2952c157ec72b3bb85d49ab8508d8167b1aeedd7 SHA512 54b81784c08e934389c59e6e155af6b1855e4bbc41678b01a702c94e6daba87c6ddfd16fe9e2cb61f3097bfa4950dbc37781454d027ce5ba6c50a393cc91b888
+DIST sentry.5.1.1.nupkg 50837250 BLAKE2B e9a757469b65c0fdf79f00b248b01d1ee78ddb790d181f61dc1432dc9bd5b98d565fafb77da990816bf2678acd85706f7757ae12c4aaa53a5dde3b4b025bd58f SHA512 a3ee57067d8443e7b6f4a9a35518a32bd3a25e07c4de90a51446274f0a8b86de91701c1a29e8699eccd9d8d586683770f40d684d363440bd574b43e92615e05c
+DIST sharpcompress.0.39.0.nupkg 1939196 BLAKE2B 9eeb05003d102426435293ac6804b07fa651eb220e944a7581303fbb4da97c2778c6a8d8f4f7a39c600200fc5ee37bde3ef3fd2704ed081227b684c3cf93aae9 SHA512 1a7c0818833a8cb0589f935cfecd9cb5fdd8f18f69c3b57d766a7982bfeda4408c18a8aba80da6bfbc51caef12a3678200f4c8b6d65e217e6c1c4f2549968a67
+DIST sharpfnt.2.0.0.nupkg 25880 BLAKE2B 2a463ce1c717fee54be8bdcf5c0c7c3931f9570f0b99c62d8ddb96da2a559709c15a2a48842bfc3143f0a0084cad7951f158b67505fb59c911f6179b927bdb30 SHA512 82c0ab078468bc3bc4501772ba7ff6d50e32d095e7d127ef99a512d630b6df08b75c01814daec221ff3af615b53c8d2c6865b1dc57149dbd43075a1a6f5be87a
+DIST sharpgen.runtime.2.0.0-beta.13.nupkg 267678 BLAKE2B 65935f595eb9295e3ffb5659f9892e47f4f16fd0eaf82b16edf3e0ef95733ddcf98bb4c8e2c883363085fa1cb905f70f03c44a32f5c8c0633092cfd73df92a71 SHA512 ab45430585b7ed8ec39f644fc1cc18d4a7b88106f07d0008768b776d49c90f8089871426e2f6a66550143d87142e42c1fc75e98b02a9b3f5cf1e65daa2354827
+DIST sharpgen.runtime.com.2.0.0-beta.13.nupkg 519850 BLAKE2B e1647dbf2b507086f1bbd2e2710ba8d02d31419df78b515b88250f3b537fd43347846bfd76b03f3f3a0542ddc83f292c99123167dafdc1c50ca8fea1714776ea SHA512 c5ef144366c4755b9ba7eaa2fa82097b4b86f92e4f2535b6dc5e5749b4dbe3bc14aa33e7a685bfbb472cd65d9e6198acbdcc86b1fee0ff9f36cd61802b5bb51c
+DIST sixlabors.imagesharp.3.1.7.nupkg 1041468 BLAKE2B 73eb6ce958d3cc42fe42edb079d1e0fdd36d7221299b699839fc8dbd1191a2380c257ca9cf78394253825e36066be79687dcf85f8a0dd8ec266b0a85d5d8f22d SHA512 84b2d1b79657408cc3cfff4f8136f87d88a917461cd0d5c63d460e5e29e0ee668dee079a62db74bd96de3fb6fa5c0f630a4650e9262cdf31a1271e27a4f4bbca
+DIST sqlitepclraw.bundle_e_sqlite3.2.1.10.nupkg 39260 BLAKE2B 18ebc5017aef0ff6a76e5bf4b3af0087282ab43a84e98a6da45c6d583fe15d3ba3879493d418ba699bbbfd0a7ffdca070b016e37643938a9a759d90ba0d8dc74 SHA512 adad8c846a8cde3999b3d8bc4b15940c4cb3ffff78eea5b92cd2aacb573c5eef28a03d1892c1a1ad82286472674bf25f798a8d7f52097c6c5915a99c66d8d0fe
+DIST sqlitepclraw.core.2.1.10.nupkg 36195 BLAKE2B ae9b26d383ab2be9a715d85883af46d1b2b2452412c434a42a6e48394522161e19bbb91a8cdba73c2f629a4fada81fa815ec9fb12d4c5106509d70e89295621d SHA512 a9439e45617ebecb888a5c3246c8a0aee3f3b803ba80021257c58d0835475338f38f589bd3fda3fa7a7eed84f40d9f96e12fac2a62514e0543dc48c8cc17b6ea
+DIST sqlitepclraw.lib.e_sqlite3.2.1.10.nupkg 19597545 BLAKE2B d840f1b28762e34a0f4a460b7e7e463c4b9de78cd0f2a5eb00fa4bf625dbb21548bd9b6e46488acd1728d020dc00d9a12749b5312e971c6aa5b82e730510436c SHA512 6aa065e9abdd77a4df4bd9c7ec4fa147d0e1ad85841270795bc6c6fbb31c40ad259fe6856edbc2bcbcd8a0c1d508cea00ca79b90f6d2683654910de65cbc2c5c
+DIST sqlitepclraw.provider.e_sqlite3.2.1.10.nupkg 60832 BLAKE2B dd28f7458605ed006ab8110b3af068f023f1c4eb06438ab26353da53fb13da68f31f9bbe283ae64bab43f4fdc60c3eaa2bf48d8134b903a464ae0b3b7024a3fe SHA512 1f14f046642c68c82af61a46fbb26f9c1b8bce2187ac5c3a4086f5a511fca9840319e3cc3883f45442e5a9d365f8f1f47eb3a5c29c7d1e64d5d560dee671ebf6
+DIST stbisharp.1.1.0.nupkg 283683 BLAKE2B 54d8d069db62a007b901735de62c0dbf720f486b29533f9d567fc0fedc7904b895b524eca823e4f222a5cd4a579478927bc878977445934d51b70718d2c9d0db SHA512 aedfa54d21b4c0dd9bac03e69afb576fa5bb1b62692b127c126f5e8662670a1263b0e768afb80306906834a7727a4d9e0dad2c0325396c5100f433b411f127c8
+DIST system.appcontext.4.1.0.nupkg 146990 BLAKE2B 7881a5a903a358e19b0de72fe800c70ac9233e7c5e1e4115d69be6f8dbc4fbe86debb79bcd453295730e803ff1da974075c999f52e4c721e085676746c2f9b58 SHA512 f724af13eb14aa57255f82841683a93b427de172b8d31b9fe2c6bc8c21a795e60ecf211b4e49e1c2e285fe1ad498e6bd9c843e109a60a3dc27b49df560106e96
+DIST system.appcontext.4.3.0.nupkg 147030 BLAKE2B fafd6d050e77a265cf41c6d00a3ab3d8db47f2258e10a6cb556031ab183a01a508a986bb495b68c5e8610c05b92b2f3c7b0718f68f508111fd262291684f84c3 SHA512 0d6ea63006304708feae2cc0590d2cdd99327b682210822bb2803ac842fdf4d8d57170d7947c006eec4b5687c942768478a7ec109745472f3946d230732483e8
+DIST system.buffers.4.3.0.nupkg 35171 BLAKE2B 3b274a048ce14845ca957019b3670db00338972f6e11279e47f59ca6b4326aaecab1d11317694ed98e8a27f3de7ef6f90de94d4711ab224f805388d468728392 SHA512 3dcbf66f6edf7e9bb4f698cddcf81b9d059811d84e05c7ac618b2640efed642f089b0ef84c927c5f58feffe43bb96a6bcf4fec422529b82998b18d70e4648cbe
+DIST system.buffers.4.5.1.nupkg 93737 BLAKE2B e846885f9ace79f30bf7698a96ff3277a45fc2988a48cddba1862e23650ce55b06dcc6c1bcc29e08cf5380c9700dfcc15964f7263aeb11c737306d27963b34da SHA512 80da6158e55b9bcf7e0b5e6379b9cf45a632914f037b53c5bf5609576e3cd7821f7861956b73d74470d2d0c2e56dd235a5ef4ca6ffe7e192b820dc2d023aaff2
+DIST system.buffers.4.6.0.nupkg 67596 BLAKE2B 4f442603347f6ec2c99f724bd6024e8db224eff17e5b02a74640795aea0ee78a0cd171e07472c0c7c165d10d84c43042f01285f8fb700114dc00ebd82f4a6067 SHA512 8916c9c93497f5b255a5444b18b896f05824e557e6e62182cedc38206e08258731272f815d3084804585789b4ee9cfa43e752642ef3b28ae66d7cf3ea9b12b71
+DIST system.collections.4.0.11.nupkg 810001 BLAKE2B 7f20413de51be3416862a8e3624fe575740aa35fd0983a694b128587fe05d7a3f869afb893106b02866bd6811dd045e35d0c3f43b55e06ba9f92758f21aa507e SHA512 f61b75329ba5d7c0e688aa9d110b2200c8934c3a1888f6b1b5f198baa7ab93f23835e8380853e8c046f257172b5060578ed86df26e5fe0ef34d8c4408a02c33f
+DIST system.collections.4.3.0.nupkg 810001 BLAKE2B 0079d5834bb3857c002cc686313646895b47be1079e10cf365ce9e67c05f14c2e70e782b122b07a7cd9d5090b57334d0cb2336503cf5059cdbafeb3ef3cc8220 SHA512 ca7b952d30da1487ca4e43aa522817b5ee26e7e10537062810112fc67a7512766c39d402f394bb0426d1108bbcf9bbb64e9ce1f5af736ef215a51a35e55f051b
+DIST system.collections.concurrent.4.3.0.nupkg 502676 BLAKE2B 0d98ffad345254596133bad8a487bb91bd235f2a757573c3ab7999184fac6685b4ec33316bee9b4a4e588ba96aa745a681077cb2e2d2b0a7f5cc113aa75efc2c SHA512 35c1aa3e636216fe5dc2ebeb504293e69ad6355d26e22453af060af94d8279faa93bdcfe127aecb0b316c7e7d9185bcac72e994984efdb7f2d8515f1f55cf682
+DIST system.collections.immutable.1.7.1.nupkg 595037 BLAKE2B 83f95d1b23960b35915e5418b125810d3087e7dd46fd2702907cac9856290bdb02d3c7e1d0a8fc73fb8cab4bdb4e928b717f6b61e7ff8fb3b508f6de49940597 SHA512 d263cc2c90a537edc49bce334490fd09d888a50f5b793e42e89133ad8db9544f356bd5745a735c4b81b7687bc1b8e4df9c8d64e388c8433361a775591ddedd76
+DIST system.componentmodel.annotations.5.0.0.nupkg 771145 BLAKE2B eaba2dca2356dbf4c1af4bd03d1b8bfcb55dc4f7e449e61e25dace119b35aa6308810fac7860b5d64d5e9569d27da693b3983a1427179e2d26b66a7df48d3904 SHA512 589aac4c669701ce7910f1a327294f15788d3ecff1d6df5d9255651e5201c5411c2312286fab111a6f549fb4de864c8414cfaf2a365deeb6f068c1ffce7c353c
+DIST system.console.4.3.0.nupkg 102397 BLAKE2B c21bc97bbcda781257473768239f775a16fcc399e933df35a5f5c00f75c5088462ea01ecec2d711a803581d5499c8cb15518e790d6c9e74b15a36c3a1f237d19 SHA512 a08a684a583c9b3278ce32be1007dae495f9d87254666392f794ef1203079f333cd7d388c28944ffa36fb49f0c8bb21f42c70f6e1d7c1c03920df6d0d1130c82
+DIST system.diagnostics.debug.4.0.11.nupkg 149779 BLAKE2B 337beed5f06441a09fb704ffdcc3c277e2f99d7b4931e86419e4d4d0925ad44c86276aae0ee1e29f94ecd37257953731e9607bd00de716d3195dc994dbe189c2 SHA512 02f4d0bf969eb1a876def21c1ffd75f8ed5f979aed9a1169f409e60a6e07016854e2154da5c0164fabaeaf6527a18d8e67282db1b69327a1b3581e9c0c742f58
+DIST system.diagnostics.debug.4.3.0.nupkg 149774 BLAKE2B bdb6d5ee3b8ca4f28b241b098281b7d2957d0996f9345aa086a54b1a981822962e5cc319687849ee52445db47b439b6cd4e99a4c71595f6227f78160aa31724b SHA512 6c58fe1e3618e7f87684c1cea7efc7d3b19bd7df8d2535f9e27b62c52f441f11b67b21225d6bcd62f409e02c2a16231c4db19be33b8fab5b9b0a5c8660ddab24
+DIST system.diagnostics.diagnosticsource.4.3.0.nupkg 120125 BLAKE2B 33f203d8ffc39e0c38599eee625053beae160a0aebe6fbfaaafdc85b570c7b82e3aae281092014e90d10fad7083f37afbb546ad5a0c74a94843ae9b1e9fe85f1 SHA512 8f54df5ff382b6650e2e10d1043863a24bf49ff0714e779e837cd7073e46fb2635bcfcdcf99d7c4a9d95f35ebffd86ab0ca068305f4b245072e08303b917b34d
+DIST system.diagnostics.diagnosticsource.9.0.2.nupkg 455354 BLAKE2B ec6b8c98e797fa6fa6949166655ef677882b728b9b354ccd5920f6a11165c1a290b0219ca78d079e83ec738e40882e8359d7e2ab1c9baa7b481a333a274a7882 SHA512 31d82411e52a9dddb1d5422e3c62a3533e7c32d0449544bd328b6c5442507c435f2ea324862955463be0fe6f109f3236f37e8d07371722a11a19a74f5eee613d
+DIST system.diagnostics.tools.4.3.0.nupkg 67227 BLAKE2B f03928755ec84fd360b2a8a0de3f39e57322cafc4be9e7fa6b7a67d606de9c0869688f62f6b7c9a2ee2915c424ab20779ac87ff510637a9bba740ba0361e6041 SHA512 164d6977e721cbceb44ede7bfd75b03b8d9771e0426aefa5d40c71867e964092fdc6a6808bcbc5559ed73ec2c532ca657d6476af79a49ca3ad879b8366f13d90
+DIST system.diagnostics.tracing.4.3.0.nupkg 581864 BLAKE2B e09e616dff7879932b358746a62b530499aa61726c4490c56d2d7a0bf888db5b42d75d89cc5befc9fdb6af231beff998b6b243c2b2a08084da089709e0c82a75 SHA512 d0a5d30e261cd45b7dfab02b7ffbd76b64e0c9b892ed826ea61481c983c0208b05b69981cd79e91cd4e5811e1cd4c3cea06a1afce05811ece58be5e4c20169ea
+DIST system.dynamic.runtime.4.0.11.nupkg 547813 BLAKE2B a59d9fa95313f269033f7e25e39e499ca4910da5c2c1307a1d3d4d96b07fa25fc6b9223755597727b60a26280e1dd4a8bba0b165c3fae9a3d3d9732b77f3e1e8 SHA512 0b2189a6f50effab44a8b1f883f2a1f9b9b32c448123190e8946a877c28ff46a235aa90af0898d1ccd6da2f3155aa2cf26e57f7f61ee7e3c50dfde2190d781ab
+DIST system.dynamic.runtime.4.3.0.nupkg 548103 BLAKE2B 42ac34ffe9b9b6fe69c984aa2b22f0715f7979685730de048490ca05feefd800349df39aeb2bc6b4c3608cd042abc018714fbdc49475a11b46077a2638824c8b SHA512 54446fee94f432cb8fd38ec10c929a87b307a76f152a2e9da11ba99c41ceb0f65913cf218944990f0e122d4f858945091e9806c84c0285ada1fcc939337d30ea
+DIST system.globalization.4.0.11.nupkg 589139 BLAKE2B a4ee2d6848c249b34a67192dfd32f78d842f4b12f8be137804966d00b2e15dd8b2f9ecc6427f9074c35802d9bc13674c912c80ba405e610324772f9b640dea46 SHA512 66bc21667f5f839bc711eda3b0463863d70e0ad86770fd5410e0123006d6f031755cf7220187fb7cefed69b3f4a9eab8f0868cae765cb1425c8bf60427f395e6
+DIST system.globalization.4.3.0.nupkg 589136 BLAKE2B 7b07f9b68f0744ddcfa3f0db6190c1a0696c2f89f8c5e92922ac20fc4155e22d97e7191bf7866c9b58acec056bff08531b0adacccaec7d4301e1d4b149fa511f SHA512 823d2ba308cb073b40a3146ecccd0d9fd7b1615ac3fbefb16f73d873e411fd81c3bdc87df206d3dc7e2f14c9cd53aafca684a3570c25471280aada8de805ece2
+DIST system.globalization.calendars.4.3.0.nupkg 177689 BLAKE2B b70b5d9e545835e5a3fe4c703b2bd7c857968ba1fcae5299c9c41d550338914f2ad9d168948018fa7da7271d62a3b9d2ad1e696d334ee7d3fdaefd25395aa64c SHA512 e97190231402b393774b925efc02a2bfa41d1d117a17fb87da6e399f5234546962767e9cd8f39970efa408e4f453cd1e6751a2a61e366bc97406e1b0b8a4be86
+DIST system.globalization.extensions.4.3.0.nupkg 142949 BLAKE2B 4eb77d4ce5af01136145ea867e9d6cc81181b36a178ff487905dd7d7c6a4986c518675af68eac0e854347503e11513056173a93e6803683f3fddee7677b88e05 SHA512 a4d360003f95e0c31edf39c0b91e1c73850a60ac5d0032b17db888a3c7d7134cef9acd97219d14174ad213b7c044f49b364cc5720073ebfcb6e1bf6e4ec24ce5
+DIST system.io.4.1.0.nupkg 703645 BLAKE2B b0df16bf1368571d6755f88cc8fcce330d1dd5b478a009363e87f463e12eed7722d4bcd66a1e70de63d1b31ae2793b80c735e19a63e80ad4bc4c45f107e94ce6 SHA512 e01b432f3d715f3c88d5d7f3e7cc1ceee78caf99407a11c3306f9103aee78963f818417f14eec52f0096fa247900a31e53bd3226e06f0c0f93870db0b2b78331
+DIST system.io.4.3.0.nupkg 703652 BLAKE2B b5b2627ace4cc49f35a0caf5c064c4c8262ff0fe3df79bb1bd3529b3e306c8b1e77ea9e5948de343ee786a50e12be822ca89b5ea3f16347b9c0bce6bd8071127 SHA512 bfca5a21e3e1986b9765b13dc6fbcd6f8b89e4c1383855d1d7ef256bf1bf2f51889769db5365859dd7606fbf6454add4daeb3bab56994ffb98fd1d03fe8bc1e6
+DIST system.io.compression.4.3.0.nupkg 485197 BLAKE2B d813f11d1eafa9c5bae049c2e6d7081edbb264520e253bc03441fbc1ea62b75760dd31c038a5a376d41df59c8be55fe1085d7dc012f611731b72040c8c41430b SHA512 f540ee51a3bb6941cdfbaace9a9738d7f7986a2f94770db61f45a88ecb7ef36b571d4c07417dc89cdbe9655a262b7cc599b0a4b78effea91819e186121b44807
+DIST system.io.compression.zipfile.4.3.0.nupkg 113746 BLAKE2B 0622b6c3b6ce841b3c3c1df620ffb68f995ac02d7540d7128ef2831cf08deaa60aaf46059cee0c98624ed5402c8d746128ecfd674acb90ed665d834eb879960b SHA512 1860634672767f818f0192ec2b2750693f0d39390f3b7d400cc6fd4f6e74a5cbed27bf49e5980ec85ff3e161c30f6190f700e339a1040c1699b87eb4aa7b6792
+DIST system.io.filesystem.4.0.1.nupkg 274255 BLAKE2B e5beb1350bea00cf6d533de221129bc3bb799f4e041b23e45304ea39000d9b70cc63fafcbd302046793bac360d431e3dde5c432fb19b0e1af7a1e1bf8e9fb0d1 SHA512 a6478b17f5d52fc5b9517458e93e1a69b92575c170f44046b3f4e25c7e67c9d4126ab486f5a3c51abcb279d05a057bd53aa8f49a1e51eae69563ae39214b72d3
+DIST system.io.filesystem.4.3.0.nupkg 274316 BLAKE2B 4ba513b503cfcad068c23a82423f9900c648fa2bc4fc16555bec717b6c5cfeac6c7708b28009c7a089f80c77ff744f573d72e4dcbeaa14acafb9fd3e8b5100d5 SHA512 4fb581d6f85b9529a091a0e974633752aa39e50b2be6c8a9e5eca8c2bc225cea07064ccec7778f77df9987deebf4dccec050b1a97edac0ee9107142e6a8ee7ee
+DIST system.io.filesystem.primitives.4.3.0.nupkg 94996 BLAKE2B 95fa6178164a7cc6a29c5a3fc55e415419c433b3b74abbcfa4fa5ae1bef40141b9515076b6869e8ed771b0ba6800bdb2fe6fa5d1f773ce52c40753efc0a82be9 SHA512 5885953d09582cffd973d23a21a929064d72f2bc9518af3732d671fffcc628a8b686f1d058a001ee6a114023b3e48b3fc0d0e4b22629a1c7f715e03795ee9ee5
+DIST system.io.packaging.9.0.2.nupkg 298808 BLAKE2B 9043ea65df8e5831ea941291b61b552f5b70cfc2fdac93178c310cbd6a6a1f4c8d6f12f26e7408ed06c901c45bd9ead6d99891d882cc2234a2f90f07d8f10682 SHA512 828b2fc9adef8bfa52b62e76ec3ef9950671e6cd01d73e6d36c2b9bc1462308ce3dde2040b6d81d88c303d97de4dc1fe297477bd70223ececd18b834f236e6d5
+DIST system.io.pipelines.9.0.2.nupkg 223533 BLAKE2B e5343c17ba67a6b0b30c23ef27644232e5b295c3607bee56aec7ff34c0602942c78a0448b095646016e2c2ba006c3b9fcbee981c0f8632efc4b1c9af550875ac SHA512 89d3ba5b2f1a6161bcd602e6ba838718664edab9a5344a835d75fc6e8e33e90a9e378ba710b6ca5ce369fbf7229a46d49bc82268f8290eb74c2b90417c5fc45d
+DIST system.linq.4.1.0.nupkg 511874 BLAKE2B 3f5941e6fdc731ab7acb58aaad0340695ba2c1ad285ee5eefd9c4ad3972e278d74cabb0d5480f29697b8c9ebf839c3c8064436be4c508ad406f0b3ab2b6366fc SHA512 53e53220e5fdd6ad44f498e4657503780bca1f73be646009134150f06a76b0873753db3aae97398054bd1e8cc0c1c4cdd2db773f65a26874ab94110edb0cddb1
+DIST system.linq.4.3.0.nupkg 512550 BLAKE2B cc6cbb532575bfcfde7ac897970dcd49067186547108f46449f9f819e7910ad32496df3663d4db8eff48224b8ee95b27f7bb442bb477ad47f44da2f6fa893078 SHA512 eacc7fe1ec526f405f5ba0e671f616d0e5be9c1828d543a9e2f8c65df4099d6b2ea4a9fa2cdae4f34b170dc37142f60e267e137ca39f350281ed70d2dc620458
+DIST system.linq.expressions.4.1.0.nupkg 1929236 BLAKE2B a804c6741afed5fdc918c046092f8a526668fdeca8712f750efade8f1f272fcd2c58b1d1493f20528ff7006e189fddd21f8a2220c15d689c8de2ad2bea21b1d6 SHA512 04605a091d3aea404bc97cb7ffc154708b3bec886562d9e36aecd4d2ed130afbb45f54cd16a3f714f0ccb3f27c5bc7707e55fbc3e81681a783e9396930058acc
+DIST system.linq.expressions.4.3.0.nupkg 1928029 BLAKE2B 1add363cc651e551fd7abcb797252785e2617159b197ec081de605d7c7dd829e7653e7693495a87909f46575b6619e95fef6e3132532110b3c1e74157ff096a6 SHA512 61b90ef9ae6f779fbc8a7b6483ee8f5449cdd05c81b05235f70447e656a73b2aab7c341784b999f7532374744a72e2c3a5cd13800ea23417fac32ccfae5cde6d
+DIST system.linq.queryable.4.0.1.nupkg 275516 BLAKE2B e8987dee457125c1e6992574f90805d726c95ae262424f268324bd7e465ea4e5e453f2a104d6f8ac598ada779a7625a086a33b2fd09d41fba16d3d458cf11159 SHA512 e658e45e86fe826988cb0e053a78ef85b8ba8ea348173979b7d705a35d7e993c3e7c1bbb2aacd139511e3e305a0d4a4b87a4fd299038e9543e6338fe31c07fe3
+DIST system.memory.4.5.3.nupkg 154054 BLAKE2B 0f75d5365d96b42949e53ae9498affce97ba074d6f404d30bec043e5def8cc39af05ccedffc7e9b13af4200336a9737cf44c85aa2d58069a64b1dc80537a6eac SHA512 70fce15a52cc76aacbae05c8e89e2e398d1d32903f63f640a7dd4a3e5747f2c7a887d4bfd22f2a2e40274906cf91648dfd169734fb7c74eb9b4f72614084e1db
+DIST system.memory.4.5.4.nupkg 205467 BLAKE2B c5b66e68917fc14d5b94aef9aef53087756c59473a2580448f20233e559b3ac9d691b2c063d129083593a1b610252acb01016ef078ed21b390615bf5a6e04dc0 SHA512 8ece5491eb0fe332bc190f40cf76b3beee0c5f996325034861be221fdb0ff02fd59e4f7020b3c4a1f29a457f76ff76c4c95d46d38555e4f48c7a3bf172d87966
+DIST system.memory.4.5.5.nupkg 208978 BLAKE2B 487049b1ffd622868d4aa84cc14f13127641c56937826c11d83851b7032ea248ccf8555f48aca93acc4891ac99ce2178ede50bf13ccbd70ba6004226fb583275 SHA512 e8c8e536c97b94ac3443c940b30dad43cf6e97dc7a8c3d989371048fe74e168606384f5e0143bdc0d86f7783bf9fdee8417964cb3a8a5d752713e90b125172dc
+DIST system.net.http.4.3.0.nupkg 1371903 BLAKE2B c0b56398662d8f149eba439ce16ec254bd5a64cee0faf251af07d89ec130953d8865d537b52b432ee19df9ed7405318119d301743bf84f98179c1cd7e6615731 SHA512 e8105ce8151aee95852fb29423f73cc1bd7c2286d36474ed7102a4b31248e45f434434a176d3af0442738398c96c5753965ee0444fb9c97525abbd9c88b13e41
+DIST system.net.nameresolution.4.3.0.nupkg 177639 BLAKE2B c3d666f33577682ba43292ccca908cbd81971ab53eaeb904438a378997903e80d5d3789b3c76db6c50f0411fb17b227db973bc09eadfc0f98ebed88ac0209057 SHA512 40d39e131fe7a392e58e9f58b516b5db88383de91c05b771f5e509acf46cc874271e90623d327ab039003ab8f2714144694390261278de324e1aee228a828ab4
+DIST system.net.primitives.4.3.0.nupkg 769347 BLAKE2B 070d9aaecf9c4ec485850954c425d6d6af23fdb8a50fe40c305657654fcaf58d366f29f62bca6ae32c8604dfd7f5217f822ebe03c68446d4fbc4ee7e44b07852 SHA512 9f7fdece330a81f3312ea7c804927852413bee2c929f3066b736993803df47cc0692fbca236c222bf19dc8f59b42f54f2a4c00da9a4d624e458da5874d127ce6
+DIST system.net.security.4.3.2.nupkg 257494 BLAKE2B 34a2a4640cfa53a7721b595049dfc0669eea16f902028a6081ec5ad06ae3ef88a65094bf430e4d3a5a0acc28a8d91fc0d7cabf5efa8d2ba03e330aca95f5b33f SHA512 492910dc7b32f24be1113e1f63cbeef9c5a47f1da57190c3512bb3afede1cd180733a8edc26de7657a883c261c9c397878bfe2fc40a6aee097740897688adce1
+DIST system.net.serversentevents.9.0.2.nupkg 139168 BLAKE2B 983cd7637e69ca26cdd171f3c3cf59de8db6e68a5e5d97adecee14e3d372e8aa01bdb3917b8b42f527de5a92686db792ee3e521fbfe55ebfeeff0b8b3c26388b SHA512 9184a26a7f1b6463b12a93a819b6c388027622c83dded6cb525be66bf9568e90f1e34f0ef78ac92d4bce5eb382946188967fb1397a63ef88e56355b9f87e0798
+DIST system.net.sockets.4.3.0.nupkg 135695 BLAKE2B 17f58a8445cae9ef2ad17bbd7dda092e66bc8be07d767e971fabf14da98f549924cd6a7abf54e8a5a7557710612a151f2f27dd35e559b81f2f06dd71fd43c9f7 SHA512 e32ed9518e9630e99edcf1963c3d0e7047ea8252853c9260eb5403a4206170ae28fd27eb239f39da4d2db766f830b3ebdc9e4da2e697be20241d928082200955
+DIST system.net.webheadercollection.4.3.0.nupkg 85080 BLAKE2B 936edee59a951befd8ca9d99d9ca17563e9213bcfdece25dc37d051ef4ff34bcf4544846911db10711baffc3fd7ed3fcca01753baa0e77f9b5020a24767e3c95 SHA512 fda40b5e53bf3364a3bca8ccc97d792111cafc12606f8a84d4564664f8e7171844ee31f076ebbae5332e56cc8ac543a161083fd9cafdce99b4a25843d627234f
+DIST system.net.websockets.4.3.0.nupkg 105598 BLAKE2B 900ff40ebdb1238ca959457e5f7f391ab07c411745eb3a53a756bcb8bbb22a4ebceb294339cff25e7cf828c6542d2c721a524fe5b2409509ab4fab33004554af SHA512 2bdda352b9ea21fcc1afc22cb1bba541eb73f1fda002cd970b68f25566d4bebfbcd38616bfa2c892c048cfce1657b1d2b6996ec374504dc1f1777f82e7321ec0
+DIST system.net.websockets.client.4.3.2.nupkg 172924 BLAKE2B 8e5109068453689bd5352e82f6911d797d9f609232a6e9f7845f7624c54cc1fad018057d97ce4a58da424f3cf79b47f96d699c4cfff1db4ebaba4001c330cfd1 SHA512 c2659278127eee3edc5b24c89c7679397cd1b8a87ed8b0d9f69b06d54630d41ccd65c6d80717bb28131a0cb488383d709f5b850cb4461b8faf2ea2a3ee7fd9fb
+DIST system.numerics.tensors.8.0.0.nupkg 235264 BLAKE2B 6ceb5fed450751a60c88f184b23be63f1a053682b47590d5d7525cf8a7ccb4ffaf59ec86911978ab6f12d2d1c3882ce214bf61ae6b9555cdd161f9bd509b51d0 SHA512 179f2d6f9e3f6c775adf8aa9fce530c8101a923294ac6e6c7546a22fd847f3e77018f67257345899e99aded60e755e67278f88be4fa39d10437a2a5d95982fe1
+DIST system.objectmodel.4.0.12.nupkg 321648 BLAKE2B 7a008caf5f7f38f34d62037e5e3505dc237356246103d00be5b07423829fc4f2a763fa841673ebdeb0d6caa79dea8d7fb9f56cf078addddb3cc853e63101f03a SHA512 f5191cdb360bd2624abd7454c66862540f97aa19df92ea0854786b9d3cb9549e95c6194cfe8adc01589203c4feb1673a129c4929486bcb5f8db83ea535477c53
+DIST system.objectmodel.4.3.0.nupkg 321655 BLAKE2B bd1110665321034ec27635077ba7f9f1a18cf2f813d7a99f511a91fb6c95827b3b10108bf8a5b4a9e32685a8754e1eeca7d1afb2dcd02ad5ce3ef9db61fcc114 SHA512 409bca3d2139bd1d003c711400ba2db5e576bb54d593aa541ec3576e7b2029b60159ab1c5b2c4e7389267b1b95ebcd8c2f064dc6e1f53e693aacb1737f066123
+DIST system.private.uri.4.3.0.nupkg 16869 BLAKE2B 7a407e16b35e4a5f405029e80749f7ae1c907707d9f72657016667ccf1255463011497b09b7d9e23fb3ccfd4de508dea48b33b13267775619f63134897e54c61 SHA512 5989a57ef273b689a663e961a0fe09d9b1d88438e5478358efc4b165de3b2674fa9579c301ce12d2d2fa5f33295f2acb42eceea2ebebf70c733da6364ceaf94d
+DIST system.reflection.4.1.0.nupkg 700819 BLAKE2B 7d98a07245ceb46e777b904b66ebd5d85067ed9a5e7ca10bc0838f115cfd5f7da1b6420b2126e56310b47b533fcd22ce020e046d03423ccdeb9392609783ce56 SHA512 67143ef8f6fb1044830c70c66e9a2b4f1850f50df5dadfaa5177338362ea7b9e9fe4b0ba59cd4eac6e1c8db4e0c285c239e4c2b3ce61391618b411aaff45f7c2
+DIST system.reflection.4.3.0.nupkg 700821 BLAKE2B a6aaf054f27be81f1a8251241deaddd6d35aa9ff1cd1b35a65c75201c3305ca0481d8f7a6de52a85736b0477332c404573db300f324e6301365f14fd59784225 SHA512 2325b67ed60dce0302807064f25422cbe1b7fb275b539b44fba3c4a8ce4926f21d78529a5c34b31c03d80d110f7bace9af9589d457266beac014220057af8333
+DIST system.reflection.emit.4.0.1.nupkg 219037 BLAKE2B 032654f464c65df895878e3e726c7f14c8c380fdb29a092b3ab99b57cd5b4c2a094df9a579b6a0b8ab416244a98b7bb2efe4a3e56792bd62f35d7077eeae33dc SHA512 ff7766886b945148ea65a49e4ddc648336340def2c2e94b8277b584444ec9126d96918f0bcbeb62016a530623a89ccd9eae749d62065b01058387b5d09fc7dd1
+DIST system.reflection.emit.4.3.0.nupkg 219534 BLAKE2B dddeaced247da3ced46ad776c3560d886db0581d10d2a32df3827c275a895f474933c528b637439831e7f69cabf70bcec544ed1d16069ef11cb047126f2c3b57 SHA512 be45051467a36ab965410f112a475fb81510a5595347d1cc0c46b028e0436a339218dd3c073f048c2d338b67dc13b45742290b6c46f55982503f74a8f2698818
+DIST system.reflection.emit.ilgeneration.4.0.1.nupkg 123128 BLAKE2B 784130af9ff312b8757308a16ef704a66b70f60461eaac1c39f54db4b3d4ca0ff066e495374c6899b4f65f4bd3454d2f252b4b404cc9c04e9ea44e896167849f SHA512 c3819cd3a58f609ff579652536f9f414481caa4d9e7dc277e0d3c8c8fe8e0ff90806fa94f7c6436d4af853c6fccd26d5af57f0a49c5baceef4e0daaa39e26773
+DIST system.reflection.emit.ilgeneration.4.3.0.nupkg 124567 BLAKE2B 4495327d565f0ef5935bb2ff6f71e25132abda4c8ffeb51195bd4b96d1d5c885e344519287dbb22d28957f0fbad2af0cc977c2fe4650206f7b72ee5dec45a08c SHA512 e9be5f62bf64b1947a49857337306a5d0980686b58d665989e94006ab04aa7e0bbf4d8543d1b57d5bb38079052f275f339b73054a7357e4fa357208a0ac85d69
+DIST system.reflection.emit.lightweight.4.0.1.nupkg 82989 BLAKE2B 80372b79e7e12b1945f6f178a9d427e32dda82998609dad684e9ebd806039869cbec3561a836b20b3988a4579049e1f39a04c9e4fbef4085a2e54f02dbb9c120 SHA512 542863fa085a31705b0b294b64744c11617a098beae4d5664beb53189148d19246c9a112de30f2d597e0888069a414f2aed8e94a2b369294a81b24b991bc2149
+DIST system.reflection.emit.lightweight.4.3.0.nupkg 84426 BLAKE2B 370e3b74a769e2a8043287ae93804d726ae0704440e3fea9cf5fd1ee46222cdd293d35896349719e87123ac24b05042665148023185ffb89ab8e00820820590c SHA512 ad58af07296bd084907a089f92026fa3898b764eb9d6a07c9414b550a83ac60456f32a34127c29bb93a9633fb07ba9fd828f7b41a31dce5ff019a7cf1ab29435
+DIST system.reflection.extensions.4.0.1.nupkg 99743 BLAKE2B bb72501a2dd11ecdb1f0ee41f022d7a20635cfb8858f8570ee52d15f7c0a7bd167ebc420ff164acf9a5e763e2dabdb7c7571e9155289fa8d9569ba1e42071dd5 SHA512 3e2f07c29836735be6247e75f760de90783d5ece64e8cce4e23eceb777da8975a35130804d87ddd26449c13d2ca34180e3f6b844b0fdd2dc594bbec6e7272098
+DIST system.reflection.extensions.4.3.0.nupkg 99740 BLAKE2B 15554874193bbddbb2a7a769a239923ea039b117d9f8ba5ae634b82fdc8f04fcdc871bdf328b0b4e418c9f0c987dfd71546c778a99453ba6b5e754e6939b3c28 SHA512 06cfd992c8d7fd9ab6432ab02be981a01b6558285a6e26a7825a064d4efcce08d9e7344f03fa19b033a2459d42b0b80e8c1400ce39b47a1752869ab8825b0475
+DIST system.reflection.metadata.1.8.1.nupkg 984996 BLAKE2B d17283e093e54e72543895909d5319d436b0d1b3e18bb402b8c5c80cd370b20ac7565d1f2bdb4ef9768248c3fb89c7f044b9d3e075ea27a941c4e15354c95bdc SHA512 f7310dad9246aa7a5c107b885c70bea9977a404509fd9413737a498978d4f916fb49b9114212cf1822217a41c24d2a41d3e9504ca4b3ff17735f18f02e09590b
+DIST system.reflection.primitives.4.0.1.nupkg 281678 BLAKE2B 3aba0904b106e846cc9ff3fec98a6cc4acba2d2dd3296248303bb02b2e32bdafa7fa095f1c29636fd1c85ca5ef4d972a7b6218834e458ec9f41f275eb195cb4d SHA512 08ad6f78c5f68af95a47b0854b4ee4360c4bad6e83946c2e45eaa88b48d27d06618c6b7479bd813eb5f30a2db486590d17645e9c0e06a72dbe12ffd37730707e
+DIST system.reflection.primitives.4.3.0.nupkg 281679 BLAKE2B 36dc0fb5e7a6927ab2f54bc9ccb2e032cce0284c3aa9b83cf2ded8bab5fc7918553b06b16bef69161a7d9a0548b3e9159ab582533578cd28a661225559bd2b1d SHA512 d4b9cc905f5a5cab900206338e889068bf66c18ee863a29d68eff3cde2ccca734112a2a851f2e2e5388a21ec28005fa19317c64d9b23923b05d6344be2e49eaa
+DIST system.reflection.typeextensions.4.1.0.nupkg 187836 BLAKE2B d9cf37002f9c37bd11c43df97fd2e8234993f34c97e9a0606ef28164f1c587cc55ad2f2d66dc62de304ccae90f4d5636d163bbbc86fc00b4bb258a5dc91f4068 SHA512 5b1875ae86f76f60307fbe261c7471e996d4d4eade0c4783cb35a5aad7fec4f01be01cb1f1f78af22d483ecce12096f6ed431d69c4a66c7bf235008bcac30cb7
+DIST system.reflection.typeextensions.4.3.0.nupkg 187842 BLAKE2B 2cec73bd787cc6b4bee793782ff0db98aaced7e7a0645cefb60e6e47d353e1959eed7a48db24e9c7ea6ad7b87648c11c3588d43028c4e0d14c695c38356943a2 SHA512 68ae81a635b9af2aee9fc8fc8fe7da0356ef4da4eb32f81a89fb75613b96714e8f1a1f4c12bd0d335efbb03408cc7a744314837f13564d5fb262ca272055677f
+DIST system.resources.resourcemanager.4.0.1.nupkg 85915 BLAKE2B 11b7c350695fee892052fadccc4f24f6cdc9bbdae8e51122115dbdb357f584a6392ad4fc10a4be59c123a018e0ec559f5ba035fe5e5d7fd868f5878c7b00e306 SHA512 5165916e258dd38fa83278fb98dce271a95e0091c1274b8cf5f17d88b9e6284f7a7bf145194afe4f20250cc31ad714141f9e0687cf235ff05460fb47cea0c525
+DIST system.resources.resourcemanager.4.3.0.nupkg 85908 BLAKE2B 002ba25bb953e5a9162214338b50abcecfd8183c68c7b5de8bbc1780e57322b6aa225e13436ffda54b4013fb77540df7428d8c3c89c1a21622ab124d8ca174cd SHA512 9067db28f1c48d08fc52ad40a608f88c14ad9112646741ddaf426fdfe68bed61ab01954b179461e61d187371600c1e6e5c36c788993f5a105a64f5702a6b81d4
+DIST system.runtime.4.1.0.nupkg 7263653 BLAKE2B 0a6699d985304a5072c7c283a42c100cb8f13ae61e95f93463ed57438ef3d7c655c3c4aed43b1d8fed4057933e924ca1e6b9a5987f1328fe4e2e172861572593 SHA512 4b05eb68bb485846707c4fe3393f9616d3ffb6c5f62a121d81142ddf7d0241c931fe96d193b7bf02281a9368458e0764466766557cfa9709035dc76d8fdd7706
+DIST system.runtime.4.3.0.nupkg 7263712 BLAKE2B 6cf2c6704f2a5639bffe2db645fd6ac935e341a5d50f1be97969bfba15e7fd93c94a2ddbb75a3538cefc05142fd72331185ca7ed175141102e8f977649f3bf1f SHA512 92ab2249f08073cfafdc4cfbd7db36d651ad871b8d8ba961006982187de374bf4a30af93f15f73b05af343f7a70cbd484b04d646570587636ae72171eb0714fb
+DIST system.runtime.compilerservices.unsafe.4.7.1.nupkg 106815 BLAKE2B 75dc584026b4bc589ec1bdaeb7ee8933a147391f7ecb71e69c9397d517368f5c1acb22d1a1a2f10a853baaf9fb659b59d5827baf70ce882792ce93cc3be09b13 SHA512 c8d781feacf79f3effc1c231a84beb0fa1e869fbeaa1d94ba3e84db75afe915e045c39ce059331fe48956534dcebdcd54fd97ab199e6a090bddc5250e208ee52
+DIST system.runtime.compilerservices.unsafe.6.0.0-rc.1.21451.13.nupkg 84184 BLAKE2B d2928ff08753ea19952efcfa0f353b8a56bc0c9c485af20f3fc5108e36c882aec950eb074a007bf05b2de609e43a656389e25cf8ed3b8091073b8d1c71fb6d47 SHA512 a3b1623336497fdc6ad2c0a531aebe8368b162a44c92b5a0d71e993a8106fd082aec63491ecce3ddf664dec0a429dddeb39a2e94b29516fbe1ed4bfe32291069
+DIST system.runtime.compilerservices.unsafe.6.0.0.nupkg 84343 BLAKE2B aea2f833d6da80dbc275c47bfb207d77a1f2dd203a29352ff5a6e96d8b52752ee3c5bde38117c5ecc5dfbad66d8b47b2001efa1e2d564e14cbbf58d0d1fe208e SHA512 d4057301be4ec4936f24b9ce003b5ec4d99681ab6d9b65d5393dd38d04cdec37784aaa12c1a8b50ac3767ed878dae425749490773fec01e734f93cf1045822b3
+DIST system.runtime.extensions.4.1.0.nupkg 1060307 BLAKE2B 5426e4a8e6d9ebaa6c88ca7dc495c120b848602f15f102d3c65105c8a03ee35136d5eb2e04a3eb2452dea96a36af70e42cb7a317e269bf4ef8a1d3a5f33f9784 SHA512 42d009be57d6497aa0724924891289f3decd916d0432c1c865cc0494092f5e59287f632a70c5060b3c78e361ab04510d75dfb3c2d2853f54201f735eb6e2dea6
+DIST system.runtime.extensions.4.3.0.nupkg 1060357 BLAKE2B e58c5c36d42228a507fba876d43f064b872c93dc4a48e9a7475a77c27e00f2added1dbb8dd5d6516a4c5652ef2b01f5fa31aa611360b38a0b66a0b1a2e479699 SHA512 680a32b19c2bd5026f8687aa5382aea4f432b4f032f8bde299facb618c56d57369adef7f7cc8e60ad82ae3c12e5dd50772491363bf8044c778778628a6605bbc
+DIST system.runtime.handles.4.3.0.nupkg 54854 BLAKE2B e68360382f2c625e3b1526dddb1d49c6bddc9b78d38041801f0df876f1b06d429c608ff3b28a0c1415495eb38fcd70aafa9fe8dc0bb323790e8a85718a9f93f9 SHA512 0a5baf1dd554bf9e01bcb4ce082cb26ee82b783364feb47cba730faeecd70edc528efad0394dcce11f37d7f9507f8608f15629ebaf051906bfd3513e46af0f11
+DIST system.runtime.interopservices.4.3.0.nupkg 2597020 BLAKE2B 4753b772f9d3596eae34b10497af40bc6e7cd63e9319e5789378cd148b009ae9fd5bde5e5757954ef06826bd4f4b79a3f8d8ea07766238407f26f3e222cdb2cf SHA512 650799c3e654efbb9ad67157c9c60ce46f288a81597be37ce2a0bf5d4835044065ef3f65b997328cbbbbfb81f4c89b8d7e7d61380880019deee6eb3f963f70d9
+DIST system.runtime.interopservices.runtimeinformation.4.0.0.nupkg 165972 BLAKE2B 0a4e21adbb275fded46ae04ccda695b9fcb29d4f199979b914a55d0cdc4457a6a7dfa8bbd82a5a46048d052a7e852cb935a1d4a7c6bf7e462f7b14327a52dc9d SHA512 462d35e66cbdd21dc007f06c6ef129ab57e810fa0f0416bd2fc6fb7eed55138780d4d31e31ee6267a82e2e3a1607e5c642bd6efeb130b57a1baa87e3141b0080
+DIST system.runtime.interopservices.runtimeinformation.4.3.0.nupkg 179546 BLAKE2B 780a92196ee216c1175768b32c04e88cfbc453bd9fdd6e5645c4ccc98f2c5ad62fd5cb158117df9391b1cdc3130a2cddca49304d2579434597350097960ce013 SHA512 6f4905329a3cc9e62d274c885f275ee31c5af57a6c9fd1a5080d039cb748e0277bef3dc8ce42863cac78365084e00a032279bf3d2b7254a49f3fb1566a29ad1b
+DIST system.runtime.numerics.4.3.0.nupkg 283763 BLAKE2B b9e2ffc7e974fb4824ed174be43e664d0fcbe1e996640b8f66a17503c8af24d106e883092fd61b2990c32472423bcad943e07b7e25d126563a219e1b617446ee SHA512 3e347faa8e7ec484d481e53b1c219fe1ce346ae8278a214b4508cf0e233c1627bd9c6c6c7c654e8c1f4143271838ddd9593f63a1043577ad87c40e392af7fd34
+DIST system.security.accesscontrol.4.5.0.nupkg 551848 BLAKE2B ff1d5476ce5f07624d708f53c4e73568ac2dcf9c2a968836e1bee358cf8dbc64b853dc8358c860f792962f5dba6f5422425e1ce4605cb7eb60feb54872c92583 SHA512 e9142d713f93c8380b505b009e699d7d144674b60ac526469123ce774e76b6f605c4e4cc6906fa00d970846a99b4d3b9d8fa2c682a17bbbb9ab459deba303198
+DIST system.security.accesscontrol.5.0.0.nupkg 621573 BLAKE2B 617baef046a8bdb637db288425206cb95e6be55c53c3829690253fd76987b0fdebb1cd79db556c437ff5d9a0f4940e7d747e3e7b611e941f5f54248b6adfa32e SHA512 ae6b03ad029d3eb6818a6c8bb56cf4904013fa535a67b8e621b783a029dd88aa2e471e002cbc7d720381ad8bc8c6b93111a08f6ce2d271af6d974bf4d02b6c81
+DIST system.security.claims.4.3.0.nupkg 147933 BLAKE2B bd00c65069b23415c146861ba7ba768a0da69f9f0a4496fb1f43780222f899ae62ed35cd0bc5a0953d8b13920800b59414cccad7e6bf6614ee675680c06e27cb SHA512 ab72b90801f6c051a2b31645448eebfca74642b3cfa1d51f80e21a0d0d7ad44d3366dea139347e2852781b7f3bae820df16c3eb188a2c96244df05394ed72c86
+DIST system.security.cryptography.algorithms.4.3.0.nupkg 402204 BLAKE2B 3bed21fdd12f005b6a7eb225623e71880a37c79cfdaa770971b6563d8e7f613a64617c73deedc2c6c31fd8e908f9ac95903a1004f1376bd914431f89c9dcc8f0 SHA512 7641d70c2ba6f37bf429d5d949bda427f078098c2dcb8924fd79b23bb22c4b956ef14235422d8b1cc5720cbbcc6cfee8943d5ff87ce7abf0d54c5e8bce2aa5e2
+DIST system.security.cryptography.cng.4.3.0.nupkg 290620 BLAKE2B aaa7b495dd7a8884b125f05b62d3e641cfb04e82f8f376f1e1839cdf124de4643dcf1e6de02e0296768db5f430a33d75cd2003261a815059055ffd5f050c65c4 SHA512 6272273414eaa777e78dca1b5ecbbdf65e9659908082aea924df0975e71f4c1b47f85617edf90ead57078c29513a160ca62f123be9f9f339dfb9c9386844f5ea
+DIST system.security.cryptography.csp.4.3.0.nupkg 117553 BLAKE2B 93f32c719f999c566ac7ebc486854778051ca885632a3ecf5b50af05a700df092a0e13ce08f16c854aee3ef06bc27fc61e6b03f79f3170eeb2bcce7e22d9728f SHA512 43317591747a18f52f683187e09adfe0e03573e6dac430bf3ba13f440cdb1c7bb1f9205369d5f3b2a0f3fdf9604d5ba1e6d94a899a25d2c533e453338578f351
+DIST system.security.cryptography.encoding.4.3.0.nupkg 144382 BLAKE2B 9f8e6a4ce5fe2a4de2be0c827e914a02a257011b508e97e289b9de4657b598fdbba4e64dcf23a29af6e4910af41e62f3b3f0d6a2156ab691e2e00ad76c6499ef SHA512 5c26add23e63542f37506f5fa1f72e8980f03743d529cd8e583d1054b8d8a579fb773fa035a00d9073db84db6be4f47cac340d1ebc6d23dd761dbdbd600075e0
+DIST system.security.cryptography.openssl.4.3.0.nupkg 71949 BLAKE2B ec1654bbd09e1244d260d1ddbefcbdeed207816a2719f3bb0f055a7a140d466f186667b1f202e0d1a3eda97f247d2c1776ad6f38f50de58960da5f0dfd2a2d08 SHA512 64530a19489730f873f8c68e6b245135ea260c02d68591880261768358d0145795132ba5ee877741822ff05dcd0c61edca27696ef99e8f9302a21cadf3b1329f
+DIST system.security.cryptography.primitives.4.3.0.nupkg 81382 BLAKE2B 55bcbe3143e85d24f47c72ec5e1f0ad38a1f931932b3a8a03dc00028668fc085d070dfcded55654e09328a745b208b9f15928aaff1087d8906bad41d7cfb23e0 SHA512 5ad8273f998ebb9cca2f7bd03143d3f6d57b5d560657b26d6f4e78d038010fb30c379a23a27c08730f15c9b66f4ba565a06984ec246dfc79acf1a741b0dd4347
+DIST system.security.cryptography.x509certificates.4.3.0.nupkg 706727 BLAKE2B 67c777394c982267c08dba232dd75aba6e924784d14388f7f8e347293c8f3a67ef9490a078b3f56f649a1ab352a4c924630f384850e3d5f1510dceae45fd0af1 SHA512 318d86ab5528e2b444ec3e4b9824c1be82bb93db513eab34b238e486f886c4d74310ed82c2110401fe5cd790e4d97f4a023a0b2d5c2e29952d3fd02e42734d00
+DIST system.security.principal.4.3.0.nupkg 94590 BLAKE2B c6fc5d6944a44b3ab125af5d59493aada6e8c73857311b8118adf197b9db3bf77fc8de9f320dcc0d55c6e529106b36307e14baab75766296bf804289de800a26 SHA512 db8a1ed0d189637d9ef83147550ce5da890cf6ec189a7d006ba9de86ab55679e7f025e18bdaed2dc137ddf82a7e6a0131fb4d54d4264831862b1d7c5ee62837e
+DIST system.security.principal.windows.4.3.0.nupkg 220931 BLAKE2B dcf84627ab57c5e72e0f1828b48c6e9bfa2ea2ead7b9c02bff03b9819f4057cb9d4a8821cfd0a98a381f2d7a2471df04041567de970f9d60557923e6e09317aa SHA512 66c1d5a9d649b964e1653fa2cd41d8f80515b7cd727fcd7f0890552070da1099ecd1032560f259a108e0d1d6a6da23fa07bc5c922f426a91f33b667f7c004019
+DIST system.security.principal.windows.4.5.0.nupkg 390138 BLAKE2B f788682d5f771fe9db0d41b11f61717c2f5fc69ee944ee18d1c63344dda45ae9fa4d014729fd0b0c2bbb4b9f5b7895fba391fb6ab7d5e65b6c512ca8fdf48789 SHA512 86cdb3178b4e437578890b6d5672eb9d1fe2f003abac082ed869a9e3f8cd684ffee618995838f6d052bf9bf396dc8b5d8bd5c3bea7f9e56cc7922598b4e49436
+DIST system.security.principal.windows.5.0.0.nupkg 535022 BLAKE2B 4b20ab3cc0b4bc820df360df57b2eb0e2059de677c432af31e73acdf600a417685900aed2cee8e33ba9020d02ae688096cd9c3a77da441ed33cf968c90124bd5 SHA512 44a920aaaf22b2172d41319bb57ab2b8e1a4531d5f02192a6f53a81d875125195b60ba0b5a44a45981d137fd7b0f3a65b12959b5fd97afc0578cd84ef27467cd
+DIST system.text.encoding.4.0.11.nupkg 327286 BLAKE2B ec08fe2bfd3eaedc7a50d823ae424268d1f51f8816d9b3645b4210e10b8cf89e801f5f7d831a565e31cbf795952ee5a6a60a45d6432e0593727f0e0e213818ed SHA512 f974335143f36b318abf040ed535887f28089d749b1fa55056345df5243dfbd56d27b74c6e4d87a737fdbb8e699c5291bd25f1e5db4700bb00bf53330c7e3e9a
+DIST system.text.encoding.4.3.0.nupkg 327281 BLAKE2B e153609b257919932499a013337b8b2a4087ebff7e8ffe6854ad1c70fbd058aaabc4e974313dfb3cf1a9355b0ced87bd97cd39f6a4962b8a4a87003d3a66c53c SHA512 6ff7feec7313a7121f795ec7d376e4b8728c17294219fafdfd4ea078f9df1455b4685f0b3962c3810098e95d68594a8392c0b799d36ec8284cd6fcbd4cfe2c67
+DIST system.text.encoding.extensions.4.3.0.nupkg 244195 BLAKE2B 9dc2fbf672e07c5302bbb8435e8c09bc91febb96f22b85b57b09b2046fca224c786f8710b634559de2722f3dbece7b30e6a3c6a78e98e77f955d550e440beb60 SHA512 e648c5dc781e35cf00c5cc8e7e42e815b963cf8fb788e8a817f9b53e318b2b42e2f7a556e9c3c64bf2f6a2fd4615f26ab4f0d4eb713a0151e71e0af3fe9c3eed
+DIST system.text.encodings.web.9.0.2.nupkg 293435 BLAKE2B cc35d84a7d15c792e3c5a5da27b453d217135b262d7884f2dc8192d58d5ff3f9035a22f397786108e473eab3544870eeef6c0b96200f96fb244d479babe9a0aa SHA512 60f0b5416a0fc57bc9c8495f6af2acc96de5d1d1bb74c6fa1012ab2ff749d702d92642587ac1f38b575e48e499112e8ca295714d1729edee8576583cb0e95861
+DIST system.text.json.9.0.2.nupkg 1877233 BLAKE2B a3f1c20626620c21252902dab91bea6f2854375a385d8fa5fd81800f43eb800d08967dbfd8547b79d3b828a12d53fb9376657e6f77188684b1156f144ab6e9a5 SHA512 967a03172be8c33c005b88048133692b06ba9f7e58afa08a4f7b11fbdd3c2d391fd7b6e5e9c239fae6b8778e502898e89d268042aa46910d44995b928bad45e5
+DIST system.text.regularexpressions.4.3.0.nupkg 530523 BLAKE2B fc77aa0a92658cfac1b3fc00b87fabbec1be5c79776b0b2680775615b273a5a49ff8d5000f97415b85fc0283ff95569ba9a5a72917828455646053033088b49b SHA512 80353c148df30d9a2c03ee10a624d91b64d7ccc3218cb966344cfa70657f0b59c867fed2ab94057f64ab281ad9318353f25c23375c00e1376b6589ae0a70aad3
+DIST system.threading.4.0.11.nupkg 708036 BLAKE2B 6b85f9c80dfddd5faa9799fdd64379c4c066b076596cd0008c46114b91025a20e00cb8b626b6fa5d139af6aeb8a3f6781ca7e55c4f7d147eae2f38e14d7a63c2 SHA512 05c0dd1bbcfcedb6fc6c5f311c41920a4775f8a28a61ca246b6c65ad8afd9b04881d3357880af000ac056fd121fc5c3ec0b56d6fd607e0c27e7a639157c85e3e
+DIST system.threading.4.3.0.nupkg 708088 BLAKE2B 004d01762fad35a4607522d974a0cdc3d0049c82fe704f2f86fb98ee81059ebb56d13c290fcd273d1067a1a7c7f17bf3259d4d7e802c1d09a95e3c5fa29ef3f3 SHA512 97a2751bdce69faaf9c54f834a9fd5c60c7a786faa52f420769828dbc9b5804c1f3721ba1ea945ea1d844835d909810f9e782c9a44d0faaecccb230c4cd95a88
+DIST system.threading.channels.6.0.0.nupkg 181030 BLAKE2B 39e46b792436d972c61fe0e35d0375622488290de97ec9f7b905349faa5152d38f6104eab5f16511fc51bbe50164f42d3cd1ce073ba024e25859b19f114424be SHA512 32adff895c57ab9ef864cf89660403f041b07841be7c44a0c3c2c8451a1da076a8c1b4dcf1c993b585304ad7549afa408a0f797ad6814d0f14eb748a1fc9ce03
+DIST system.threading.channels.9.0.2.nupkg 222929 BLAKE2B 1e9df074a77785e559bc4eeb3b1708ff6b5db84b3decf8a23f651fe09314addcdcf33e44a4d1d3ee27143ede2a6c9b3bf1b7d240b627ff89650a0b7c0388f31a SHA512 70d106e4452c0feedb93c802be1b7ea6c396b3207485e62211df9cab6a676b6bc14de5803f19561f8ba7f74700ec984143c636c512d612caec4a0a8a0a31caf4
+DIST system.threading.tasks.4.0.11.nupkg 840020 BLAKE2B ec5b6bbd3c912d3552922acd338611baa992dca6bf07b97b391e47b5b41ab718c373551dacffc7b4b67870287e93eb6e70ed184213e800fd9b424bf3e02cd8cb SHA512 fb66c496a5b4c88c5cb6e9d7b7d220e10f2fc0aed181420390f12f8d9986a1bd2829e9f1bf080bb6361cd8b8b4ffc9b622288dfa42124859e1be1e981b5cfa7b
+DIST system.threading.tasks.4.3.0.nupkg 840017 BLAKE2B 1cf4a8cc833da0a38304757db3808df5c217518c817d5807bf6f35393725a31223129fd1c4c964a36a60c65b686d24fc25d1777fa12ee622bddbb0f7c1772bec SHA512 7d488ff82cb20a3b3cef6380f2dae5ea9f7baa66bf75ad711aade1e3301b25993ccf2694e33c847ea5b9bdb90ff34c46fcd8a6ba7d6f95605ba0c124ed7c5d13
+DIST system.threading.tasks.extensions.4.3.0.nupkg 52499 BLAKE2B 3e6532ad1936859e2713e2e864831efe0af00a5ce561bd7f8723845bf285b8c15de00cb1fc246504f99599d183b400746cea987db883f0e61283db1fb2725a1e SHA512 2c33900ff7f544d6db31ad11b6baee1c9ecb40d5a54f51e5dd5bbbb37f4c50ee35ed481615cbf7c1da61a31ae3333c4454bfbeee4ae32241789e72ce3f910db6
+DIST system.threading.threadpool.4.3.0.nupkg 89926 BLAKE2B ec4210a5862c0704b118e4055785c7094ff8c3586800fcae109fa60e77565d8288089c64bce105e9cab08f8bb107dca340e72ae1d39d19f6118538ed32f449d6 SHA512 450a40f94a48e9396979e764e494ad624d8333f3378b91ea69b23fc836df8f5c43bbd6c8cfd91da2ab95a476e1ff042338968e09b720447f2241c014bfc75159
+DIST system.threading.timer.4.3.0.nupkg 77054 BLAKE2B be1665b86776f2f7e780de889e363a3c10da581eaf9a414da5ae5d059564281d78691142281d31b48c47b9efc084f1826165763097273f77e58699742c8c93da SHA512 d5ce8e258b7be7be268f944e21621195948106f57e6c46e69b2887c46f567760368b14e84046b4be4466ecd08ecd4cb04016a2ff7948cb4640960befc7aa1739
+DIST system.xml.readerwriter.4.3.0.nupkg 1388897 BLAKE2B ae51b8fe4492dec1e4e3584d05b0f477fd4e75e79dddb46d8077ae5311245d6fc6213d0655025f25db56f1370cb0e88bd60a83dc937bb53db1db0262390281f2 SHA512 991101497fbd39e43fc306ca280a465318868afa8db1f34bb87c266fe61f0c81a0ec34a797b236ee823bd60d1149b7592def96fe044abb511858efffe890c2e6
+DIST system.xml.xdocument.4.3.0.nupkg 591350 BLAKE2B 86f910cef36c056f4a9ea9dc26eea6e01070467d27ac80fb8a0af5e1a572ad5d2169e4f1297cd362fddc9e0309458dbd413fca85ef8e56f97781c218e594604a SHA512 c2d9236a696daf23a29b530b9aa510fb813041685a1bb9a95845a51e61d870a0615e988b150f5be0d0896ef94b123e97f96c8a43ee815cf5b9897593986b1113
+DIST taglibsharp.2.3.0.nupkg 1378355 BLAKE2B 219f809b22bfeab2b2a16759f77c04912e4af8565b6fb0e55024a3d4cc6c80c9f0f3c61d9f0aa9771dbbe0feb17415142243f8564e81b548d067b1be44a15996 SHA512 9be37f6431f6ead36babe78dc6527340d7b4b0fe444736aaeae5aef3651191d4e0421d9d671106aea544888695d7841000fb12f8a44aab1b5fe93fb7c90d983f
+DIST velopack.0.0.1298.nupkg 648831 BLAKE2B d806a8d39936d24c1a585684a7b015ed869f1a359434d87bd695ec29b68bd36bcb5649a9c956065a7b5d941a1ab1d0063eb9a42dcfc446c905fce8dab08db131 SHA512 d3ab3c23e5da124379727a797ff9e816a079902ff2885eb9fe4ec69ac358ef7f6caee84a46affcc67c836452a21e01bf5240a2bae03f8b141b5319b78f85db14
+DIST vortice.d3dcompiler.2.4.2.nupkg 79944 BLAKE2B 63fdcc96ef6b97cf273bcd2f62087895fddaa104356c2893e1bf041e0eadc60004d254f0922bb6c09deaaa39a7ccf9fe8b2799f6254d5513f098aa799681eab0 SHA512 59bd5960ebb4d74465a91aab9a2ff498a6285601c8deb21748c056b64c07408e80dae27b453095985fedb5985e1ac7b1d32d00dd935782696c66ed328117ea19
+DIST vortice.direct3d11.2.4.2.nupkg 994958 BLAKE2B df582b08a96dab905085a49d01831717a94f2ce5c3b9e35360cd47311c6c9fbf46488014f92820ee6d74474e883b7dfb6a69e98e8a67fd5053bdf6e601a5d877 SHA512 aa8d460e006b9e49e3db2db51303b9acf9cb9a66d721c677183838fd9baea216701c14bbefd1a8d3151b79ca5a932abfac832abac04a61ed8619c77262801a5a
+DIST vortice.directx.2.4.2.nupkg 1127577 BLAKE2B 258053e60145f3d3178159b5b8d45aea73078829c5802dab2be5c8669732f528116708a2b173172f33621a65239da8c6da07b6d27419a7e8367eeabab14a5765 SHA512 f1f5e14ef3fb3246030b3b722ddad7ddfd5de986d45285a34212fc4b26c1a8073ff7761846210cf94b5fb2e0854010343012a9a60b7a28931999392bc3b5a9de
+DIST vortice.dxgi.2.4.2.nupkg 348799 BLAKE2B e425f8ff7545bcde8d962f9dbaf26a8dfe21a271928072c9998cd6b2453ef626912b490186bdd39e396a5cafef19442cb74ff151f25d712f6ddc93fd5de3fd68 SHA512 ef2b8c9021013ba6232ac93f852db66a9d884782acdbc1f26d070e9592e29be273d3571b7ecf3f6ab69f194dd5d8beddb8f7b89f0c94541c5ac070392dd8ae09
+DIST vortice.mathematics.1.4.25.nupkg 360426 BLAKE2B 31780297d1e2e5bcdae92f34a93982c63bcf42ebbbb5ac848c4fbaea6d9340724ae83826fa20d0b1e82456f1f66d0332dd2e85f5f623d03fb53b5d4b7d6eb86b SHA512 4721b4514028384405e213a33b152a2760794e62d62f7078352486d43636f428c8a815d18d02f4cdca6168ef44898da85ec55760b25f240f0c074e3ea978f0db
+DIST zstdsharp.port.0.8.4.nupkg 1357219 BLAKE2B a0b4fdbd9895995fcd75996df12f646b67f7f22dd3c46edfa78bb69718bbe36e60be4bbc1f6336d44f075e7723a247b22d771903741727b3d2499eb0d94b1dea SHA512 d37ac5d00f1d5ed91cc0b974d63450fd55fd88530d39fe3ab912244f36867a05541a517ec3733ce27ae43fa8dd2a8120b6d600e25ebdfe18172ba5715b026dc9
diff --git a/games-arcade/osu-lazer/metadata.xml b/games-arcade/osu-lazer/metadata.xml
new file mode 100644
index 000000000000..5c157077d373
--- /dev/null
+++ b/games-arcade/osu-lazer/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+
+<pkgmetadata>
+ <maintainer type="project">
+ <email>dotnet@gentoo.org</email>
+ <name>Gentoo Dotnet Project</name>
+ </maintainer>
+ <use>
+ <flag name="pipewire">Use pipewire to enable sound output</flag>
+ </use>
+ <upstream>
+ <changelog>https://github.com/ppy/osu/releases/</changelog>
+ <bugs-to>https://github.com/ppy/osu/issues/</bugs-to>
+ <remote-id type="github">ppy/osu</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/osu-lazer/osu-lazer-2025.710.0.ebuild b/games-arcade/osu-lazer/osu-lazer-2025.710.0.ebuild
new file mode 100644
index 000000000000..963095be0a8a
--- /dev/null
+++ b/games-arcade/osu-lazer/osu-lazer-2025.710.0.ebuild
@@ -0,0 +1,431 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOTNET_PKG_COMPAT="8.0"
+NUGETS="
+automapper@13.0.1
+diffplex@1.7.2
+discordrichpresence@1.2.1.24
+ffmpeg.autogen@4.3.0.1
+fody@6.9.1
+hidsharpcore@1.2.1.1
+htmlagilitypack@1.11.72
+humanizer.core.af@2.14.1
+humanizer.core.ar@2.14.1
+humanizer.core.az@2.14.1
+humanizer.core.bg@2.14.1
+humanizer.core.bn-bd@2.14.1
+humanizer.core.cs@2.14.1
+humanizer.core.da@2.14.1
+humanizer.core.de@2.14.1
+humanizer.core.el@2.14.1
+humanizer.core.es@2.14.1
+humanizer.core.fa@2.14.1
+humanizer.core.fi-fi@2.14.1
+humanizer.core.fr-be@2.14.1
+humanizer.core.fr@2.14.1
+humanizer.core.he@2.14.1
+humanizer.core.hr@2.14.1
+humanizer.core.hu@2.14.1
+humanizer.core.hy@2.14.1
+humanizer.core.id@2.14.1
+humanizer.core.is@2.14.1
+humanizer.core.it@2.14.1
+humanizer.core.ja@2.14.1
+humanizer.core.ko-kr@2.14.1
+humanizer.core.ku@2.14.1
+humanizer.core.lv@2.14.1
+humanizer.core.ms-my@2.14.1
+humanizer.core.mt@2.14.1
+humanizer.core.nb-no@2.14.1
+humanizer.core.nb@2.14.1
+humanizer.core.nl@2.14.1
+humanizer.core.pl@2.14.1
+humanizer.core.pt@2.14.1
+humanizer.core.ro@2.14.1
+humanizer.core.ru@2.14.1
+humanizer.core.sk@2.14.1
+humanizer.core.sl@2.14.1
+humanizer.core.sr-latn@2.14.1
+humanizer.core.sr@2.14.1
+humanizer.core.sv@2.14.1
+humanizer.core.th-th@2.14.1
+humanizer.core.tr@2.14.1
+humanizer.core.uk@2.14.1
+humanizer.core.uz-cyrl-uz@2.14.1
+humanizer.core.uz-latn-uz@2.14.1
+humanizer.core.vi@2.14.1
+humanizer.core.zh-cn@2.14.1
+humanizer.core.zh-hans@2.14.1
+humanizer.core.zh-hant@2.14.1
+humanizer.core@2.14.1
+humanizer@2.14.1
+jetbrains.annotations@2023.3.0
+managed-midi@1.10.1
+markdig@0.23.0
+messagepack.annotations@3.1.3
+messagepack@3.1.3
+messagepackanalyzer@3.1.3
+microsoft.aspnetcore.connections.abstractions@9.0.2
+microsoft.aspnetcore.http.connections.client@9.0.2
+microsoft.aspnetcore.http.connections.common@9.0.2
+microsoft.aspnetcore.signalr.client.core@9.0.2
+microsoft.aspnetcore.signalr.client@9.0.2
+microsoft.aspnetcore.signalr.common@9.0.2
+microsoft.aspnetcore.signalr.protocols.json@9.0.2
+microsoft.aspnetcore.signalr.protocols.messagepack@9.0.2
+microsoft.aspnetcore.signalr.protocols.newtonsoftjson@9.0.2
+microsoft.bcl.asyncinterfaces@9.0.2
+microsoft.bcl.timeprovider@9.0.2
+microsoft.codeanalysis.bannedapianalyzers@3.3.4
+microsoft.csharp@4.5.0
+microsoft.data.sqlite.core@9.0.2
+microsoft.diagnostics.netcore.client@0.2.61701
+microsoft.diagnostics.runtime@2.0.161401
+microsoft.dotnet.platformabstractions@2.0.3
+microsoft.extensions.configuration.abstractions@9.0.2
+microsoft.extensions.dependencyinjection.abstractions@6.0.0
+microsoft.extensions.dependencyinjection.abstractions@6.0.0-rc.1.21451.13
+microsoft.extensions.dependencyinjection.abstractions@9.0.2
+microsoft.extensions.dependencyinjection@6.0.0-rc.1.21451.13
+microsoft.extensions.dependencyinjection@9.0.2
+microsoft.extensions.dependencymodel@2.0.3
+microsoft.extensions.features@9.0.2
+microsoft.extensions.logging.abstractions@9.0.2
+microsoft.extensions.logging@9.0.2
+microsoft.extensions.objectpool@5.0.11
+microsoft.extensions.options@6.0.0
+microsoft.extensions.options@9.0.2
+microsoft.extensions.primitives@6.0.0
+microsoft.extensions.primitives@9.0.2
+microsoft.net.stringtools@17.11.4
+microsoft.netcore.platforms@1.0.1
+microsoft.netcore.platforms@1.1.0
+microsoft.netcore.platforms@2.0.0
+microsoft.netcore.platforms@5.0.0
+microsoft.netcore.targets@1.0.1
+microsoft.netcore.targets@1.1.0
+microsoft.toolkit.highperformance@7.1.2
+microsoft.win32.primitives@4.3.0
+microsoft.win32.registry@4.5.0
+microsoft.win32.registry@5.0.0
+mongodb.bson@2.21.0
+nativelibraryloader@1.0.13
+netstandard.library@1.6.1
+netstandard.library@2.0.0
+newtonsoft.json@13.0.1
+newtonsoft.json@13.0.3
+nuget.versioning@6.14.0
+nunit@3.14.0
+opentabletdriver.configurations@0.6.5.1
+opentabletdriver.native@0.6.5.1
+opentabletdriver.plugin@0.6.5.1
+opentabletdriver@0.6.5.1
+polysharp@1.10.0
+ppy.localisationanalyser@2024.802.0
+ppy.managedbass.fx@2022.1216.0
+ppy.managedbass.mix@2022.1216.0
+ppy.managedbass.wasapi@2022.1216.0
+ppy.managedbass@2022.1216.0
+ppy.osu.framework.nativelibs@2024.809.1-nativelibs
+ppy.osu.framework.sourcegeneration@2024.1128.0
+ppy.osu.framework@2025.710.0
+ppy.osu.game.resources@2025.708.0
+ppy.osutk.ns20@1.0.211
+ppy.sdl2-cs@1.0.741-alpha
+ppy.sdl3-cs@2025.220.0
+ppy.veldrid.metalbindings@4.9.62-gca0239da6b
+ppy.veldrid.openglbindings@4.9.62-gca0239da6b
+ppy.veldrid.spirv@1.0.15-gb66ebf81d2
+ppy.veldrid@4.9.62-gca0239da6b
+ppy.vk@1.0.26
+realm@20.1.0
+remotion.linq@2.2.0
+runtime.any.system.collections@4.3.0
+runtime.any.system.diagnostics.tools@4.3.0
+runtime.any.system.diagnostics.tracing@4.3.0
+runtime.any.system.globalization.calendars@4.3.0
+runtime.any.system.globalization@4.3.0
+runtime.any.system.io@4.3.0
+runtime.any.system.reflection.extensions@4.3.0
+runtime.any.system.reflection.primitives@4.3.0
+runtime.any.system.reflection@4.3.0
+runtime.any.system.resources.resourcemanager@4.3.0
+runtime.any.system.runtime.handles@4.3.0
+runtime.any.system.runtime.interopservices@4.3.0
+runtime.any.system.runtime@4.3.0
+runtime.any.system.text.encoding.extensions@4.3.0
+runtime.any.system.text.encoding@4.3.0
+runtime.any.system.threading.tasks@4.3.0
+runtime.any.system.threading.timer@4.3.0
+runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.native.system.io.compression@4.3.0
+runtime.native.system.net.http@4.3.0
+runtime.native.system.net.security@4.3.0
+runtime.native.system.security.cryptography.apple@4.3.0
+runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.native.system@4.0.0
+runtime.native.system@4.3.0
+runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple@4.3.0
+runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl@4.3.2
+runtime.unix.microsoft.win32.primitives@4.3.0
+runtime.unix.system.console@4.3.0
+runtime.unix.system.diagnostics.debug@4.3.0
+runtime.unix.system.io.filesystem@4.3.0
+runtime.unix.system.net.primitives@4.3.0
+runtime.unix.system.net.sockets@4.3.0
+runtime.unix.system.private.uri@4.3.0
+runtime.unix.system.runtime.extensions@4.3.0
+sentry@5.1.1
+sharpcompress@0.39.0
+sharpfnt@2.0.0
+sharpgen.runtime.com@2.0.0-beta.13
+sharpgen.runtime@2.0.0-beta.13
+sixlabors.imagesharp@3.1.7
+sqlitepclraw.bundle_e_sqlite3@2.1.10
+sqlitepclraw.core@2.1.10
+sqlitepclraw.lib.e_sqlite3@2.1.10
+sqlitepclraw.provider.e_sqlite3@2.1.10
+stbisharp@1.1.0
+system.appcontext@4.1.0
+system.appcontext@4.3.0
+system.buffers@4.3.0
+system.buffers@4.5.1
+system.buffers@4.6.0
+system.collections.concurrent@4.3.0
+system.collections.immutable@1.7.1
+system.collections@4.0.11
+system.collections@4.3.0
+system.componentmodel.annotations@5.0.0
+system.console@4.3.0
+system.diagnostics.debug@4.0.11
+system.diagnostics.debug@4.3.0
+system.diagnostics.diagnosticsource@4.3.0
+system.diagnostics.diagnosticsource@9.0.2
+system.diagnostics.tools@4.3.0
+system.diagnostics.tracing@4.3.0
+system.dynamic.runtime@4.0.11
+system.dynamic.runtime@4.3.0
+system.globalization.calendars@4.3.0
+system.globalization.extensions@4.3.0
+system.globalization@4.0.11
+system.globalization@4.3.0
+system.io.compression.zipfile@4.3.0
+system.io.compression@4.3.0
+system.io.filesystem.primitives@4.3.0
+system.io.filesystem@4.0.1
+system.io.filesystem@4.3.0
+system.io.packaging@9.0.2
+system.io.pipelines@9.0.2
+system.io@4.1.0
+system.io@4.3.0
+system.linq.expressions@4.1.0
+system.linq.expressions@4.3.0
+system.linq.queryable@4.0.1
+system.linq@4.1.0
+system.linq@4.3.0
+system.memory@4.5.3
+system.memory@4.5.4
+system.memory@4.5.5
+system.net.http@4.3.0
+system.net.nameresolution@4.3.0
+system.net.primitives@4.3.0
+system.net.security@4.3.2
+system.net.serversentevents@9.0.2
+system.net.sockets@4.3.0
+system.net.webheadercollection@4.3.0
+system.net.websockets.client@4.3.2
+system.net.websockets@4.3.0
+system.numerics.tensors@8.0.0
+system.objectmodel@4.0.12
+system.objectmodel@4.3.0
+system.private.uri@4.3.0
+system.reflection.emit.ilgeneration@4.0.1
+system.reflection.emit.ilgeneration@4.3.0
+system.reflection.emit.lightweight@4.0.1
+system.reflection.emit.lightweight@4.3.0
+system.reflection.emit@4.0.1
+system.reflection.emit@4.3.0
+system.reflection.extensions@4.0.1
+system.reflection.extensions@4.3.0
+system.reflection.metadata@1.8.1
+system.reflection.primitives@4.0.1
+system.reflection.primitives@4.3.0
+system.reflection.typeextensions@4.1.0
+system.reflection.typeextensions@4.3.0
+system.reflection@4.1.0
+system.reflection@4.3.0
+system.resources.resourcemanager@4.0.1
+system.resources.resourcemanager@4.3.0
+system.runtime.compilerservices.unsafe@4.7.1
+system.runtime.compilerservices.unsafe@6.0.0
+system.runtime.compilerservices.unsafe@6.0.0-rc.1.21451.13
+system.runtime.extensions@4.1.0
+system.runtime.extensions@4.3.0
+system.runtime.handles@4.3.0
+system.runtime.interopservices.runtimeinformation@4.0.0
+system.runtime.interopservices.runtimeinformation@4.3.0
+system.runtime.interopservices@4.3.0
+system.runtime.numerics@4.3.0
+system.runtime@4.1.0
+system.runtime@4.3.0
+system.security.accesscontrol@4.5.0
+system.security.accesscontrol@5.0.0
+system.security.claims@4.3.0
+system.security.cryptography.algorithms@4.3.0
+system.security.cryptography.cng@4.3.0
+system.security.cryptography.csp@4.3.0
+system.security.cryptography.encoding@4.3.0
+system.security.cryptography.openssl@4.3.0
+system.security.cryptography.primitives@4.3.0
+system.security.cryptography.x509certificates@4.3.0
+system.security.principal.windows@4.3.0
+system.security.principal.windows@4.5.0
+system.security.principal.windows@5.0.0
+system.security.principal@4.3.0
+system.text.encoding.extensions@4.3.0
+system.text.encoding@4.0.11
+system.text.encoding@4.3.0
+system.text.encodings.web@9.0.2
+system.text.json@9.0.2
+system.text.regularexpressions@4.3.0
+system.threading.channels@6.0.0
+system.threading.channels@9.0.2
+system.threading.tasks.extensions@4.3.0
+system.threading.tasks@4.0.11
+system.threading.tasks@4.3.0
+system.threading.threadpool@4.3.0
+system.threading.timer@4.3.0
+system.threading@4.0.11
+system.threading@4.3.0
+system.xml.readerwriter@4.3.0
+system.xml.xdocument@4.3.0
+taglibsharp@2.3.0
+velopack@0.0.1298
+vortice.d3dcompiler@2.4.2
+vortice.direct3d11@2.4.2
+vortice.directx@2.4.2
+vortice.dxgi@2.4.2
+vortice.mathematics@1.4.25
+zstdsharp.port@0.8.4
+"
+
+inherit check-reqs desktop dotnet-pkg xdg-utils
+
+DESCRIPTION="A free-to-win rhythm game and a final iteration of the osu! game client"
+HOMEPAGE="https://osu.ppy.sh/
+ https://github.com/ppy/osu/"
+
+if [[ "${PV}" == *9999* ]] ; then
+ inherit git-r3
+
+ EGIT_REPO_URI="https://github.com/ppy/osu"
+else
+ SRC_URI="https://github.com/ppy/osu/archive/${PV}-lazer.tar.gz
+ -> ${P}.gh.tar.gz"
+ S="${WORKDIR}/osu-${PV}-lazer"
+
+ KEYWORDS="~amd64"
+fi
+
+SRC_URI+=" ${NUGET_URIS} "
+
+# "all-rights-reserved" - ships a copy of proprietary BASS lib - https://www.un4seen.com
+LICENSE="Apache-2.0 BSD-2 LGPL-2.1 LGPL-3+ MIT all-rights-reserved"
+SLOT="0"
+IUSE="+pipewire"
+RESTRICT="test" # > The active test run was aborted. Reason: Test host process crashed
+
+RDEPEND="
+ pipewire? (
+ media-video/pipewire[pipewire-alsa]
+ )
+"
+
+CHECKREQS_DISK_BUILD="3G"
+DOTNET_PKG_PROJECTS=(
+ osu.Desktop/osu.Desktop.csproj
+)
+DOTNET_PKG_BAD_PROJECTS=(
+ osu.Game.Benchmarks
+ osu.Game.Rulesets.Catch.Tests{,.Android,.iOS}
+ osu.Game.Rulesets.Mania.Tests{,.Android,.iOS}
+ osu.Game.Rulesets.Osu.Tests{,.Android,.iOS}
+ osu.Game.Rulesets.Taiko.Tests{,.Android,.iOS}
+ osu.Game.Tests{,.Android,.iOS}
+ osu.Game.Tournament.Tests
+ osu.{Android,iOS}
+ Templates/Rulesets/ruleset-empty/osu.Game.Rulesets.EmptyFreeform{,.Tests}
+ Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon{,.Tests}
+ Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling{,.Tests}
+ Templates/Rulesets/ruleset-scrolling-example/osu.Game.Rulesets.Pippidon{,.Tests}
+)
+
+pkg_setup() {
+ check-reqs_pkg_setup
+ dotnet-pkg_pkg_setup
+}
+
+src_test() {
+ local -a test_projects=(
+ osu.Game.Rulesets.Mania.Tests
+ osu.Game.Rulesets.Osu.Tests
+ osu.Game.Tests
+ )
+ local test_project=""
+ for test_project in "${test_projects[@]}" ; do
+ nonfatal \
+ dotnet-pkg-base_test "${test_project}"
+ done
+}
+
+src_install() {
+ dotnet-pkg-base_install
+ dotnet-pkg-base_append-launchervar "OSU_EXTERNAL_UPDATE_PROVIDER='1'"
+ dotnet-pkg-base_dolauncher "/usr/share/${P}/osu!" "${PN}"
+
+ newicon -s 128 assets/lazer-nuget.png "${PN}.png"
+ newicon -s 1024 assets/lazer.png "${PN}.png"
+ make_desktop_entry "${PN}"
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+
+ if ! use pipewire ; then
+ ewarn "osu!'s sound comes from the BASS driver, such driver requires"
+ ewarn "a connection to ALSA. You might not have sound in your game."
+ fi
+
+ ewarn "Score submissions are disabled for osu!lazer source builds;"
+ ewarn "only official binaries can submit."
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+}
diff --git a/games-arcade/pachi/Manifest b/games-arcade/pachi/Manifest
new file mode 100644
index 000000000000..c7ae582202d0
--- /dev/null
+++ b/games-arcade/pachi/Manifest
@@ -0,0 +1 @@
+DIST pachi-1.0.tar.bz2 3101484 BLAKE2B 31c15f1c0fac503abbba67c0483e60d1b12d84d7d0cb5eaebda01e0942ead1d202841942711306c800cfe8346a3e31ed10671555184d52d345464640a90d5c1c SHA512 9b09baa47ceb051d80ea621d2449afd2d9de959e707d2a1b3119ce8f0c623ebc1afb1678389c647b066fb2211f3f7eb27d713ee33514e2739ba48f9bf14c7952
diff --git a/games-arcade/pachi/files/1.0-autotools.patch b/games-arcade/pachi/files/1.0-autotools.patch
new file mode 100644
index 000000000000..79e79d3a89ec
--- /dev/null
+++ b/games-arcade/pachi/files/1.0-autotools.patch
@@ -0,0 +1,46 @@
+--- a/configure.in
++++ b/configure.in
+@@ -1,5 +1,7 @@
+ # Process this file with autoconf to produce a configure script.
++AC_PREREQ([2.54])
+ AC_INIT(src/faes.cpp, 0.1, T-1000@Bigfoot.com)
++AC_CANONICAL_SYSTEM
+ AM_INIT_AUTOMAKE(pachi, 0.1)
+ AM_CONFIG_HEADER(config.h)
+
+@@ -44,7 +46,7 @@
+ SCOREDIR="."
+ else
+ DATADIR="$datadir/$PACKAGE"
+- SCOREDIR="/var/lib/games/$PACKAGE"
++ SCOREDIR="$localstatedir/$PACKAGE"
+ fi
+
+ eval DATAPATH=`eval echo "$DATADIR"`
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -10,13 +10,13 @@
+ objects_v2.dat \
+ rooms_v2.dat
+
+-score_DATA = \
++score_DATA_ = \
+ scores.dat
+
+-EXTRA_DIST = $(dat_DATA) $(score_DATA)
++EXTRA_DIST = $(dat_DATA) $(score_DATA_)
+
+ install-data-local:
+- for file in $(score_DATA); do\
+- chgrp $(group) $(scoredir)/$$file; \
+- chmod $(perms) $(scoredir)/$$file; \
+- done
++ $(mkinstalldirs) $(DESTDIR)$(scoredir)
++ for file in $(score_DATA_); do \
++ $(INSTALL) -g $(group) -m $(perms) $$file $(DESTDIR)$(scoredir); \
++ done
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1 +1 @@
+-SUBDIRS = src Tgfx data fonts music sounds docs
++SUBDIRS = src Tgfx data fonts music sounds
diff --git a/games-arcade/pachi/metadata.xml b/games-arcade/pachi/metadata.xml
new file mode 100644
index 000000000000..d1acf648364c
--- /dev/null
+++ b/games-arcade/pachi/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">dragontech</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/pachi/pachi-1.0-r2.ebuild b/games-arcade/pachi/pachi-1.0-r2.ebuild
new file mode 100644
index 000000000000..49d3b76623a5
--- /dev/null
+++ b/games-arcade/pachi/pachi-1.0-r2.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop
+
+DESCRIPTION="Platform game inspired by games like Manic Miner and Jet Set Willy"
+HOMEPAGE="https://dragontech.sourceforge.net/index.php?main=pachi&lang=en"
+# Upstream doesn't version their releases.
+# (should be downloaded and re-compressed with tar -jcvf)
+#SRC_URI="https://downloads.sourceforge.net/dragontech/pachi_source.tgz"
+SRC_URI="mirror://gentoo/${P}.tar.bz2"
+S="${WORKDIR}"/Pachi
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ media-libs/libsdl[joystick,sound,video]
+ media-libs/sdl-mixer[mod]
+"
+RDEPEND="
+ ${DEPEND}
+ acct-group/gamestat
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PV}-autotools.patch
+)
+
+src_prepare() {
+ default
+
+ rm -f missing || die
+ mv configure.in configure.ac || die
+
+ sed -i -e 's/games/gamestat/g' data/Makefile.am || die
+
+ eautoreconf
+}
+
+src_install() {
+ default
+
+ newicon Tgfx/icon.bmp ${PN}.bmp
+ make_desktop_entry ${PN} Pachi /usr/share/pixmaps/${PN}.bmp
+
+ fowners root:gamestat /var/lib/${PN}/data/scores.dat /usr/bin/${PN}
+ fperms 660 /var/lib/${PN}/data/scores.dat
+ fperms g+s /usr/bin/${PN}
+}
diff --git a/games-arcade/pacmanarena/Manifest b/games-arcade/pacmanarena/Manifest
new file mode 100644
index 000000000000..90a0088f049e
--- /dev/null
+++ b/games-arcade/pacmanarena/Manifest
@@ -0,0 +1,2 @@
+DIST pacman-arena-0.15.tar.bz2 100112 BLAKE2B c4324ec83ad5033a40061935c8cfe982b4f36e7e466fbd10e836728fd0cdf01bda812a86f9cdfbd33c2a4f67b577026a836390e9ce61953372aab7dcded6aa19 SHA512 40e8092cf223d075dbb5654766f095ce57d61ff329aee5dc0f3c95655e3894ac507d8b48014326b7fd9265c81b9340624aaa349641efbdcde55bda0b1098f398
+DIST pacman-data-0.0.zip 11994364 BLAKE2B cc83c490387bfe859bb7e41068c00ea4c4f7fd4ed8ab718cff3d1fbb6c5eb5590837eb73b43a6b3be8cd76e3ef8f8b6b3ca8229a2bb645c48580cc302f02b88e SHA512 f3619ab876ff9c0f354fff9e9b0acefaa1a1a094e8ef215fe1b57f617f79540ae87681dae0ec3c1df672615064be345f74e52a6f2f241bfe70d78f5b8c7fadc7
diff --git a/games-arcade/pacmanarena/files/pacmanarena-0.15-fnocommon.patch b/games-arcade/pacmanarena/files/pacmanarena-0.15-fnocommon.patch
new file mode 100644
index 000000000000..103976f4c48e
--- /dev/null
+++ b/games-arcade/pacmanarena/files/pacmanarena-0.15-fnocommon.patch
@@ -0,0 +1,15 @@
+Fix build. https://bugs.gentoo.org/708066#c8
+
+diff --git a/include/input.h b/include/input.h
+index 08a4aee..491c01d 100644
+--- a/include/input.h
++++ b/include/input.h
+@@ -22,8 +22,6 @@
+ #ifndef _INPUT_H
+ #define _INPUT_H
+
+-char *keyboard_map;
+-
+ void input_reset(void);
+ void input_update(void);
+ int input_kstate(int ksym);
diff --git a/games-arcade/pacmanarena/files/pacmanarena-0.15-underlink.patch b/games-arcade/pacmanarena/files/pacmanarena-0.15-underlink.patch
new file mode 100644
index 000000000000..6c32d8793be7
--- /dev/null
+++ b/games-arcade/pacmanarena/files/pacmanarena-0.15-underlink.patch
@@ -0,0 +1,10 @@
+--- a/configure.ac.old 2011-05-24 08:45:49.197656941 +0200
++++ b/configure.ac 2011-05-24 08:46:13.685193761 +0200
+@@ -101,6 +101,7 @@
+ AC_CHECK_LIB(GLU, gluNewQuadric, [ LDFLAGS="$LDFLAGS -lGLU" ],
+ [AC_MSG_ERROR([OpenGL libraries not found])
+ ])
++LDFLAGS="$LDFLAGS -lm"
+
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
diff --git a/games-arcade/pacmanarena/metadata.xml b/games-arcade/pacmanarena/metadata.xml
new file mode 100644
index 000000000000..f57ce9afd431
--- /dev/null
+++ b/games-arcade/pacmanarena/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">pacmanarena</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/pacmanarena/pacmanarena-0.15-r2.ebuild b/games-arcade/pacmanarena/pacmanarena-0.15-r2.ebuild
new file mode 100644
index 000000000000..8b6dfdeda87d
--- /dev/null
+++ b/games-arcade/pacmanarena/pacmanarena-0.15-r2.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop
+
+DESCRIPTION="3D Pacman clone with a few surprises. Rockets, bombs and explosions abound"
+HOMEPAGE="https://pacmanarena.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/${PN}/pacman-arena-${PV}.tar.bz2
+ https://downloads.sourceforge.net/${PN}/pacman-data-0.0.zip"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[sound]
+ media-libs/sdl-mixer[vorbis]
+ media-libs/sdl-net
+ virtual/glu
+ virtual/opengl
+"
+DEPEND="${RDEPEND}"
+BDEPEND="app-arch/unzip"
+
+S="${WORKDIR}/pacman"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-underlink.patch
+ "${FILESDIR}"/${P}-fnocommon.patch
+)
+
+src_unpack() {
+ unpack pacman-arena-${PV}.tar.bz2
+ cd "${S}"
+ unpack pacman-data-0.0.zip
+}
+
+src_prepare() {
+ default
+ sed -i \
+ -e "/^CFLAGS/ s:pacman:${PN}:" \
+ -e '1i CC=@CC@' \
+ Makefile.in || die
+ sed -i \
+ -e '/CFLAGS/s:-g::' \
+ configure.ac || die
+ eautoreconf
+}
+
+src_install() {
+ newbin pacman ${PN}
+ insinto /usr/share/${PN}
+ doins -r gfx sfx
+ newicon gfx/pacman_arena1.tga ${PN}.tga
+ make_desktop_entry ${PN} "Pacman Arena" /usr/share/pixmaps/${PN}.tga
+ einstalldocs
+}
diff --git a/games-arcade/penguin-command/Manifest b/games-arcade/penguin-command/Manifest
new file mode 100644
index 000000000000..d19ad201373e
--- /dev/null
+++ b/games-arcade/penguin-command/Manifest
@@ -0,0 +1 @@
+DIST penguin-command-1.6.11.tar.gz 1123574 BLAKE2B 98c800a5a9081c843ecaddac57a1d1bd08f6b65a1539ecf206ff43ed13864cb2e94d77717ae88eb223a651c60c850b6aaf27a199bfc2d2b6394e04d63e3f9769 SHA512 ba41a7fbf3c07149fb6f6cf60091afda9de3c9f8f04e541d7b62ba744b04e5db7eecc5aa2391a71b72ccf6f544d397a5994a6f7aee0907211ced1686fe517646
diff --git a/games-arcade/penguin-command/files/penguin-command-1.6.11-C23.patch b/games-arcade/penguin-command/files/penguin-command-1.6.11-C23.patch
new file mode 100644
index 000000000000..55f21bf6550a
--- /dev/null
+++ b/games-arcade/penguin-command/files/penguin-command-1.6.11-C23.patch
@@ -0,0 +1,29 @@
+https://bugs.gentoo.org/966225
+Porting to C23, lock and unlock are implicitly work on global Screen
+Used include with function declaration instead of re-declaring it for
+missing function.
+--- a/src/gfx.c
++++ b/src/gfx.c
+@@ -260,11 +260,11 @@
+
+ void LinePart(Sint32 X1, Sint32 Y1, Sint32 X2, Sint32 Y2, Sint32 lower, Sint32 upper, Uint32 Color)
+ {
+- lock(Screen);
++ lock();
+
+ /* Draw the line */
+ DoLinePart(Screen, X1, Y1, X2, Y2, lower, upper, Color, &PutPixel);
+- unlock(Screen);
++ unlock();
+ }
+
+ void Update()
+--- a/src/joystick.c
++++ b/src/joystick.c
+@@ -1,5 +1,6 @@
+ #include <SDL.h>
+ #include "joystick.h"
++#include "gfx.h" //for ComplainAndExit()
+
+ static SDL_Joystick *joy=NULL;
+
diff --git a/games-arcade/penguin-command/metadata.xml b/games-arcade/penguin-command/metadata.xml
new file mode 100644
index 000000000000..d0c6552d67c2
--- /dev/null
+++ b/games-arcade/penguin-command/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">penguin-command</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/penguin-command/penguin-command-1.6.11-r1.ebuild b/games-arcade/penguin-command/penguin-command-1.6.11-r1.ebuild
new file mode 100644
index 000000000000..7ce5ff3ac4cc
--- /dev/null
+++ b/games-arcade/penguin-command/penguin-command-1.6.11-r1.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop
+
+DESCRIPTION="Clone of the classic Missile Command game"
+HOMEPAGE="https://www.linux-games.com/penguin-command/"
+SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="media-libs/libsdl[sound,joystick,video]
+ media-libs/sdl-mixer[mod]
+ media-libs/sdl-image[jpeg,png]"
+RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/${P}-C23.patch" )
+
+src_install() {
+ default
+ newicon data/gfx/icon.xpm ${PN}.xpm
+ make_desktop_entry ${PN} "Penguin Command" ${PN}
+}
diff --git a/games-arcade/pengupop/Manifest b/games-arcade/pengupop/Manifest
new file mode 100644
index 000000000000..f3cff2a9eda4
--- /dev/null
+++ b/games-arcade/pengupop/Manifest
@@ -0,0 +1 @@
+DIST pengupop-2.2.5.tar.gz 1676224 BLAKE2B 5527d956a9ae0d3a2c4a31e2bb5f4059bd79c8c6ab2ccc81b2ec35c698f8e40bbdf7a68b6799bd202f39b2e5d39e690de6e71aa97c6ff307d03679f8aae8f755 SHA512 1886898288cb9b2be949a031bf2baae80332c5ca93bead91ed8c50d0aaea81715cf0eaeb09a63af298e82e1409f9f39527742707839526283e57809484be4abf
diff --git a/games-arcade/pengupop/files/pengupop-2.2.5-clang16-fix.patch b/games-arcade/pengupop/files/pengupop-2.2.5-clang16-fix.patch
new file mode 100644
index 000000000000..6c35a230d987
--- /dev/null
+++ b/games-arcade/pengupop/files/pengupop-2.2.5-clang16-fix.patch
@@ -0,0 +1,40 @@
+Bug: https://bugs.gentoo.org/883463
+--- a/main.c
++++ b/main.c
+@@ -48,6 +48,7 @@
+ #include "common.h"
+ #include "packet.h"
+ #include "sound.h"
++#include "main.h"
+
+ extern unsigned char saved_level;
+ extern unsigned char level;
+@@ -74,9 +75,6 @@ static struct option long_options[] =
+
+ extern void play_single_player();
+
+-#ifndef swprintf
+-int swprintf(wchar_t *wcs, size_t maxlen, const wchar_t *format, ...);
+-#endif
+ #endif
+
+ int hwalpha;
+--- /dev/null
++++ b/main.h
+@@ -0,0 +1,6 @@
++#include <stdio.h>
++#include <wchar.h>
++#ifndef swprintf
++int swprintf(wchar_t *wcs, size_t maxlen, const wchar_t *format, ...);
++#endif
++void remove_bubble(struct player_state* p, int x, int y, int evil);
+--- a/singleplayer.c
++++ b/singleplayer.c
+@@ -24,6 +24,7 @@
+
+ #include "common.h"
+ #include "sound.h"
++#include "main.h"
+
+ #ifndef WIN32
+ #include <unistd.h>
diff --git a/games-arcade/pengupop/metadata.xml b/games-arcade/pengupop/metadata.xml
new file mode 100644
index 000000000000..7c730d47817a
--- /dev/null
+++ b/games-arcade/pengupop/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/games-arcade/pengupop/pengupop-2.2.5-r1.ebuild b/games-arcade/pengupop/pengupop-2.2.5-r1.ebuild
new file mode 100644
index 000000000000..8f00e24cbe4d
--- /dev/null
+++ b/games-arcade/pengupop/pengupop-2.2.5-r1.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop
+
+DESCRIPTION="Networked Puzzle Bubble clone"
+HOMEPAGE="http://freshmeat.net/projects/pengupop"
+SRC_URI="mirror://gentoo/${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ virtual/zlib:="
+DEPEND="${RDEPEND}"
+
+src_compile() {
+ emake LIBS=-lm #497196
+}
+
+src_install() {
+ default
+
+ doicon pengupop.png
+ make_desktop_entry ${PN} Pengupop
+}
diff --git a/games-arcade/pengupop/pengupop-2.2.5-r2.ebuild b/games-arcade/pengupop/pengupop-2.2.5-r2.ebuild
new file mode 100644
index 000000000000..2fda5bcfa7d3
--- /dev/null
+++ b/games-arcade/pengupop/pengupop-2.2.5-r2.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+inherit desktop
+
+DESCRIPTION="Networked Puzzle Bubble clone"
+HOMEPAGE="http://freshmeat.net/projects/pengupop"
+SRC_URI="mirror://gentoo/${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ virtual/zlib:="
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.2.5-clang16-fix.patch
+)
+
+src_compile() {
+ emake LIBS=-lm #497196
+}
+
+src_install() {
+ default
+
+ doicon pengupop.png
+ make_desktop_entry ${PN} Pengupop
+}
diff --git a/games-arcade/performous/Manifest b/games-arcade/performous/Manifest
new file mode 100644
index 000000000000..22298825200d
--- /dev/null
+++ b/games-arcade/performous/Manifest
@@ -0,0 +1,6 @@
+DIST performous-1.3.1_p20251224.tar.gz 51784544 BLAKE2B c59cd22554ef00cd03a8f1d22b861783ec2162baba227331b0154cb34a46fc4c0c6c1c6ada0717d025d8b8cdeae007fb59658dc3be6b1d100e4ab65f60d36e09 SHA512 1b5f31da5d3e8daf365faeaf5f202546fe91cc5341fa3e125905cb3051f2cc29c0e03fae671fed422c54e7095ecd9eebdebaad5a9b95c3644551b87cb9416544
+DIST performous-ced-28f46c18c60b851773b0ff61f3ce416fb09adcf3.tar.gz 221317 BLAKE2B 979063d1d6a355194d800f09211a0951be154f2b72960cd5fe450e6d82f6474fb29ecde0ad76df25a4075225b0ccf28e3735ca4f6c506873fbc4180f814a3cb3 SHA512 abec9d1d61a1ed2b779cf37317e8e4ff9095927480f69e165e74558e2b48d46e722d7b1d7ecc2ada515a843862faea6a849306ac12341fef639e2111feeaa489
+DIST ultrastar-songs-jc-1.zip 242698201 BLAKE2B 39c37160c1ce305252c7b94910aae4ed930d6762716b985f35d64b502bcb8c0310ff830384a652bb1b8a72dea5dd08eebbfd89ae047861bd88e2fc983a863d84 SHA512 2f1b8416990c39617269cd6bb7271abdd4ebae65a9bac3dbb3f37cca26876bb7c79460a37597943a10a2d8bfcb5d2d9e2bf24084fe517a418e69f5c6111f6aea
+DIST ultrastar-songs-libre-3.zip 5289866 BLAKE2B 2c3fc640ad808b12987e9b50510df644ab8dd1ae41a4b9e5056950c7aa1823678a4b568a60a260b93a4bdf06f199fac1b99bd22e4e39301bf34f337c08d68b69 SHA512 820e3637a7b778c92ed1a8b925802134fa2146879b3e03e88cd412de5414635c90fe256dfaf984cfa3e8b07b7da8531dc3061b7c4e1bb4422127b469b2345e66
+DIST ultrastar-songs-restricted-3.zip 10242651 BLAKE2B de923f72bdd3081f2870457fd734ae2f8c11a84a74344af165aa5c6cf7b812c98fd53b3ab18ac9ac51f488fbf3fe274289205724c9f8547a31245536bea3c6b1 SHA512 70b987fec3705d6610625c1f30a7ff683a51bb6b7ee3174609c80dc31c1bccdb23dcb2c6ae8154e1b1d9ef115b914e27e73925878a3c5460b997fdde813456b8
+DIST ultrastar-songs-shearer-1.zip 50411551 BLAKE2B b91896197b6750dce6998ad309a9aca42aaf11b48c92bd1c30a67befcaf4ac64b6c5207f492e0f8588b986033d297a37bc8c9e505baea809591aa3255034fed4 SHA512 add9df22b78967fd6f19699e8569f976423e931a32ea7a62cfec2f94470b9120f05832560215a000ecec8dd65508b057fac8ac90efd3a768ed74ddced186a73b
diff --git a/games-arcade/performous/files/performous-1.3.1-boost_1.89.patch b/games-arcade/performous/files/performous-1.3.1-boost_1.89.patch
new file mode 100644
index 000000000000..d71d50351012
--- /dev/null
+++ b/games-arcade/performous/files/performous-1.3.1-boost_1.89.patch
@@ -0,0 +1,13 @@
+See PR pending https://github.com/performous/performous/pull/1105.patch
+fix boost_1.89
+--- a/testing/CMakeLists.txt
++++ b/testing/CMakeLists.txt
+@@ -50,7 +50,7 @@ if(GTest_FOUND)
+
+ add_executable(performous_test ${SOURCES})
+
+- find_package(Boost 1.55 REQUIRED COMPONENTS program_options iostreams system locale)
++ find_package(Boost 1.69 REQUIRED COMPONENTS program_options iostreams locale)
+ target_link_libraries(performous_test PRIVATE ${Boost_LIBRARIES})
+
+ find_package(fmt 8.1 REQUIRED CONFIG)
diff --git a/games-arcade/performous/files/performous-1.3.1-cblas.patch b/games-arcade/performous/files/performous-1.3.1-cblas.patch
new file mode 100644
index 000000000000..23f2b0c2a1a2
--- /dev/null
+++ b/games-arcade/performous/files/performous-1.3.1-cblas.patch
@@ -0,0 +1,22 @@
+Use cblas implementation instead of restricting openblas
+--- a/cmake/Modules/FindAubio.cmake
++++ b/cmake/Modules/FindAubio.cmake
+@@ -4,17 +4,9 @@ include(LibFetchMacros)
+ set(Aubio_GIT_VERSION "master")
+
+ #set(BLA_VENDOR OpenBLAS)
+-set(BLA_PKGCONFIG_BLAS openblas)
++set(BLA_PKGCONFIG_BLAS cblas)
+ find_package(BLAS REQUIRED)
+
+-# also Accelerate.framework for mac
+-
+-if (NOT APPLE AND NOT BLAS_LIBRARIES MATCHES "openblas")
+- message(FATAL_ERROR "BLAS vendor is not OpenBLAS. Found: ${BLAS_LIBRARIES}")
+-elseif (APPLE AND NOT BLAS_LIBRARIES MATCHES "Accelerate.framework")
+- message(FATAL_ERROR "BLAS vendor is not Accelerate.framework. Found: ${BLAS_LIBRARIES}")
+-endif()
+-
+ if(SELF_BUILT_AUBIO STREQUAL "ALWAYS")
+ message(STATUS "aubio forced to build from source")
+ libfetch_git_pkg(Aubio
diff --git a/games-arcade/performous/files/performous-1.3.1-uncompressed_docs.patch b/games-arcade/performous/files/performous-1.3.1-uncompressed_docs.patch
new file mode 100644
index 000000000000..89b66e2b1617
--- /dev/null
+++ b/games-arcade/performous/files/performous-1.3.1-uncompressed_docs.patch
@@ -0,0 +1,53 @@
+don't compress manpages
+fix mandir for man.6
+--- a/docs/man/CMakeLists.txt
++++ b/docs/man/CMakeLists.txt
+@@ -1,24 +1,20 @@
+ find_program(HELP2MAN help2man DOC "Location of the help2man program")
+-find_program(GZIP gzip DOC "Location of the gzip program")
+ mark_as_advanced(HELP2MAN)
+-mark_as_advanced(GZIP)
+-if(HELP2MAN AND GZIP)
+- set(MANFILE ${CMAKE_CURRENT_BINARY_DIR}/performous.6.gz)
++if(HELP2MAN)
++ set(MANFILE ${CMAKE_CURRENT_BINARY_DIR}/performous.6)
+ set(H2MFILE ${CMAKE_CURRENT_SOURCE_DIR}/performous.h2m)
+ add_custom_command(
+ OUTPUT ${MANFILE}
+- COMMAND ${HELP2MAN} "$<TARGET_FILE:performous>" -s 6 -i ${H2MFILE} -N | ${GZIP} > ${MANFILE}
++ COMMAND ${HELP2MAN} "$<TARGET_FILE:performous>" -s 6 -i ${H2MFILE} -N > ${MANFILE}
+ MAIN_DEPENDENCY ${H2MFILE}
+ DEPENDS performous
+ COMMENT "Building Performous man page"
+ VERBATIM
+ )
+ add_custom_target(manpage ALL DEPENDS ${MANFILE})
+- install(FILES ${MANFILE} TYPE MAN)
+-else(HELP2MAN AND GZIP)
+- message("WARNING: One of the following is missing: help2man, gzip; performous man page will not be generated")
+-endif(HELP2MAN AND GZIP)
+-if(ENABLE_TOOLS AND GZIP)
++ install(FILES ${MANFILE} DESTINATION share/man/man6)
++endif(HELP2MAN)
++if(ENABLE_TOOLS)
+ set(TOOLS
+ "ss_pak_extract" "ss_extract" "ss_cover_conv"
+ "ss_adpcm_decode" "ss_ipu_conv" "ss_chc_decode"
+@@ -26,15 +22,7 @@ if(ENABLE_TOOLS AND GZIP)
+ set(MAN_SECTION "1")
+ foreach(TOOL ${TOOLS})
+ set(TOOL_MANFILE ${CMAKE_CURRENT_SOURCE_DIR}/${TOOL}.${MAN_SECTION})
+- set(TOOL_MANFILE_GZ ${CMAKE_CURRENT_BINARY_DIR}/${TOOL}.${MAN_SECTION}.gz)
+- add_custom_command(
+- OUTPUT ${TOOL_MANFILE_GZ}
+- COMMAND ${GZIP} -c ${TOOL_MANFILE} > ${TOOL_MANFILE_GZ}
+- MAIN_DEPENDENCY ${TOOL_MANFILE}
+- COMMENT "Building ${TOOL} man page"
+- VERBATIM
+- )
+ add_custom_target(${TOOL}.${MAN_SECTION} ALL DEPENDS ${TOOL_MANFILE_GZ})
+- install(FILES ${TOOL_MANFILE_GZ} DESTINATION share/man/man${MAN_SECTION})
++ install(FILES ${TOOL_MANFILE} DESTINATION share/man/man${MAN_SECTION})
+ endforeach(TOOL)
+-endif(ENABLE_TOOLS AND GZIP)
++endif(ENABLE_TOOLS)
diff --git a/games-arcade/performous/metadata.xml b/games-arcade/performous/metadata.xml
new file mode 100644
index 000000000000..b6be9a656e3d
--- /dev/null
+++ b/games-arcade/performous/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ Performous is an open-source rhythm/performance platform that contains singing, guitar/bass playing, drumming and dancing all in one game.
+ </longdescription>
+ <use>
+ <flag name="midi">Enable MIDI I/O support</flag>
+ <flag name="songs">Install a few demo songs</flag>
+ <flag name="webcam">Enable Webcam support</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">performous</remote-id>
+ <remote-id type="github">performous/performous</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/performous/performous-1.3.1_p20251224.ebuild b/games-arcade/performous/performous-1.3.1_p20251224.ebuild
new file mode 100644
index 000000000000..a06a37dd0401
--- /dev/null
+++ b/games-arcade/performous/performous-1.3.1_p20251224.ebuild
@@ -0,0 +1,121 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake xdg
+
+HASH_CED="28f46c18c60b851773b0ff61f3ce416fb09adcf3"
+HASH_PERFORMOUS="712c16daba6a6361a2feb1fdfd61b4fcdc581c8e"
+
+DESCRIPTION="SingStar GPL clone"
+HOMEPAGE="https://performous.org/"
+SRC_URI="
+ https://github.com/performous/performous/archive/${HASH_PERFORMOUS}.tar.gz
+ -> ${P}.tar.gz
+ https://github.com/performous/compact_enc_det/archive/${HASH_CED}.tar.gz
+ -> ${PN}-ced-${HASH_CED}.tar.gz
+ songs? (
+ https://downloads.sourceforge.net/project/performous/ultrastar-songs-jc/1/ultrastar-songs-jc-1.zip
+ https://downloads.sourceforge.net/project/performous/ultrastar-songs-libre/3/ultrastar-songs-libre-3.zip
+ https://downloads.sourceforge.net/project/performous/ultrastar-songs-restricted/3/ultrastar-songs-restricted-3.zip
+ https://downloads.sourceforge.net/project/performous/ultrastar-songs-shearer/1/ultrastar-songs-shearer-1.zip
+ )
+"
+S="${WORKDIR}/${PN}-${HASH_PERFORMOUS}"
+
+LICENSE="
+ GPL-2
+ Apache-2.0 OFL-1.1
+ songs? ( CC-BY-NC-SA-2.5 CC-BY-NC-ND-2.5 )
+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="midi songs test webcam"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-cpp/libxmlpp:5.0
+ dev-libs/boost:=[nls]
+ dev-libs/glib:2
+ dev-libs/icu:=
+ dev-libs/libfmt:=
+ gnome-base/librsvg:2
+ media-libs/aubio:=[blas,fftw]
+ media-libs/fontconfig:1.0
+ media-libs/glm
+ media-libs/libepoxy
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ media-libs/libsdl2[joystick,opengl,video]
+ media-libs/libwebp:=
+ media-libs/portaudio[cxx]
+ media-video/ffmpeg:=
+ virtual/zlib:=
+ virtual/libintl
+ x11-libs/cairo
+ x11-libs/pango
+ midi? ( media-libs/portmidi )
+ webcam? ( media-libs/opencv:= )
+"
+DEPEND="
+ ${RDEPEND}
+ dev-cpp/nlohmann_json
+ dev-libs/spdlog
+ test? ( dev-cpp/gtest )
+"
+BDEPEND="
+ sys-apps/help2man
+ sys-devel/gettext
+ virtual/pkgconfig
+ songs? ( app-arch/unzip )
+"
+
+PATCHES=(
+ # avoid compressed manpages (gzip)
+ "${FILESDIR}"/${PN}-1.3.1-uncompressed_docs.patch
+ # use cblas implementation instead of restricting to openblas
+ "${FILESDIR}"/${PN}-1.3.1-cblas.patch
+ # PR pending https://github.com/performous/performous/pull/1105.patch
+ "${FILESDIR}"/${PN}-1.3.1-boost_1.89.patch
+)
+
+src_configure() {
+ local mycmakeargs=(
+ -DPERFORMOUS_VERSION=${PV}
+ -DSHARE_INSTALL="${EPREFIX}"/usr/share/${PN}
+ # it needs ON, not yes or something else
+ -DBUILD_TESTS=$(usex test ON OFF)
+
+ -DENABLE_MIDI=$(usex midi)
+ -DENABLE_TOOLS=ON # no dep
+ -DENABLE_WEBCAM=$(usex webcam)
+
+ # avoid 3rd party libs
+ -DSELF_BUILT_AUBIO=NEVER
+ -DSELF_BUILT_JSON=NEVER
+ -DSELF_BUILT_SPDLOG=NEVER
+
+ # compact_enc_det is not in tree
+ -DSELF_BUILT_CED=ALWAYS
+ -DFETCHCONTENT_SOURCE_DIR_CED-SRC:PATH="${WORKDIR}/compact_enc_det-${HASH_CED}"
+
+ # webserver needs unpackaged cpprestsdk which is not recommended for
+ # use by its upstream (dead), may consider adding only if requested
+ -DENABLE_WEBSERVER=no
+ )
+ cmake_src_configure
+}
+
+src_test() {
+ # avoid overflow failures
+ cmake_src_test -j1
+}
+
+src_install() {
+ local DOCS=( README.md docs/{Authors,instruments}.txt )
+ cmake_src_install
+
+ insinto /usr/share/${PN}
+ use songs && doins -r "${WORKDIR}"/songs
+}
diff --git a/games-arcade/primateplunge/Manifest b/games-arcade/primateplunge/Manifest
new file mode 100644
index 000000000000..9da79462cfa8
--- /dev/null
+++ b/games-arcade/primateplunge/Manifest
@@ -0,0 +1 @@
+DIST primateplunge-1.1.tar.gz 5245884 BLAKE2B a1496eea4c99dd52f301aa50b6831ce6efffa78e45b97be13e93f64d4c4dd814b87fac17612fb82f994ee125375c75a47d3968b379c7622d78c76cadf5567e3b SHA512 bdc6be0faf28375941e67895c498f59a529521ba46d6b23ea94d3b16ead1541738d7aa5cfa5fa5cf269e7e474ca9002180e7b0663e1b4531300d21564df41b8c
diff --git a/games-arcade/primateplunge/files/primateplunge-1.1-AC_SUBST.patch b/games-arcade/primateplunge/files/primateplunge-1.1-AC_SUBST.patch
new file mode 100644
index 000000000000..562f62f98585
--- /dev/null
+++ b/games-arcade/primateplunge/files/primateplunge-1.1-AC_SUBST.patch
@@ -0,0 +1,26 @@
+--- a/configure.ac.orig
++++ b/configure.ac
+@@ -7,12 +7,12 @@
+
+ AC_INIT([primateplunge], [1.1], [primateplunge@aelius.com])
+
+-AC_CONFIG_SRCDIR( src/game.c )
++AC_CONFIG_SRCDIR(src/game.c)
+ AC_CANONICAL_SYSTEM
+
+ dnl Version 1.7 of automake is recommended
+-AM_INIT_AUTOMAKE( 1.7 )
+-AM_CONFIG_HEADER( src/config.h )
++AM_INIT_AUTOMAKE(1.7)
++AM_CONFIG_HEADER(src/config.h)
+
+
+
+@@ -29,7 +29,6 @@
+ [ PREFSFILE="~/.primateplunge" ]
+ )
+
+-AC_SUBST( GAMEDATADIR )
+ AC_DEFINE_DIR( GAMEDATADIR, GAMEDATADIR, [Location of game resource files] )
+ AC_DEFINE_UNQUOTED( PREFSFILE, "$PREFSFILE", [Location of preferences file] )
+
diff --git a/games-arcade/primateplunge/files/primateplunge-1.1-fno-common.patch b/games-arcade/primateplunge/files/primateplunge-1.1-fno-common.patch
new file mode 100644
index 000000000000..7905b0372e72
--- /dev/null
+++ b/games-arcade/primateplunge/files/primateplunge-1.1-fno-common.patch
@@ -0,0 +1,11 @@
+--- a/src/game.h
++++ b/src/game.h
+@@ -125,7 +125,7 @@
+
+
+ /* Glabals in main.c */
+-SDL_Surface *mainScreen;
++extern SDL_Surface *mainScreen;
+
+ /* Globals in game.c */
+ extern world* currentWorld;
diff --git a/games-arcade/primateplunge/metadata.xml b/games-arcade/primateplunge/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/primateplunge/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/primateplunge/primateplunge-1.1-r2.ebuild b/games-arcade/primateplunge/primateplunge-1.1-r2.ebuild
new file mode 100644
index 000000000000..b14ba0d459b0
--- /dev/null
+++ b/games-arcade/primateplunge/primateplunge-1.1-r2.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop
+
+DESCRIPTION="Help poor Monkey navigate his way down through treacherous areas"
+HOMEPAGE="https://www.aelius.com/primateplunge/"
+SRC_URI="https://www.aelius.com/${PN}/${P}.tar.gz"
+
+LICENSE="Primate-Plunge"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+RESTRICT="mirror bindist" #465850
+
+DEPEND="
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-mixer"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-AC_SUBST.patch
+ "${FILESDIR}"/${P}-fno-common.patch
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_install() {
+ default
+ dodoc TIPS
+
+ newicon graphics/idle.bmp primateplunge.bmp
+ make_desktop_entry primateplunge "Primate Plunge" /usr/share/pixmaps/primateplunge.bmp
+}
diff --git a/games-arcade/retrobattle/Manifest b/games-arcade/retrobattle/Manifest
new file mode 100644
index 000000000000..682eb39eff2d
--- /dev/null
+++ b/games-arcade/retrobattle/Manifest
@@ -0,0 +1 @@
+DIST retrobattle-src-1.0.0.tar.bz2 4007959 BLAKE2B efe20ccfc813b5c17b49694ab01a1a341fa2bf2bb45a0aaca99eb5bb1a814f12bfa6354308c0d9cc9937a159a20568312ddead0748b75803d97f9e9d0d86c99a SHA512 2d006fc9a62e57d7fb3c0f0e535a5c702204b6341566064d7683526923839e8a43e14b308e76a8a1f6794f7c682f6344975956877f80bbcbc33ee61cd640ff9e
diff --git a/games-arcade/retrobattle/files/retrobattle-1.0.0-build.patch b/games-arcade/retrobattle/files/retrobattle-1.0.0-build.patch
new file mode 100644
index 000000000000..3673ef01e17f
--- /dev/null
+++ b/games-arcade/retrobattle/files/retrobattle-1.0.0-build.patch
@@ -0,0 +1,30 @@
+Author: hasufell <hasufell@gentoo.org>
+Date: Sat Aug 4 12:15:53 2012 +0200
+
+ respect CXX, CFLAGS and LDFLAGS
+
+--- src/Makefile
++++ src/Makefile
+@@ -1,10 +1,10 @@
+-CFLAGS = `sdl-config --cflags` -g -Wall -I. -DENABLE_BINRELOC
+-CPPFLAGS = $(CFLAGS)
++CXXFLAGS += $(shell sdl-config --cflags) -I.
++CPPFLAGS += -DENABLE_BINRELOC
+
+ # Uncomment the first LIBS line and comment out the other LIBS line to
+ # compile without SDL_Mixer
+ #LIBS = `sdl-config --libs`
+-LIBS = `sdl-config --libs` -lSDL_mixer
++LIBS = $(shell sdl-config --libs) -lSDL_mixer
+
+ RETROINSTALLDIR ?= /opt
+
+@@ -25,7 +25,7 @@
+
+
+ retrobattle: $(RETRO)
+- g++ -o $@ $^ $(LIBS)
++ $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
+ mv $@ ..
+
+ clean:
diff --git a/games-arcade/retrobattle/files/retrobattle-1.0.0-gcc6.patch b/games-arcade/retrobattle/files/retrobattle-1.0.0-gcc6.patch
new file mode 100644
index 000000000000..62af1f4718ef
--- /dev/null
+++ b/games-arcade/retrobattle/files/retrobattle-1.0.0-gcc6.patch
@@ -0,0 +1,22 @@
+--- src/GameLogic.h
++++ src/GameLogic.h
+@@ -52,8 +52,8 @@
+ /* Fixed interval time-based animation */
+ static const int maximumFrameRate = 60;
+ static const int minimumFrameRate = 15;
+- static const float updateInterval = 1.0 / maximumFrameRate;
+- static const float maxCyclesPerFrame = maximumFrameRate / minimumFrameRate;
++ static const float updateInterval;
++ static const float maxCyclesPerFrame;
+
+ float lastFrameTime;
+ float cyclesLeftOver;
+--- src/GameLogic.cc
++++ src/GameLogic.cc
+@@ -206,3 +206,6 @@
+ {
+ sprintf(buf, "%s/data/gfx/%s", datadir, file);
+ }
++
++const float GameLogic::updateInterval = 1.0 / maximumFrameRate;
++const float GameLogic::maxCyclesPerFrame = maximumFrameRate / minimumFrameRate;
diff --git a/games-arcade/retrobattle/files/retrobattle-1.0.0-sound.patch b/games-arcade/retrobattle/files/retrobattle-1.0.0-sound.patch
new file mode 100644
index 000000000000..591ce66e9f69
--- /dev/null
+++ b/games-arcade/retrobattle/files/retrobattle-1.0.0-sound.patch
@@ -0,0 +1,17 @@
+From: Julian Ospald <hasufell@gentoo.org>
+Date: Sun Aug 5 16:22:22 UTC 2012
+Subject: sound
+
+resolves crackling background music
+
+--- src/SoundManager.cc
++++ src/SoundManager.cc
+@@ -25,7 +25,7 @@
+ SoundManager::SoundManager(char *datadir)
+ {
+ #ifndef NO_SDL_MIXER
+- if(Mix_OpenAudio(22050, AUDIO_S16SYS, 2, 1024))
++ if(Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 1024))
+ {
+ printf("SDL_mixer says: %s\n", Mix_GetError());
+ }
diff --git a/games-arcade/retrobattle/metadata.xml b/games-arcade/retrobattle/metadata.xml
new file mode 100644
index 000000000000..7c730d47817a
--- /dev/null
+++ b/games-arcade/retrobattle/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/games-arcade/retrobattle/retrobattle-1.0.0-r1.ebuild b/games-arcade/retrobattle/retrobattle-1.0.0-r1.ebuild
new file mode 100644
index 000000000000..7bbb9fa2dc2b
--- /dev/null
+++ b/games-arcade/retrobattle/retrobattle-1.0.0-r1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop wrapper
+
+MY_P="${PN}-src-${PV}"
+DESCRIPTION="A NES-like platform arcade game"
+HOMEPAGE="http://remar.se/andreas/retrobattle/"
+SRC_URI="http://remar.se/andreas/retrobattle/files/${MY_P}.tar.bz2"
+S="${WORKDIR}/${MY_P}/src"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+# test is incomplete
+RESTRICT="test"
+
+DEPEND="
+ media-libs/libsdl[X,sound,video]
+ media-libs/sdl-mixer[wav]
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-{build,sound,gcc6}.patch
+)
+
+src_install() {
+ insinto /usr/share/${PN}
+ doins -r "${WORKDIR}"/${MY_P}/data
+
+ newbin "${WORKDIR}"/${MY_P}/${PN} ${PN}.bin
+ make_wrapper ${PN} "${PN}.bin \"/usr/share/${PN}\""
+
+ make_desktop_entry ${PN}
+ dodoc "${WORKDIR}"/${MY_P}/{manual.txt,README}
+}
diff --git a/games-arcade/ri-li/Manifest b/games-arcade/ri-li/Manifest
new file mode 100644
index 000000000000..3edfec9a12d5
--- /dev/null
+++ b/games-arcade/ri-li/Manifest
@@ -0,0 +1 @@
+DIST Ri-li-2.0.1.tar.bz2 13745398 BLAKE2B 29fdc812387c5fc3d9868ea137b556e08c0b6239ed4cebc8ed92f2530005191f2916dd143d8b417c2654ec902409307ca7f486d17374eabcac555de3714f888b SHA512 6d56c00dae90b50bca81ca739c628335b4ad7642c19a3b3c28630ddb91bd847ca6d383cace66ef436a1dda7497c9d3939de2626071bae40d423b2444fed97863
diff --git a/games-arcade/ri-li/files/ri-li-2.0.1-gcc11.patch b/games-arcade/ri-li/files/ri-li-2.0.1-gcc11.patch
new file mode 100644
index 000000000000..e465978789e1
--- /dev/null
+++ b/games-arcade/ri-li/files/ri-li-2.0.1-gcc11.patch
@@ -0,0 +1,47 @@
+https://bugs.gentoo.org/811501
+https://sourceforge.net/p/ri-li/bugs/2/
+
+From 317a80608a061a0acdf196a6c148bfe63b1eaad5 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyich@gmail.com>
+Date: Thu, 21 Apr 2022 07:52:46 +0100
+Subject: [PATCH] Fix build on gcc-11
+
+Without the change build fails on ordered comparison on pointers:
+
+tableau.cc:90:9: error: ordered comparison of pointer with integer zero ('unsigned char*' and 'int')
+ 90 | if(Buf<=0) return false;
+ | ~~~^~~
+--- a/src/sprite.cc
++++ b/src/sprite.cc
+@@ -351,7 +351,7 @@ bool Sprite::Load(unsigned char *Buf,long &P)
+ // Fabrique la surface
+ Image[i]=SDL_CreateRGBSurface((Dim[i].bpp-3)*SDL_SRCALPHA,Dim[i].L,Dim[i].H,Dim[i].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[i].bpp-3));
+- if(Image[i]<=NULL) {
++ if(Image[i]==NULL) {
+ std::cerr <<"Impossible de crer une Surface SDL!"<<std::endl;
+ return false;
+ }
+@@ -485,7 +485,7 @@ bool Sprite::Nouveau(int Lx,int Ly)
+ // Fabrique la surface
+ Image[0]=SDL_CreateRGBSurface((Dim[0].bpp-3)*SDL_SRCALPHA,Dim[0].L,Dim[0].H,Dim[0].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[0].bpp-3));
+- if(Image[0]<=NULL) {
++ if(Image[0]==NULL) {
+ std::cerr <<"Impossible de crer une Surface SDL!"<<std::endl;
+ return false;
+ }
+--- a/src/tableau.cc
++++ b/src/tableau.cc
+@@ -87,7 +87,7 @@ bool Tableau::Save(void)
+
+ // Alloue la mmoire
+ Buf=new unsigned char [sizeof(s_Tableau)*N+sizeof(int)+1];
+- if(Buf<=0) return false;
++ if(Buf==NULL) return false;
+
+ // Charge les tableaux
+ Buf[0]=N/256;
+--
+2.35.1
+
diff --git a/games-arcade/ri-li/files/ri-li-2.0.1-gcc43.patch b/games-arcade/ri-li/files/ri-li-2.0.1-gcc43.patch
new file mode 100644
index 000000000000..3782627c83bd
--- /dev/null
+++ b/games-arcade/ri-li/files/ri-li-2.0.1-gcc43.patch
@@ -0,0 +1,291 @@
+--- a/src/audio.cc
++++ b/src/audio.cc
+@@ -22,7 +22,7 @@
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ #include <string.h>
+
+ #include "audio.h"
+@@ -57,7 +57,7 @@
+ char PathFile[512];
+
+ if(Mix_OpenAudio(22050,AUDIO_S16,1,1024)) {
+- cerr <<"Enable to init Sound card ! "<<SDL_GetError()<<endl;
++ std::cerr <<"Enable to init Sound card ! "<<SDL_GetError()<<std::endl;
+ return false;
+ }
+
+--- a/src/ecran.cc
++++ b/src/ecran.cc
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <math.h>
+--- a/src/editeur.cc
++++ b/src/editeur.cc
+@@ -25,7 +25,7 @@
+ #include <windows.h>
+ #endif
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -374,7 +374,7 @@
+
+ // Sauve le niveau
+ if(Niveau.Save()==false) {
+- cerr <<"ERREUR Saving levels!"<<endl;
++ std::cerr <<"ERREUR Saving levels!"<<std::endl;
+ exit(-1);
+ }
+
+--- a/src/jeux.cc
++++ b/src/jeux.cc
+@@ -25,7 +25,7 @@
+ #include <windows.h>
+ #endif
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+--- a/src/loco.cc
++++ b/src/loco.cc
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+--- a/src/main.cc
++++ b/src/main.cc
+@@ -23,7 +23,7 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ #include <string.h>
+ #include <SDL/SDL.h>
+ #include <SDL/SDL_mixer.h>
+@@ -115,7 +115,7 @@
+
+ // Initilise SDL
+ if( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_AUDIO|SDL_INIT_NOPARACHUTE) < 0 ) {
+- cerr <<"Impossible d'initialiser SDL:"<<SDL_GetError()<<endl;
++ std::cerr <<"Impossible d'initialiser SDL:"<<SDL_GetError()<<std::endl;
+ exit(-1);
+ }
+ // Ferme le programme correctement quant quit
+@@ -125,7 +125,7 @@
+ sdlVideoInfo=(SDL_VideoInfo*)SDL_GetVideoInfo();
+
+ if(sdlVideoInfo->vfmt->BitsPerPixel==8) {
+- cerr <<"Impossible d'utiliser 8bits pour la vido !"<<endl;
++ std::cerr <<"Impossible d'utiliser 8bits pour la vido !"<<std::endl;
+ exit(-1);
+ }
+
+@@ -145,7 +145,7 @@
+ sdlVideo=SDL_SetVideoMode(800,600,sdlVideoInfo->vfmt->BitsPerPixel,vOption);
+
+ if(sdlVideo==NULL) {
+- cerr <<"Impossible de passer dans le mode vido 800x600 !"<<endl;
++ std::cerr <<"Impossible de passer dans le mode vido 800x600 !"<<std::endl;
+ exit(-1);
+ }
+ // Change le nom de la fenetre
+--- a/src/menu.cc
++++ b/src/menu.cc
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -92,7 +92,7 @@
+ // Teste la resolution video
+ sdlVideoInfo=(SDL_VideoInfo*)SDL_GetVideoInfo();
+ if(sdlVideoInfo->vfmt->BitsPerPixel==8) {
+- cerr <<"Impossible d'utiliser 8bits pour la vido !"<<endl;
++ std::cerr <<"Impossible d'utiliser 8bits pour la vido !"<<std::endl;
+ exit(-1);
+ }
+
+@@ -112,7 +112,7 @@
+ if(Pref.FullScreen) vOption|=SDL_FULLSCREEN;
+ sdlVideo=SDL_SetVideoMode(800,600,sdlVideoInfo->vfmt->BitsPerPixel,vOption);
+ if(sdlVideo==NULL) {
+- cerr <<"Impossible de passer dans le mode vido 800x600 !"<<endl;
++ std::cerr <<"Impossible de passer dans le mode vido 800x600 !"<<std::endl;
+ exit(-1);
+ }
+
+--- a/src/mouse.cc
++++ b/src/mouse.cc
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include "mouse.h"
+ #include "preference.h"
+--- a/src/sprite.cc
++++ b/src/sprite.cc
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -84,7 +84,7 @@
+ strcpy(PathFile,Langue[Pref.Langue]);
+ GetPath(PathFile);
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver "<<Langue[Pref.Langue]<<endl;
++ std::cerr <<"Impossible de trouver "<<Langue[Pref.Langue]<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -128,7 +128,7 @@
+ // *** Charge le fichier des langues ***
+ // *************************************
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver 'language.dat'"<<endl;
++ std::cerr <<"Impossible de trouver 'language.dat'"<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -163,7 +163,7 @@
+ strcpy(PathFile,"sprites.dat");
+ GetPath(PathFile);
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver 'sprites.dat'"<<endl;
++ std::cerr <<"Impossible de trouver 'sprites.dat'"<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -352,7 +352,7 @@
+ Image[i]=SDL_CreateRGBSurface((Dim[i].bpp-3)*SDL_SRCALPHA,Dim[i].L,Dim[i].H,Dim[i].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[i].bpp-3));
+ if(Image[i]<=NULL) {
+- cerr <<"Impossible de crer une Surface SDL!"<<endl;
++ std::cerr <<"Impossible de crer une Surface SDL!"<<std::endl;
+ return false;
+ }
+
+@@ -486,7 +486,7 @@
+ Image[0]=SDL_CreateRGBSurface((Dim[0].bpp-3)*SDL_SRCALPHA,Dim[0].L,Dim[0].H,Dim[0].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[0].bpp-3));
+ if(Image[0]<=NULL) {
+- cerr <<"Impossible de crer une Surface SDL!"<<endl;
++ std::cerr <<"Impossible de crer une Surface SDL!"<<std::endl;
+ return false;
+ }
+ return true;
+--- a/src/tableau.cc
++++ b/src/tableau.cc
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include "preference.h"
+--- a/src/utils.cc
++++ b/src/utils.cc
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -77,7 +77,7 @@
+
+ file=fopen(Path,"r");
+ if(!file) {
+- cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<std::endl;
+ perror("fopen");
+ return -1;
+ }
+@@ -93,7 +93,7 @@
+
+ Buf=new unsigned char [L+1];
+ if(Buf==NULL) {
+- cerr <<"ERREUR: Memoire insuffisante!"<<endl;
++ std::cerr <<"ERREUR: Memoire insuffisante!"<<std::endl;
+ fclose(file);
+ return -1;
+ }
+@@ -104,7 +104,7 @@
+ while(Compt>1024) {
+ AfficheChargeur();
+ if( fread(Po,1,1024,file) != 1024 ) {
+- cerr <<"ERREUR de lecture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR de lecture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fread");
+ fclose(file);
+ delete [] Buf;
+@@ -169,14 +169,14 @@
+
+ file=fopen(Path,"w");
+ if(!file) {
+- cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<std::endl;
+ perror("fopen");
+ return false;
+ }
+
+ while(L>512) {
+ if( fwrite(Buf,1,512,file) != 512 ) {
+- cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fwrite");
+ fclose(file);
+ return false;
+@@ -187,7 +187,7 @@
+
+ if(L>0) {
+ if( fwrite(Buf,1,(size_t)L,file) != (size_t)L ) {
+- cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fwrite");
+ fclose(file);
+ return false;
+@@ -250,7 +250,7 @@
+ sprintf(Path,"/usr/share/games/Ri-li/%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Provi<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Provi<<std::endl;
+ exit(-1);
+ }
+ #endif
diff --git a/games-arcade/ri-li/metadata.xml b/games-arcade/ri-li/metadata.xml
new file mode 100644
index 000000000000..aa76f93cb015
--- /dev/null
+++ b/games-arcade/ri-li/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">ri-li</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/ri-li/ri-li-2.0.1-r2.ebuild b/games-arcade/ri-li/ri-li-2.0.1-r2.ebuild
new file mode 100644
index 000000000000..7cb57cba30ac
--- /dev/null
+++ b/games-arcade/ri-li/ri-li-2.0.1-r2.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop
+
+DESCRIPTION="Drive a toy wood engine and collect all the coaches"
+HOMEPAGE="https://ri-li.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/ri-li/Ri-li-${PV}.tar.bz2"
+S="${WORKDIR}/Ri-li-${PV}"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-mixer[mod]
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.0.1-gcc43.patch
+ "${FILESDIR}"/${PN}-2.0.1-gcc11.patch
+)
+
+src_prepare() {
+ default
+
+ mv configure.{in,ac} || die
+ rm aclocal.m4 || die
+ eautoreconf
+}
+
+src_install() {
+ default
+
+ rm -f "${ED}/usr/share/Ri-li/"*ebuild || die
+
+ newicon data/Ri-li-icon-48x48.png ${PN}.png
+ make_desktop_entry Ri_li Ri-li
+}
diff --git a/games-arcade/rockdodger/Manifest b/games-arcade/rockdodger/Manifest
new file mode 100644
index 000000000000..6cdc22adfe81
--- /dev/null
+++ b/games-arcade/rockdodger/Manifest
@@ -0,0 +1 @@
+DIST rockdodger-1.1.4.tar.gz 1026184 BLAKE2B 08885155508adb878908d3cf9201c98cffded37dea051cb9a668ddb63891a19369648964f3f19d94b72a08626d3d1dea73686b190898d8b59c3b91805e08677c SHA512 542a8b5b1a9dc7fc8e61d3183c14c3f45952614f2e00f71383dfd42ddcf275cbc14520797d4555f2f19f354a4f1819d8527a587598c9dbc06a75b21643a8b019
diff --git a/games-arcade/rockdodger/metadata.xml b/games-arcade/rockdodger/metadata.xml
new file mode 100644
index 000000000000..1748f81ebd9f
--- /dev/null
+++ b/games-arcade/rockdodger/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">spacerocks</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/rockdodger/rockdodger-1.1.4.ebuild b/games-arcade/rockdodger/rockdodger-1.1.4.ebuild
new file mode 100644
index 000000000000..b752d56a2e11
--- /dev/null
+++ b/games-arcade/rockdodger/rockdodger-1.1.4.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Dodge the rocks for as long as possible until you die"
+HOMEPAGE="https://bitbucket.org/rpkrawczyk/rockdodger"
+SRC_URI="https://bitbucket.org/rpkrawczyk/rockdodger/downloads/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ acct-group/gamestat
+ media-libs/libsdl[joystick,sound,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer[mod,wav]"
+DEPEND="${RDEPEND}"
+
+src_compile() {
+ tc-export CC
+
+ local emakeargs=(
+ prefix="${EPREFIX}"/usr
+ gamesdir="${EPREFIX}"/var/games/${PN}
+ MOREOPTS="${CFLAGS} ${CPPFLAGS}"
+ )
+ emake "${emakeargs[@]}"
+}
+
+src_install() {
+ dobin ${PN}
+ doman ${PN}.6
+
+ insinto /usr/share/${PN}
+ doins -r data/.
+
+ newicon ${PN}.icon.64x64.xpm ${PN}.xpm
+ domenu ${PN}.desktop
+
+ dodir /var/games/${PN}
+ touch "${ED}"/var/games/${PN}/${PN}.scores || die
+
+ fowners -R :gamestat /{usr/bin,var/games}/${PN}
+ fperms 660 /var/games/${PN}/${PN}.scores
+ fperms g+s /usr/bin/${PN}
+}
diff --git a/games-arcade/rocksndiamonds/Manifest b/games-arcade/rocksndiamonds/Manifest
new file mode 100644
index 000000000000..2d84a7a11f47
--- /dev/null
+++ b/games-arcade/rocksndiamonds/Manifest
@@ -0,0 +1,29 @@
+DIST Andreas_Buschbeck-1.0.0.zip 18331338 BLAKE2B b6520ab10ce62d4bec804a2a7e1c4908a683f9f3833e5b1d4c64d376eb4225abc38c44a519bed8cbbd3fc928bfdddda17f292b0011805e45a30b84101dad9d1d SHA512 1b47914561aea5b07035cc70f8b1b6d35f0c829d89327713ad644d82225e778a7ffd27f9d421c40dd303f85c9fc0774244dd97d405f5db866ba3d1f8027151e4
+DIST BD2K3-1.0.0.zip 4715324 BLAKE2B 72e25038c41a7a1c29a896459db97954d18731d6980f5096c28ebddb09c0b6d7bdb68a8c56f17d26c71085e4ae883d2ceaad8e95b5525cbf532d18f32ecdd638 SHA512 80f172584d2077a3ade0749790802ef9cecde75283d6b889e7d2fedf9b55fd1fd7f1f1fd5596b17d5b2a542172699a929ea626086e77d28fde11487440c43622
+DIST Better_Together-1.0.0.7z 20496752 BLAKE2B 14b6afaaa3df41f6584089ebee13838fd3f520b803d3d77af3dfaffe78d62805251204a4340c50067f92ea49d83334757b724f89ea5cbe510d8b3f320fa61e74 SHA512 b7311c8f8bf7565142a3111e13c3c5576ae1c1939c6909ab8e162b5b1aeffabda69430c968b1aa270ff1f24edd8f394c6b8c4d6e3fec2f965f290a2b697ccb99
+DIST Boulder_Dash-1.0.5.zip 9436745 BLAKE2B d4339156d523c3a81b1f0148202d536cc3c0875d705c72fb5802917230bafb1ad58a983ab747c92dcc09f4dc3c05a301214d4b10ce2b067ef58a20b3b964cbf7 SHA512 d6e7c5ffd5527273cb8b3fab30450d88f880b77fd4c8a6e38b9a24ce88d3b0c07dfe131785c68bb5ca03a7d349615cf54a76b6db1668f3c0440518a021b7f61d
+DIST Boulder_Dash_Dream-1.0.0.zip 10923437 BLAKE2B 976156c763281b993550a08361c5b6279a471e24568205c0369cc3f57d99e97db84d914a560c909b30fe92b8c8c10931cf6a8a8de4da181edac410a770d922b7 SHA512 f2765f52653b4f9d6c4a6548076281f6749d08c2dfd220345bdc0058b94d51c49ef81acdc87ff71bc1b3f337f3cc6a1d08b9e5a02d6aaeaeac5d894f97ba3d8e
+DIST Contributions-1.2.0.zip 9499312 BLAKE2B a90a84d230ab1032819bc3821871eb027ed83a8e289b01692f80185c42d50429ca8c6928b72b1ae5ea102ba2a0d25cd25391dc53b0cdb37ef4504233292dc2da SHA512 463e629bd4f592e24a82d20f1f249cea9e266a7c370bb5b079add8daa125d1af69a69746b696dd92f89b90e50972c6b2ba007aab87beed4cd980c0c7bdb81920
+DIST Emerald_Mine_Club-3.1.3.7z 45669526 BLAKE2B 8cc44ba75c67bf2b53b042b07b9cf160f42155559137a873676fff773757760c0d5084b6646e2a1127bd4454beb16e4d5a8ec263c7db36cb782cf0655bba3e8d SHA512 bb4eb28515d01b9bc8fd3a542a017091e7e27ab5a043c3fad128f8ea4deb0ec14edbc026cccc28a6c6d998a882e5bcfef9a7dcb59d478459f49b654f7ea6b9be
+DIST Gav.zip 415761 BLAKE2B 6bd7ed2ac67d4b983e10fdae57e8cafb771d04ca0b44b73998e01410b8225ab01285e63d22e34eb75d114e8ab45d67b068919c9760b79011196ecf333e599931 SHA512 3abe2bde64fab1397fa60fd264ad8660d0dc3c8f844b397be0419c64bd43ad112e46a971a8d4cf9915113d0f93150e51ef5c1995c8876584bb230d80ac9cd03a
+DIST RS_MIX_01-needs_rnd_jue.zip 288339 BLAKE2B 08d08e934af95543d2027805d91f5c8b2806c2da74a8cdfed61afe26be5696a832cbac7e7aae30a314a2414b7d5a82b53b8556f7098c6570a54a26d751785347 SHA512 546fc50d089493a41f01895f16a7e96e664a472d61b1f92ebc391006c10142b493a55854d892019b0ff19fe318b4b67f78c137d7e1466c5fa4d49fbb521d7a48
+DIST RS_MIX_01-standalone.zip 17982550 BLAKE2B 829055ec48c5de31b8bb0edc3eb5dc8f60001e1cbfa7cd85706e635b2389fd800d22fbe657ceac64c0e3cc7725dbfef23d518d53df1cc35bf8a2aa25ece7cac6 SHA512 1ea070017f80c47c9eff29b644e30b0ae4d5eb78e11dfef10fd183aad7b8af981af74728883f9d223d63b24361a7c5449a68558d142a0f391d102f14f22ceaa5
+DIST Snake_Bite-1.0.0.zip 6506066 BLAKE2B 852f7815939100f78d6a7ce27df565277f6467cc63c069f77d4e067f0144df092c3b6e73a64d0a9743033d90b20d390761046b253c188fd65873f7b28bf8b451 SHA512 82131cb68c9654cb49ddbb46b0c15f13ce98af4f3b2a46e1cc4f2980eea45a707297c74787f365996321f39a9f7656a9492c3d437e3da0d71a295447c868960e
+DIST Sokoban-1.0.0.zip 295339 BLAKE2B e263e311e58dcc21d11dd10b0fa7af0f871405d932c2e1ea6d580ec58098c6a498202b516cbd3d2f1dd795521b419de61c8c9a195f4b2ea781a35ac645cd9c59 SHA512 b63be5b00c4c0b153bb6fc45fde556c26cd49fa672b279cce2f61b572d9c056d5e10a565530bdf539024d75ffdd38efe68310e98b8f810d9c5dfc17b24ec376b
+DIST Supaplex-2.0.0.zip 13023727 BLAKE2B 0ea4077d66af893e5f42d8857138e4c926c02d6f75642b5a316c4e606d4c3dfb0655c71530a4becfcc6c536727b908122d413fe37cd8f3b094b629f27f31a3d9 SHA512 75641f603499bce062b74657ac1718b7009eed1159504088807ed77600f07b76775d986859e03e2e1bc0693c58850ed94711e1def74eb73a8c92fcc517de5886
+DIST Zelda-1.0.0.zip 2175860 BLAKE2B 8c44e67a0e04a992675c1f14acd07c2537873adc1f38f495dd6b12f45eb67962164664a24128ba3abfd602f59eedf9407be8a45800a5aa2e5086473a9b1b403d SHA512 930235aa784cb8304af811144c1c33cd92f5cfda1e744ea04836e9d817223c09dfcd7be6d4d66a050bd50474f7c3e5547f69c166124df288e596f486eeeb426e
+DIST ZeldaII-1.0.0.zip 11542241 BLAKE2B abe6a8407148478e3ea8a4a9561ffef2a7e193419b65877aeb5844700d6a15d83387140195567029f356a4ead331eff6c6575d074fa522b099f6810519111287 SHA512 9e7fb213251e790b2415745c5a4de671902439abff0d90b8cbb9cfaf90b01b7bb124f8c95360516f93100ccec66d2cddbcefb7a05dfb395b74854568c74c186e
+DIST es_b_v1-2.zip 302152 BLAKE2B 2da45a024f8d71d2ce1cad07ecdf7f066c48f6aeec0d79cd49270ae7e48d26e087829972335b77ec5b4b7315c7f30ccf54efd9f42ad44a4e3e9cb55d73d7b2e4 SHA512 93736f0c2187a4a0c619889ee081e4c3ba066a08d1dd765d393a3866161bb987137c46faff2d629880540f5ec9e148453db61c8cf160b25556e95af2bb7cec81
+DIST ese_v1-1.zip 318685 BLAKE2B abf479f873112ef7f76087155e168e0100923545f40ea7912653eec55f07b38b5d6a18de57d1ecd720bc40d0438051a7f1b0eb2533bf8fa81d8cec402867941b SHA512 fe3b5f537f76d37be95ace2ee158b2f917165099cb1d6805bb05e19fa9f0c8eae68e5c41b5db81298629593814692693e7d2bc2a87415980f28cc3065409e943
+DIST rnd-contrib-1.0.0.tar.gz 3389242 BLAKE2B bcdc926a7164788c8c640bf1aced57fbe9d71d99332751d2c4e30460427cb09a30ee3e45f2e6b6a1d83cce9bdf4c92ab187a2385a57bdc2a893735bd19c64b9b SHA512 8bd82f9c34e6e2d2b7ea22fc5899e72a64587469bfb1336d0d33e6ee2bcd04b3b6adca958861b0e29e18e8dac74651c642126511cacb247072e367783a5c6a08
+DIST rnd_jue-v8.tar.bz2 17244645 BLAKE2B 92d0cf646296b065c9ebe54d8d5ecb831eeb49748e47b6d2f019c2fd359d1e6ef5d3cd0472f1247e5c41b6b5aa7154b9e3baae000defc83b24470163a9dfc416 SHA512 cbff4cd16c812d77fe8446da4016d8f75dfa8675298a745062ff53a7783a39a59cffd886fedf1097023e72e111f10ddd56f280a109058a1a8ee069d664d2c59c
+DIST rockslevels-dx-1.0.tar.gz 211151 BLAKE2B 637a600f9197925d82e7ef344c90f04e8508c6b114fd07ad00977d91a856ff85dc29207e5f22c659382ee0759f8607e9dc8ad0c0de3826d57b74d494320b57ad SHA512 2e1bc4484a76bf638e8ce285972b20b6377e0483abb2475e2343d48de1f84ee102f430049d685b89bc1087e0f20b9b6e29370f8e6cae66b480d3650be9991f44
+DIST rockslevels-emc-1.0.tar.gz 3824268 BLAKE2B 0feadd5d9c6225c8574576281d07e14ff98fc9a33c67d3fa5083219ce39daaa1902a5ed652b5379fa4e58ee2428a8a452d66520571206143fd0fcd54f71b977a SHA512 9abad888fa00bc305444367c5ab8ffdad95eaca22613573e44d5ecd93b1a9a1cbc931497c064002d90fd3174c4661d0b009ede7746b2fe8da0a00072303a1301
+DIST rockslevels-sp-1.0.tar.gz 373564 BLAKE2B 3f724ea55bbdaae80a35d6a9f5d8751a9228862fbe1ba45419343b1968510e10d3c82cc01844e35bc35561e65df3bc7e5ec2a0b807e1f56359dc7dccc16e3cb0 SHA512 2d44e9238a72846b9d4fbab90288aa3b23af4957ffe0d42d95c523fd22f3587572864b3fc0b277894d2f3f56d6eff52ea009e5b2d59aebc34163a1067662d729
+DIST rocksndiamonds-4.4.0.6-linux.tar.gz 5573823 BLAKE2B 445ddc0ea52b74e021d9def648376681842f8ab84eabb8a7107c332c3d3a2754fc2680ea1f1b9fc1e82df373f6c578ec93cdca3bced11fdcae5237f5e0338026 SHA512 8f9d6ef7b09f8fddb1bf1e50bc20cd2eb1b6e1b1b8dadc56a872b14b98a0671d648942b2fbd86049890d1190bbf0db83a4d0a0fe7c3cfe5cf081367a5c9bd163
+DIST rocksndiamonds-4.4.1.3-linux.tar.gz 5614030 BLAKE2B 00975b8863dfddf775e927d06cdeb77c816479237e788e17437e13317b525eeb9a87272d0464ac536f6d128b6abee0f9803821f3c305d29531358378c3e8af08 SHA512 33b030dbf20f3bf32d5dbcaacc49faa7fe78a6b6b051bb9131891f90abe07228e407a69419a3ab0279b7a773e149ebc33b2fb970b395b44c060f1385fcb735c2
+DIST rocksndiamonds-distributable-music.tar.bz2 4957282 BLAKE2B e00ccc1a06977289ffe79c010512b4a9a5c79d5a0fdff750e17f888f09395dd8a20ce06c5f1f7cc034d22e9651bad54beff1fa4e3dac854e77bbc57353d98bdd SHA512 dd220e4506492e66742796d0c359bce24691f5ebfba092aa2c2b52c5582ae9d5a38aa558872c738eeb7619b8ca853d3affa6b0e4af0fda5621bf7e07441ff252
+DIST rocksndiamonds.png 2021 BLAKE2B 795be09e6d60aaa66dd457f6ce7dcb0069a82e395cb54578b83ad49ba70b669aa5bd52a4da34979d1e0ba95413a499c13355ce6816c4e364d9d88d1988c88060 SHA512 026abfef17bfc8621d036b83a8a4a878b1d68615e69975ea37589e8d29d864dc42dbabc5a381e579c66be1053175df02209f2c1c1feff3bd9e29db3e09c40346
+DIST wf_v1-3.zip 35570 BLAKE2B eded867101b316406cdf378ce8bf36d1dbd28d38ebc9f904df85753955ec2d8f5a87a528975c58ee81b60362bcc37efa766ad87ccf1a1e8a5b062c59c6cc69a2 SHA512 b1b3b2efe20e7d74a072a6289d1af5c22fccf1b9359700269a381d38bdf2458d7d365df7db616a93512428a05f58cf872ea70fcf87080df327e0c4fc231f0470
+DIST wg_v1-0.zip 821765 BLAKE2B 5bc69179e0429992a916e2287eb57bfa947e4bb08bc6e3d801f940bc73dc8fc8af93aa82a9b8a9f8535d0d22043f50414f09b9643ea9cfa081a92943b1c73273 SHA512 7e7605d258deccbe938fedc4651bdcc4b9a01478de66f793053bb4191429cf733ad317a315965597817dbaa03d5cb538a9ab36bee53cf6a2fd3457aeb06dac88
+DIST ww_v1-0.zip 199805 BLAKE2B 167a36cc33f157e11850a786f511fb5eb9043eb732c514c00e13a71bdce3f63a2406aec88ca25e1510b3d7aeea0434101c878fcdbc2806f89b45c75417a931f3 SHA512 5689663e7d0da797a8a4904d69a3d37cfb09826acf55cf93b41beabf2638b13c6c666f4f40c011018cd84b6c14681061d5efcae3cc09ac86054ec23e0253f6d5
diff --git a/games-arcade/rocksndiamonds/files/rocksndiamonds-4.1.0.0-CVE-2011-4606.patch b/games-arcade/rocksndiamonds/files/rocksndiamonds-4.1.0.0-CVE-2011-4606.patch
new file mode 100644
index 000000000000..1aaa9e43dcc3
--- /dev/null
+++ b/games-arcade/rocksndiamonds/files/rocksndiamonds-4.1.0.0-CVE-2011-4606.patch
@@ -0,0 +1,18 @@
+diff -up rocksndiamonds-4.0.0.1/src/libgame/setup.c.CVE-2011-4606 rocksndiamonds-4.0.0.1/src/libgame/setup.c
+--- rocksndiamonds-4.0.0.1/src/libgame/setup.c.CVE-2011-4606 2017-01-12 07:53:09.497075662 -0500
++++ rocksndiamonds-4.0.0.1/src/libgame/setup.c 2017-01-12 07:58:19.319076661 -0500
+@@ -1311,11 +1311,13 @@ void sortTreeInfo(TreeInfo **node_first)
+ #define MODE_W_ALL (S_IWUSR | S_IWGRP | S_IWOTH)
+ #define MODE_X_ALL (S_IXUSR | S_IXGRP | S_IXOTH)
+
++#define MODE_R_PRIVATE (S_IRUSR)
+ #define MODE_W_PRIVATE (S_IWUSR)
++#define MODE_X_PRIVATE (S_IXUSR)
+ #define MODE_W_PUBLIC_FILE (S_IWUSR | S_IWGRP)
+ #define MODE_W_PUBLIC_DIR (S_IWUSR | S_IWGRP | S_ISGID)
+
+-#define DIR_PERMS_PRIVATE (MODE_R_ALL | MODE_X_ALL | MODE_W_PRIVATE)
++#define DIR_PERMS_PRIVATE (MODE_R_PRIVATE | MODE_X_PRIVATE | MODE_W_PRIVATE)
+ #define DIR_PERMS_PUBLIC (MODE_R_ALL | MODE_X_ALL | MODE_W_PUBLIC_DIR)
+ #define DIR_PERMS_PUBLIC_ALL (MODE_R_ALL | MODE_X_ALL | MODE_W_ALL)
+
diff --git a/games-arcade/rocksndiamonds/metadata.xml b/games-arcade/rocksndiamonds/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/rocksndiamonds/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/rocksndiamonds/rocksndiamonds-4.4.0.6.ebuild b/games-arcade/rocksndiamonds/rocksndiamonds-4.4.0.6.ebuild
new file mode 100644
index 000000000000..51c0d82f6b13
--- /dev/null
+++ b/games-arcade/rocksndiamonds/rocksndiamonds-4.4.0.6.ebuild
@@ -0,0 +1,120 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit desktop unpacker
+
+DESCRIPTION="A Boulderdash clone"
+HOMEPAGE="https://www.artsoft.org/rocksndiamonds/"
+# https://www.artsoft.org/rocksndiamonds/levels/
+# rocksndiamonds-distributable-music.tar.bz2 from Fedora
+SRC_URI="https://www.artsoft.org/RELEASES/unix/rocksndiamonds/${P}-linux.tar.gz
+ https://dev.gentoo.org/~pacho/${PN}/rocksndiamonds-distributable-music.tar.bz2
+ https://upload.wikimedia.org/wikipedia/commons/e/e2/Rocks%27n%27Diamonds.png -> ${PN}.png
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Andreas_Buschbeck-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/BD2K3-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Better_Together-1.0.0.7z
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Boulder_Dash-1.0.5.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Boulder_Dash_Dream-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Contributions-1.2.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Emerald_Mine_Club-3.1.3.7z
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Gav.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/RS_MIX_01-needs_rnd_jue.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/RS_MIX_01-standalone.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Snake_Bite-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Sokoban-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Supaplex-2.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Zelda-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/ZeldaII-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/rnd-contrib-1.0.0.tar.gz
+ https://www.artsoft.org/RELEASES/unix/rocksndiamonds/levels/rockslevels-dx-1.0.tar.gz
+ https://www.artsoft.org/RELEASES/unix/rocksndiamonds/levels/rockslevels-emc-1.0.tar.gz
+ https://www.artsoft.org/RELEASES/unix/rocksndiamonds/levels/rockslevels-sp-1.0.tar.gz
+ mirror://gentoo/rnd_jue-v8.tar.bz2
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/wg_v1-0.zip
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/wf_v1-3.zip
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/ese_v1-1.zip
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/es_b_v1-2.zip
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/ww_v1-0.zip
+"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libmodplug
+ media-libs/libsdl2[joystick,video]
+ media-libs/sdl2-mixer[mod,mp3,timidity]
+ media-libs/sdl2-net
+ media-libs/sdl2-image[gif]
+ media-libs/smpeg
+"
+DEPEND="${RDEPEND}"
+BDEPEND="$(unpacker_src_uri_depends)"
+
+PATCHES=(
+ # From Fedora:
+ "${FILESDIR}"/${PN}-4.1.0.0-CVE-2011-4606.patch
+)
+
+src_unpack() {
+ unpack ${P}-linux.tar.gz
+ cd "${S}"
+ unpack \
+ rockslevels-emc-1.0.tar.gz \
+ rockslevels-sp-1.0.tar.gz \
+ rockslevels-dx-1.0.tar.gz
+ cd levels
+ unpacker \
+ Andreas_Buschbeck-1.0.0.zip \
+ rnd_jue-v8.tar.bz2 \
+ BD2K3-1.0.0.zip \
+ Better_Together-1.0.0.7z \
+ rnd-contrib-1.0.0.tar.gz \
+ Snake_Bite-1.0.0.zip \
+ Contributions-1.2.0.zip \
+ Boulder_Dash-1.0.5.zip \
+ Boulder_Dash_Dream-1.0.0.zip \
+ Gav.zip \
+ Sokoban-1.0.0.zip \
+ Zelda-1.0.0.zip \
+ ZeldaII-1.0.0.zip \
+ Emerald_Mine_Club-3.1.3.7z \
+ RS_MIX_01-needs_rnd_jue.zip \
+ RS_MIX_01-standalone.zip \
+ Supaplex-2.0.0.zip \
+ wg_v1-0.zip \
+ wf_v1-3.zip \
+ ese_v1-1.zip \
+ es_b_v1-2.zip \
+ ww_v1-0.zip
+}
+
+src_prepare() {
+ default
+ sed -i \
+ -e 's:\$(MAKE_CMD):$(MAKE) -C $(SRC_DIR):' \
+ -e '/^MAKE/d' \
+ -e '/^CC/d' \
+ Makefile || die
+
+ sed -i \
+ -e '/^LDFLAGS/s/=/+=/' \
+ src/Makefile || die
+}
+
+src_compile() {
+ local makeopts="BASE_PATH=/usr/share/${PN} RO_GAME_DIR=/usr/share/${PN} RW_GAME_DIR=/usr/share/${PN} EXTRA_CFLAGS=-DUSE_USERDATADIR_FOR_COMMONDATA"
+ emake -j1 clean
+ emake ${makeopts} OPTIONS="${CFLAGS}"
+}
+
+src_install() {
+ dobin rocksndiamonds
+ insinto "/usr/share/${PN}"
+ doins -r docs graphics levels music sounds
+
+ einstalldocs
+ doicon "${DISTDIR}/${PN}.png"
+ make_desktop_entry ${PN} "Rocks 'N' Diamonds" ${PN}
+}
diff --git a/games-arcade/rocksndiamonds/rocksndiamonds-4.4.1.3.ebuild b/games-arcade/rocksndiamonds/rocksndiamonds-4.4.1.3.ebuild
new file mode 100644
index 000000000000..5c79cdf35509
--- /dev/null
+++ b/games-arcade/rocksndiamonds/rocksndiamonds-4.4.1.3.ebuild
@@ -0,0 +1,115 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit desktop unpacker
+
+DESCRIPTION="A Boulderdash clone"
+HOMEPAGE="https://www.artsoft.org/rocksndiamonds/"
+# https://www.artsoft.org/rocksndiamonds/levels/
+# rocksndiamonds-distributable-music.tar.bz2 from Fedora
+SRC_URI="https://www.artsoft.org/RELEASES/unix/rocksndiamonds/${P}-linux.tar.gz
+ https://dev.gentoo.org/~pacho/${PN}/rocksndiamonds-distributable-music.tar.bz2
+ https://upload.wikimedia.org/wikipedia/commons/e/e2/Rocks%27n%27Diamonds.png -> ${PN}.png
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Andreas_Buschbeck-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/BD2K3-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Better_Together-1.0.0.7z
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Boulder_Dash-1.0.5.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Boulder_Dash_Dream-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Contributions-1.2.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Emerald_Mine_Club-3.1.3.7z
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Gav.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/RS_MIX_01-needs_rnd_jue.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/RS_MIX_01-standalone.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Snake_Bite-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Sokoban-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Supaplex-2.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/Zelda-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/ZeldaII-1.0.0.zip
+ https://www.artsoft.org/RELEASES/rocksndiamonds/levels/rnd-contrib-1.0.0.tar.gz
+ https://www.artsoft.org/RELEASES/unix/rocksndiamonds/levels/rockslevels-dx-1.0.tar.gz
+ https://www.artsoft.org/RELEASES/unix/rocksndiamonds/levels/rockslevels-emc-1.0.tar.gz
+ https://www.artsoft.org/RELEASES/unix/rocksndiamonds/levels/rockslevels-sp-1.0.tar.gz
+ mirror://gentoo/rnd_jue-v8.tar.bz2
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/wg_v1-0.zip
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/wf_v1-3.zip
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/ese_v1-1.zip
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/es_b_v1-2.zip
+ https://www.artsoft.org/rocksndiamonds/levels/jamiecullen/zips/ww_v1-0.zip
+"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libmodplug
+ media-libs/libsdl2[joystick,video]
+ media-libs/sdl2-mixer[mod,mp3,timidity]
+ media-libs/sdl2-net
+ media-libs/sdl2-image[gif]
+ media-libs/smpeg
+"
+DEPEND="${RDEPEND}"
+BDEPEND="$(unpacker_src_uri_depends)"
+
+src_unpack() {
+ unpack ${P}-linux.tar.gz
+ cd "${S}"
+ unpack \
+ rockslevels-emc-1.0.tar.gz \
+ rockslevels-sp-1.0.tar.gz \
+ rockslevels-dx-1.0.tar.gz
+ cd levels
+ unpacker \
+ Andreas_Buschbeck-1.0.0.zip \
+ rnd_jue-v8.tar.bz2 \
+ BD2K3-1.0.0.zip \
+ Better_Together-1.0.0.7z \
+ rnd-contrib-1.0.0.tar.gz \
+ Snake_Bite-1.0.0.zip \
+ Contributions-1.2.0.zip \
+ Boulder_Dash-1.0.5.zip \
+ Boulder_Dash_Dream-1.0.0.zip \
+ Gav.zip \
+ Sokoban-1.0.0.zip \
+ Zelda-1.0.0.zip \
+ ZeldaII-1.0.0.zip \
+ Emerald_Mine_Club-3.1.3.7z \
+ RS_MIX_01-needs_rnd_jue.zip \
+ RS_MIX_01-standalone.zip \
+ Supaplex-2.0.0.zip \
+ wg_v1-0.zip \
+ wf_v1-3.zip \
+ ese_v1-1.zip \
+ es_b_v1-2.zip \
+ ww_v1-0.zip
+}
+
+src_prepare() {
+ default
+ sed -i \
+ -e 's:\$(MAKE_CMD):$(MAKE) -C $(SRC_DIR):' \
+ -e '/^MAKE/d' \
+ -e '/^CC/d' \
+ Makefile || die
+
+ sed -i \
+ -e '/^LDFLAGS/s/=/+=/' \
+ src/Makefile || die
+}
+
+src_compile() {
+ local makeopts="BASE_PATH=/usr/share/${PN} RO_GAME_DIR=/usr/share/${PN} RW_GAME_DIR=/usr/share/${PN} EXTRA_CFLAGS=-DUSE_USERDATADIR_FOR_COMMONDATA"
+ emake -j1 clean
+ emake ${makeopts} OPTIONS="${CFLAGS}"
+}
+
+src_install() {
+ dobin rocksndiamonds
+ insinto "/usr/share/${PN}"
+ doins -r docs graphics levels music sounds
+
+ einstalldocs
+ doicon "${DISTDIR}/${PN}.png"
+ make_desktop_entry ${PN} "Rocks 'N' Diamonds" ${PN}
+}
diff --git a/games-arcade/sable/Manifest b/games-arcade/sable/Manifest
new file mode 100644
index 000000000000..f148aead94b2
--- /dev/null
+++ b/games-arcade/sable/Manifest
@@ -0,0 +1,2 @@
+DIST sable-1.0-src.tgz 247200 BLAKE2B 5a6d0f4cc36d1f3b6f0ab5d4b6bb6e222cd95faaa722eab0c9aa4946d62857339d9a66020f505785850ff7435703e3b997365f490b0ef0222d213cc1a7d3bfb2 SHA512 ec8a8b76695b7767f04405c3bdb24f6f506116a775124e771c0c58a64f0412afd26aa88b1153945ceb36705a63b1fe905569b0b050dcf4a25880834cca158bb9
+DIST sable.png 1669 BLAKE2B 487ee36ebb2fe777f6c8ac06a0075c1fb5fe581a73cc7457700384a28beb725bd8d1ac8ab6f35a49cc2fab86afc7dda0207e5ba4ca7f436566d6296af182cf41 SHA512 08aa0ac33cefcab317df7876838141c21f3fca79995922e6f773f2b4a3f7c460d1e594b4ca742666ddefe9102a64e20f2f3839cc166b94207e0e512d42ee78dd
diff --git a/games-arcade/sable/files/sable-1.0-gentoo.patch b/games-arcade/sable/files/sable-1.0-gentoo.patch
new file mode 100644
index 000000000000..b809936ff964
--- /dev/null
+++ b/games-arcade/sable/files/sable-1.0-gentoo.patch
@@ -0,0 +1,57 @@
+diff -ru sable.orig/src/Makefile sable/src/Makefile
+--- sable.orig/src/Makefile 2006-03-14 00:57:31.000000000 -0500
++++ sable/src/Makefile 2009-01-21 15:15:02.000000000 -0500
+@@ -1,30 +1,10 @@
+-# are we on OSX?
+-ifeq ($(shell uname), Darwin)
+-OSX:=1
+-endif
+-
+-# C options
+-CC = gcc
+-NOOSXFLAGS = -c `sdl-config --cflags` -O2 -Wall -DSABLE_RESOURCEDIR=\"$(INSTALL_RESDIR)/sable/\" -Iinclude $(CFLAGS)
+-ifdef OSX
+-FLAGS = $(NOOSXFLAGS) -D_SABLE_OSX_
+-else
+-FLAGS = $(NOOSXFLAGS)
+-endif
+-
+-# C++ options.
+-CXX = g++
+-CXXFLAGS = $(FLAGS)
++NOOSXFLAGS = -c `sdl-config --cflags` -DSABLE_RESOURCEDIR=\"$(INSTALL_RESDIR)/sable/\" -Iinclude
++
++CFLAGS += $(NOOSXFLAGS)
++CXXFLAGS += $(NOOSXFLAGS)
+
+ # Linker options.
+-LD = g++
+-LDFLAGS =
+-NOOSXLIBS = -lSDL_image -lSDL_mixer
+-ifdef OSX
+-LIBS = `sdl-config --static-libs` $(NOOSXLIBS)
+-else
+-LIBS = `sdl-config --libs` $(NOOSXLIBS) -lGL -lGLU
+-endif
++LIBS = `sdl-config --libs` -lSDL_image -lSDL_mixer -lGL -lGLU
+
+ COBJS = vcontrol/vcontrol.o \
+ bcplrandom.o \
+@@ -35,7 +15,7 @@
+ OBJS = $(COBJS) $(CXXOBJS)
+
+ sable: $(OBJS)
+- $(LD) $(LDFLAGS) -o sable $(OBJS) $(LIBS)
++ $(CXX) $(LDFLAGS) -o sable $(OBJS) $(LIBS)
+
+ clean:
+ rm -f sable *.o vcontrol/*.o svaf/*.o
+@@ -44,7 +24,7 @@
+ find . -name \*.c\* | xargs makedepend -Y. -Iinclude >& /dev/null
+
+ $(COBJS): %.o: %.c
+- $(CC) $(FLAGS) -o $@ $<
++ $(CC) $(CFLAGS) -o $@ $<
+
+ $(CXXOBJS): %.o: %.cpp
+ $(CXX) $(CXXFLAGS) -o $@ $<
diff --git a/games-arcade/sable/metadata.xml b/games-arcade/sable/metadata.xml
new file mode 100644
index 000000000000..ada2e2b00c72
--- /dev/null
+++ b/games-arcade/sable/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+<longdescription lang="en">
+Sable is a frantic 3d space shooter inspired by games such as After Burner and
+Space Harrier. You pilot a ship through an obstacle-laden landscape and attack
+or evade swarms of enemies.
+
+The game itself is quite easy to play. The arrow keys move your ship, and the
+space bar fires your cannons. Holding down the space bar produces a rapid-fire
+effect. Avoid enemy craft, enemy shots, and the pylons. Pylons are destroyable
+but require concentrated fire to destroy.
+</longdescription>
+</pkgmetadata>
diff --git a/games-arcade/sable/sable-1.0-r1.ebuild b/games-arcade/sable/sable-1.0-r1.ebuild
new file mode 100644
index 000000000000..a99ef373fa01
--- /dev/null
+++ b/games-arcade/sable/sable-1.0-r1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop
+
+DESCRIPTION="A frantic 3D space shooter"
+HOMEPAGE="https://jeuxlibres.net/showgame/sable.html"
+SRC_URI="mirror://gentoo/${P}-src.tgz
+ mirror://gentoo/${PN}.png"
+S="${WORKDIR}/${PN}"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="virtual/opengl
+ media-libs/libsdl[joystick,opengl,sound,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer"
+RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}"/${P}-gentoo.patch )
+
+src_compile() {
+ emake INSTALL_RESDIR="/usr/share"
+}
+
+src_install() {
+ dobin ${PN}
+ insinto /usr/share/${PN}
+ doins -r models sfx textures
+ einstalldocs
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} Sable
+}
diff --git a/games-arcade/savagewheels/Manifest b/games-arcade/savagewheels/Manifest
new file mode 100644
index 000000000000..e19ad846e35f
--- /dev/null
+++ b/games-arcade/savagewheels/Manifest
@@ -0,0 +1,2 @@
+DIST savagewheels-1.6.1.tar.gz 596480 BLAKE2B a1e236418e3e2af1634360c0a6c3e5debf0b429960f4dde0c3ed31a0450c9de73b0b67a833d66523004115ddd61dc32e156fcd64bd783c5cca8c3281e1684639 SHA512 0e535f5f86b1656fa20a2de3dbc9c107f9daacfd37308ca4e2e15df43b177161767a2834c0ed1b9cb93eed0b642092e4f840abf451d2de5082d3c4c721bedc0e
+DIST savagewheels-gamedata-1.4.0.tar.gz 13183072 BLAKE2B 1fdd20cd3bdd5589d17d131d13d1dbe56889f05972c162583a4b9b7cdb3eadea32b7d7a1130f2eb239ec87e1cb3dc6f02d6d15504463b399e12271348106702f SHA512 102214e18edb911b168e41999d239e3070255720f250e8ea640d365b3f7fc4c772cbf322f4558ba6c05fd56d904613c758918e25712e89eb2aca3e948c26fc65
diff --git a/games-arcade/savagewheels/files/savagewheels.in b/games-arcade/savagewheels/files/savagewheels.in
new file mode 100644
index 000000000000..c1b4c689f71c
--- /dev/null
+++ b/games-arcade/savagewheels/files/savagewheels.in
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+export SAVAGEWHEELS_SYS_DATADIR="${SAVAGEWHEELS_SYS_DATADIR-@CMAKE_INSTALL_DATADIR@}"
+export SAVAGEWHEELS_LIBEXECDIR="${SAVAGEWHEELS_LIBEXECDIR-@CMAKE_INSTALL_LIBEXECDIR@}"
+export SAVAGEWHEELS_USR_CONFDIR="${SAVAGEWHEELS_USR_CONFDIR-${HOME}/.config/savagewheels}"
+export SAVAGEWHEELS_USR_DATADIR="${SAVAGEWHEELS_USR_DATADIR-${HOME}/.local/share/savagewheels}"
+
+if [ ! -d ${SAVAGEWHEELS_USR_CONFDIR} ]; then
+ if [ -e ${SAVAGEWHEELS_USR_CONFDIR} ]; then
+ printf "${SAVAGEWHEELS_USR_CONFDIR} exists but is not a directory.\n" >&2
+ printf " Please remove.\n" >&2
+ exit 1
+ fi
+ mkdir -p ${SAVAGEWHEELS_USR_CONFDIR}
+ if [ $? -ne 0 ]; then
+ printf "Failed to create ${SAVAGEWHEELS_USR_CONFDIR}\n" >&2
+ exit 1
+ fi
+fi
+
+if [ ! -d ${SAVAGEWHEELS_USR_DATADIR} ]; then
+ if [ -e ${SAVAGEWHEELS_USR_DATADIR} ]; then
+ printf "${SAVAGEWHEELS_USR_DATADIR} exists but is not a directory.\n" >&2
+ printf " Please remove.\n" >&2
+ exit 1
+ fi
+ mkdir -p ${SAVAGEWHEELS_USR_DATADIR}
+ if [ $? -ne 0 ]; then
+ printf "Failed to create ${SAVAGEWHEELS_USR_DATADIR}\n" >&2
+ exit 1
+ fi
+fi
+
+if [ ! -e ${SAVAGEWHEELS_USR_CONFDIR}/bindings.xml ]; then
+ cp ${SAVAGEWHEELS_SYS_DATADIR}/bindings.xml ${SAVAGEWHEELS_USR_CONFDIR}
+ if [ $? -ne 0 ]; then
+ printf "Failed to create ${SAVAGEWHEELS_USR_CONFDIR}/bindings.xml\n" >&2
+ exit 1
+ fi
+fi
+
+exec ${SAVAGEWHEELS_LIBEXECDIR}/savagewheels "$@"
diff --git a/games-arcade/savagewheels/metadata.xml b/games-arcade/savagewheels/metadata.xml
new file mode 100644
index 000000000000..6cffb58dceda
--- /dev/null
+++ b/games-arcade/savagewheels/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <upstream>
+ <remote-id type="github">kenamick/savagewheels</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/savagewheels/savagewheels-1.6.1-r2.ebuild b/games-arcade/savagewheels/savagewheels-1.6.1-r2.ebuild
new file mode 100644
index 000000000000..529643c86ba3
--- /dev/null
+++ b/games-arcade/savagewheels/savagewheels-1.6.1-r2.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+GAMEDATA="${PN}-gamedata-1.4.0"
+inherit cmake
+
+DESCRIPTION="2D car crashing game similar to the old classic Destruction Derby"
+HOMEPAGE="https://github.com/kenamick/savagewheels"
+SRC_URI="
+ https://github.com/kenamick/savagewheels/archive/${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/kenamick/savagewheels/releases/download/v1.4/${PN}-gamedata.tar.gz -> ${GAMEDATA}.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="sound"
+
+RDEPEND="
+ media-libs/libsdl[joystick]
+ sound? ( media-libs/sdl-mixer[mod,modplug] )
+"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+
+ cp "${FILESDIR}/${PN}.in" "${S}" || die
+ mkdir "${WORKDIR}/${GAMEDATA}" || die
+ cd "${WORKDIR}/${GAMEDATA}" || die
+ unpack "${GAMEDATA}.tar.gz"
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_INSTALL_DATADIR="${EPREFIX}"/usr/share/${PN}
+ -DCMAKE_INSTALL_LIBEXECDIR="${EPREFIX}"/usr/libexec/${PN}
+ -DSOUND=$(usex sound YES NO) # yes, 'NO' is important here. bug 773439
+ )
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ insinto /usr/share/${PN}
+ doins -r "${WORKDIR}/${GAMEDATA}/."
+}
diff --git a/games-arcade/sdlroids/Manifest b/games-arcade/sdlroids/Manifest
new file mode 100644
index 000000000000..081fc21a6747
--- /dev/null
+++ b/games-arcade/sdlroids/Manifest
@@ -0,0 +1 @@
+DIST sdlroids-1.3.4.tar.bz2 136588 BLAKE2B e2dd15c0437184af557f96daaa11d9b50ae991e7c29ccd3e4a27f2668719d0f7ef8244e681bdac2d8726b1493175ab4a3f754daf0f471f606bcb5cbe1b5aa1c8 SHA512 abd202e462ac96781481defb9442f3ee69cbfafb5b4e82ae435dca23068257c3e65ba4886c0c41f2568a8568b52267ded24b8684efb3f7cafd21754103cc31b4
diff --git a/games-arcade/sdlroids/files/sdlroids-1.3.4-Makefile.patch b/games-arcade/sdlroids/files/sdlroids-1.3.4-Makefile.patch
new file mode 100644
index 000000000000..9577d4cb6582
--- /dev/null
+++ b/games-arcade/sdlroids/files/sdlroids-1.3.4-Makefile.patch
@@ -0,0 +1,15 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -23,9 +23,9 @@
+ GFXDIR="$(datadir)/sdlroids/bmp/"
+
+ install-data-local:
+- @/bin/sh $(srcdir)/mkinstalldirs $(SOUNDSDIR) $(GFXDIR)
+- $(INSTALL_DATA) $(srcdir)/sounds/*.wav $(SOUNDSDIR)
+- $(INSTALL_DATA) $(srcdir)/bmp/*.bmp $(GFXDIR)
++ @/bin/sh $(srcdir)/mkinstalldirs $(DESTDIR)$(SOUNDSDIR) $(DESTDIR)$(GFXDIR)
++ $(INSTALL_DATA) $(srcdir)/sounds/*.wav $(DESTDIR)$(SOUNDSDIR)
++ $(INSTALL_DATA) $(srcdir)/bmp/*.bmp $(DESTDIR)$(GFXDIR)
+
+ # Data directories
+ INCLUDES=-Wall -Wcast-align -DDATADIR=\"$(datadir)/sdlroids/\"
diff --git a/games-arcade/sdlroids/files/sdlroids-1.3.4-fno-common.patch b/games-arcade/sdlroids/files/sdlroids-1.3.4-fno-common.patch
new file mode 100644
index 000000000000..6288adf913b1
--- /dev/null
+++ b/games-arcade/sdlroids/files/sdlroids-1.3.4-fno-common.patch
@@ -0,0 +1,140 @@
+--- a/getargs.h
++++ b/getargs.h
+@@ -37,4 +37,4 @@
+
+ /* getargs() prototype */
+ void getargs(int, char *[]);
+-int flagargs[NUMARGS];
++extern int flagargs[NUMARGS];
+--- a/sdl.c
++++ b/sdl.c
+@@ -282,7 +282,7 @@
+ #define SGN(a) (((a)<0) ? -1 : 1)
+
+ /* Draw an horizontal line in the current color */
+-inline void draw_horzline(Sint16 x1, Sint16 x2, Sint32 y)
++void draw_horzline(Sint16 x1, Sint16 x2, Sint32 y)
+ {
+ int i;
+ if (x1 < x2) {
+@@ -296,7 +296,7 @@
+ }
+
+ /* Draw an vertical line in the current color */
+-inline void draw_vertline(Sint16 x, Sint16 y1, Sint32 y2)
++void draw_vertline(Sint16 x, Sint16 y1, Sint32 y2)
+ {
+ int i;
+ if (y1 < y2) {
+@@ -310,7 +310,7 @@
+ }
+
+ /* Draw a line between two coordinates */
+-inline void drawline(int x1,int y1,int x2,int y2)
++void drawline(int x1,int y1,int x2,int y2)
+ {
+ int d, x, y, ax, ay, sx, sy, dx, dy;
+ if((dx = x2 - x1) == 0) { /* vertical line */
+@@ -358,7 +358,7 @@
+ }
+ }
+
+-inline void MoveTo(int x,int y)
++void MoveTo(int x,int y)
+ {
+ current_x = convx(x);
+ current_y = convy(y);
+@@ -366,12 +366,12 @@
+
+
+ /* Scaling blit function by Greg Velichansky */
+-inline Uint32 ifloor(Uint32 i)
++Uint32 ifloor(Uint32 i)
+ {
+ return i & 0xFFFF0000;
+ }
+
+-inline Uint32 iceil(Uint32 i)
++Uint32 iceil(Uint32 i)
+ {
+ return (i & 0xFFFF) ? i : ifloor(i) + (1<<16);
+ }
+@@ -379,7 +379,7 @@
+
+ /* The most pedantic-a%& getpixel and putpixel ever, hopefully. */
+ /* There may still be endianness bugs! These will be fixed after adequte testing. XXX XXX XXX */
+-inline int SDL_GetPixel (SDL_Surface *f, Uint32 x, Uint32 y,
++int SDL_GetPixel (SDL_Surface *f, Uint32 x, Uint32 y,
+ Uint8 *r, Uint8 *g, Uint8 *b)
+ {
+ /*const Uint32 mask[] = {0x0, 0xff, 0xffff, 0xffffff, 0xffffffff};*/
+@@ -515,7 +515,7 @@
+ SDL_UnlockSurface(screen);
+ }
+ }
+-inline void lock_graphics() {
++void lock_graphics() {
+ if ( SDL_MUSTLOCK(screen) ) {
+ if ( SDL_LockSurface(screen) < 0 ) {
+ return;
+@@ -523,13 +523,13 @@
+ }
+ }
+
+-inline void ResetRefreshCoords()
++void ResetRefreshCoords()
+ {
+ minx = miny = -1;
+ maxx = maxy = 0;
+ }
+
+-inline void RedrawObject() {
++void RedrawObject() {
+ if(minx >= 0) {
+ rects[rec_counter].x = minx;
+ rects[rec_counter].y = miny;
+@@ -540,7 +540,7 @@
+ }
+
+ static int is_poly=0;
+-inline void LineTo(int x,int y)
++void LineTo(int x,int y)
+ {
+ x = convx(x); y = convy(y);
+ drawline(current_x,current_y,x,y);
+@@ -549,7 +549,7 @@
+ }
+
+
+-inline void Polyline(POINT *pts,int n)
++void Polyline(POINT *pts,int n)
+ {
+ int f;
+ if(n<2) return;
+@@ -560,7 +560,7 @@
+ LineTo(pts->x, pts->y);
+ }
+
+-inline void Circle(Sint16 x, Sint16 y, Sint32 r)
++void Circle(Sint16 x, Sint16 y, Sint32 r)
+ {
+ x = convx(x);
+ y = convy(y);
+@@ -569,7 +569,7 @@
+ }
+
+ /* doesn't set current_[xy] because hyperoid.c doesn't need it to */
+-inline void SetPixel(Sint16 x, Sint16 y,Uint32 c)
++void SetPixel(Sint16 x, Sint16 y,Uint32 c)
+ {
+ current_color = c;
+ x = convx(x);
+@@ -578,7 +578,7 @@
+ }
+
+
+-inline void set_colour(int c)
++void set_colour(int c)
+ {
+ current_color = c;
+ }
diff --git a/games-arcade/sdlroids/files/sdlroids-1.3.4-sound.patch b/games-arcade/sdlroids/files/sdlroids-1.3.4-sound.patch
new file mode 100644
index 000000000000..eb2eb0c2ada4
--- /dev/null
+++ b/games-arcade/sdlroids/files/sdlroids-1.3.4-sound.patch
@@ -0,0 +1,15 @@
+--- a/sdlsound.c.orig 2004-07-02 23:03:03.000000000 -0700
++++ b/sdlsound.c 2004-07-02 23:05:37.000000000 -0700
+@@ -205,9 +205,9 @@
+ int load_sample(int num) {
+
+ if((samples[num] = Mix_LoadWAV(samplename[num])) ||
+- Mix_LoadWAV(datafilename(NULL, samplename[num])) ||
+- Mix_LoadWAV(datafilename(DATADIR, samplename[num])) ||
+- Mix_LoadWAV(datafilename(bindir, samplename[num])))
++ (samples[num] = Mix_LoadWAV(datafilename(NULL, samplename[num]))) ||
++ (samples[num] = Mix_LoadWAV(datafilename(DATADIR, samplename[num]))) ||
++ (samples[num] = Mix_LoadWAV(datafilename(bindir, samplename[num]))))
+ return 1;
+ return 0;
+ }
diff --git a/games-arcade/sdlroids/metadata.xml b/games-arcade/sdlroids/metadata.xml
new file mode 100644
index 000000000000..6c1fa30b84ba
--- /dev/null
+++ b/games-arcade/sdlroids/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">sdlroids</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/sdlroids/sdlroids-1.3.4-r5.ebuild b/games-arcade/sdlroids/sdlroids-1.3.4-r5.ebuild
new file mode 100644
index 000000000000..ffd0d7d3ee46
--- /dev/null
+++ b/games-arcade/sdlroids/sdlroids-1.3.4-r5.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop
+
+DESCRIPTION="Asteroids Clone for X using SDL"
+HOMEPAGE="http://david.hedbor.org/projects/sdlroids/"
+SRC_URI="https://downloads.sourceforge.net/sdlroids/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[joystick]
+ media-libs/sdl-mixer"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-sound.patch
+ "${FILESDIR}"/${P}-Makefile.patch
+ "${FILESDIR}"/${P}-fno-common.patch
+)
+
+src_prepare() {
+ default
+ mv configure.{in,ac} || die
+ eautoreconf
+}
+
+src_install() {
+ default
+
+ newicon icons/sdlroids-48x48.xpm ${PN}.xpm
+ make_desktop_entry ${PN} SDLRoids ${PN}
+}
diff --git a/games-arcade/sdlsasteroids/Manifest b/games-arcade/sdlsasteroids/Manifest
new file mode 100644
index 000000000000..36614be1fba9
--- /dev/null
+++ b/games-arcade/sdlsasteroids/Manifest
@@ -0,0 +1 @@
+DIST SDLSasteroids-3.0.1.tar.gz 531781 BLAKE2B 83d2f84623dd369bd0e36ddfec3a328f50b5ef1a9daf2bd4f6d2e5ff4bfd38f2832ff5378961c66fbf149fe82e45e48ad12aaf8a95abf4244a59fc7321403682 SHA512 5758e1a8540dd16b0993146e706d2f600713cf80500de32b5102e23933fad7e5f5d5b31bf7ebe0efcc89223f54ec67505728e5d3b8e2c8691b8efce671fcbdbc
diff --git a/games-arcade/sdlsasteroids/files/sdlsasteroids-3.0.1-gcc43.patch b/games-arcade/sdlsasteroids/files/sdlsasteroids-3.0.1-gcc43.patch
new file mode 100644
index 000000000000..9863f0c051e9
--- /dev/null
+++ b/games-arcade/sdlsasteroids/files/sdlsasteroids-3.0.1-gcc43.patch
@@ -0,0 +1,11 @@
+--- a/src/sbitmap.h
++++ b/src/sbitmap.h
+@@ -36,7 +36,7 @@
+ void LoadImage(char* path);
+ void LoadSurface(SDL_Surface* surface);
+
+- void put(float x, float y, float rotate = 1.0f, float rotate = 1.0f, float layer = 0.0f);
++ void put(float x, float y, float sf = 1.0f, float rotate = 1.0f, float layer = 0.0f);
+ void putA(float x, float y, float layer = 0.0f, float alpha = 1.0f);
+
+ inline float width() const
diff --git a/games-arcade/sdlsasteroids/files/sdlsasteroids-3.0.1-ldflags.patch b/games-arcade/sdlsasteroids/files/sdlsasteroids-3.0.1-ldflags.patch
new file mode 100644
index 000000000000..581010b51388
--- /dev/null
+++ b/games-arcade/sdlsasteroids/files/sdlsasteroids-3.0.1-ldflags.patch
@@ -0,0 +1,11 @@
+--- a/src/Makefile.old 2010-09-22 08:44:57.000000000 +0200
++++ b/src/Makefile 2010-09-22 08:45:43.000000000 +0200
+@@ -26,7 +26,7 @@
+
+
+ $(SASTEROIDS): $(SASTEROIDS_O)
+- g++ -Wall -o $(SASTEROIDS) $(SASTEROIDS_O) $(DEFINES) $(DEBUG) $(OPTS) $(CFLAGS) $(LIBS)
++ g++ $(LDFLAGS) -Wall -o $(SASTEROIDS) $(SASTEROIDS_O) $(DEFINES) $(DEBUG) $(OPTS) $(CFLAGS) $(LIBS)
+
+
+ .cpp.o:
diff --git a/games-arcade/sdlsasteroids/metadata.xml b/games-arcade/sdlsasteroids/metadata.xml
new file mode 100644
index 000000000000..a1c3bf538f2e
--- /dev/null
+++ b/games-arcade/sdlsasteroids/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">sdlsas</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/sdlsasteroids/sdlsasteroids-3.0.1-r1.ebuild b/games-arcade/sdlsasteroids/sdlsasteroids-3.0.1-r1.ebuild
new file mode 100644
index 000000000000..78f19694617d
--- /dev/null
+++ b/games-arcade/sdlsasteroids/sdlsasteroids-3.0.1-r1.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop
+
+DESCRIPTION="Rework of Sasteroids using SDL"
+HOMEPAGE="https://sdlsas.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/sdlsas/SDLSasteroids-${PV}.tar.gz"
+S="${WORKDIR}/SDLSasteroids-${PV}"
+
+LICENSE="sdlsasteroids GPL-2+ public-domain"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ media-libs/sdl-mixer
+ media-libs/libsdl[sound,joystick,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-ttf
+ virtual/opengl
+ virtual/glu"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+
+ eapply \
+ "${FILESDIR}"/${P}-gcc43.patch \
+ "${FILESDIR}"/${P}-ldflags.patch
+
+ sed -i \
+ -e 's/make /$(MAKE) /' \
+ -e 's/--strip//' \
+ Makefile || die
+ sed -i \
+ -e '/^CC/d' \
+ -e 's/g++/$(CXX)/' \
+ -e 's/CC/CXX/' \
+ -e 's/CFLAGS/CXXFLAGS/' \
+ src/Makefile || die
+}
+
+src_compile() {
+ emake \
+ GAMEDIR="/usr/share/${PN}" \
+ OPTS="${CXXFLAGS}"
+}
+
+src_install() {
+ dodir /usr/share/man/man6/
+
+ emake \
+ GAMEDIR="${D}/usr/share/${PN}" \
+ BINDIR="${D}/usr/bin" \
+ MANDIR="${D}/usr/share/man/" \
+ install
+
+ dodoc ChangeLog README README.xast TODO description
+ newicon graphics/sprite/bigast.png ${PN}.png
+ make_desktop_entry sasteroids "Sasteroids" ${PN}
+}
diff --git a/games-arcade/shiromino/Manifest b/games-arcade/shiromino/Manifest
new file mode 100644
index 000000000000..bbec522b8064
--- /dev/null
+++ b/games-arcade/shiromino/Manifest
@@ -0,0 +1,2 @@
+DIST PDBMFont-f16abc76419f2df31c8c3f0642bedaad99201cda.tar.gz 49520 BLAKE2B d0c8e5920e2096b672c7e300d6539f3c31433cada52b01b47f6c112256bddc202dcb2b4103a40ffea5b65c82a1a10d57d9585617ca3b8496028f9e08332e46ba SHA512 694d442d957968c6185b4417691cc49dca07541d371730cc51fbdbfc5b009f5c8a1f6a060813322277ea02cbf67f1a46056857e708a8e3d475d07bca8cd93b8c
+DIST shiromino-0.2.1.tar.gz 16914335 BLAKE2B 11763d60b00b07493b0cb76f7948db29ef1bb8788dd09e51f891a57cb79d8aae52a8da76df7ed7f48dfe672750f976750122fe0ddfeaf9a111ce98d71512481f SHA512 770295aa77f50edabb3b99f037ca394e2572df2fb657b8c81ed1bed189ee8791fc1b022989aa4a6944148ffcfb6827e6fbda86de51f39d1892fad5654a16b7e5
diff --git a/games-arcade/shiromino/files/shiromino-0.2.1-fix_cmake_targets.patch b/games-arcade/shiromino/files/shiromino-0.2.1-fix_cmake_targets.patch
new file mode 100644
index 000000000000..9b4b0fa4ccde
--- /dev/null
+++ b/games-arcade/shiromino/files/shiromino-0.2.1-fix_cmake_targets.patch
@@ -0,0 +1,27 @@
+Taken from 36d9eb04f5cbb0815e91681b67cc4e44033fb023
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6d8b1e6..cce87d3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 3.15)
++cmake_minimum_required(VERSION 3.16)
+ project(shiromino
+ DESCRIPTION "A fast-paced puzzle game with roots in the arcade."
+ HOMEPAGE_URL "https://github.com/shiromino/shiromino"
+@@ -319,7 +319,8 @@ endif()
+ #
+ # Installation
+ #
+-install(DIRECTORY data DESTINATION usr/share/${PROJECT_NAME})
+-install(FILES LICENSE.md DESTINATION usr/share/licenses/${PROJECT_NAME})
+-install(FILES shiromino.ini TYPE SYSCONF)
+-install(TARGETS ${GAME_EXECUTABLE} RUNTIME DESTINATION usr/bin)
+\ No newline at end of file
++include(GNUInstallDirs)
++install(DIRECTORY data DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}")
++install(FILES LICENSE.md DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}")
++install(FILES shiromino.ini TYPE SYSCONF)
++install(TARGETS ${GAME_EXECUTABLE} RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+\ No newline at end of file
diff --git a/games-arcade/shiromino/metadata.xml b/games-arcade/shiromino/metadata.xml
new file mode 100644
index 000000000000..b076ed85486b
--- /dev/null
+++ b/games-arcade/shiromino/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>contact@hacktivis.me</email>
+ <name>Haelwenn (lanodan) Monnier</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>https://github.com/shiromino/shiromino/issues</bugs-to>
+ <remote-id type="github">shiromino/shiromino</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/shiromino/shiromino-0.2.1.ebuild b/games-arcade/shiromino/shiromino-0.2.1.ebuild
new file mode 100644
index 000000000000..6934ae84bb0c
--- /dev/null
+++ b/games-arcade/shiromino/shiromino-0.2.1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 2023 Haelwenn (lanodan) Monnier <contact@hacktivis.me>
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="fast-paced puzzle game with roots in the arcade"
+HOMEPAGE="https://github.com/shiromino/shiromino"
+MY_PDBM_COMMIT="f16abc76419f2df31c8c3f0642bedaad99201cda"
+SRC_URI="
+ https://github.com/shiromino/shiromino/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/nightmareci/PDBMFont/archive/${MY_PDBM_COMMIT}.tar.gz -> PDBMFont-${MY_PDBM_COMMIT}.tar.gz
+"
+PDBMFont_S="${WORKDIR}/PDBMFont-${MY_PDBM_COMMIT}/"
+
+# Main under MIT, music under CC-BY-4.0, font under Unlicense
+LICENSE="MIT CC-BY-4.0 Unlicense"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="virtual/pkgconfig"
+
+RDEPEND="
+ media-libs/libvorbis
+ media-libs/libsdl2
+ media-libs/sdl2-image
+ media-libs/sdl2-mixer
+ dev-db/sqlite:3
+ dev-libs/tinyxml2:=
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=( "${FILESDIR}/shiromino-0.2.1-fix_cmake_targets.patch" )
+
+src_prepare() {
+ cmake_src_prepare
+
+ rm "${PDBMFont_S}/tinyxml2.cpp" "${PDBMFont_S}/tinyxml2.h" || die
+
+ sed -i -e 's;#include "tinyxml2.h";#include <tinyxml2.h>;' "${PDBMFont_S}/PDBMFont.hpp" || die
+
+ sed -i \
+ -e '/tinyxml2\./d' \
+ -e '/MINIMUM_SDL2_VERSION/iset(MINIMUM_TINYXML2_VERSION 0)' \
+ -e '/set(DEPENDENCIES/a tinyxml2' \
+ CMakeLists.txt || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}/etc"
+ -DFETCHCONTENT_FULLY_DISCONNECTED=ON
+ -DFETCHCONTENT_SOURCE_DIR_PDBM_FONT="${PDBMFont_S}"
+ )
+
+ cmake_src_configure
+}
diff --git a/games-arcade/shovel-knight/Manifest b/games-arcade/shovel-knight/Manifest
new file mode 100644
index 000000000000..4d88cf4691f3
--- /dev/null
+++ b/games-arcade/shovel-knight/Manifest
@@ -0,0 +1 @@
+DIST shovel_knight_treasure_trove_4_1b_arby_s_46298.sh 338751327 BLAKE2B 6285266a6013331ed59b399fcbe4a3a2069e1efe403411c7e85a9c165a33e262c0a92085c7a5da7fca31573eaeb29b32915f006cc9093944be03214407e891ef SHA512 ecb5967de37e482aec8fcd992f4d7c269e8b676ed119785114f465dd85932453f3facfcd7e77d7bf3044033189d0d33692bb4de3332753ee57bac74b7adec499
diff --git a/games-arcade/shovel-knight/metadata.xml b/games-arcade/shovel-knight/metadata.xml
new file mode 100644
index 000000000000..7c730d47817a
--- /dev/null
+++ b/games-arcade/shovel-knight/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/games-arcade/shovel-knight/shovel-knight-4.1b-r1.ebuild b/games-arcade/shovel-knight/shovel-knight-4.1b-r1.ebuild
new file mode 100644
index 000000000000..185cfa3f331a
--- /dev/null
+++ b/games-arcade/shovel-knight/shovel-knight-4.1b-r1.ebuild
@@ -0,0 +1,110 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop unpacker wrapper xdg
+
+MY_PN="ShovelKnight"
+DESCRIPTION="Sweeping classic action adventure with an 8-bit retro aesthetic"
+HOMEPAGE="https://yachtclubgames.com/games/shovel-knight-treasure-trove/"
+SRC_URI="${PN//-/_}_treasure_trove_4_1b_arby_s_46298.sh"
+S="${WORKDIR}/data/noarch/game"
+
+LICENSE="Yacht-Club-Games-EULA"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+IUSE="+joystick"
+RESTRICT="bindist fetch splitdebug"
+
+# I packaged Box2D in the hope of unbundling it but it turns out this
+# game uses a custom version. -- Chewi :(
+
+RDEPEND="
+ media-libs/glew:1.10
+ virtual/opengl
+ !x86? ( media-libs/libsdl2[joystick?,opengl,sound,video] )
+ x86? ( !joystick? ( media-libs/libsdl2[opengl,sound,video] ) )
+"
+
+BDEPEND="
+ dev-util/patchelf
+"
+
+DIR="/opt/${PN}"
+QA_PREBUILT="${DIR#/}/*"
+
+pkg_nofetch() {
+ einfo "Please buy and download ${SRC_URI} from:"
+ einfo " https://www.gog.com/game/${PN//-/_}"
+ einfo "and move it to your distfiles directory."
+}
+
+src_unpack() {
+ unpack_zip ${A}
+}
+
+src_install() {
+ local BITS=$(usex amd64 64 32) LIB=
+
+ exeinto "${DIR}"
+ doexe ${BITS}/${MY_PN}
+ make_wrapper ${MY_PN} ./${MY_PN} "${DIR}"
+
+ exeinto "${DIR}"/lib
+ doexe ${BITS}/lib/lib{Box2D.so.*,fmod*-*.so}
+
+ for LIB in ${BITS}/lib/libfmod*-*.so; do
+ LIB=${LIB##*/}
+
+ # The FMOD libraries are duplicated rather than symlinked, which is
+ # silly, so create our own symlinks. Both sets of names are needed.
+ dosym "${LIB}" "${DIR}/lib/${LIB%-*}.so"
+
+ # The SONAMEs are also unset, which upsets our QA check, so fix.
+ patchelf --set-soname "${LIB%-*}.so" "${ED}${DIR}/lib/${LIB}" || die
+ done
+
+ if use joystick; then
+ local SDL=libSDL2-2.0.so.0
+ local SDLj=libSDL2-joystick.so
+
+ if use x86; then
+ # Under x86, using our own SDL2 causes the game to crash when a
+ # controller is connected, even after applying the workaround below.
+ # It is seemingly caused by a change to the SDL_GetJoystickGUIDInfo
+ # signature. We must therefore use the bundled SDL2.
+ doexe ${BITS}/lib/${SDL}
+ else
+ # The game uses internal SDL2 joystick functions. These functions
+ # have since been hidden and some have been removed. Using our own
+ # SDL2 therefore causes the game to crash when a controller is
+ # connected. We still want to use our own SDL2 for things like
+ # Wayland, but we can work around this by loading both, using the
+ # bundled one as a fallback.
+ newexe ${BITS}/lib/${SDL} ${SDLj}
+
+ # The bundled SDL2 SONAME has to be set to something different.
+ patchelf --set-soname ${SDLj} "${ED}${DIR}"/lib/${SDLj} || die
+
+ # We need to add the new SONAME as a NEEDED entry, but the order is
+ # important, so we also need to remove the existing NEEDED entry
+ # first and add it back again afterwards.
+ patchelf \
+ --remove-needed ${SDL} \
+ --add-needed ${SDLj} \
+ --add-needed ${SDL} \
+ "${ED}${DIR}"/${MY_PN} || die
+ fi
+ fi
+
+ # The RUNPATHs are not entirely correct so fix up.
+ patchelf --set-rpath '$ORIGIN/lib' "${ED}${DIR}"/${MY_PN} || die
+ patchelf --set-rpath '$ORIGIN' "${ED}${DIR}"/lib/libfmodevent*.so || die
+
+ insinto "${DIR}"
+ doins -r data/
+
+ newicon -s 256 ../support/icon.png ${PN}.png
+ make_desktop_entry ${MY_PN} "Shovel Knight"
+}
diff --git a/games-arcade/shovel-knight/shovel-knight-4.1b.ebuild b/games-arcade/shovel-knight/shovel-knight-4.1b.ebuild
new file mode 100644
index 000000000000..f2b3660f73f9
--- /dev/null
+++ b/games-arcade/shovel-knight/shovel-knight-4.1b.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop unpacker wrapper xdg
+
+MY_PN="ShovelKnight"
+DESCRIPTION="Sweeping classic action adventure with an 8-bit retro aesthetic"
+HOMEPAGE="https://yachtclubgames.com/games/shovel-knight-treasure-trove/"
+SRC_URI="${PN//-/_}_treasure_trove_4_1b_arby_s_46298.sh"
+S="${WORKDIR}/data/noarch/game"
+
+LICENSE="Yacht-Club-Games-EULA"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+RESTRICT="bindist fetch splitdebug"
+
+# I packaged Box2D in the hope of unbundling it but it turns out this
+# game uses a custom version. -- Chewi :(
+
+RDEPEND="
+ media-libs/glew:1.10
+ media-libs/libsdl2[opengl,sound,video]
+ virtual/opengl
+"
+
+DIR="/opt/${PN}"
+QA_PREBUILT="${DIR#/}/*"
+
+pkg_nofetch() {
+ einfo "Please buy and download ${SRC_URI} from:"
+ einfo " https://www.gog.com/game/${PN//-/_}"
+ einfo "and move it to your distfiles directory."
+}
+
+src_unpack() {
+ unpack_zip ${A}
+}
+
+src_install() {
+ local BITS=$(usex amd64 64 32) LIB=
+
+ exeinto "${DIR}"
+ doexe ${BITS}/${MY_PN}
+ make_wrapper ${MY_PN} ./${MY_PN} "${DIR}"
+
+ exeinto "${DIR}"/lib
+ doexe ${BITS}/lib/lib{Box2D.so.*,fmod*-*.so}
+
+ # The FMOD libraries are duplicated rather than symlinked, which is
+ # silly, so create our own symlinks. Both sets of names are needed.
+ for LIB in ${BITS}/lib/libfmod*-*.so; do
+ LIB=${LIB##*/}
+ dosym "${LIB}" "${DIR}/lib/${LIB%-*}.so"
+ done
+
+ insinto "${DIR}"
+ doins -r data/
+
+ newicon -s 256 ../support/icon.png ${PN}.png
+ make_desktop_entry ${MY_PN} "Shovel Knight"
+}
diff --git a/games-arcade/solarwolf/Manifest b/games-arcade/solarwolf/Manifest
new file mode 100644
index 000000000000..a92669c7f334
--- /dev/null
+++ b/games-arcade/solarwolf/Manifest
@@ -0,0 +1,2 @@
+DIST solarwolf-1.5.tar.gz 2045888 BLAKE2B 66498b1d9b202b45ff87ea9d4b1ab14dcb6e343e8b0761576cfbf1c84ee9575cbf665e4b94552eb764f5e4fbaa02739f62c9eb20217085a6d18483d3ca7eb587 SHA512 44d84976f7797e3b859f1e5e50f9f964e5c6d6d4437ad25cf04720035e8697cc0c86490fdbbf8d923320a5c15c6e3afd1fbcfb9f17e7e31ce6f7264004e991f2
+DIST solarwolf_1.5+dfsg1-3.debian.tar.xz 8944 BLAKE2B 7d83da34338e069d5076e7852f87f233043bfd3f3b2fe93a03fc3fcc631545ff666922d776d25689dec0723b077a373b30aed70ff713e27fad2c0f77bcf3b40e SHA512 e443c6096d7fae2ead3a4d6cacd21590dbdd89ae3293bbd3a219a5337647088b417d6712cef0839c394bc18570d0255d2c3af12a0fc1aae718955ddc64dced95
diff --git a/games-arcade/solarwolf/metadata.xml b/games-arcade/solarwolf/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/solarwolf/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/solarwolf/solarwolf-1.5_p3.ebuild b/games-arcade/solarwolf/solarwolf-1.5_p3.ebuild
new file mode 100644
index 000000000000..4ef6ca831ee2
--- /dev/null
+++ b/games-arcade/solarwolf/solarwolf-1.5_p3.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit desktop python-single-r1
+
+MY_P=${PN}-$(ver_cut 1-2)
+
+DESCRIPTION="Action/arcade recreation of SolarFox"
+HOMEPAGE="https://www.pygame.org/shredwheat/solarwolf/index.shtml"
+SRC_URI="
+ http://www.pygame.org/shredwheat/solarwolf/${MY_P}.tar.gz
+ mirror://debian/pool/main/s/solarwolf/${MY_P/-/_}+dfsg1-${PV/*_p}.debian.tar.xz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~hppa ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep 'dev-python/pygame[${PYTHON_USEDEP}]')
+ media-libs/sdl2-image[gif,png]
+ media-libs/sdl2-mixer[mod,vorbis]
+"
+BDEPEND="${PYTHON_DEPS}"
+
+PATCHES=(
+ "${WORKDIR}"/debian/patches
+)
+
+src_prepare() {
+ default
+
+ sed -e "/CODEDIR = \"/s|= .*|= \"${EPREFIX}/usr/share/${PN}/code\"|" \
+ -e "/DATADIR = \"/s|= .*|= \"${EPREFIX}/usr/share/${PN}\"|" \
+ -i ${PN}.py || die
+ python_fix_shebang ${PN}.py
+
+ # default to windowed given it forces resolution and menus can be invisible
+ sed -i '/^display = 1/s/1/0/' code/game.py || die
+
+ rm -r data/.xvpics || die
+ gzip -d dist/${PN}.6.gz || die
+}
+
+src_install() {
+ newbin ${PN}.py ${PN}
+ doman dist/${PN}.6
+
+ insinto /usr/share/${PN}
+ doins -r code data
+
+ dodoc readme.txt
+
+ newicon data/ship-big.png ${PN}.png
+ make_desktop_entry ${PN} SolarWolf
+}
diff --git a/games-arcade/stardork/Manifest b/games-arcade/stardork/Manifest
new file mode 100644
index 000000000000..d54954d5f4d4
--- /dev/null
+++ b/games-arcade/stardork/Manifest
@@ -0,0 +1 @@
+DIST stardork-0.7.tar.gz 3951 BLAKE2B a35e8ceed5b5a6eb210408d6a7a32e2c38a3e2bbd05458055e44a1866b1bd0d2f222a6dce8ee8cbf6fe11d0c0541095ae0d9bad8e0b883ea74fd255e96364019 SHA512 3726b55cc2f107a0d69580b3c30406ea2596769433db915d4b3bded4345611c9d67596cbf373b19671960909d0bfdfc997d5c41d677f0309317445aeadcae733
diff --git a/games-arcade/stardork/files/stardork-0.7-clang16.patch b/games-arcade/stardork/files/stardork-0.7-clang16.patch
new file mode 100644
index 000000000000..c815fcd281fb
--- /dev/null
+++ b/games-arcade/stardork/files/stardork-0.7-clang16.patch
@@ -0,0 +1,13 @@
+https://bugs.gentoo.org/871498
+--- a/stardork.c
++++ b/stardork.c
+@@ -376,3 +376,3 @@
+
+-void plot_wormhole(y, x) {
++void plot_wormhole(int y, int x) {
+ int r1, r2, i, j;
+@@ -564,3 +564,3 @@
+
+-void change_colors(color) {
++void change_colors(int color) {
+ if (has_colors() != FALSE) {
diff --git a/games-arcade/stardork/metadata.xml b/games-arcade/stardork/metadata.xml
new file mode 100644
index 000000000000..913c34a68458
--- /dev/null
+++ b/games-arcade/stardork/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">stardork</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/stardork/stardork-0.7-r2.ebuild b/games-arcade/stardork/stardork-0.7-r2.ebuild
new file mode 100644
index 000000000000..c9a3e35401f0
--- /dev/null
+++ b/games-arcade/stardork/stardork-0.7-r2.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic toolchain-funcs
+
+DESCRIPTION="ncurses-based space shooter"
+HOMEPAGE="https://stardork.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/stardork/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~x86"
+
+RDEPEND="sys-libs/ncurses:="
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-clang16.patch
+)
+
+src_compile() {
+ tc-export CC
+ append-cppflags $($(tc-getPKG_CONFIG) ncurses --cflags || die)
+ append-libs $($(tc-getPKG_CONFIG) ncurses --libs || die)
+
+ emake -f /dev/null LDLIBS="${LIBS}" ${PN}
+}
+
+src_install() {
+ dobin ${PN}
+ einstalldocs
+}
diff --git a/games-arcade/supertransball2/Manifest b/games-arcade/supertransball2/Manifest
new file mode 100644
index 000000000000..6d026722ef4b
--- /dev/null
+++ b/games-arcade/supertransball2/Manifest
@@ -0,0 +1,2 @@
+DIST stransball2-v15-linux.zip 302212 BLAKE2B 8b45e32f37c805e75ba0d19ef004d75baea689fe87e946d50301cef01230492fd531b4100bc6200a261c24463443b2811faea8d200d15b15af0c884dbc285d2a SHA512 e87655dfca039c0c8553372b4da139f1d8fa420aad1909b422318dc049a9f7972c8d2398b83fde677b3eaf21d2d70fad73d7ec0c4b7bcbeacbf3544e6e575f6a
+DIST supertransball2_1.5-8.debian.tar.xz 26148 BLAKE2B 50ada1b6976da9686aa5cabd5e3a04222e30f9c69565018eebe51271842842dab88829c0672d7375995e3835c3be4983c8990e736278177d7d10596ed2453a0c SHA512 efbb8517b73d4413755663f96aa01eb679b43876091920a6d9a9fc0a31d001828aa536ac59e74172fa519d14b1dff117c150c022fb8f3898efbee2901a418a53
diff --git a/games-arcade/supertransball2/metadata.xml b/games-arcade/supertransball2/metadata.xml
new file mode 100644
index 000000000000..64c291ae9249
--- /dev/null
+++ b/games-arcade/supertransball2/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+<longdescription lang="en">
+"Super Transbal 2" is the sequel of "Transball" and "Transball 2", Inspired in
+THRUST type of games (and concretely in ZARA THRUSTA for the Amiga 500). In each
+level of Transball, the goal is to find the SPHERE, capture it and carry it to
+the upper part of the level. The main obstacle is the gravity, that impulses you
+towards the ground. But many other obstacles, canons, tanks, doors, etc. will
+try to make difficult your journey...
+</longdescription>
+</pkgmetadata>
diff --git a/games-arcade/supertransball2/supertransball2-1.5-r1.ebuild b/games-arcade/supertransball2/supertransball2-1.5-r1.ebuild
new file mode 100644
index 000000000000..def712fd67b4
--- /dev/null
+++ b/games-arcade/supertransball2/supertransball2-1.5-r1.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop
+
+MY_PV="$(ver_rs 1- '')"
+MY_P="stransball2-v${MY_PV}"
+FILE="${MY_P}-linux"
+
+DESCRIPTION="Thrust clone"
+HOMEPAGE="http://www.braingames.getput.com/stransball2/"
+SRC_URI="http://braingames.bugreport.nl/stransball2/${FILE}.zip
+ mirror://debian/pool/main/s/${PN}/${PN}_${PV}-8.debian.tar.xz"
+S="${WORKDIR}/${P}/sources"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+BDEPEND="app-arch/unzip"
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-image
+ media-libs/sdl-mixer
+ media-libs/sdl-sound
+ media-libs/sge
+"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+ unpack ${A}
+ mv -f "${FILE}" ${P} || die
+}
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e "s:/usr/share/games:/usr/share:" \
+ "${WORKDIR}"/debian/patches/0001-Fix-unix-paths-and-Makefile.patch || die
+
+ eapply -p2 "${WORKDIR}"/debian/patches/*.patch
+
+ sed -i \
+ -e "s: -I/usr/local/include/SDL::" \
+ -e "s:-g3 -O3:\$(CXXFLAGS):" \
+ -e "s:c++:\$(CXX):" \
+ Makefile || die "sed Makefile failed"
+}
+
+src_install() {
+ cd .. || die
+ dobin ${PN}
+
+ doicon ../debian/${PN}.png
+ make_desktop_entry ${PN} "Super Transball 2"
+ dodoc readme.txt
+ doman ../debian/supertransball2.6
+
+ insinto "/usr/share/${PN}"
+ doins -r demos graphics maps sound
+}
diff --git a/games-arcade/supertux/Manifest b/games-arcade/supertux/Manifest
new file mode 100644
index 000000000000..ff0649f95291
--- /dev/null
+++ b/games-arcade/supertux/Manifest
@@ -0,0 +1,2 @@
+DIST SuperTux-v0.7.0-Source.tar.gz 292623271 BLAKE2B e22bcf5a55d5787f13753eb93dc08e5f1053e30def7585b761a0474039ae08e399b9916cd153bc0656800844a7e9d93e9f12e0b1a6f3fbdbb1f66d6f72030c1a SHA512 15bc4f84e1453be25ac3fa3496443e4e20d805f8c4d50148235f4dc82d188bef974fc720653cab36350d8b631c74539e4a74c33259fdaac6a516f44f8ed65297
+DIST SuperTux-v0.7.0-beta.2-Source.tar.gz 291458506 BLAKE2B 7567d5b91b05cf02c216ce4944bec2f7a90c22850dbaab3e4ad8245624956da240d7390265cc222b082a4927e305c784fa11fe3f7b888985fdabe9462d6d2b24 SHA512 75155b9e491b0fde8103cce287f20903dafe6c46e342da02440c20e7b879cbae78b2e5793e42cdeb3a3206efb461b13e013a8ae4280da523dfbeeb1cd32c356c
diff --git a/games-arcade/supertux/metadata.xml b/games-arcade/supertux/metadata.xml
new file mode 100644
index 000000000000..63d5a05a9799
--- /dev/null
+++ b/games-arcade/supertux/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">super-tux</remote-id>
+ <remote-id type="github">SuperTux/supertux</remote-id>
+ </upstream>
+ <use>
+ <flag name="network">Enable network support (e.g. for downloading add-ons)</flag>
+ </use>
+</pkgmetadata>
diff --git a/games-arcade/supertux/supertux-0.7.0.ebuild b/games-arcade/supertux/supertux-0.7.0.ebuild
new file mode 100644
index 000000000000..b066a036e40d
--- /dev/null
+++ b/games-arcade/supertux/supertux-0.7.0.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Hide cmake compatibility warning in external libs for now. Will get
+# fixed upstream.
+CMAKE_QA_COMPAT_SKIP=1
+inherit cmake xdg
+
+DESCRIPTION="A run 'n jump platforming game featuring Tux the penguin"
+HOMEPAGE="https://www.supertux.org"
+
+if [[ "${PV}" == *9999* ]] ; then
+ inherit git-r3
+
+ EGIT_REPO_URI="https://github.com/SuperTux/${PN}.git"
+ MY_PV="${PV}"
+else
+ MY_PV="${PV/_rc/-rc.}"
+ MY_PV="${MY_PV/_beta/-beta.}"
+ MY_P="SuperTux-v${MY_PV}-Source"
+
+ SRC_URI="https://github.com/SuperTux/${PN}/releases/download/v${MY_PV}/${MY_P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+ S="${WORKDIR}/${MY_P}"
+fi
+
+LICENSE="GPL-2+ GPL-3+ ZLIB MIT CC-BY-SA-2.0 CC-BY-SA-3.0"
+SLOT="0"
+IUSE="debug egl +network +opengl test"
+RESTRICT="!test? ( test )"
+
+# libepoxy bindings do not support GLX, so we fall back to GLEW otherwise.
+RDEPEND="
+ >=dev-games/physfs-3.0
+ dev-libs/libfmt:=
+ media-libs/freetype
+ media-libs/libpng:0=
+ >=media-libs/libsdl2-2.0.1[joystick,video]
+ media-libs/libvorbis
+ media-libs/openal
+ >=media-libs/sdl2-ttf-2.0.15
+ >=media-libs/sdl2-image-2.0.0[png,jpeg]
+ network? (
+ >=net-misc/curl-7.21.7
+ )
+ opengl? (
+ egl? (
+ media-libs/libepoxy
+ )
+ !egl? (
+ media-libs/glew:=
+ )
+ virtual/opengl
+ )
+"
+DEPEND="${RDEPEND}
+ media-libs/glm"
+BDEPEND="virtual/pkgconfig"
+
+src_configure() {
+ local mycmakeargs=(
+ -DINSTALL_SUBDIR_BIN=bin
+ -DINSTALL_SUBDIR_DOC=share/doc/${PF}
+ -DINSTALL_SUBDIR_SHARE=share/${PN}2
+ -DENABLE_SQDBG="$(usex debug)"
+ # SuperTux uses its own modified (simple)squirrel fork anyway, so it's
+ # unlikely that anyone will link with it. It's also prone to a conflict
+ # if one were to bundle simplesquirrel separately (libsimplesquirrel.so)
+ -DUSE_STATIC_SIMPLESQUIRREL=ON
+ -DUSE_SYSTEM_SDL2_TTF=ON
+ -DIS_SUPERTUX_RELEASE=ON
+ -DENABLE_OPENGL="$(usex opengl)"
+ -DENABLE_NETWORKING="$(usex network)"
+ -DBUILD_TESTING="$(usex test)"
+ )
+
+ # This flag is ignored if -opengl
+ if use egl ; then
+ mycmakeargs+=( -DUSE_GL_LIBRARY=libepoxy )
+ else
+ mycmakeargs+=( -DUSE_GL_LIBRARY=glew )
+ fi
+
+ cmake_src_configure
+}
diff --git a/games-arcade/supertux/supertux-0.7.0_beta2.ebuild b/games-arcade/supertux/supertux-0.7.0_beta2.ebuild
new file mode 100644
index 000000000000..b066a036e40d
--- /dev/null
+++ b/games-arcade/supertux/supertux-0.7.0_beta2.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Hide cmake compatibility warning in external libs for now. Will get
+# fixed upstream.
+CMAKE_QA_COMPAT_SKIP=1
+inherit cmake xdg
+
+DESCRIPTION="A run 'n jump platforming game featuring Tux the penguin"
+HOMEPAGE="https://www.supertux.org"
+
+if [[ "${PV}" == *9999* ]] ; then
+ inherit git-r3
+
+ EGIT_REPO_URI="https://github.com/SuperTux/${PN}.git"
+ MY_PV="${PV}"
+else
+ MY_PV="${PV/_rc/-rc.}"
+ MY_PV="${MY_PV/_beta/-beta.}"
+ MY_P="SuperTux-v${MY_PV}-Source"
+
+ SRC_URI="https://github.com/SuperTux/${PN}/releases/download/v${MY_PV}/${MY_P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+ S="${WORKDIR}/${MY_P}"
+fi
+
+LICENSE="GPL-2+ GPL-3+ ZLIB MIT CC-BY-SA-2.0 CC-BY-SA-3.0"
+SLOT="0"
+IUSE="debug egl +network +opengl test"
+RESTRICT="!test? ( test )"
+
+# libepoxy bindings do not support GLX, so we fall back to GLEW otherwise.
+RDEPEND="
+ >=dev-games/physfs-3.0
+ dev-libs/libfmt:=
+ media-libs/freetype
+ media-libs/libpng:0=
+ >=media-libs/libsdl2-2.0.1[joystick,video]
+ media-libs/libvorbis
+ media-libs/openal
+ >=media-libs/sdl2-ttf-2.0.15
+ >=media-libs/sdl2-image-2.0.0[png,jpeg]
+ network? (
+ >=net-misc/curl-7.21.7
+ )
+ opengl? (
+ egl? (
+ media-libs/libepoxy
+ )
+ !egl? (
+ media-libs/glew:=
+ )
+ virtual/opengl
+ )
+"
+DEPEND="${RDEPEND}
+ media-libs/glm"
+BDEPEND="virtual/pkgconfig"
+
+src_configure() {
+ local mycmakeargs=(
+ -DINSTALL_SUBDIR_BIN=bin
+ -DINSTALL_SUBDIR_DOC=share/doc/${PF}
+ -DINSTALL_SUBDIR_SHARE=share/${PN}2
+ -DENABLE_SQDBG="$(usex debug)"
+ # SuperTux uses its own modified (simple)squirrel fork anyway, so it's
+ # unlikely that anyone will link with it. It's also prone to a conflict
+ # if one were to bundle simplesquirrel separately (libsimplesquirrel.so)
+ -DUSE_STATIC_SIMPLESQUIRREL=ON
+ -DUSE_SYSTEM_SDL2_TTF=ON
+ -DIS_SUPERTUX_RELEASE=ON
+ -DENABLE_OPENGL="$(usex opengl)"
+ -DENABLE_NETWORKING="$(usex network)"
+ -DBUILD_TESTING="$(usex test)"
+ )
+
+ # This flag is ignored if -opengl
+ if use egl ; then
+ mycmakeargs+=( -DUSE_GL_LIBRARY=libepoxy )
+ else
+ mycmakeargs+=( -DUSE_GL_LIBRARY=glew )
+ fi
+
+ cmake_src_configure
+}
diff --git a/games-arcade/supertux/supertux-9999.ebuild b/games-arcade/supertux/supertux-9999.ebuild
new file mode 100644
index 000000000000..b066a036e40d
--- /dev/null
+++ b/games-arcade/supertux/supertux-9999.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Hide cmake compatibility warning in external libs for now. Will get
+# fixed upstream.
+CMAKE_QA_COMPAT_SKIP=1
+inherit cmake xdg
+
+DESCRIPTION="A run 'n jump platforming game featuring Tux the penguin"
+HOMEPAGE="https://www.supertux.org"
+
+if [[ "${PV}" == *9999* ]] ; then
+ inherit git-r3
+
+ EGIT_REPO_URI="https://github.com/SuperTux/${PN}.git"
+ MY_PV="${PV}"
+else
+ MY_PV="${PV/_rc/-rc.}"
+ MY_PV="${MY_PV/_beta/-beta.}"
+ MY_P="SuperTux-v${MY_PV}-Source"
+
+ SRC_URI="https://github.com/SuperTux/${PN}/releases/download/v${MY_PV}/${MY_P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+ S="${WORKDIR}/${MY_P}"
+fi
+
+LICENSE="GPL-2+ GPL-3+ ZLIB MIT CC-BY-SA-2.0 CC-BY-SA-3.0"
+SLOT="0"
+IUSE="debug egl +network +opengl test"
+RESTRICT="!test? ( test )"
+
+# libepoxy bindings do not support GLX, so we fall back to GLEW otherwise.
+RDEPEND="
+ >=dev-games/physfs-3.0
+ dev-libs/libfmt:=
+ media-libs/freetype
+ media-libs/libpng:0=
+ >=media-libs/libsdl2-2.0.1[joystick,video]
+ media-libs/libvorbis
+ media-libs/openal
+ >=media-libs/sdl2-ttf-2.0.15
+ >=media-libs/sdl2-image-2.0.0[png,jpeg]
+ network? (
+ >=net-misc/curl-7.21.7
+ )
+ opengl? (
+ egl? (
+ media-libs/libepoxy
+ )
+ !egl? (
+ media-libs/glew:=
+ )
+ virtual/opengl
+ )
+"
+DEPEND="${RDEPEND}
+ media-libs/glm"
+BDEPEND="virtual/pkgconfig"
+
+src_configure() {
+ local mycmakeargs=(
+ -DINSTALL_SUBDIR_BIN=bin
+ -DINSTALL_SUBDIR_DOC=share/doc/${PF}
+ -DINSTALL_SUBDIR_SHARE=share/${PN}2
+ -DENABLE_SQDBG="$(usex debug)"
+ # SuperTux uses its own modified (simple)squirrel fork anyway, so it's
+ # unlikely that anyone will link with it. It's also prone to a conflict
+ # if one were to bundle simplesquirrel separately (libsimplesquirrel.so)
+ -DUSE_STATIC_SIMPLESQUIRREL=ON
+ -DUSE_SYSTEM_SDL2_TTF=ON
+ -DIS_SUPERTUX_RELEASE=ON
+ -DENABLE_OPENGL="$(usex opengl)"
+ -DENABLE_NETWORKING="$(usex network)"
+ -DBUILD_TESTING="$(usex test)"
+ )
+
+ # This flag is ignored if -opengl
+ if use egl ; then
+ mycmakeargs+=( -DUSE_GL_LIBRARY=libepoxy )
+ else
+ mycmakeargs+=( -DUSE_GL_LIBRARY=glew )
+ fi
+
+ cmake_src_configure
+}
diff --git a/games-arcade/syobon/Manifest b/games-arcade/syobon/Manifest
new file mode 100644
index 000000000000..352fb2ea9f3e
--- /dev/null
+++ b/games-arcade/syobon/Manifest
@@ -0,0 +1 @@
+DIST syobon_1.0.1_src.tar.gz 2721153 BLAKE2B 4e5dd2689f531478aef2bc5f6723da1b0c2bcf04bd532775f6883660aedcd4226f9f42dc1ce5d19baa0d4544b4ff3084195a06ffef732cc9adbae412f1c7fd6a SHA512 9a8ff389bb23563a16f1b56aefdb93cf0ee5be74c6d48276ce76a17159bc021f517a69eb300a1c17ee81d4112ba26f0d386a1e2e37bced681044c3a3ca4f7ca5
diff --git a/games-arcade/syobon/files/syobon-1.0.1-lto.patch b/games-arcade/syobon/files/syobon-1.0.1-lto.patch
new file mode 100644
index 000000000000..4053edffc3a1
--- /dev/null
+++ b/games-arcade/syobon/files/syobon-1.0.1-lto.patch
@@ -0,0 +1,100 @@
+diff --git a/loadg.cpp b/loadg.cpp
+index 4415cb8..c662c7c 100644
+--- a/loadg.cpp
++++ b/loadg.cpp
+@@ -2,7 +2,7 @@
+ #include "Windows.h"
+ #endif
+ #include "DxLib.h"
+-
++#include "size.h"
+
+ void end();
+
+@@ -20,7 +20,7 @@ extern Mix_Chunk *otofinal;
+ #endif
+
+ extern int anx[160], any[160];
+-extern int ne[40], nf[40];
++extern int ne[nmax], nf[nmax];
+
+ void loadg(void)
+ {
+diff --git a/main.h b/main.h
+index 2dd49d8..9aab7cc 100644
+--- a/main.h
++++ b/main.h
+@@ -1,4 +1,6 @@
+ #include "DxLib.h"
++#include "size.h"
++
+ using namespace std;
+
+ #define SHORT
+@@ -129,7 +131,6 @@ double pai = 3.1415926535;
+
+
+ //育
+-#define smax 31
+ int sx, sco;
+ int sa[smax], sb[smax], sc[smax], sd[smax], stype[smax], sxtype[smax],
+ sr[smax];
+@@ -159,7 +160,6 @@ int mascrollmax = 21000; //9000
+ //
+ void tyobi(int x, int y, int type);
+ void brockbreak(int t);
+-#define tmax 641
+ int tco;
+ int ta[tmax], tb[tmax], tc[tmax], td[tmax], thp[tmax], ttype[tmax];
+ int titem[tmax], txtype[tmax];
+@@ -173,7 +173,6 @@ void setfont(int x, int y);
+ //号違
+ void eyobi(int xa, int xb, int xc, int xd, int xe, int xf, int xnobia,
+ int xnobib, int xgtype, int xtm);
+-#define emax 201
+ int eco;
+ int ea[emax], eb[emax], enobia[emax], enobib[emax], ec[emax], ed[emax];
+ int ee[emax], ef[emax], etm[emax];
+@@ -185,7 +184,6 @@ int egtype[emax];
+ void ayobi(int xa, int xb, int xc, int xd, int xnotm, int xtype,
+ int xxtype);
+ void tekizimen();
+-#define amax 24
+ int aco;
+ int aa[amax], ab[amax], anobia[amax], anobib[amax], ac[amax], ad[amax];
+ int ae[amax], af[amax], abrocktm[amax];
+@@ -196,21 +194,18 @@ int atm[amax], a2tm[amax];
+ int amsgtm[amax], amsgtype[amax];
+
+ //球榊
+-#define bmax 81
+ int bco;
+ int ba[bmax], bb[bmax], btm[bmax];
+ int btype[bmax], bxtype[bmax], bz[bmax];
+
+
+ //
+-#define nmax 41
+ int nxxmax, nco;
+ int na[nmax], nb[nmax], nc[nmax], nd[nmax], ntype[nmax];
+ int ne[nmax], nf[nmax], ng[nmax], nx[nmax];
+
+
+ //
+-#define srmax 21
+ int srco;
+ int sra[srmax], srb[srmax], src[srmax], srd[srmax], sre[srmax], srf[srmax];
+ int srtype[srmax], srgtype[srmax], sracttype[srmax], srsp[srmax];
+diff --git a/size.h b/size.h
+new file mode 100644
+index 0000000..8f91ec1
+--- /dev/null
++++ b/size.h
+@@ -0,0 +1,7 @@
++#define amax 24
++#define bmax 81
++#define emax 201
++#define nmax 41
++#define smax 31
++#define srmax 21
++#define tmax 641
diff --git a/games-arcade/syobon/files/syobon-1.0.1-narrowing.patch b/games-arcade/syobon/files/syobon-1.0.1-narrowing.patch
new file mode 100644
index 000000000000..e8c7f938bde5
--- /dev/null
+++ b/games-arcade/syobon/files/syobon-1.0.1-narrowing.patch
@@ -0,0 +1,15 @@
+https://bugs.gentoo.org/739110
+--- a/DxLib.cpp
++++ b/DxLib.cpp
+@@ -213,7 +213,7 @@ void ChangeFontType(byte type)
+
+ void DrawString(int a, int b, const char *x, Uint32 c)
+ {
+- SDL_Color color = { c >> 16, c >> 8, c };
++ SDL_Color color = { static_cast<unsigned char>(c >> 16), static_cast<unsigned char>(c >> 8), static_cast<unsigned char>(c) };
+ SDL_Surface *rendered = TTF_RenderUTF8_Solid(font[fontsize], x, color);
+ if (fontType == DX_FONTTYPE_EDGE) {
+ SDL_Color blk = { 0, 0, 0 };
+--
+2.51.1
+
diff --git a/games-arcade/syobon/metadata.xml b/games-arcade/syobon/metadata.xml
new file mode 100644
index 000000000000..d28f5ad166f5
--- /dev/null
+++ b/games-arcade/syobon/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+<email>games@gentoo.org</email>
+<name>Gentoo Games Project</name>
+</maintainer>
+<longdescription>
+Syobon Action (also known as Cat Mario or Neko Mario) is a platform game with a similar gameplay experience as Super Mario Bros, except it's a lot more difficult.
+</longdescription>
+</pkgmetadata>
diff --git a/games-arcade/syobon/syobon-1.0.1-r1.ebuild b/games-arcade/syobon/syobon-1.0.1-r1.ebuild
new file mode 100644
index 000000000000..36b2861a1491
--- /dev/null
+++ b/games-arcade/syobon/syobon-1.0.1-r1.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop
+
+DESCRIPTION="Syobon Action (also known as Cat Mario or Neko Mario)"
+HOMEPAGE="http://zapek.com/?p=189"
+SRC_URI="http://zapek.com/wp-content/uploads/2010/09/${PN}_${PV}_src.tar.gz"
+S="${WORKDIR}/${PN}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[sound,video,joystick]
+ media-libs/sdl-gfx
+ media-libs/sdl-image[png]
+ media-libs/sdl-ttf
+ media-libs/sdl-mixer[vorbis]
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.0.1-narrowing.patch
+ "${FILESDIR}"/${PN}-1.0.1-lto.patch
+)
+
+src_compile() {
+ emake GAMEDATA="/usr/share/${PN}"
+}
+
+src_install() {
+ dobin ${PN}
+
+ insinto "/usr/share/${PN}"
+ doins -r BGM SE res
+ einstalldocs
+
+ make_desktop_entry ${PN}
+}
diff --git a/games-arcade/taisei/Manifest b/games-arcade/taisei/Manifest
new file mode 100644
index 000000000000..596ff6027417
--- /dev/null
+++ b/games-arcade/taisei/Manifest
@@ -0,0 +1 @@
+DIST taisei-1.4.4.tar.xz 290331536 BLAKE2B 8dcd65265062f510e407494ab977a1f2d98937fef3657fb61cc582f8ec855dc8402c79fa059a9ceff52e45a0ff50fde810d72c3a1b270ed64824d6dcb42ab983 SHA512 18a65222db696dd634eb1dff625116bdbfff0c510498c9a73244facd724850d365d06776161fecbbee3d09c59472b0236b05a031aaf3b02c32d417a84267d428
diff --git a/games-arcade/taisei/metadata.xml b/games-arcade/taisei/metadata.xml
new file mode 100644
index 000000000000..3b3e2efba28c
--- /dev/null
+++ b/games-arcade/taisei/metadata.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>contact@hacktivis.me</email>
+ <name>Haelwenn (lanodan) Monnier</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>o.freyermuth@googlemail.com</email>
+ <name>Oliver Freyermuth</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>https://github.com/taisei-project/taisei/issues</bugs-to>
+ <changelog>https://taisei-project.org/news.atom</changelog>
+ <remote-id type="github">taisei-project/taisei</remote-id>
+ </upstream>
+ <longdescription lang="en">
+ Taisei is an open clone of the Touhou Project series. Touhou is a one-man project of shoot-em-up games set in an isolated world full of Japanese folklore.
+ </longdescription>
+ <use>
+ <flag name="lto">Enable link time optimization</flag>
+ <flag name="mimalloc">Use mimalloc allocator via <pkg>dev-libs/mimalloc</pkg></flag>
+ <flag name="zip">Enable loading of game data from ZIP packages via <pkg>dev-libs/libzip</pkg></flag>
+ </use>
+</pkgmetadata>
diff --git a/games-arcade/taisei/taisei-1.4.4.ebuild b/games-arcade/taisei/taisei-1.4.4.ebuild
new file mode 100644
index 000000000000..9bd21b89c49f
--- /dev/null
+++ b/games-arcade/taisei/taisei-1.4.4.ebuild
@@ -0,0 +1,91 @@
+# Copyright 2019-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit meson python-any-r1 xdg
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/taisei-project/taisei.git"
+else
+ # Auto-generated tarballs lacks submodules, all of which are taisei subrepos
+ SRC_URI="https://github.com/taisei-project/taisei/releases/download/v${PV}/taisei-${PV}.tar.xz"
+ KEYWORDS="~amd64"
+fi
+
+DESCRIPTION="Clone of the Touhou series, written in C using SDL/OpenGL/OpenAL."
+HOMEPAGE="https://taisei-project.org/"
+LICENSE="MIT CC-BY-4.0 CC0-1.0 public-domain"
+SLOT="0"
+
+IUSE="doc lto +mimalloc zip"
+
+# see: https://github.com/taisei-project/taisei/issues/399
+RDEPEND="
+ dev-util/glslang
+ media-libs/freetype:2
+ media-libs/opusfile
+ >=media-libs/libpng-1.5
+ media-libs/libsdl3[opengl]
+ media-libs/libwebp
+ media-libs/opusfile
+ app-arch/zstd
+ virtual/zlib:=
+ dev-libs/openssl:=
+ mimalloc? ( dev-libs/mimalloc:= )
+ zip? ( dev-libs/libzip[zstd] )
+"
+# see: https://github.com/taisei-project/taisei/issues/381
+DEPEND="
+ ${RDEPEND}
+ >=dev-libs/cglm-0.7.8
+ !!~dev-libs/cglm-0.9.3
+"
+BDEPEND="
+ dev-build/meson
+ $(python_gen_any_dep '
+ dev-python/zstandard[${PYTHON_USEDEP}]
+ ')
+ ${PYTHON_DEPS}
+ doc? ( dev-python/docutils )"
+
+# BSD qsort_r(3) and Microsoft qsort_s(3) implicit declarations
+# https://bugs.gentoo.org/941235
+QA_CONFIG_IMPL_DECL_SKIP=(
+ qsort_r
+ qsort_s
+)
+
+python_check_deps() {
+ python_has_version "dev-python/zstandard[${PYTHON_USEDEP}]"
+}
+
+src_prepare() {
+ # Path patching needed also without USE=doc (COPYING etc.)
+ sed -i "s/doc_path = join.*/doc_path = join_paths(datadir, \'doc\', \'${PF}\')/" \
+ meson.build || die "Failed changing doc_path"
+
+ # Remove blobs
+ rm -f external/basis_universal/OpenCL/lib/*.lib \
+ external/basis_universal/webgl_videotest/basis.wasm \
+ external/basis_universal/webgl/transcoder/build/basis_transcoder.wasm \
+ external/basis_universal/webgl/encoder/build/basis_encoder.wasm \
+ || die
+
+ default
+}
+
+src_configure() {
+ local emesonargs=(
+ $(meson_feature doc docs)
+ $(meson_use lto b_lto)
+ $(meson_feature zip vfs_zip)
+ -Dallocator=$(usex mimalloc mimalloc libc)
+ -Dstrip=false
+ -Duse_libcrypto=enabled
+ )
+ meson_src_configure
+}
diff --git a/games-arcade/taisei/taisei-9999.ebuild b/games-arcade/taisei/taisei-9999.ebuild
new file mode 100644
index 000000000000..25ba5d3d8ca8
--- /dev/null
+++ b/games-arcade/taisei/taisei-9999.ebuild
@@ -0,0 +1,79 @@
+# Copyright 2019-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit meson python-any-r1 xdg
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/taisei-project/taisei.git"
+else
+ # Auto-generated tarballs lacks submodules, all of which are taisei subrepos
+ SRC_URI="https://github.com/taisei-project/taisei/releases/download/v${PV}/taisei-${PV}.tar.xz"
+ KEYWORDS="~amd64"
+fi
+
+DESCRIPTION="Clone of the Touhou series, written in C using SDL/OpenGL/OpenAL."
+HOMEPAGE="https://taisei-project.org/"
+LICENSE="MIT CC-BY-4.0 CC0-1.0 public-domain"
+SLOT="0"
+
+IUSE="doc lto zip"
+
+# see: https://github.com/taisei-project/taisei/issues/399
+RDEPEND="
+ media-libs/freetype:2
+ media-libs/opusfile
+ >=media-libs/libpng-1.5
+ media-libs/libsdl2[opengl]
+ media-libs/libwebp
+ media-libs/opusfile
+ app-arch/zstd
+ virtual/zlib:=
+ dev-libs/openssl:=
+ zip? ( dev-libs/libzip[zstd] )
+"
+DEPEND="
+ ${RDEPEND}
+ >=dev-libs/cglm-0.7.8
+"
+BDEPEND="
+ dev-build/meson
+ $(python_gen_any_dep '
+ dev-python/zstandard[${PYTHON_USEDEP}]
+ ')
+ ${PYTHON_DEPS}
+ doc? ( dev-python/docutils )"
+
+python_check_deps() {
+ python_has_version "dev-python/zstandard[${PYTHON_USEDEP}]"
+}
+
+src_prepare() {
+ # Path patching needed also without USE=doc (COPYING etc.)
+ sed -i "s/doc_path = join.*/doc_path = join_paths(datadir, \'doc\', \'${PF}\')/" \
+ meson.build || die "Failed changing doc_path"
+
+ # Remove blobs
+ rm external/basis_universal/OpenCL/lib/*.lib \
+ external/basis_universal/webgl_videotest/basis.wasm \
+ external/basis_universal/webgl/transcoder/build/basis_transcoder.wasm \
+ external/basis_universal/webgl/encoder/build/basis_encoder.wasm \
+ || die
+
+ default
+}
+
+src_configure() {
+ local emesonargs=(
+ $(meson_feature doc docs)
+ $(meson_use lto b_lto)
+ $(meson_feature zip vfs_zip)
+ -Dstrip=false
+ -Duse_libcrypto=enabled
+ )
+ meson_src_configure
+}
diff --git a/games-arcade/tecnoballz/Manifest b/games-arcade/tecnoballz/Manifest
new file mode 100644
index 000000000000..e9c8c838757a
--- /dev/null
+++ b/games-arcade/tecnoballz/Manifest
@@ -0,0 +1 @@
+DIST tecnoballz-0.93.1.tar.gz 1989092 BLAKE2B b623a11b9cbb599af85cd8a8cae712dc6403cc0e406f0ecee00f92e571a94db9ea3b8446d3abf9e6992fcb680775ea5e83cb5c58b563c71ddf83c6a969ac4e69 SHA512 5ccbff786398b191f56809180e7309a1e183852f69f51c1797e9e5db5e7ef04d8daa37940c31c2d5ab6911974d140da5d88d81d668122a0ffc37938ef856702b
diff --git a/games-arcade/tecnoballz/metadata.xml b/games-arcade/tecnoballz/metadata.xml
new file mode 100644
index 000000000000..c8f73d16bc45
--- /dev/null
+++ b/games-arcade/tecnoballz/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+<longdescription lang="en">
+A exciting Brick Breaker with 50 levels of game and 11 special levels,
+distributed on the 2 modes of game to give the player a sophisticated system of
+attack weapons with an enormous power of fire that can be build by gaining
+bonuses. Numerous decors, musics and sounds complete this great game. This
+game was ported from the Commodore Amiga.
+</longdescription>
+<upstream>
+ <remote-id type="github">brunonymous/tecnoballz</remote-id>
+</upstream>
+</pkgmetadata>
diff --git a/games-arcade/tecnoballz/tecnoballz-0.93.1.ebuild b/games-arcade/tecnoballz/tecnoballz-0.93.1.ebuild
new file mode 100644
index 000000000000..e1697aa313e1
--- /dev/null
+++ b/games-arcade/tecnoballz/tecnoballz-0.93.1.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop
+
+DESCRIPTION="An exciting Brick Breaker"
+HOMEPAGE="https://linux.tlk.fr/games/TecnoballZ/"
+SRC_URI="https://github.com/brunonymous/tecnoballz/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ dev-libs/tinyxml
+ media-libs/libsdl[joystick]
+ media-libs/sdl-mixer[mikmod]
+ media-libs/sdl-image[png]
+ media-libs/libmikmod:0"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+
+ mkdir man/fr || die
+ mv man/${PN}.fr.6 man/fr/${PN}.6 || die
+
+ sed -i -e 's:\$(prefix)/games:\$(prefix)/bin:' src/Makefile.am || die
+ sed -i -e '/CXXFLAGS=/d' -e '/^else/d' configure.ac || die
+
+ eautoreconf
+}
+
+src_install() {
+ default
+ make_desktop_entry ${PN} Tecnoballz
+}
diff --git a/games-arcade/tetrio-desktop/Manifest b/games-arcade/tetrio-desktop/Manifest
new file mode 100644
index 000000000000..a83f91cd5fd3
--- /dev/null
+++ b/games-arcade/tetrio-desktop/Manifest
@@ -0,0 +1,3 @@
+DIST tetrio-desktop-10.deb 81961618 BLAKE2B d835f69d7b8e94aeea2fc70946e58d978d878d01995488800e3647736975acf4d6ebf9b866ac606447aea89097aea1b42637c1bf4b9293745cfe674560228333 SHA512 2073193144e26287f934c34dc00b8d83465aeb3df22d0998bc90f4f17df3d0ed9940ba7532f2697d1461847c9c793c67d4463e5caeedf33a6dda6e693f315e00
+DIST tetrio-desktop-9.deb 74732756 BLAKE2B d225276ec77c23a8b4a792cd7ef866563d29b71adb557566dd6a18be96d4789e3a84f661216feea2a63d235aabb625c489b7177dfd6ccc7993fad90fe58bd8ad SHA512 a8852ea847d12cac46d29a26c7793f4f1911d3336647392cfe16cd955c8e1175fe0ff77764452713c0498f6b1a3044aaf4d131a0ce3b58861be59fd60a8a6e8c
+DIST tetrio-plus-9.zip 16999939 BLAKE2B 640e6957ee3edd8cdbb905ee6bbd0ff4c4843548b486762a6876a86d764d232a4625143aca9c5a4a0cd122d5f3d23564ffa891a41229a8517037f1427645ca96 SHA512 fdb5cf2f8bea86cea706c625c25b962ac733675fbccacba5003188766eaa4bf0a7c01df52edd99316b4be8b8122bfe95154182a153bf65c584ecf7daca47b966
diff --git a/games-arcade/tetrio-desktop/files/tetrio-desktop-10-application.patch b/games-arcade/tetrio-desktop/files/tetrio-desktop-10-application.patch
new file mode 100644
index 000000000000..a0ea14736706
--- /dev/null
+++ b/games-arcade/tetrio-desktop/files/tetrio-desktop-10-application.patch
@@ -0,0 +1,16 @@
+diff --git a/usr/share/applications/tetrio-desktop.desktop b/usr/share/applications/tetrio-desktop.desktop
+index 802f685..898b247 100644
+--- a/usr/share/applications/tetrio-desktop.desktop
++++ b/usr/share/applications/tetrio-desktop.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+ Name=TETR.IO
+-Exec=/opt/TETR.IO/TETR.IO %U
++Exec="/usr/bin/tetrio-desktop" %U
+ Terminal=false
+ Type=Application
+ Icon=TETR.IO
+ StartupWMClass=TETR.IO
+ Comment=Puzzle together in this modern yet familiar online stacker!
+ MimeType=x-scheme-handler/tetrio;
+ Categories=Game;BlocksGame;
diff --git a/games-arcade/tetrio-desktop/files/tetrio-desktop-8-application.patch b/games-arcade/tetrio-desktop/files/tetrio-desktop-8-application.patch
new file mode 100644
index 000000000000..b8752e399147
--- /dev/null
+++ b/games-arcade/tetrio-desktop/files/tetrio-desktop-8-application.patch
@@ -0,0 +1,13 @@
+diff --git a/usr/share/applications/tetrio-desktop.desktop b/usr/share/applications/tetrio-desktop.desktop
+index 802f685..898b247 100644
+--- a/usr/share/applications/tetrio-desktop.desktop
++++ b/usr/share/applications/tetrio-desktop.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+ Name=TETR.IO
+ Comment=Puzzle together in this modern yet familiar online stacker!
+-Exec="/opt/TETR.IO/tetrio-desktop" %U
++Exec="/usr/bin/tetrio-desktop" %U
+ Terminal=false
+ Type=Application
+ Icon=tetrio-desktop
diff --git a/games-arcade/tetrio-desktop/files/tetrio-desktop-9-application.patch b/games-arcade/tetrio-desktop/files/tetrio-desktop-9-application.patch
new file mode 100644
index 000000000000..a0ea14736706
--- /dev/null
+++ b/games-arcade/tetrio-desktop/files/tetrio-desktop-9-application.patch
@@ -0,0 +1,16 @@
+diff --git a/usr/share/applications/tetrio-desktop.desktop b/usr/share/applications/tetrio-desktop.desktop
+index 802f685..898b247 100644
+--- a/usr/share/applications/tetrio-desktop.desktop
++++ b/usr/share/applications/tetrio-desktop.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+ Name=TETR.IO
+-Exec=/opt/TETR.IO/TETR.IO %U
++Exec="/usr/bin/tetrio-desktop" %U
+ Terminal=false
+ Type=Application
+ Icon=TETR.IO
+ StartupWMClass=TETR.IO
+ Comment=Puzzle together in this modern yet familiar online stacker!
+ MimeType=x-scheme-handler/tetrio;
+ Categories=Game;BlocksGame;
diff --git a/games-arcade/tetrio-desktop/metadata.xml b/games-arcade/tetrio-desktop/metadata.xml
new file mode 100644
index 000000000000..b477b1f7edb9
--- /dev/null
+++ b/games-arcade/tetrio-desktop/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>aquaonelove@proton.me</email>
+ <name>AquaOneLove</name>
+ </maintainer>
+ <use>
+ <flag name="tetrio-plus">Install with TETR.IO PLUS modification</flag>
+ </use>
+</pkgmetadata>
diff --git a/games-arcade/tetrio-desktop/tetrio-desktop-10.ebuild b/games-arcade/tetrio-desktop/tetrio-desktop-10.ebuild
new file mode 100644
index 000000000000..19324248bd2e
--- /dev/null
+++ b/games-arcade/tetrio-desktop/tetrio-desktop-10.ebuild
@@ -0,0 +1,108 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit unpacker desktop xdg
+
+DESCRIPTION="TETR.IO desktop client."
+HOMEPAGE="https://tetr.io/"
+
+SRC_URI="https://tetr.io/about/desktop/builds/${PV}/TETR.IO%20Setup.deb -> ${P}.deb"
+
+S="${WORKDIR}"
+
+LICENSE="all-rights-reserved"
+SLOT="0"
+KEYWORDS="~amd64"
+
+IUSE="tetrio-plus"
+
+RESTRICT="bindist mirror test strip"
+
+BDEPEND="
+ app-arch/unzip
+"
+RDEPEND="
+ x11-libs/libxkbcommon
+ app-accessibility/at-spi2-core:2
+ dev-libs/expat
+ dev-libs/glib:2
+ dev-libs/nspr
+ dev-libs/nss
+ media-libs/alsa-lib
+ media-libs/mesa
+ net-print/cups
+ sys-apps/dbus
+ x11-libs/cairo
+ x11-libs/gtk+:3
+ x11-libs/libdrm
+ x11-libs/libX11
+ x11-libs/libxcb
+ x11-libs/libXcomposite
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ x11-libs/libXrandr
+ x11-libs/pango
+"
+
+QA_PREBUILT=".*"
+
+PATCHES=(
+ "${FILESDIR}/${P}-application.patch"
+)
+
+src_unpack() {
+ unpack_deb "${P}.deb"
+
+ # No TETR.IO PLUS for v10 yet
+ #if use tetrio-plus; then
+ # unpack "tetrio-plus-${PV}.zip"
+ #fi
+}
+
+src_prepare() {
+ mv "${S}/usr/share/applications/TETR.IO.desktop"\
+ "${S}/usr/share/applications/tetrio-desktop.desktop"
+
+ default
+
+ if use tetrio-plus; then
+ ewarn "TETR.IO PLUS is not supported yet for v10"
+ fi
+
+ #if use tetrio-plus; then
+ # mv "${S}/app.asar" "${S}/opt/TETR.IO/resources/app.asar" || die
+ #fi
+
+ mv "${S}/opt/TETR.IO" "${S}/opt/${PN}" || die
+}
+
+src_install() {
+ ICONDIR="usr/share/icons/hicolor"
+ DESTDIR="/opt/${PN}"
+
+ doicon -s 256 "${ICONDIR}/256x256/apps/TETR.IO.png"
+ doicon -s 512 "${ICONDIR}/512x512/apps/TETR.IO.png"
+
+ domenu "usr/share/applications/tetrio-desktop.desktop"
+
+ dodir /opt/${PN}
+
+ exeinto "${DESTDIR}"
+ doexe "opt/${PN}/TETR.IO" "opt/${PN}/chrome-sandbox" "opt/${PN}/libEGL.so" \
+ "opt/${PN}/libffmpeg.so" "opt/${PN}/libGLESv2.so" "opt/${PN}/libvk_swiftshader.so" "opt/${PN}/libvulkan.so.1"
+
+ insinto "${DESTDIR}"
+ doins "opt/${PN}/chrome_100_percent.pak" "opt/${PN}/chrome_200_percent.pak" "opt/${PN}/icudtl.dat" \
+ "opt/${PN}/resources.pak" "opt/${PN}/snapshot_blob.bin" "opt/${PN}/v8_context_snapshot.bin"\
+ "opt/${PN}/vk_swiftshader_icd.json"
+
+ doins -r "opt/${PN}/locales" "opt/${PN}/resources"
+
+ fowners root "${DESTDIR}/chrome-sandbox"
+ fperms 4711 "${DESTDIR}/chrome-sandbox"
+
+ dosym -r "/opt/${PN}/TETR.IO" "/usr/bin/${PN}"
+}
diff --git a/games-arcade/tetrio-desktop/tetrio-desktop-9.ebuild b/games-arcade/tetrio-desktop/tetrio-desktop-9.ebuild
new file mode 100644
index 000000000000..a121f59a1274
--- /dev/null
+++ b/games-arcade/tetrio-desktop/tetrio-desktop-9.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit unpacker desktop xdg
+
+DESCRIPTION="TETR.IO desktop client."
+HOMEPAGE="https://tetr.io/"
+
+SRC_URI="https://tetr.io/about/desktop/builds/${PV}/TETR.IO%20Setup.deb -> ${P}.deb
+tetrio-plus? ( https://gitlab.com/UniQMG/tetrio-plus/-/jobs/7958268756/artifacts/raw/tetrio-plus_v0.27.4_for_desktop_v9.asar.zip -> tetrio-plus-${PV}.zip )"
+
+S="${WORKDIR}"
+
+LICENSE="all-rights-reserved"
+SLOT="0"
+KEYWORDS="~amd64"
+
+IUSE="tetrio-plus"
+
+RESTRICT="bindist mirror test strip"
+
+BDEPEND="
+ app-arch/unzip
+"
+RDEPEND="
+ x11-libs/libxkbcommon
+ app-accessibility/at-spi2-core:2
+ dev-libs/expat
+ dev-libs/glib:2
+ dev-libs/nspr
+ dev-libs/nss
+ media-libs/alsa-lib
+ media-libs/mesa
+ net-print/cups
+ sys-apps/dbus
+ x11-libs/cairo
+ x11-libs/gtk+:3
+ x11-libs/libdrm
+ x11-libs/libX11
+ x11-libs/libxcb
+ x11-libs/libXcomposite
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ x11-libs/libXrandr
+ x11-libs/pango
+"
+
+QA_PREBUILT=".*"
+
+PATCHES=(
+ "${FILESDIR}/${P}-application.patch"
+)
+
+src_unpack() {
+ unpack_deb "${P}.deb"
+ if use tetrio-plus; then
+ unpack "tetrio-plus-${PV}.zip"
+ fi
+}
+
+src_prepare() {
+ mv "${S}/usr/share/applications/TETR.IO.desktop"\
+ "${S}/usr/share/applications/tetrio-desktop.desktop"
+
+ default
+
+ if use tetrio-plus; then
+ mv "${S}/app.asar" "${S}/opt/TETR.IO/resources/app.asar" || die
+ fi
+
+ mv "${S}/opt/TETR.IO" "${S}/opt/${PN}" || die
+}
+
+src_install() {
+ ICONDIR="usr/share/icons/hicolor"
+ DESTDIR="/opt/${PN}"
+
+ doicon -s 256 "${ICONDIR}/256x256/apps/TETR.IO.png"
+ doicon -s 512 "${ICONDIR}/512x512/apps/TETR.IO.png"
+
+ domenu "usr/share/applications/tetrio-desktop.desktop"
+
+ dodir /opt/${PN}
+
+ exeinto "${DESTDIR}"
+ doexe "opt/${PN}/TETR.IO" "opt/${PN}/chrome-sandbox" "opt/${PN}/libEGL.so" \
+ "opt/${PN}/libffmpeg.so" "opt/${PN}/libGLESv2.so" "opt/${PN}/libvk_swiftshader.so" "opt/${PN}/libvulkan.so.1"
+
+ insinto "${DESTDIR}"
+ doins "opt/${PN}/chrome_100_percent.pak" "opt/${PN}/chrome_200_percent.pak" "opt/${PN}/icudtl.dat" \
+ "opt/${PN}/resources.pak" "opt/${PN}/snapshot_blob.bin" "opt/${PN}/v8_context_snapshot.bin"\
+ "opt/${PN}/vk_swiftshader_icd.json"
+
+ doins -r "opt/${PN}/locales" "opt/${PN}/resources"
+
+ fowners root "${DESTDIR}/chrome-sandbox"
+ fperms 4711 "${DESTDIR}/chrome-sandbox"
+
+ dosym -r "/opt/${PN}/TETR.IO" "/usr/bin/${PN}"
+}
diff --git a/games-arcade/thinktanks-demo/Manifest b/games-arcade/thinktanks-demo/Manifest
new file mode 100644
index 000000000000..f09409f2e0c6
--- /dev/null
+++ b/games-arcade/thinktanks-demo/Manifest
@@ -0,0 +1 @@
+DIST ThinkTanksDemo_v1.1.sh.bin 11700992 BLAKE2B c5f0955606d12d6da042ae66322cfe6993486a963a0d76fa948f0c8eea439a25983ae78367130f181398299af712a4bb51ba45845ff92e17386e1c1305d33af7 SHA512 6c4116dd9f43ee6037a8c1d7fcb97f4f6d73725f2b608342e60bc200ff7286f6ea3c6c66e1e8713e69f215d95856dd9733ed15e742121eeb401ad1d5262f7a55
diff --git a/games-arcade/thinktanks-demo/metadata.xml b/games-arcade/thinktanks-demo/metadata.xml
new file mode 100644
index 000000000000..1c9c3f5a8b22
--- /dev/null
+++ b/games-arcade/thinktanks-demo/metadata.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+<longdescription>
+ThinkTanks is a tank combat game designed to be a blast for the new and
+experienced gamer alike with lighthearted, fast paced pandemonium. Either
+battling against brain-hungry bots in solo play or going head-to-head against
+others online, ThinkTanks has something for everyone.
+
+You find yourself in a ThinkTank... just one of many brain slaves imprisoned by
+Alien Mind Control-- only you have managed to escape their brain rays. But the
+moment you are free, you are besieged on all sides by insane bot-tanks. You must
+destroy or be destroyed and keep on your toes at all times. Luckily you can
+collect powerups that give you wacky weapons to help you stay alive. As you
+progress through each level, the bot tanks get smarter, stronger and crazier as
+Alien Mind Control reprograms the bot tanks to match your wits. Your goal is to
+beat the bosses, then rescue your brain-brethren and continue the fight on other
+worlds.
+
+Upon entering, you are immediately engaged by heavy artillery. This is
+no-holds-barred warfare and to the victor go the points. You can be catapulted or
+thrust in any direction by rolling over the boost and jump pads to escape attack
+or rush the enemy. The lush, green hills are scattered with bots on the warpath,
+bots choking in their own smoke, floating orbs with special powers and
+ammunition, boulders, trees, AND the dreaded pit of doom. The goal here is to
+keep your brain intact, and triumph over bots of every shape, size, speed and
+skill.
+
+You are cast into a veritable feeding frenzy of tanks. You need to simultaneously
+track the position of your tank relative to the scrum ball using your radarscope,
+while navigating your tank along the bumpy terrain. If you are quick enough to
+pick up the ball yourself, you must make a mad dash to the goal, evading the
+thirsty pack of mad bots heavy on your trail. You win by capturing the most scrum
+balls in the allotted time.
+
+Both On-line BattleMode and Scrum games have team-play variants and online chat
+that allow players to play together cooperatively.
+</longdescription>
+</pkgmetadata>
diff --git a/games-arcade/thinktanks-demo/thinktanks-demo-1.1-r4.ebuild b/games-arcade/thinktanks-demo/thinktanks-demo-1.1-r4.ebuild
new file mode 100644
index 000000000000..7b6c73e06c39
--- /dev/null
+++ b/games-arcade/thinktanks-demo/thinktanks-demo-1.1-r4.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop unpacker
+
+DESCRIPTION="Tank combat game with lighthearted, fast paced pandemonium"
+HOMEPAGE="http://www.garagegames.com/pg/product/view.php?id=12"
+SRC_URI="http://demos.garagegames.com/thinktanks/ThinkTanksDemo_v${PV}.sh.bin"
+S="${WORKDIR}"
+
+LICENSE="THINKTANKS"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+RESTRICT="bindist mirror strip"
+
+RDEPEND="
+ media-libs/libsdl[video,joystick,abi_x86_32(-)]
+ media-libs/libogg[abi_x86_32(-)]
+ media-libs/libvorbis[abi_x86_32(-)]
+ x11-libs/libX11[abi_x86_32(-)]
+ x11-libs/libXext[abi_x86_32(-)]
+"
+
+dir="/opt/${PN}"
+
+QA_PREBUILT="${dir:1}/ThinkTanks.bin"
+
+src_install() {
+ dodir "${dir}" "/usr/bin"
+
+ tar -zxf ThinkTanks.tar.gz -C "${ED}/${dir}" || die
+
+ exeinto "${dir}"
+ doexe bin/Linux/x86/thinktanksdemo
+ dosym "${dir}"/thinktanksdemo /usr/bin/thinktanks-demo
+ # Using system libraries
+ rm -rf "${ED}/${dir}"/lib
+
+ insinto "${dir}"
+ doins icon.xpm
+
+ newicon icon.xpm ${PN}.xpm
+ make_desktop_entry ${PN} "Thinktanks (Demo)" /usr/share/pixmaps/${PN}.xpm
+
+ dodoc ReadMe_Linux.txt
+}
diff --git a/games-arcade/tomatoes/Manifest b/games-arcade/tomatoes/Manifest
new file mode 100644
index 000000000000..6d94c60aa48f
--- /dev/null
+++ b/games-arcade/tomatoes/Manifest
@@ -0,0 +1,2 @@
+DIST tomatoes-linux-1.5.tar.bz2 8807421 BLAKE2B ee2128018d13d274b0ed5b27f9339b4e9d47a15753411c30d4174607c252d10d64a40e40b25454adb6f14ec96845b92cf9b0fe57b3bdcbbb70fe905ec0bf1c0e SHA512 517f592bb3c3fb43cb740c58011f06b7a71c96eaff74ce1088db8dbd4aafa3463bba516547cd010e9ef2ca947fd36962c3d13ece6e979cab8adf01ffa991c308
+DIST tomatoes-linux-src-1.55.tar.bz2 62947 BLAKE2B 22561900842dfe4cb56128ddaf471fac56a2c93b4c24ce3cca7045d10235ab60b81184c9617f9f4d10877df23e6db0d5abc0dc032d38788993daab1a2c49ab1e SHA512 b5a6287659746179f0418630c55d34dc34897b532687007386b0b540ec728cc2492813f0d454314994a26a3629a24c802630085f64b969d1e6ea9ec936f5fe35
diff --git a/games-arcade/tomatoes/files/tomatoes-1.55-c_str.patch b/games-arcade/tomatoes/files/tomatoes-1.55-c_str.patch
new file mode 100644
index 000000000000..f001179a837f
--- /dev/null
+++ b/games-arcade/tomatoes/files/tomatoes-1.55-c_str.patch
@@ -0,0 +1,24 @@
+--- a/src/config.cpp
++++ b/src/config.cpp
+@@ -78,6 +78,7 @@
+ // makefile.
+ char *get_config_location(bool write) {
+ #ifdef LINUX
++ static char *config_path = NULL;
+ // Get the path to the config file
+ string tmp = get_tomatoes_dir() + "config.cfg";
+
+@@ -90,8 +91,11 @@
+ }
+ fclose(ftest);
+ }
+-
+- return (char*)tmp.c_str();
++ if (!config_path) {
++ config_path = new char[tmp.length()+1];
++ strcpy(config_path,tmp.c_str());
++ }
++ return config_path;
+ #endif
+
+ // Return the CONFIG_DIR
diff --git a/games-arcade/tomatoes/files/tomatoes-1.55-gcc43.patch b/games-arcade/tomatoes/files/tomatoes-1.55-gcc43.patch
new file mode 100644
index 000000000000..95bf7ba6eddb
--- /dev/null
+++ b/games-arcade/tomatoes/files/tomatoes-1.55-gcc43.patch
@@ -0,0 +1,14 @@
+--- a/src/config.cpp
++++ b/src/config.cpp
+@@ -27,8 +27,9 @@
+
+ *************************************************************************/
+
+-#include <stdio.h>
+-#include <stdlib.h>
++#include <cstring>
++#include <cstdio>
++#include <cstdlib>
+ #include "config.h"
+ #include "init.h"
+
diff --git a/games-arcade/tomatoes/files/tomatoes-1.55-underlink.patch b/games-arcade/tomatoes/files/tomatoes-1.55-underlink.patch
new file mode 100644
index 000000000000..bc7763bf492e
--- /dev/null
+++ b/games-arcade/tomatoes/files/tomatoes-1.55-underlink.patch
@@ -0,0 +1,38 @@
+--- a/makefile
++++ b/makefile
+@@ -48,7 +47,7 @@
+ LDFLAGS = `sdl-config --libs` -lSDL_image -lSDL_mixer -lGL -lGLU -pg
+ else
+ CFLAGS = -MMD -O3 -march=$(MARCH) -Wall $(SDL_FLAGS)
+-LDFLAGS = `sdl-config --libs` -lSDL_image -lSDL_mixer -lGL -lGLU -s
++LDLIBS = `sdl-config --libs` -lSDL_image -lSDL_mixer -lGL -lGLU -lm
+ endif
+ endif
+
+@@ -58,7 +57,7 @@
+ OBJS := $(subst src/,obj/,$(OBJS))
+
+ # Include directories
+-INCLUDES = -I./include
++INCLUDES = -I./include $(SDL_FLAGS)
+
+
+ # Targets
+@@ -69,7 +68,7 @@
+ -include $(DEPS)
+
+ $(TARGET): $(OBJS)
+- $(CC) -o $(TARGET) $(OBJS) $(LDFLAGS)
++ $(CXX) -o $(TARGET) $(OBJS) $(LDFLAGS) $(LDLIBS)
+
+ clean:
+ rm -f $(OBJS) $(TARGET)
+@@ -80,7 +79,7 @@
+ rebuild: veryclean all
+
+ obj/%.o: src/%.cpp
+- $(CC) $(CFLAGS) $(INCLUDES) $(DIR_DEFINES) -c $< -o $@
++ $(CXX) $(CXXFLAGS) $(INCLUDES) $(DIR_DEFINES) -c $< -o $@
+
+ # Compress the exe with UPX
+ compress: $(TARGET)
diff --git a/games-arcade/tomatoes/metadata.xml b/games-arcade/tomatoes/metadata.xml
new file mode 100644
index 000000000000..72957bd5064c
--- /dev/null
+++ b/games-arcade/tomatoes/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">tomatoes</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/tomatoes/tomatoes-1.55-r4.ebuild b/games-arcade/tomatoes/tomatoes-1.55-r4.ebuild
new file mode 100644
index 000000000000..392b7afaee0e
--- /dev/null
+++ b/games-arcade/tomatoes/tomatoes-1.55-r4.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop toolchain-funcs
+
+DATA_PV=1.5
+DESCRIPTION="How many tomatoes can you smash in ten short minutes?"
+HOMEPAGE="https://tomatoes.sourceforge.net/about.html"
+SRC_URI="https://downloads.sourceforge.net/tomatoes/tomatoes-linux-src-${PV}.tar.bz2
+ https://downloads.sourceforge.net/tomatoes/tomatoes-linux-${DATA_PV}.tar.bz2"
+
+LICENSE="ZLIB"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~x86"
+
+DEPEND="
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-image[jpeg,png]
+ media-libs/sdl-mixer[mod]
+ virtual/opengl
+ virtual/glu
+"
+RDEPEND="
+ ${DEPEND}
+ acct-group/gamestat
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-c_str.patch
+ "${FILESDIR}"/${P}-underlink.patch
+ "${FILESDIR}"/${P}-gcc43.patch
+)
+
+src_prepare() {
+ default
+
+ mv ../tomatoes-1.5/* . || die "mv failed"
+ mv icon.png ${PN}.png || die
+
+ sed -i \
+ -e "/^MPKDIR = /s:./:/usr/share/${PN}/:" \
+ -e "/^MUSICDIR = /s:./music/:/usr/share/${PN}/music/:" \
+ -e "/^HISCOREDIR = /s:./:/var/games/${PN}/:" \
+ -e "/^CONFIGDIR = /s:./:/etc/${PN}/:" \
+ -e "/^OVERRIDEDIR = /s:./data/:/usr/share/${PN}/data/:" \
+ makefile \
+ || die "sed failed"
+}
+
+src_configure() {
+ tc-export CXX
+}
+
+src_install() {
+ dobin tomatoes
+ dodoc README README-src
+
+ insinto /usr/share/${PN}
+ doins -r tomatoes.mpk music
+
+ doicon ${PN}.png
+ make_desktop_entry tomatoes "I Have No Tomatoes"
+
+ dodir /var/games/${PN}
+ touch "${ED}"/var/games/${PN}/hiscore.lst || die "touch failed"
+
+ fperms 660 /var/games/${PN}/hiscore.lst
+ fowners -R root:gamestat /var/games/${PN} /usr/bin/${PN}
+ fperms g+s /usr/bin/${PN}
+
+ insinto /etc/${PN}
+ doins config.cfg
+}
diff --git a/games-arcade/vor/Manifest b/games-arcade/vor/Manifest
new file mode 100644
index 000000000000..0005682ec035
--- /dev/null
+++ b/games-arcade/vor/Manifest
@@ -0,0 +1 @@
+DIST vor-0.5.8.tgz 361789 BLAKE2B b6391a03d175520ef97db7c4b80425f6f15193614f5e582b4d96019ce426b9ea21b93e9f503e5e22d5f976fe938cc883e4810803b2942ee3e373025397045c2a SHA512 95633e54c09f947c3e256fc07b1d7c061e98f69b89ce459b7736174410b7f021f4384afe65ec58eb6b89933cb6c8fe166b4491078b98671ae12640c6fc7019f5
diff --git a/games-arcade/vor/metadata.xml b/games-arcade/vor/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/vor/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/vor/vor-0.5.8.ebuild b/games-arcade/vor/vor-0.5.8.ebuild
new file mode 100644
index 000000000000..b5a8c53de2ed
--- /dev/null
+++ b/games-arcade/vor/vor-0.5.8.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop
+
+DESCRIPTION="Variations on Rockdodger: Dodge the rocks until you die"
+HOMEPAGE="https://sametwice.com/vor"
+SRC_URI="https://jasonwoof.com/downloads/vor/${P}.tgz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libsdl[sound,video]
+ media-libs/sdl-image[png]
+ media-libs/sdl-mixer[mod]"
+DEPEND="${RDEPEND}"
+
+src_install() {
+ dodir /usr/bin
+
+ default
+
+ newicon data/icon.png ${PN}.png
+ make_desktop_entry ${PN} VoR
+}
diff --git a/games-arcade/whichwayisup/Manifest b/games-arcade/whichwayisup/Manifest
new file mode 100644
index 000000000000..017edb5d67fa
--- /dev/null
+++ b/games-arcade/whichwayisup/Manifest
@@ -0,0 +1,3 @@
+DIST whichwayisup.png 6720 BLAKE2B 26514e025341ce7d5145d69295a24477ea3575afcfb0a11bbbddb1dd716feadef9a030ec9dc4171b75842fafc78670ed1fc7656dac8dbd6695b9592b73bb1383 SHA512 469b847955a745177c7629dd13f1975191766863bfe263e3818105356d71aaaeb66cbe34846d0bd908bf494e2d7d42b7f33499868da2fa346f96f8080bccc0b2
+DIST whichwayisup_0.7.9-8.debian.tar.xz 17196 BLAKE2B 8b2cb1933a6c5480edb1091a824b2a61d9c41ed1a4a3b534a11a28163f9db3a3790d89faa1eb1995b459bb3c03515c154ca2714bfcf63c2c43669c60abf4d75f SHA512 cb1402f0210c0457dbeb5a1151679c755b10b022c20cbb8a0bdc23bf7b463a7e0db4e92141906e3995a894fd3d0aeb21b48358b3e2c221f37deec4c008128edc
+DIST whichwayisup_b079.zip 1001890 BLAKE2B bfc8f15376ae7c93cc3921a7c0537d44bca44cbfd5e19533912c56151b8811a40e96271e0f3b8634a6fc4625bd32c9668fc3c321f1d2ea0306517067f3d31e24 SHA512 49ac6b8224f3cf7b0711b297c9dd96ff2a0969f7c16fa1da500bef1ea5d793bd900be124a9b9874239c98db6fd2db92917b8ce2ee09b685e184cfd87bf519809
diff --git a/games-arcade/whichwayisup/metadata.xml b/games-arcade/whichwayisup/metadata.xml
new file mode 100644
index 000000000000..2a032548b810
--- /dev/null
+++ b/games-arcade/whichwayisup/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <longdescription>A traditional and challenging 2D platformer game with a
+ slight rotational twist. Help a mysterious big-eared salaryman named Guy
+ find his keys in a labyrinth of dangers and bad dialogue.</longdescription>
+</pkgmetadata>
diff --git a/games-arcade/whichwayisup/whichwayisup-0.7.9_p8.ebuild b/games-arcade/whichwayisup/whichwayisup-0.7.9_p8.ebuild
new file mode 100644
index 000000000000..00c22731eb47
--- /dev/null
+++ b/games-arcade/whichwayisup/whichwayisup-0.7.9_p8.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit desktop python-single-r1
+
+DESCRIPTION="Traditional and challenging 2D platformer game with a slight rotational twist"
+HOMEPAGE="https://www.oletus.fi/static/whichwayisup/"
+SRC_URI="
+ https://www.oletus.fi/static/whichwayisup/${PN}_b079.zip
+ mirror://debian/pool/main/${P::1}/${PN}/${PN}_${PV/_p*}-${PV/*_p}.debian.tar.xz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png
+"
+S=${WORKDIR}/${PN}
+
+LICENSE="BitstreamVera CC-BY-3.0 GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep 'dev-python/pygame[${PYTHON_USEDEP}]')
+ media-libs/sdl2-image[png]
+ media-libs/sdl2-mixer[vorbis]
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+ app-arch/unzip
+"
+
+PATCHES=(
+ "${WORKDIR}"/debian/patches
+)
+
+src_prepare() {
+ # drop Debian specific patch
+ rm -- "${WORKDIR}"/debian/patches/font_path.patch || die
+
+ default
+
+ sed -i "/libdir =/s|= .*|= \"${EPREFIX}/usr/share/${PN}/lib\"|" run_game.py || die
+ python_fix_shebang run_game.py
+
+ rm data/pictures/Thumbs.db || die
+}
+
+src_install() {
+ newbin run_game.py ${PN}
+
+ insinto /usr/share/${PN}
+ doins -r data lib
+
+ dodoc README.txt changelog.txt
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} "Which Way Is Up?"
+}
diff --git a/games-arcade/xbill/Manifest b/games-arcade/xbill/Manifest
new file mode 100644
index 000000000000..2de057050fc8
--- /dev/null
+++ b/games-arcade/xbill/Manifest
@@ -0,0 +1,2 @@
+DIST xbill-2.1.tar.gz 77610 BLAKE2B aeadc62fa01a3d37b1ae6388987e5d5e3a2d73b9c5afa99b9a2c61155eeb5fb2efc4a36dd2cbeb3fd2f677b385550146d75964afa5f7e83a27f6dc7a16db83c9 SHA512 127604d88258db0ec47084209c656f8817146d70b0fe16f5a1d79883415cf38200594834b39080d78c627104ae6d204f3c12caf127fa094108c4edfbfa98d966
+DIST xbill.png 49325 BLAKE2B a2b5cacee2f5aaf62bcea941dbde26c4cf17ef29c0018ecbd66aefb64e6d1240ac756a32b84d631e4675774b7a06d7c56756debe80df8252684181e0e638a9a0 SHA512 cb41e8603f400cf7b4f8fde2739e798872cefd6e45ff0ff17ddf1f02958f572195022adcdc7ac308cb4236fb79ff68433673cfbaefaf5ccdb426d6070f39e854
diff --git a/games-arcade/xbill/files/xbill-2.1-clang16.patch b/games-arcade/xbill/files/xbill-2.1-clang16.patch
new file mode 100644
index 000000000000..524fdde63ae4
--- /dev/null
+++ b/games-arcade/xbill/files/xbill-2.1-clang16.patch
@@ -0,0 +1,27 @@
+Drop -I. to prevent <strings.h> from including ./strings.h
+https://bugs.gentoo.org/874624
+--- a/Bucket.c
++++ b/Bucket.c
+@@ -1,2 +1,2 @@
+-#include <util.h>
++#include "util.h"
+
+--- a/Game.c
++++ b/Game.c
+@@ -4,2 +4,3 @@
+ #include <string.h>
++#include <strings.h>
+ #include <time.h>
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -22,3 +22,3 @@
+
+-ALL_CFLAGS = $(CFLAGS) $(CPPFLAGS) -I$(srcdir)
++ALL_CFLAGS = $(CFLAGS) $(CPPFLAGS)
+ ALL_LDFLAGS = $(CFLAGS) $(LDFLAGS)
+--- a/UI.c
++++ b/UI.c
+@@ -3,2 +3,3 @@
+ #include <string.h>
++#include <strings.h>
+
diff --git a/games-arcade/xbill/files/xbill-2.1-gentoo.patch b/games-arcade/xbill/files/xbill-2.1-gentoo.patch
new file mode 100644
index 000000000000..3446de74c92d
--- /dev/null
+++ b/games-arcade/xbill/files/xbill-2.1-gentoo.patch
@@ -0,0 +1,353 @@
+diff -urN xbill-2.1.orig/bitmaps/gentoo.xbm xbill-2.1/bitmaps/gentoo.xbm
+--- xbill-2.1.orig/bitmaps/gentoo.xbm 1970-01-01 01:00:00.000000000 +0100
++++ xbill-2.1/bitmaps/gentoo.xbm 2008-08-23 00:48:57.000000000 +0200
+@@ -0,0 +1,11 @@
++#define gentoo_width 28
++#define gentoo_height 24
++static unsigned char gentoo_bits[] = {
++ 0x00, 0x69, 0x00, 0x00, 0x20, 0x80, 0x03, 0x00, 0x10, 0x00, 0x0e, 0x00,
++ 0x08, 0x00, 0x18, 0x00, 0x04, 0x00, 0x70, 0x00, 0x02, 0xc0, 0xa5, 0x00,
++ 0x02, 0xf0, 0x69, 0x00, 0x02, 0xf8, 0xc1, 0x01, 0x06, 0xe0, 0x5a, 0x01,
++ 0x0c, 0x00, 0xa0, 0x03, 0x38, 0x00, 0x54, 0x01, 0xe0, 0x00, 0xa8, 0x09,
++ 0x00, 0x00, 0x52, 0x04, 0x00, 0x00, 0x2a, 0x06, 0x00, 0x00, 0x14, 0x03,
++ 0x00, 0x80, 0x82, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x20, 0x38, 0x00,
++ 0x00, 0x00, 0x0e, 0x00, 0x00, 0x80, 0x03, 0x00, 0x01, 0xe0, 0x00, 0x00,
++ 0x02, 0x7c, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00 };
+diff -urN xbill-2.1.orig/gtk.c xbill-2.1/gtk.c
+--- xbill-2.1.orig/gtk.c 2001-10-30 19:28:27.000000000 +0100
++++ xbill-2.1/gtk.c 2008-08-23 00:57:55.000000000 +0200
+@@ -179,6 +179,7 @@
+ #include "bitmaps/hand_down_mask.xbm"
+ #include "bitmaps/hand_up.xbm"
+ #include "bitmaps/hand_up_mask.xbm"
++#include "bitmaps/gentoo.xbm"
+
+ typedef struct cursormap {
+ const char *name;
+@@ -195,7 +196,7 @@
+ static cursormap cursors[] = {
+ CURSOR_ADD(apple), CURSOR_ADD(bsd), CURSOR_ADD(hurd),
+ CURSOR_ADD(linux), CURSOR_ADD(next), CURSOR_ADD(os2), CURSOR_ADD(palm),
+- CURSOR_ADD(redhat), CURSOR_ADD(sgi), CURSOR_ADD(sun),
++ CURSOR_ADD(redhat), CURSOR_ADD(sgi), CURSOR_ADD(sun), CURSOR_ADD(gentoo),
+ CURSOR_ADD(bucket),
+ CURSOR_ADD_MASKED(hand_up), CURSOR_ADD_MASKED(hand_down),
+ {NULL, 0, 0, NULL, NULL},
+diff -urN xbill-2.1.orig/Makefile.in xbill-2.1/Makefile.in
+--- xbill-2.1.orig/Makefile.in 2001-10-30 19:31:09.000000000 +0100
++++ xbill-2.1/Makefile.in 2008-08-23 00:50:05.000000000 +0200
+@@ -46,13 +46,13 @@
+ pixmaps/palm.xpm pixmaps/palmcpu.xpm pixmaps/redhat.xpm \
+ pixmaps/sgi.xpm pixmaps/sgicpu.xpm pixmaps/spark_0.xpm \
+ pixmaps/spark_1.xpm pixmaps/sun.xpm pixmaps/suncpu.xpm \
+- pixmaps/toaster.xpm pixmaps/wingdows.xpm
++ pixmaps/toaster.xpm pixmaps/wingdows.xpm pixmaps/gentoo.xpm
+
+ XBMS = bitmaps/apple.xbm bitmaps/bsd.xbm bitmaps/bucket.xbm \
+ bitmaps/hand_down.xbm bitmaps/hand_down_mask.xbm bitmaps/hand_up.xbm \
+ bitmaps/hand_up_mask.xbm bitmaps/hurd.xbm bitmaps/linux.xbm \
+ bitmaps/next.xbm bitmaps/os2.xbm bitmaps/palm.xbm bitmaps/redhat.xbm \
+- bitmaps/sgi.xbm bitmaps/sun.xbm
++ bitmaps/sgi.xbm bitmaps/sun.xbm bitmaps/gentoo.xbm
+
+ MANDIR = man6
+ MAN = xbill.6
+diff -urN xbill-2.1.orig/OS.c xbill-2.1/OS.c
+--- xbill-2.1.orig/OS.c 2001-10-30 19:28:27.000000000 +0100
++++ xbill-2.1/OS.c 2008-08-23 00:50:26.000000000 +0200
+@@ -7,7 +7,7 @@
+ #define MIN_PC 6 /* OS >= MIN_PC means the OS is a PC OS */
+
+ static const char *osname[] = {"wingdows", "apple", "next", "sgi", "sun",
+- "palm", "os2", "bsd", "linux", "redhat", "hurd"};
++ "palm", "os2", "bsd", "linux", "redhat", "hurd", "gentoo"};
+ #define NUM_OS (sizeof(osname) / sizeof(osname[0]))
+
+ static Picture *os[NUM_OS]; /* array of OS pictures*/
+diff -urN xbill-2.1.orig/pixmaps/gentoo.xpm xbill-2.1/pixmaps/gentoo.xpm
+--- xbill-2.1.orig/pixmaps/gentoo.xpm 1970-01-01 01:00:00.000000000 +0100
++++ xbill-2.1/pixmaps/gentoo.xpm 2008-08-23 00:49:01.000000000 +0200
+@@ -0,0 +1,283 @@
++/* XPM */
++static char * gentoo_xpm[] = {
++"28 24 256 2",
++" c None",
++". c #9B91FA",
++"+ c #998FFB",
++"@ c #9D97C7",
++"# c #958EC6",
++"$ c #FEFEFE",
++"% c #FFFFFF",
++"& c #FCFCFE",
++"* c #F3F3FC",
++"= c #C4C0EF",
++"- c #948BE3",
++"; c #958BF1",
++"> c #9992D1",
++", c #D8D6F0",
++"' c #F7F7FC",
++") c #EDEDFB",
++"! c #E4E3FA",
++"~ c #DAD9F8",
++"{ c #9185F7",
++"] c #9287F7",
++"^ c #948BE4",
++"/ c #FAFAFD",
++"( c #F0F0FC",
++"_ c #E7E6FA",
++": c #DCDCF7",
++"< c #D3D2F7",
++"[ c #C9C8F5",
++"} c #9D95F6",
++"| c #9184F7",
++"1 c #8F83F4",
++"2 c #FCFCFD",
++"3 c #F2F2FB",
++"4 c #E9E8FA",
++"5 c #DFDEF8",
++"6 c #D5D4F6",
++"7 c #CBCAF4",
++"8 c #C1C0F3",
++"9 c #BBBAF2",
++"0 c #AAA4F4",
++"a c #9388F8",
++"b c #CECDF5",
++"c c #9E95F6",
++"d c #E0E0F8",
++"e c #D6D5F7",
++"f c #CCCBF5",
++"g c #C2C1F2",
++"h c #BBB8F2",
++"i c #B5B2F4",
++"j c #B5B2F2",
++"k c #9084EF",
++"l c #8E82F8",
++"m c #EBE9FD",
++"n c #9184F2",
++"o c #9084F0",
++"p c #998FF6",
++"q c #908AB7",
++"r c #D5D5F5",
++"s c #CCCCF4",
++"t c #C3C2F3",
++"u c #BBB9F2",
++"v c #B5B2F3",
++"w c #AFABF3",
++"x c #C3C2F4",
++"y c #C6C6F4",
++"z c #8E81F4",
++"A c #9186ED",
++"B c #9287ED",
++"C c #9287EB",
++"D c #524C76",
++"E c #CCCBF4",
++"F c #BBB9F3",
++"G c #AFABF4",
++"H c #AAA5F5",
++"I c #D9D8F6",
++"J c #DADAF7",
++"K c #9085EF",
++"L c #C5C2F6",
++"M c #FEFEFF",
++"N c #9D97C9",
++"O c #8C86B3",
++"P c #938AE6",
++"Q c #514C76",
++"R c #CBCBF5",
++"S c #BAB9F2",
++"T c #B4B1F3",
++"U c #AFAAF4",
++"V c #A9A4F5",
++"W c #A59DF6",
++"X c #E0DEF9",
++"Y c #EFEFFC",
++"Z c #9388EA",
++"` c #BCBCF3",
++" . c #BCBBF2",
++".. c #BEBDF2",
++"+. c #FBFBFE",
++"@. c #FAFAFF",
++"#. c #E7E7F9",
++"$. c #DEDEF9",
++"%. c #D4D4F7",
++"&. c #CAC9F4",
++"*. c #C0BFF3",
++"=. c #BAB8F2",
++"-. c #B4B0F4",
++";. c #AEAAF4",
++">. c #A9A3F5",
++",. c #A39CF6",
++"'. c #9F96F5",
++"). c #958AE3",
++"!. c #D2D2F6",
++"~. c #D3D2F6",
++"{. c #D6D5F6",
++"]. c #F9F9FD",
++"^. c #EFEFFB",
++"/. c #E5E5F9",
++"(. c #DCDBF8",
++"_. c #D2D1F6",
++":. c #C8C7F4",
++"<. c #BFBEF3",
++"[. c #B9B7F2",
++"}. c #B3AFF4",
++"|. c #ADA9F3",
++"1. c #A9A1F5",
++"2. c #A29CF6",
++"3. c #9E95F7",
++"4. c #F3F2FE",
++"5. c #968DDE",
++"6. c #968EDD",
++"7. c #978DDC",
++"8. c #988EDB",
++"9. c #EAEAFA",
++"0. c #FFFFFE",
++"a. c #F5F5FD",
++"b. c #EBEBFB",
++"c. c #E2E2F8",
++"d. c #D8D8F8",
++"e. c #D0CEF6",
++"f. c #C6C5F4",
++"g. c #B7B4F3",
++"h. c #B1AEF4",
++"i. c #ADA8F5",
++"j. c #A7A1F5",
++"k. c #A19AF6",
++"l. c #9D93F7",
++"m. c #9890D6",
++"n. c #FBFBFD",
++"o. c #FAFAFE",
++"p. c #F1F1FB",
++"q. c #E8E7F9",
++"r. c #D5D5F7",
++"s. c #C2C1F3",
++"t. c #BBBAF3",
++"u. c #B5B3F2",
++"v. c #B1ACF4",
++"w. c #ABA6F4",
++"x. c #A69FF5",
++"y. c #A199F6",
++"z. c #9D96C8",
++"A. c #FDFDFD",
++"B. c #F5F5FC",
++"C. c #ECECFB",
++"D. c #E3E3F9",
++"E. c #D2D0F6",
++"F. c #C8C8F5",
++"G. c #BFBEF2",
++"H. c #B9B7F3",
++"I. c #AAA4F5",
++"J. c #9E96F5",
++"K. c #9B95C3",
++"L. c #9B95C2",
++"M. c #CDCCF4",
++"N. c #C4C3F3",
++"O. c #BCBAF2",
++"P. c #B1AEF3",
++"Q. c #ACA8F4",
++"R. c #958FBC",
++"S. c #948EBB",
++"T. c #F8F8FC",
++"U. c #F1F1FC",
++"V. c #E9E9FB",
++"W. c #E1E1F9",
++"X. c #D9D8F8",
++"Y. c #D0D0F6",
++"Z. c #C7C7F4",
++"`. c #B5B1F4",
++" + c #B0ABF4",
++".+ c #908AB8",
++"++ c #8E88B6",
++"@+ c #8E88B5",
++"#+ c #9892C2",
++"$+ c #FEFEFD",
++"%+ c #F1F0FB",
++"&+ c #EAE9FA",
++"*+ c #E2E2F9",
++"=+ c #DBDAF7",
++"-+ c #CBCAF5",
++";+ c #BCB9F2",
++">+ c #B6B4F2",
++",+ c #8A84B1",
++"'+ c #8983B0",
++")+ c #9791BE",
++"!+ c #F0EFFB",
++"~+ c #E8E9FB",
++"{+ c #E2E1F9",
++"]+ c #DBDAF8",
++"^+ c #D3D3F7",
++"/+ c #C5C4F4",
++"(+ c #D0CFF7",
++"_+ c #857FAB",
++":+ c #847EAA",
++"<+ c #837DA8",
++"[+ c #F6F6FD",
++"}+ c #F2F1FC",
++"|+ c #ECECFA",
++"1+ c #E6E7F9",
++"2+ c #E1E0F9",
++"3+ c #D4D3F6",
++"4+ c #C5C4F3",
++"5+ c #D1CFDF",
++"6+ c #7E78A5",
++"7+ c #7D77A4",
++"8+ c #F3F2FB",
++"9+ c #F0EFFC",
++"0+ c #E8E8FA",
++"a+ c #DFDEF9",
++"b+ c #D3D1F5",
++"c+ c #C3C3F3",
++"d+ c #FDFDFE",
++"e+ c #78729E",
++"f+ c #77719D",
++"g+ c #76709C",
++"h+ c #EAEAFB",
++"i+ c #E6E6FA",
++"j+ c #6B6594",
++"k+ c #736D99",
++"l+ c #736D98",
++"m+ c #726C97",
++"n+ c #7A749F",
++"o+ c #DADAF8",
++"p+ c #6F6995",
++"q+ c #6E6894",
++"r+ c #6C6693",
++"s+ c #6C6692",
++"t+ c #C7C4D5",
++"u+ c #6D6792",
++"v+ c #6B658F",
++"w+ c #6A648E",
++"x+ c #68628D",
++"y+ c #67618D",
++"z+ c #67618B",
++"A+ c #69638E",
++"B+ c #68628E",
++"C+ c #67618C",
++"D+ c #655F8A",
++"E+ c #645E89",
++"F+ c #645E88",
++"G+ c #635D88",
++" . + ",
++" @ # $ % % & * = - ; ",
++" > , % % % % % % ' ) ! ~ { ] ",
++" ^ % % % % % % % % / ( _ : < [ } | ",
++" 1 $ $ $ $ $ $ $ $ $ 2 3 4 5 6 7 8 9 0 ",
++" a % $ % $ % $ % $ % $ % b c d e f g h i j k ",
++" l % % % $ $ % % $ $ % m n o p q r s t u v w x y ",
++" z $ % % $ $ % % $ $ v A B C C D D E g F i G H I J ",
++" K G L % % % % % % % M N O P Q e R g S T U V W X Y ",
++" Z ` ...$ % % % $ % % +.@.#.$.%.&.*.=.-.;.>.,.'.$ $ ",
++" ).).!.~.{.% $ $ $ % ].^./.(._.:.<.[.}.|.1.2.3.4.$ ",
++" 5.6.7.8.9.) $ $ 0.a.b.c.d.e.f.` g.h.i.j.k.l.$ $ ",
++" m.n.$ % $ o.p.q.5 r.f s.t.u.v.w.x.y.$ % z.",
++" $ $ $ $ $ A.B.C.D.J E.F.G.H.T ;.I.J.$ $ K.L.",
++" $ $ % $ $ $ ' ^._ $.e M.N.O.g.P.Q.% % $ R.S. ",
++" $ $ % $ $ $ T.U.V.W.X.Y.Z.<.H.`. +$ % .+++@+ ",
++" #+$ $ $ $ $ $+T.%+&+*+=+!.-+t ;+>+% $ $ ,+'+ ",
++" )+$ % % $ $ / B.!+~+{+]+^+f /+ .(+$ % _+:+<+ ",
++" % $ % & ].[+}+|+1+2+=+3+s 4+9 % % 5+6+7+ ",
++"'+$ [+B.8+9+C.0+! a+X.b+f c+$ % d+e+f+g+ ",
++" $ $ h+~+i+c.a+~ e Y.$ % % j+k+l+m+ ",
++" n+% % ].J o+0.$ $ % % p+q+r+s+ ",
++" l+m+t+% $ $ % u+v+w+x+y+z+ ",
++" A+B+y+C+D+E+F+G+ "};
diff --git a/games-arcade/xbill/metadata.xml b/games-arcade/xbill/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/xbill/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/xbill/xbill-2.1-r6.ebuild b/games-arcade/xbill/xbill-2.1-r6.ebuild
new file mode 100644
index 000000000000..9f53fb25981f
--- /dev/null
+++ b/games-arcade/xbill/xbill-2.1-r6.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop
+
+DESCRIPTION="Game about an evil hacker called Bill!"
+HOMEPAGE="http://www.xbill.org/"
+SRC_URI="
+ http://www.xbill.org/download/${P}.tar.gz
+ https://dashboard.snapcraft.io/site_media/appmedia/2018/04/xbill.png"
+
+LICENSE="GPL-1"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ acct-group/gamestat
+ media-fonts/font-misc-misc
+ x11-libs/libXaw"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-gentoo.patch
+ "${FILESDIR}"/${P}-clang16.patch
+)
+
+src_prepare() {
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ local econfargs=(
+ --disable-motif
+ --disable-gtk
+ --enable-athena
+ )
+
+ econf "${econfargs[@]}"
+}
+
+src_install() {
+ default
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry ${PN} XBill ${PN}
+
+ fowners :gamestat /var/lib/xbill/scores /usr/bin/${PN}
+ fperms 664 /var/lib/xbill/scores
+}
diff --git a/games-arcade/xboing/Manifest b/games-arcade/xboing/Manifest
new file mode 100644
index 000000000000..2f7919a0f9d4
--- /dev/null
+++ b/games-arcade/xboing/Manifest
@@ -0,0 +1,2 @@
+DIST xboing-2.4-debian.patch.bz2 7740 BLAKE2B 284aedee90ca6bca940be405c10e5440d9df9237d6cc6f11c51204f3c1e2f383589a918997461c0399747d33e9f7142016323e101c4b48b1c3e35704cab20902 SHA512 bffd9b747b1e8840aef872988f9ef8b341a56e63d390e386a8ca71358318ba9c0b37bebd91b1f036b52c56e70acf98ec35f92f4c0fa1e19e2f8c4fcc83c1e7d9
+DIST xboing2.4.tar.gz 588811 BLAKE2B 1d29c457108c70608ec2c2ea7d4856553e3e174e7a8852f3da671c64e9e6a6349ee511841facc937bf6252cdd0e094ece7fe09e548835b7a288514aa7ece82d2 SHA512 4b6987329bfe79b3b9709ca02974d0043c6e35210aa73903940efbd09e94b1873ce09b1bea014646029b77e9bd063279935843adceb6635817f15c8025a0c454
diff --git a/games-arcade/xboing/files/xboing-2.4-buffer.patch b/games-arcade/xboing/files/xboing-2.4-buffer.patch
new file mode 100644
index 000000000000..381ae69982d9
--- /dev/null
+++ b/games-arcade/xboing/files/xboing-2.4-buffer.patch
@@ -0,0 +1,12 @@
+diff -ruN xboing.orig/init.c xboing/init.c
+--- xboing.orig/init.c 1996-11-22 02:28:46.000000000 +0100
++++ xboing/init.c 2013-02-02 19:57:55.000000000 +0100
+@@ -266,7 +266,7 @@
+ #endif
+ {
+ /* Create all required font structures */
+- char str[80];
++ char str[200];
+
+ /* Font used for titles */
+ if (!(titleFont = XLoadQueryFont(display, TITLE_FONT)))
diff --git a/games-arcade/xboing/files/xboing-2.4-clang16.patch b/games-arcade/xboing/files/xboing-2.4-clang16.patch
new file mode 100644
index 000000000000..72c632850de0
--- /dev/null
+++ b/games-arcade/xboing/files/xboing-2.4-clang16.patch
@@ -0,0 +1,37 @@
+Ideally would want to enable -DNeedFunctionPrototypes=1
+but it leads to more issues not handled here.
+
+https://bugs.gentoo.org/870412
+--- a/eyedude.c
++++ b/eyedude.c
+@@ -51,2 +51,3 @@
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <math.h>
+--- a/include/intro.h
++++ b/include/intro.h
+@@ -84,2 +84,3 @@
+ void DrawIntroTitle(Display *display, Window window, int x, int y);
++void HandleBlink(Display *display, Window window);
+ #else
+@@ -92,2 +93,3 @@
+ void DoIntroTitle();
++void HandleBlink();
+ #endif
+--- a/include/level.h
++++ b/include/level.h
+@@ -74,2 +74,3 @@
+ void DisplayLevelInfo(Display *display, Window window, u_long level);
++void DisplayLevelNumber(Display *display, Window window, u_long level);
+ void CheckGameRules(Display *display, Window window);
+@@ -113,2 +114,3 @@
+ void DisplayLevelInfo();
++void DisplayLevelNumber();
+ void CheckGameRules();
+--- a/main.c
++++ b/main.c
+@@ -231,3 +231,3 @@
+ {
+- static oldx = 0;
++ static int oldx = 0;
+ int x, y;
diff --git a/games-arcade/xboing/files/xboing-2.4-musl.patch b/games-arcade/xboing/files/xboing-2.4-musl.patch
new file mode 100644
index 000000000000..b24084e9206e
--- /dev/null
+++ b/games-arcade/xboing/files/xboing-2.4-musl.patch
@@ -0,0 +1,11 @@
+diff -ruN xboing.orig/include/file.h xboing/include/file.h
+--- xboing.orig/include/file.h 1996-11-22 02:28:34.000000000 +0100
++++ xboing/include/file.h 2023-04-08 20:27:45.157804561 +0200
+@@ -52,6 +52,7 @@
+
+ #include <stdio.h>
+ #include <time.h>
++#include <sys/types.h>
+
+ /*
+ * Constants and macros:
diff --git a/games-arcade/xboing/files/xboing-2.4-sleep.patch b/games-arcade/xboing/files/xboing-2.4-sleep.patch
new file mode 100644
index 000000000000..80723465185f
--- /dev/null
+++ b/games-arcade/xboing/files/xboing-2.4-sleep.patch
@@ -0,0 +1,13 @@
+diff -ru xboing.debian/misc.c xboing/misc.c
+--- xboing.debian/misc.c 2013-02-02 20:07:07.000000000 +0100
++++ xboing/misc.c 2013-02-02 20:11:51.000000000 +0100
+@@ -116,9 +116,7 @@
+ long SyncTime;
+ static unsigned long accu;
+
+-#ifdef __alpha__
+ ms *= 1000; /* convert from milliseconds to microseconds for usleep */
+-#endif
+
+ gettimeofday(&st, NULL);
+ XSync(display, False);
diff --git a/games-arcade/xboing/metadata.xml b/games-arcade/xboing/metadata.xml
new file mode 100644
index 000000000000..8f60dddae30a
--- /dev/null
+++ b/games-arcade/xboing/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="person"><email>dilfridge@gentoo.org</email></maintainer>
+</pkgmetadata>
diff --git a/games-arcade/xboing/xboing-2.4-r4.ebuild b/games-arcade/xboing/xboing-2.4-r4.ebuild
new file mode 100644
index 000000000000..d427db516466
--- /dev/null
+++ b/games-arcade/xboing/xboing-2.4-r4.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic toolchain-funcs
+
+DESCRIPTION="Blockout type game where you bounce a ball trying to destroy blocks"
+HOMEPAGE="http://www.techrescue.org/xboing/"
+SRC_URI="http://www.techrescue.org/xboing/${PN}${PV}.tar.gz
+ mirror://gentoo/${P}-debian.patch.bz2"
+S="${WORKDIR}/${PN}"
+
+LICENSE="xboing"
+SLOT="0"
+KEYWORDS="amd64 ~x86"
+
+RDEPEND="
+ acct-group/gamestat
+ x11-libs/libX11
+ x11-libs/libXpm"
+DEPEND="
+ ${RDEPEND}
+ x11-base/xorg-proto"
+BDEPEND="
+ app-text/rman
+ sys-devel/gcc
+ x11-misc/gccmakedep
+ >=x11-misc/imake-1.0.8-r1"
+
+PATCHES=(
+ "${WORKDIR}"/${P}-debian.patch
+ "${FILESDIR}"/${P}-buffer.patch
+ "${FILESDIR}"/${P}-sleep.patch
+ "${FILESDIR}"/${P}-clang16.patch
+ "${FILESDIR}"/${P}-musl.patch
+)
+
+src_prepare() {
+ default
+ sed -i '/^#include/s:xpm\.h:X11/xpm.h:' *.c || die
+ sed -i "s:GENTOO_VER:${PF/${PN}-/}:" Imakefile || die
+}
+
+src_configure() {
+ append-cflags -fcommon #707214
+
+ CC="$(tc-getBUILD_CC)" LD="$(tc-getLD)" \
+ IMAKECPP="${IMAKECPP:-${CHOST}-gcc -E}" xmkmf -a || die
+}
+
+src_compile() {
+ local myemakeargs=(
+ CC="$(tc-getCC)"
+ CDEBUGFLAGS="${CFLAGS}"
+ LOCAL_LDFLAGS="${LDFLAGS}"
+ HIGH_SCORE_DIR="${EPREFIX}/var/games"
+ XBOING_DIR="${EPREFIX}/usr/share/${PN}"
+ )
+ emake "${myemakeargs[@]}"
+}
+
+src_install() {
+ local myemakeargs=(
+ CC="$(tc-getCC)"
+ LOCAL_LDFLAGS="${LDFLAGS}"
+ PREFIX="${D}"
+ BINDIR="${ED}/usr/bin"
+ HIGH_SCORE_DIR="${EPREFIX}/var/games"
+ XBOING_DIR="${EPREFIX}/usr/share/${PN}"
+ )
+ emake "${myemakeargs[@]}" install
+
+ newman xboing.man xboing.6
+ dodoc README docs/*.doc
+
+ fowners root:gamestat /var/games/xboing.score /usr/bin/xboing
+ fperms 660 /var/games/xboing.score
+ fperms 2755 /usr/bin/xboing
+}
diff --git a/games-arcade/xbubble/Manifest b/games-arcade/xbubble/Manifest
new file mode 100644
index 000000000000..d5aab8178ed6
--- /dev/null
+++ b/games-arcade/xbubble/Manifest
@@ -0,0 +1 @@
+DIST xbubble-0.5.8.tar.gz 5544359 BLAKE2B d52d5fd59c795087d6208656227e696b76424a34aa2dee8aced4a63f5105d7b9e95177a63ae71187c0ba07b6a58464c8ecb40b5252980971e9b3dc3799e0717a SHA512 132052d8e57218a2991ce0a0383f69f8818deafbf56046acaa3bc1c8ed7f31e5fb6b9b045df11eb3eaf77a8347b16ad663bb0f727823995e5df6d3adfcb75df2
diff --git a/games-arcade/xbubble/files/xbubble-0.5.8-libpng14.patch b/games-arcade/xbubble/files/xbubble-0.5.8-libpng14.patch
new file mode 100644
index 000000000000..4fe12672db65
--- /dev/null
+++ b/games-arcade/xbubble/files/xbubble-0.5.8-libpng14.patch
@@ -0,0 +1,13 @@
+http://bugs.gentoo.org/show_bug.cgi?id=308731
+
+--- a/src/loadpng.c
++++ b/src/loadpng.c
+@@ -55,7 +55,7 @@ unsigned char * load_png_file( const cha
+ }
+ /* ensure that we opened a PNG file */
+ fread( header, 1, 8, fd );
+- if ( ! png_check_sig( header, 8 ) ) {
++ if ( png_sig_cmp( header, 0, 8 ) ) {
+ fclose(fd);
+ fprintf(stderr,_("File %s does not have a valid PNG signature.\n"), file);
+ return NULL;
diff --git a/games-arcade/xbubble/files/xbubble-0.5.8-locale.patch b/games-arcade/xbubble/files/xbubble-0.5.8-locale.patch
new file mode 100644
index 000000000000..99c03b0c82af
--- /dev/null
+++ b/games-arcade/xbubble/files/xbubble-0.5.8-locale.patch
@@ -0,0 +1,10 @@
+--- a/src/gettext.h.orig 2008-10-07 12:01:37.000000000 -0400
++++ b/src/gettext.h 2008-10-07 12:01:45.000000000 -0400
+@@ -24,6 +24,7 @@
+
+ /* Get declarations of GNU message catalog functions. */
+ # include <libintl.h>
++# include <locale.h>
+
+ #else
+
diff --git a/games-arcade/xbubble/files/xbubble-0.5.8-png15.patch b/games-arcade/xbubble/files/xbubble-0.5.8-png15.patch
new file mode 100644
index 000000000000..bbbae5c31076
--- /dev/null
+++ b/games-arcade/xbubble/files/xbubble-0.5.8-png15.patch
@@ -0,0 +1,20 @@
+--- a/src/loadpng.c.old 2011-09-14 09:58:40.503566961 +0200
++++ b/src/loadpng.c 2011-09-14 10:03:39.708531447 +0200
+@@ -73,7 +73,7 @@
+ return NULL;
+ }
+ /* libpng does a longjmp here when it encounters an error */
+- if ( setjmp( png_ptr->jmpbuf ) ) {
++ if ( setjmp( png_jmpbuf(png_ptr) ) ) {
+ png_destroy_read_struct( &png_ptr, &info_ptr, NULL);
+ fclose(fd);
+ return NULL;
+@@ -95,7 +95,7 @@
+ png_set_gray_to_rgb(png_ptr);
+
+ /* detect alpha layer */
+- if (( info_ptr->color_type & PNG_COLOR_MASK_ALPHA )||
++ if (( png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_ALPHA )||
+ ( png_get_valid( png_ptr, info_ptr, PNG_INFO_tRNS )))
+ *has_alpha = 1;
+ else
diff --git a/games-arcade/xbubble/files/xbubble-0.5.8-xpaths.patch b/games-arcade/xbubble/files/xbubble-0.5.8-xpaths.patch
new file mode 100644
index 000000000000..4db0b8f10ccf
--- /dev/null
+++ b/games-arcade/xbubble/files/xbubble-0.5.8-xpaths.patch
@@ -0,0 +1,11 @@
+the x_libraries variable isnt always defined
+http://bugs.gentoo.org/92688
+
+--- a/configure
++++ b/configure
+@@ -4511,3 +4511,5 @@
+ fi
++if test x"$x_libraries" != x; then
+ LIBS="-L$x_libraries $LIBS"
++fi
+
diff --git a/games-arcade/xbubble/metadata.xml b/games-arcade/xbubble/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/xbubble/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/xbubble/xbubble-0.5.8-r2.ebuild b/games-arcade/xbubble/xbubble-0.5.8-r2.ebuild
new file mode 100644
index 000000000000..0aa90265c24a
--- /dev/null
+++ b/games-arcade/xbubble/xbubble-0.5.8-r2.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop
+
+DESCRIPTION="A Puzzle Bobble clone similar to Frozen-Bubble"
+HOMEPAGE="http://www.nongnu.org/xbubble/"
+SRC_URI="http://www.ibiblio.org/pub/mirrors/gnu/ftp/savannah/files/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="nls"
+
+RDEPEND="
+ x11-libs/libX11
+ x11-libs/libXt
+ media-libs/libpng:=
+ nls? ( virtual/libintl )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="nls? ( sys-devel/gettext )"
+
+DOCS=( AUTHORS ChangeLog NEWS NetworkProtocol README TODO )
+
+PATCHES=(
+ "${FILESDIR}"/${P}-xpaths.patch
+ "${FILESDIR}"/${P}-locale.patch
+ "${FILESDIR}"/${P}-libpng14.patch
+ "${FILESDIR}"/${P}-png15.patch
+)
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e '/^AM_CFLAGS/d' \
+ src/Makefile.in || die
+ sed -i \
+ -e '/^localedir/s:=.*:=/usr/share/locale:' \
+ configure po/Makefile.in.in || die
+}
+
+src_configure() {
+ econf $(use_enable nls)
+}
+
+src_install() {
+
+ default
+ newicon data/themes/fancy/Bubble_black_DEAD_01.png ${PN}.png
+ make_desktop_entry ${PN} XBubble
+}
diff --git a/games-arcade/xgalaga/Manifest b/games-arcade/xgalaga/Manifest
new file mode 100644
index 000000000000..989b617f1b31
--- /dev/null
+++ b/games-arcade/xgalaga/Manifest
@@ -0,0 +1 @@
+DIST xgalaga-2.1.1.0.tar.gz 331621 BLAKE2B 290881eb89cacc7a2be469af8da2c11d710dea45f165daa43d4a10a310e681c9f6ffb012e057e266f1e50c5629122ca38cfd97e31a788104e7710f02d756f59d SHA512 087db9e0501cedb042bb673a217f9de32640d3e4f4f529a29fd25ed682a1aece9ae1beacdc2ee77fc93ac931411a1051e2cd19873578ccffe5f03a083bffe513
diff --git a/games-arcade/xgalaga/files/xgalaga-2.1.1.0-c23.patch b/games-arcade/xgalaga/files/xgalaga-2.1.1.0-c23.patch
new file mode 100644
index 000000000000..d0a10e983984
--- /dev/null
+++ b/games-arcade/xgalaga/files/xgalaga-2.1.1.0-c23.patch
@@ -0,0 +1,24 @@
+https://bugs.gentoo.org/943793
+--- a/libsprite/data.c
++++ b/libsprite/data.c
+@@ -79,9 +79,6 @@ W_Font W_HighlightFont = (W_Font) & two, W_UnderlineFont = (W_Font) & three;
+ W_Color W_White = WHITE, W_Black = BLACK, W_Red = RED, W_Green = GREEN;
+ W_Color W_Yellow = YELLOW, W_Cyan = CYAN, W_Grey = LIGHT_GREY, W_DarkGrey = DARK_GREY;
+ int W_Textwidth, W_Textheight, W_BigTextwidth, W_BigTextheight;
+-#ifndef strdup
+-char *strdup();
+-#endif
+ int W_in_message = 0; /* jfy -- for Jerry's warp message hack */
+
+ #ifdef RJC
+--- a/xgal.sndsrv.linux.c
++++ b/xgal.sndsrv.linux.c
+@@ -49,7 +49,7 @@ int fragsize;
+
+
+ /* Terminate: Signal Handler */
+-void quit ()
++void quit (int n)
+ {
+ exit (0);
+ }
diff --git a/games-arcade/xgalaga/files/xgalaga-2.1.1.0-function-and-ints.patch b/games-arcade/xgalaga/files/xgalaga-2.1.1.0-function-and-ints.patch
new file mode 100644
index 000000000000..349f01216f35
--- /dev/null
+++ b/games-arcade/xgalaga/files/xgalaga-2.1.1.0-function-and-ints.patch
@@ -0,0 +1,24 @@
+Bug: https://bugs.gentoo.org/877287
+--- a/title.c
++++ b/title.c
+@@ -5,6 +5,7 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <unistd.h>
+ #ifdef HAVE_FCNTL_H
+ # include <fcntl.h>
+ #endif
+@@ -17,9 +18,9 @@
+ #include "proto.h"
+
+ /* for scrolling credits */
+-const LINESIZE= 70;
+-const VISIBLELINES=7;
+-const SPEEDFACTOR=5;
++const int LINESIZE=70;
++const int VISIBLELINES=7;
++const int SPEEDFACTOR=5;
+ char *gchLBuf;
+ int giCreditLines=0, giActCreditLine=0;
+
diff --git a/games-arcade/xgalaga/files/xgalaga-2.1.1.0-respect-AR.patch b/games-arcade/xgalaga/files/xgalaga-2.1.1.0-respect-AR.patch
new file mode 100644
index 000000000000..8a4991d4299b
--- /dev/null
+++ b/games-arcade/xgalaga/files/xgalaga-2.1.1.0-respect-AR.patch
@@ -0,0 +1,24 @@
+Allow user to specify AR. Derive ar from --host=.
+
+Bug: https://bugs.gentoo.org/730796
+--- a/configure.in
++++ b/configure.in
+@@ -14,6 +14,7 @@ AC_PROG_INSTALL
+ AC_PROG_LN_S
+ AC_PROG_MAKE_SET
+ AC_PROG_RANLIB
++AC_CHECK_TOOL(AR, ar)
+
+ AC_ARG_WITH(xpm-lib,[ --with-xpm-lib Directory containing libXpm (may be autodetected)],xpm_lib=$withval)
+ AC_ARG_WITH(sound, [ --with-sound Type of sound to use (native or nas)],sound_type=$withval)
+--- a/libsprite/Makefile.in
++++ b/libsprite/Makefile.in
+@@ -8,7 +8,7 @@ VPATH = @srcdir@
+ .SUFFIXES:
+ .SUFFIXES: .c .o
+
+-AR = ar
++AR = @AR@
+ AR_FLAGS = rc
+ RANLIB = @RANLIB@
+
diff --git a/games-arcade/xgalaga/files/xgalaga-2.1.1.0-return-type.patch b/games-arcade/xgalaga/files/xgalaga-2.1.1.0-return-type.patch
new file mode 100644
index 000000000000..2e379ee3cd74
--- /dev/null
+++ b/games-arcade/xgalaga/files/xgalaga-2.1.1.0-return-type.patch
@@ -0,0 +1,23 @@
+--- a/title.c
++++ b/title.c
+@@ -108,7 +108,7 @@ static void show_help()
+ top+150, W_Cyan);
+ }
+
+-int read_credits()
++void read_credits()
+ {
+ int hsf;
+ int i,j,l,lines;
+@@ -117,9 +117,9 @@ int read_credits()
+
+ j = 0; lines = 0;
+ chFBuf = (char *) malloc (8000+1);
+- if (chFBuf == 0) return (-1);
++ if (chFBuf == 0) return;
+ gchLBuf = (char *) malloc (LINESIZE+1);
+- if (gchLBuf == 0) return (-2);
++ if (gchLBuf == 0) return;
+ hsf = open (CREDITSFILE, O_RDONLY);
+ if ( hsf > 0 )
+ {
diff --git a/games-arcade/xgalaga/metadata.xml b/games-arcade/xgalaga/metadata.xml
new file mode 100644
index 000000000000..14eb84768812
--- /dev/null
+++ b/games-arcade/xgalaga/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">xgalaga</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/xgalaga/xgalaga-2.1.1.0-r3.ebuild b/games-arcade/xgalaga/xgalaga-2.1.1.0-r3.ebuild
new file mode 100644
index 000000000000..a463f80abd32
--- /dev/null
+++ b/games-arcade/xgalaga/xgalaga-2.1.1.0-r3.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop
+
+DESCRIPTION="Clone of the classic game Galaga for the X Window System"
+HOMEPAGE="https://sourceforge.net/projects/xgalaga"
+SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ x11-libs/libX11
+ x11-libs/libXmu
+ x11-libs/libXpm
+ x11-libs/libXext
+ x11-libs/libXt
+"
+DEPEND="
+ ${RDEPEND}
+ x11-base/xorg-proto
+"
+RDEPEND+=" acct-group/gamestat"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.1.1.0-respect-AR.patch
+ "${FILESDIR}"/${PN}-2.1.1.0-function-and-ints.patch
+ "${FILESDIR}"/${PN}-2.1.1.0-c23.patch
+ "${FILESDIR}"/${PN}-2.1.1.0-return-type.patch
+)
+
+src_prepare() {
+ default
+
+ eautoreconf
+
+ sed -i \
+ -e "/LEVELDIR\|SOUNDDIR/ s:prefix:datadir/${PN}:" \
+ -e "/\/scores/ s:prefix:localstatedir/${PN}:" \
+ configure || die "sed configure failed"
+
+ sed -i \
+ -e "/SOUNDDEFS/ s:(SOUNDSRVDIR):(SOUNDSRVDIR)/bin:" \
+ -e 's:make ;:$(MAKE) ;:' \
+ Makefile.in || die "sed Makefile.in failed"
+}
+
+src_install() {
+ dobin xgalaga xgal.sndsrv.oss xgalaga-hyperspace
+ dodoc README README.SOUND CHANGES
+ newman xgalaga.6x xgalaga.6
+
+ insinto /usr/share/${PN}/sounds
+ doins sounds/*.raw
+
+ insinto /usr/share/${PN}/levels
+ doins levels/*.xgl
+
+ make_desktop_entry ${PN} XGalaga
+
+ dodir /var/games/${PN}
+ touch "${ED}"/var/games/${PN}/scores || die
+
+ fperms -R 660 /var/games/${PN}
+ fowners -R root:gamestat /var/games/${PN} /usr/bin/{xgalaga,xgal.sndsrv.oss,xgalaga-hyperspace}
+ fperms g+s /usr/bin/{xgalaga,xgal.sndsrv.oss,xgalaga-hyperspace}
+}
diff --git a/games-arcade/xjump/Manifest b/games-arcade/xjump/Manifest
new file mode 100644
index 000000000000..d6070ee41b31
--- /dev/null
+++ b/games-arcade/xjump/Manifest
@@ -0,0 +1,2 @@
+DIST xjump_2.7.5-6.1.debian.tar.gz 9803 BLAKE2B 0a51a579aec18c71561f32d1f6321c383c8137dbe3923f3afdf00100f1c47ec062e2200a04a3281f32124f5fe72094abb6a1fc6a86de00c4886d872a21fe9a79 SHA512 c4962acd25c4cabef37acd3b5d39867a955f2fa769cc203fb00edfe37f37ce25369099b589a282189847e7bffeb874b4eaf8deea9320a9083da7e95425625cf8
+DIST xjump_2.7.5.orig.tar.gz 15940 BLAKE2B 9a022f9c6f522d8977268cd00709cc7a8aed9cf6ead042d1c75c0c0e7c011a1898690fa74e957198c5916806da4cc3d80d7d235342e7e41a33c2086553b91075 SHA512 6ce846d6681bf8b084edc06f8415a57f66d1778ec9af8b9b170f4f37292a8172b3507a08c85032a5b8588b50a7f2eefe205add4c779edd7c7ef8fb6d818d9300
diff --git a/games-arcade/xjump/files/xjump-2.7.5-c99.patch b/games-arcade/xjump/files/xjump-2.7.5-c99.patch
new file mode 100644
index 000000000000..1f2958faf686
--- /dev/null
+++ b/games-arcade/xjump/files/xjump-2.7.5-c99.patch
@@ -0,0 +1,16 @@
+Polymorphism, C way
+--- a/record.c 2024-04-04 11:22:00.801603415 +0000
++++ b/record.c 2024-04-04 11:26:16.515731335 +0000
+@@ -198,8 +198,11 @@
+
+ /* ソート比較関数 */
+
+-static int sort_cmp( record_t *r1, record_t *r2 )
++static int sort_cmp(const void *v1, const void *v2 )
+ {
++ const record_t *r1 = (const record_t *) v1;
++ const record_t *r2 = (const record_t *) v2;
++
+ if( r1->score > r2->score )
+ return -1;
+ else if( r1->score < r2->score )
diff --git a/games-arcade/xjump/files/xjump-2.7.5-ldflags.patch b/games-arcade/xjump/files/xjump-2.7.5-ldflags.patch
new file mode 100644
index 000000000000..7cff45c60653
--- /dev/null
+++ b/games-arcade/xjump/files/xjump-2.7.5-ldflags.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -28,7 +28,7 @@
+ ##########################################################
+
+ xjump : main.o game.o key.o misc.o record.o resource.o
+- $(CC) $(CFLAGS) -o xjump \
++ $(CC) $(LDFLAGS) $(CFLAGS) -o xjump \
+ main.o game.o key.o misc.o record.o resource.o\
+ -lXaw -lXmu -lXt -lXpm -lXext -lX11 $(LDIR)
+
diff --git a/games-arcade/xjump/metadata.xml b/games-arcade/xjump/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/xjump/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/xjump/xjump-2.7.5-r3.ebuild b/games-arcade/xjump/xjump-2.7.5-r3.ebuild
new file mode 100644
index 000000000000..65704b65f41a
--- /dev/null
+++ b/games-arcade/xjump/xjump-2.7.5-r3.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DEBIAN_PATCH="6.1"
+DESCRIPTION="An X game where one tries to jump up as many levels as possible"
+HOMEPAGE="http://packages.debian.org/stable/games/xjump"
+SRC_URI="mirror://debian/pool/main/x/${PN}/${PN}_${PV}.orig.tar.gz
+ mirror://debian/pool/main/x/${PN}/${PN}_${PV}-${DEBIAN_PATCH}.debian.tar.gz"
+S="${WORKDIR}"/${P}.orig
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="x11-libs/libX11
+ x11-libs/libXaw
+ x11-libs/libXpm
+ x11-libs/libXt"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
+
+RDEPEND+=" acct-group/gamestat"
+
+PATCHES=(
+ "${WORKDIR}"/debian/patches/01_overflow.patch
+ "${WORKDIR}"/debian/patches/02_fix_repeat.patch
+ "${WORKDIR}"/debian/patches/03_source_warnings.patch
+ "${WORKDIR}"/debian/patches/04_makefile_respect_cflags.patch
+ "${WORKDIR}"/debian/patches/05_unneded_deps.patch
+ "${FILESDIR}"/${P}-ldflags.patch
+ "${FILESDIR}"/${P}-c99.patch
+)
+
+src_prepare() {
+ default
+
+ # set up where we will keep the highscores file:
+ sed -i \
+ -e "/^CC/d" \
+ -e "/^CFLAGS/d" \
+ -e "s,/record,/xjump.hiscores," \
+ Makefile || die
+}
+
+src_configure() {
+ tc-export CC
+}
+
+src_install() {
+ dobin xjump
+ dodoc README.euc
+
+ # Set up the hiscores file
+ dodir /var/games/${PN}
+ touch "${ED}"/var/games/${PN}/xjump.hiscores || die
+
+ fperms -R 660 /var/games/${PN}
+ fowners -R root:gamestat /var/games/${PN} /usr/bin/${PN}
+ fperms g+s /usr/bin/${PN}
+}
diff --git a/games-arcade/xrick/Manifest b/games-arcade/xrick/Manifest
new file mode 100644
index 000000000000..43803adedd2c
--- /dev/null
+++ b/games-arcade/xrick/Manifest
@@ -0,0 +1 @@
+DIST xrick-021212.tgz 1648538 BLAKE2B d8ba387f4645d4ef0fd97b346ee202fb8573fd694e4f278791115ea5a2ab6ca509a8fffec3c5754e0160eec919aaa7a90509858bd80ae0244f28c32055070636 SHA512 7a6547dfce586512c3c4aa7fd5aa0d7d8bd223dbec6a9211e858034bd73d44f168266441d8f3475cddbed8f3a19c7c0df31345b62e2ecfb860664e54facb48bf
diff --git a/games-arcade/xrick/files/xrick-021212-Makefile.patch b/games-arcade/xrick/files/xrick-021212-Makefile.patch
new file mode 100644
index 000000000000..2911f4715d45
--- /dev/null
+++ b/games-arcade/xrick/files/xrick-021212-Makefile.patch
@@ -0,0 +1,30 @@
+--- a/Makefile
++++ b/Makefile
+@@ -71,10 +71,8 @@
+ all:
+ @echo "ROOTDIR=$(ROOTDIR)" > Makefile.global
+ @echo "XOBJ=$(XOBJ)" >> Makefile.global
+- @echo "CFLAGS=-g -ansi -pedantic -Wall -W -O2 -I $(ROOTDIR)/include $(shell sdl-config --cflags)" >> Makefile.global
+- @echo "LDFLAGS=-lz $(shell sdl-config --libs)" >> Makefile.global
+- @echo "CC=gcc" >> Makefile.global
+- @echo "CPP=gcc -E" >> Makefile.global
++ @echo "CFLAGS+=-pedantic -Wall -I$(ROOTDIR)/include $(shell sdl-config --cflags)" >> Makefile.global
++ @echo "LIBS+=-lz $(shell sdl-config --libs)" >> Makefile.global
+ $(MAKE) -C src all
+
+ clean:
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -40,10 +40,10 @@
+ all: $(TARGET)
+
+ $(TARGET): $(OBJECTS) $(XOBJ)
+- $(CC) $(OBJECTS) $(XOBJ) $(LDFLAGS) -o $(TARGET)
++ $(CC) $(LDFLAGS) $(OBJECTS) $(XOBJ) -o $(TARGET) $(LIBS)
+
+ %.o: %.c
+- $(CC) $(CFLAGS) -c $< -o $@
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+
+ xrick.res: xrick.rc
+ windres $< -O coff -o $@
diff --git a/games-arcade/xrick/files/xrick-021212-exit.patch b/games-arcade/xrick/files/xrick-021212-exit.patch
new file mode 100644
index 000000000000..4486a969b346
--- /dev/null
+++ b/games-arcade/xrick/files/xrick-021212-exit.patch
@@ -0,0 +1,23 @@
+diff -ur xrick-021212/src/sysjoy.c xrick-021212.patched/src/sysjoy.c
+--- xrick-021212/src/sysjoy.c 2010-10-23 00:33:33.000000000 +0400
++++ xrick-021212.patched/src/sysjoy.c 2010-10-23 00:42:25.000000000 +0400
+@@ -56,6 +56,7 @@
+ {
+ if (j)
+ SDL_JoystickClose(j);
++ j = NULL;
+ }
+
+ #endif /* ENABLE_JOYSTICK */
+diff -ur xrick-021212/src/xrick.c xrick-021212.patched/src/xrick.c
+--- xrick-021212/src/xrick.c 2010-10-23 00:33:33.000000000 +0400
++++ xrick-021212.patched/src/xrick.c 2010-10-23 00:40:47.000000000 +0400
+@@ -29,7 +29,7 @@
+ data_setpath("/usr/games/lib/xrick/data.zip");
+ game_run();
+ data_closepath();
+- sys_shutdown();
++ /* sys_shutdown is called via atexit */
+ return 0;
+ }
+
diff --git a/games-arcade/xrick/files/xrick-021212-fno-common.patch b/games-arcade/xrick/files/xrick-021212-fno-common.patch
new file mode 100644
index 000000000000..d3c05c30dbef
--- /dev/null
+++ b/games-arcade/xrick/files/xrick-021212-fno-common.patch
@@ -0,0 +1,34 @@
+--- a/include/img.h
++++ b/include/img.h
+@@ -27,7 +27,7 @@
+ U8 *pixels;
+ } img_t;
+
+-img_t *IMG_SPLASH;
++extern img_t *IMG_SPLASH;
+
+ #endif
+
+--- a/src/dat_snd.c
++++ b/src/dat_snd.c
+@@ -19,14 +19,14 @@
+
+ sound_t *WAV_WAA;
+ sound_t *WAV_BOMB;
+-sound_t *WAV_BULLET;
+-sound_t *WAV_WALK;
+-sound_t *WAV_JUMP;
++extern sound_t *WAV_BULLET;
++extern sound_t *WAV_WALK;
++extern sound_t *WAV_JUMP;
+ sound_t *WAV_TING;
+-sound_t *WAV_BOMBSHHT;
+-sound_t *WAV_BONUS;
++extern sound_t *WAV_BOMBSHHT;
++extern sound_t *WAV_BONUS;
+ sound_t *WAV_SHHT;
+-sound_t *WAV_BOX;
++extern sound_t *WAV_BOX;
+ sound_t *WAV_DDDING;
+
+ #endif /* ENABLE_SOUND */
diff --git a/games-arcade/xrick/files/xrick-021212-fullscreen.patch b/games-arcade/xrick/files/xrick-021212-fullscreen.patch
new file mode 100644
index 000000000000..97271a33a28e
--- /dev/null
+++ b/games-arcade/xrick/files/xrick-021212-fullscreen.patch
@@ -0,0 +1,21 @@
+diff -ur xrick-021212/src/sysvid.c xrick-021212.patched/src/sysvid.c
+--- xrick-021212/src/sysvid.c 2002-12-24 16:33:43.000000000 +0300
++++ xrick-021212.patched/src/sysvid.c 2011-01-14 03:03:16.636668016 +0300
+@@ -145,10 +145,14 @@
+ IFDEBUG_VIDEO(sys_printf("xrick/video: SDL says, use these modes:\n"););
+ for (i = 0; modes[i]; i++) {
+ IFDEBUG_VIDEO(sys_printf(" %dx%d\n", modes[i]->w, modes[i]->h););
+- if (modes[i]->w <= modes[mode]->w && modes[i]->w >= SYSVID_WIDTH &&
+- modes[i]->h * SYSVID_WIDTH >= modes[i]->w * SYSVID_HEIGHT) {
++ if ((!fszoom && modes[i]->w <= modes[mode] &&
++ modes[i]->w >= SYSVID_WIDTH) ||
++ (fszoom && modes[i]->w > modes[mode]->w)) {
+ mode = i;
+- fszoom = modes[mode]->w / SYSVID_WIDTH;
++ if (modes[i]->h * SYSVID_WIDTH >= modes[i]->w * SYSVID_HEIGHT)
++ fszoom = modes[mode]->w / SYSVID_WIDTH;
++ else
++ fszoom = modes[mode]->h / SYSVID_HEIGHT;
+ }
+ }
+ if (fszoom != 0) {
diff --git a/games-arcade/xrick/files/xrick-021212-zlib.patch b/games-arcade/xrick/files/xrick-021212-zlib.patch
new file mode 100644
index 000000000000..bd7d6287925f
--- /dev/null
+++ b/games-arcade/xrick/files/xrick-021212-zlib.patch
@@ -0,0 +1,13 @@
+--- a/include/unzip.h.old 2012-03-24 16:13:16.012854948 +0100
++++ b/include/unzip.h 2012-03-24 16:15:42.744346771 +0100
+@@ -49,6 +49,10 @@
+ #include "zlib.h"
+ #endif
+
++#ifdef _Z_OF
++#define OF _Z_OF
++#endif
++
+ #if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
+ /* like the STRICT of WIN32, we define a pointer that cannot be converted
+ from (void*) without cast */
diff --git a/games-arcade/xrick/metadata.xml b/games-arcade/xrick/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/xrick/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/xrick/xrick-021212-r2.ebuild b/games-arcade/xrick/xrick-021212-r2.ebuild
new file mode 100644
index 000000000000..eaa56d752fbc
--- /dev/null
+++ b/games-arcade/xrick/xrick-021212-r2.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop toolchain-funcs
+
+DESCRIPTION="Clone of the Rick Dangerous adventure game from the 80's"
+HOMEPAGE="http://www.bigorno.net/xrick/"
+SRC_URI="http://www.bigorno.net/xrick/${P}.tgz"
+
+LICENSE="GPL-1+ xrick"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~x86"
+RESTRICT="mirror bindist" # bug #149097
+
+DEPEND="media-libs/libsdl[video]"
+RDEPEND="${DEPEND}
+ !~media-libs/libsdl-1.2.60"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-exit.patch
+ "${FILESDIR}"/${P}-fullscreen.patch
+ "${FILESDIR}"/${P}-zlib.patch
+ "${FILESDIR}"/${P}-Makefile.patch
+ "${FILESDIR}"/${P}-fno-common.patch
+)
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}" || die
+ unpack ./xrick.6.gz
+}
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e "/^run from/d" \
+ -e "/data.zip/ s:the directory where xrick is:$(get_libdir)/xrick.:" \
+ xrick.6 || die
+
+ sed -i \
+ -e "s:data.zip:${EPREFIX}/usr/$(get_libdir)/xrick/data.zip:" \
+ src/xrick.c || die
+}
+
+src_configure() {
+ tc-export CC
+}
+
+src_install() {
+ dobin xrick
+
+ insinto /usr/$(get_libdir)/xrick
+ doins data.zip
+
+ dodoc README KeyCodes
+ doman xrick.6
+
+ newicon src/xrickST.ico xrick.ico
+ make_desktop_entry xrick xrick /usr/share/pixmaps/xrick.ico
+}
diff --git a/games-arcade/xscavenger/Manifest b/games-arcade/xscavenger/Manifest
new file mode 100644
index 000000000000..613e7aa425d5
--- /dev/null
+++ b/games-arcade/xscavenger/Manifest
@@ -0,0 +1,2 @@
+DIST xscavenger-1.4.5.tgz 192990 BLAKE2B 5df2ca8b7b331d9c17ef8f287a8967f4f95a8737660fb42e4f5012f00ab24698d555e3f76bd82f3ba7b55423244e9d0a4392ccce99c84bed6cf80dee15ab3bf6 SHA512 ebdde5c74409dc881503ee6eeecb7194218141c6e7c169c2febd1a4339625e1532a654fc1ac2ce7b3256e8a721f656dfb7bddc4394e0513a5130e3cc8795dfe7
+DIST xscavenger.png 3096 BLAKE2B c1e346a2950affdd41bf89358d9138196af7a5c422e64a863f9480b9876320ff381cbd301be644d02013754552303e2141a0962b2dcc16bddc6d0a2c646405d7 SHA512 9a9a8f70baac35d0818c6d34d6af0420db27e5f44cd0072e14d520d4f142ad41f5234868cda4cd0a03157987e2fc030df552ac37b02d07934c4de0c7c8b46947
diff --git a/games-arcade/xscavenger/files/xscavenger-1.4.5-misc-fixes.patch b/games-arcade/xscavenger/files/xscavenger-1.4.5-misc-fixes.patch
new file mode 100644
index 000000000000..be45c6c4083b
--- /dev/null
+++ b/games-arcade/xscavenger/files/xscavenger-1.4.5-misc-fixes.patch
@@ -0,0 +1,130 @@
+* Missing return value (needed by clang)
+* Implicit declarations (string.h and doall)
+* Datafile loading broken on architectures where sizeof(long)>4
+ https://bugs.debian.org/56139
+* Scavenger leaks file descriptors
+ https://bugs.debian.org/175128
+* Font mapping with clang or gcc-7+
+ https://svnweb.freebsd.org/ports?view=revision&revision=444423
+--- a/src/edit.c
++++ b/src/edit.c
+@@ -3,2 +3,3 @@
+ #include <stdio.h>
++#include <string.h>
+ #include <unistd.h>
+--- a/src/scav.c
++++ b/src/scav.c
+@@ -246,7 +246,9 @@
+
+- val1=myci()<<24L;
+- val1|=myci()<<16L;
+- val1|=myci()<<8;
+- val1|=myci();
++ int i,j;
+
++ for (i=0; i<4; i++) {
++ j = myci();
++ if (j==-1) return -1L;
++ val1 = (val1<<8) + j;
++ }
+ return val1;
+@@ -404,6 +406,6 @@
+ got=read(input,buff,8);
+- if(got!=8) return -2;
+- if (strncmp(buff,"SCAV",4)) return -3;
++ if(got!=8) {close(input);return -2;}
++ if (strncmp(buff,"SCAV",4)) {close(input);return -3;}
+ max=(buff[4]<<24) | (buff[5]<<16) | (buff[6]<<8) | buff[7];
+- if(num>=max) return 0;
++ if(num>=max) {close(input);return 0;}
+ lseek(input,(num+1)<<3,SEEK_SET);
+@@ -413,3 +415,3 @@
+ if(len>length) len=length;
+- if(!offset || !len) return 0;
++ if(!offset || !len) {close(input);return 0;}
+ lseek(input,offset,SEEK_SET);
+@@ -450,4 +452,4 @@
+ got=read(input,buff,8);
+- if(got!=8) return -2;
+- if(strncmp(buff,"SCAV",4)) return -3;
++ if(got!=8) {close(input);return -2;}
++ if(strncmp(buff,"SCAV",4)) {close(input);return -3;}
+ output=creat(bakname,00600);
+@@ -475,4 +477,4 @@
+ headers[i+i]+=delta;
+- if (write(output,"SCAV",4) != 4) return -200;
+- if (!rlout(output,max)) return -200;
++ if (write(output,"SCAV",4) != 4) {close(input);close(output);return -200;}
++ if (!rlout(output,max)) {close(input);close(output);return -200;}
+ headers[num+num]=0;
+@@ -480,3 +482,3 @@
+ for(i=0;i<max+max;i++)
+- if (!rlout(output,headers[i])) return -200;
++ if (!rlout(output,headers[i])) {close(input);close(output);return -200;}
+
+@@ -489,4 +491,4 @@
+ got=count>1024 ? 1024 : count;
+- if (read(input,copybuff,got) != got) return -200;
+- if (write(output,copybuff,got) != got) return -200;
++ if (read(input,copybuff,got) != got) {close(input);close(output);return -200;}
++ if (write(output,copybuff,got) != got) {close(input);close(output);return -200;}
+ count-=got;
+@@ -500,3 +502,3 @@
+ if (!got) break;
+- if (write (output, copybuff, got) != got) return -200;
++ if (write (output, copybuff, got) != got) {close(input);close(output);return -200;}
+ offset += got;
+@@ -505,8 +507,8 @@
+ {
+- if (write (output, take, len) != len) return -200;
++ if (write (output, take, len) != len) {close(input);close(output);return -200;}
+ lseek (output, (num+1) << 3, SEEK_SET);
+- if (!rlout (output, offset)) return -200;
++ if (!rlout (output, offset)) {close(input);close(output);return -200;}
+ }
+ close (input);
+- if (fsync(output)) return -200;
++ if (fsync(output)) {close(output);return -200;}
+ if (close(output)) return -200;
+@@ -1384,2 +1386,3 @@
+ }
++ close(file);
+ }
+@@ -1418,2 +1421,4 @@
+ } while(len);
++ close(input);
++ close(output);
+ return 0;
+@@ -1450,3 +1455,3 @@
+ }
+- }
++ } else close(file);
+
+@@ -1487,3 +1492,3 @@
+ }
+- }
++ } else close(file);
+ }
+@@ -1574,3 +1579,3 @@
+ puts(err);
+- return;
++ return 1;
+ }
+--- a/src/sound.c
++++ b/src/sound.c
+@@ -50,2 +50,3 @@
+
++void doall();
+ void opendsp(int samplerate)
+@@ -201,3 +202,3 @@
+
+-doall()
++void doall()
+ {
+--- a/src/x.c
++++ b/src/x.c
+@@ -447,3 +447,3 @@
+ {
+- fmap[tolower(*p)]=fmap[*p++]=i++;
++ fmap[tolower(*p)]=fmap[*p]=i++; p++;
+ }
diff --git a/games-arcade/xscavenger/metadata.xml b/games-arcade/xscavenger/metadata.xml
new file mode 100644
index 000000000000..1c3ba213c494
--- /dev/null
+++ b/games-arcade/xscavenger/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/games-arcade/xscavenger/xscavenger-1.4.5.ebuild b/games-arcade/xscavenger/xscavenger-1.4.5.ebuild
new file mode 100644
index 000000000000..94a4dacbaa73
--- /dev/null
+++ b/games-arcade/xscavenger/xscavenger-1.4.5.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop flag-o-matic toolchain-funcs
+
+DESCRIPTION="Lode-Runner-like arcade game"
+HOMEPAGE="https://www.linuxmotors.com/linux/scavenger/index.html"
+SRC_URI="
+ https://www.linuxmotors.com/linux/scavenger/downloads/${P}.tgz
+ https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/alsa-lib
+ x11-libs/libX11"
+DEPEND="
+ ${RDEPEND}
+ x11-base/xorg-proto"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-misc-fixes.patch
+)
+
+src_compile() {
+ tc-export CC
+ append-cflags -std=gnu89 # old codebase, incompatible with c2x
+
+ # skip using imake for simplicity
+ local cppargs=(
+ -DLIBNAME="'\"${EPREFIX}/usr/share/${PN}\"'"
+ $($(tc-getPKG_CONFIG) --cflags alsa x11)
+ )
+ append-cppflags "${cppargs[@]}"
+
+ LDLIBS="$($(tc-getPKG_CONFIG) --libs alsa x11)" \
+ emake -C src -E "scav: anim.o edit.o x.o sound.o"
+}
+
+src_install() {
+ newbin src/scav scavenger
+ doman src/scavenger.6
+
+ dodoc CREDITS DOC README TODO changelog
+
+ insinto /usr/share/${PN}
+ doins -r data/.
+
+ doicon "${DISTDIR}"/${PN}.png
+ make_desktop_entry scavenger XScavenger
+}
diff --git a/games-arcade/xtux/Manifest b/games-arcade/xtux/Manifest
new file mode 100644
index 000000000000..12a89d219e06
--- /dev/null
+++ b/games-arcade/xtux/Manifest
@@ -0,0 +1 @@
+DIST xtux-src-20030306.tar.gz 1640928 BLAKE2B 0db135f741a978a943035df5b78773bbb3fbbeecc2fd740525614e4f942e7e23b67a6fa5640fa82c2c32d2aa2abe73badc9d341ab0ec06922513a8ed0783ce7a SHA512 edb137b4d6b0fe7d673e8eedffbd9c521800a8e51aff0a36e5aa02d46a157d42142326b334b9c7358cfb5debf4b78a2a9951f82121dd538cfe288cf292a269d4
diff --git a/games-arcade/xtux/files/xtux-20030306-Makefile.patch b/games-arcade/xtux/files/xtux-20030306-Makefile.patch
new file mode 100644
index 000000000000..7340dbfd187a
--- /dev/null
+++ b/games-arcade/xtux/files/xtux-20030306-Makefile.patch
@@ -0,0 +1,190 @@
+--- a/src/client/Makefile
++++ b/src/client/Makefile
+@@ -16,13 +16,12 @@
+
+ # Programs used in building process
+ MAKE = make
+-CC = gcc
+
+ # Where to put the XTux client binary.
+ BINARY = $(TOPLEVEL_PATH)/xtux
+
+ # Flags used when compiling
+-CFLAGS = -g -Wall -O2 -DDATADIR=\"$(DATADIR)\"
++CPPFLAGS += -DDATADIR=\"$(DATADIR)\"
+
+ # Paths to header files
+ X11_INC = -I$(X11_PATH)/include
+@@ -48,8 +47,8 @@
+
+ #Apps
+ client: $(OBJECTS)
+- $(CC) -o $(BINARY) $(CFLAGS) $(OBJECTS) $(XTUXLIB) $(MATHLIB) $(X11LIB) $(XPMLIB) $(SOCKLIB) $(GGZLIB)
++ $(CC) $(LDFLAGS) -o $(BINARY) $(CFLAGS) $(OBJECTS) $(XTUXLIB) $(MATHLIB) $(X11LIB) $(XPMLIB) $(SOCKLIB) $(GGZLIB)
+
+ # OBJECTS
+ .c.o: client.h $*.c
+- $(CC) $(CFLAGS) -c $*.c $(COMMON_INC) $(X11_INC) $(GGZ_INC)
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $*.c $(COMMON_INC) $(X11_INC) $(GGZ_INC)
+--- a/src/common/Makefile
++++ b/src/common/Makefile
+@@ -1,9 +1,6 @@
+ # Makefile for stuff that's common between server & client.
+
+-CC = gcc
+-CFLAGS = -g -Wall -O2 -DDATADIR=\"$(DATADIR)\"
+-AR = ar
+-RANLIB = ranlib
++CPPFLAGS += -DDATADIR=\"$(DATADIR)\"
+
+ OBJECTS = common.o timing.o net.o entity_type.o weapon_type.o map.o maths.o datafile.o
+ XTUXLIB = xtuxlib.a
+@@ -18,4 +15,4 @@
+ ${RANLIB} $@
+
+ .c.o: xtux.h $*.c $*.h
+- $(CC) $(CFLAGS) -c $*.c $(COMMON_INC)
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $*.c $(COMMON_INC)
+--- a/src/ggz/client/Makefile
++++ b/src/ggz/client/Makefile
+@@ -61,7 +61,6 @@
+ host_alias = i586-pc-linux-gnu
+ host_triplet = i586-pc-linux-gnu
+ AS = @AS@
+-CC = gcc
+ CPP = gcc -E
+ DLLTOOL = @DLLTOOL@
+ EASYSOCK_MAJOR_VERSION = 0
+@@ -79,7 +78,6 @@
+ NM = /usr/bin/nm -B
+ OBJDUMP = @OBJDUMP@
+ PACKAGE = easysock
+-RANLIB = ranlib
+ VERSION = 0.2.0
+
+ noinst_LIBRARIES = libggz.a
+@@ -92,13 +90,9 @@
+
+
+ DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I..
+-CPPFLAGS =
+-LDFLAGS =
+ LIBS =
+ libggz_a_LIBADD =
+ libggz_a_OBJECTS = ggz.o
+-AR = ar
+-CFLAGS = -g -O2
+ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+--- a/src/ggz/easysock/Makefile
++++ b/src/ggz/easysock/Makefile
+@@ -61,7 +61,6 @@
+ host_alias = i586-pc-linux-gnu
+ host_triplet = i586-pc-linux-gnu
+ AS = @AS@
+-CC = gcc
+ CPP = gcc -E
+ DLLTOOL = @DLLTOOL@
+ EASYSOCK_MAJOR_VERSION = 0
+@@ -79,7 +78,6 @@
+ NM = /usr/bin/nm -B
+ OBJDUMP = @OBJDUMP@
+ PACKAGE = easysock
+-RANLIB = ranlib
+ VERSION = 0.2.0
+
+ noinst_LIBRARIES = libeasysock.a
+@@ -92,13 +90,9 @@
+
+
+ DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I..
+-CPPFLAGS =
+-LDFLAGS =
+ LIBS =
+ libeasysock_a_LIBADD =
+ libeasysock_a_OBJECTS = easysock.o
+-AR = ar
+-CFLAGS = -g -O2
+ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+--- a/src/ggz/Makefile
++++ b/src/ggz/Makefile
+@@ -61,7 +61,6 @@
+ host_alias = i586-pc-linux-gnu
+ host_triplet = i586-pc-linux-gnu
+ AS = @AS@
+-CC = gcc
+ CPP = gcc -E
+ DLLTOOL = @DLLTOOL@
+ EASYSOCK_MAJOR_VERSION = 0
+@@ -79,7 +78,6 @@
+ NM = /usr/bin/nm -B
+ OBJDUMP = @OBJDUMP@
+ PACKAGE = easysock
+-RANLIB = ranlib
+ VERSION = 0.2.0
+
+ SUBDIRS = easysock server client
+--- a/src/ggz/server/Makefile
++++ b/src/ggz/server/Makefile
+@@ -61,7 +61,6 @@
+ host_alias = i586-pc-linux-gnu
+ host_triplet = i586-pc-linux-gnu
+ AS = @AS@
+-CC = gcc
+ CPP = gcc -E
+ DLLTOOL = @DLLTOOL@
+ EASYSOCK_MAJOR_VERSION = 0
+@@ -79,7 +78,6 @@
+ NM = /usr/bin/nm -B
+ OBJDUMP = @OBJDUMP@
+ PACKAGE = easysock
+-RANLIB = ranlib
+ VERSION = 0.2.0
+
+ INCLUDES = -I$(top_srcdir)/easysock
+@@ -94,13 +92,9 @@
+
+
+ DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I..
+-CPPFLAGS =
+-LDFLAGS =
+ LIBS =
+ libggzd_a_LIBADD =
+ libggzd_a_OBJECTS = ggz.o
+-AR = ar
+-CFLAGS = -g -O2
+ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+--- a/src/server/Makefile
++++ b/src/server/Makefile
+@@ -11,14 +11,11 @@
+ COMMON_PATH = $(TOPLEVEL_PATH)/src/common
+ GGZ_PATH= $(TOPLEVEL_PATH)/src/ggz
+
+-# Programs used in building process
+-CC = gcc
+-
+ # Where to put the XTux client binary.
+ BINARY = $(TOPLEVEL_PATH)/tux_serv
+
+ # Flags used when compiling
+-CFLAGS = -g -Wall -O2 -DDATADIR=\"$(DATADIR)\"
++CPPFLAGS += -DDATADIR=\"$(DATADIR)\"
+
+ # Paths to header files
+ COMMON_INC = -I$(COMMON_PATH)
+@@ -41,8 +38,8 @@
+
+ #Apps
+ server: $(OBJECTS)
+- $(CC) -o $(BINARY) $(OBJECTS) $(XTUXLIB) $(MATHLIB) $(SOCKLIB) $(GGZLIB)
++ $(CC) $(LDFLAGS) -o $(BINARY) $(OBJECTS) $(XTUXLIB) $(MATHLIB) $(SOCKLIB) $(GGZLIB)
+
+ # OBJECTS
+ .c.o: server.h $*.h $*.c
+- $(CC) $(CFLAGS) -c $*.c $(COMMON_INC) $(GGZ_INC)
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $*.c $(COMMON_INC) $(GGZ_INC)
diff --git a/games-arcade/xtux/files/xtux-20030306-missing-include.patch b/games-arcade/xtux/files/xtux-20030306-missing-include.patch
new file mode 100644
index 000000000000..f7a655eecadb
--- /dev/null
+++ b/games-arcade/xtux/files/xtux-20030306-missing-include.patch
@@ -0,0 +1,29 @@
+--- a/src/client/cl_net.c
++++ b/src/client/cl_net.c
+@@ -4,7 +4,7 @@
+ */
+
+ #include <unistd.h>
+-#include <sys/signal.h>
++#include <signal.h>
+ #include <fcntl.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+--- a/src/client/misc.c
++++ b/src/client/misc.c
+@@ -1,4 +1,5 @@
+ #include <X11/Xlib.h>
++#include <limits.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+--- a/src/ggz/client/ggz.c
++++ b/src/ggz/client/ggz.c
+@@ -33,6 +33,7 @@
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+
+ static char *name=NULL;
+ static int ggz_sock;
diff --git a/games-arcade/xtux/files/xtux-20030306-particles.patch b/games-arcade/xtux/files/xtux-20030306-particles.patch
new file mode 100644
index 000000000000..9a340821dd6e
--- /dev/null
+++ b/games-arcade/xtux/files/xtux-20030306-particles.patch
@@ -0,0 +1,30 @@
+diff -u -r xtux.old/src/client/particle.c xtux/src/client/particle.c
+--- xtux.old/src/client/particle.c 2008-09-02 20:34:24.000000000 +0200
++++ xtux/src/client/particle.c 2008-09-02 20:35:40.000000000 +0200
+@@ -340,11 +340,11 @@
+ ptl->pos[i].y = src_y;
+ d = dir + 128;
+ d += i%SHARD_ANGLE - SHARD_ANGLE/2;
+- ptl->vel[i].x = sin_lookup[dir + 64 + rand()%64] * SHARD_EXP_VEL;
+- ptl->vel[i].y = -cos_lookup[dir + 64 + rand()%64] * SHARD_EXP_VEL;
++ ptl->vel[i].x = sin_lookup[(dir + 64 + rand()%64) % DEGREES] * SHARD_EXP_VEL;
++ ptl->vel[i].y = -cos_lookup[(dir + 64 + rand()%64) % DEGREES] * SHARD_EXP_VEL;
+ vel = SHARD_MIN_VEL + (SHARD_MAX_VEL*rand()/(RAND_MAX+SHARD_MIN_VEL));
+- ptl->vel[i].x += vel * sin_lookup[d] * 10;
+- ptl->vel[i].y += vel * -cos_lookup[d] * 10;
++ ptl->vel[i].x += vel * sin_lookup[d % DEGREES] * 10;
++ ptl->vel[i].y += vel * -cos_lookup[d % DEGREES] * 10;
+ }
+
+ ptl = particles_new(color2, PTL_TOP, num_sh2);
+@@ -357,8 +357,8 @@
+ ptl->vel[i].x = sin_lookup[rand()%256] * SHARD_EXP_VEL;
+ ptl->vel[i].y = -cos_lookup[rand()%256] * SHARD_EXP_VEL;
+ vel = SHARD_MIN_VEL + (SHARD_MAX_VEL*rand()/(RAND_MAX+SHARD_MIN_VEL));
+- ptl->vel[i].x += vel * sin_lookup[d] * 20;
+- ptl->vel[i].y += vel * -cos_lookup[d] * 20;
++ ptl->vel[i].x += vel * sin_lookup[d % DEGREES] * 20;
++ ptl->vel[i].y += vel * -cos_lookup[d % DEGREES] * 20;
+ }
+
+ /* "Extra" particles (ie bullet holes) */
diff --git a/games-arcade/xtux/files/xtux-20030306-tux_serv-path.patch b/games-arcade/xtux/files/xtux-20030306-tux_serv-path.patch
new file mode 100644
index 000000000000..87e6043f2178
--- /dev/null
+++ b/games-arcade/xtux/files/xtux-20030306-tux_serv-path.patch
@@ -0,0 +1,13 @@
+--- a/src/client/menu.c
++++ b/src/client/menu.c
+@@ -726,8 +726,8 @@
+ for( i=0 ; i<3 ; i++ )
+ close(i); /* Close STD-IN, -OUT, -ERR */
+
+- system("./tux_serv -e");
+- /* execlp( "./tux_serv", "-e" );
++ system("tux_serv -e");
++ /* execlp( "tux_serv", "-e" );
+ perror("execlp"); */
+ exit(-1);
+ }
diff --git a/games-arcade/xtux/metadata.xml b/games-arcade/xtux/metadata.xml
new file mode 100644
index 000000000000..13c68bafab9a
--- /dev/null
+++ b/games-arcade/xtux/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">xtux</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-arcade/xtux/xtux-20030306-r1.ebuild b/games-arcade/xtux/xtux-20030306-r1.ebuild
new file mode 100644
index 000000000000..a427f783c85a
--- /dev/null
+++ b/games-arcade/xtux/xtux-20030306-r1.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop flag-o-matic toolchain-funcs
+
+DESCRIPTION="Multiplayer Gauntlet-style arcade game"
+HOMEPAGE="https://xtux.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/xtux/xtux-src-${PV}.tar.gz"
+S="${WORKDIR}/${PN}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="x11-libs/libXpm"
+RDEPEND="${DEPEND}
+ media-fonts/font-adobe-75dpi"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-Makefile.patch
+ "${FILESDIR}"/${P}-particles.patch
+ "${FILESDIR}"/${P}-tux_serv-path.patch
+ "${FILESDIR}"/${P}-missing-include.patch
+)
+
+src_prepare() {
+ default
+ find data/ -type d -name .xvpics -exec rm -rf \{\} + || die
+}
+
+src_configure() {
+ # bug #858605
+ filter-lto
+
+ tc-export AR CC RANLIB
+}
+
+src_compile() {
+ # Not parallel-make friendly (bug #247332)
+ emake DATADIR="/usr/share/xtux/data" common
+ emake DATADIR="/usr/share/xtux/data" ggz
+ emake DATADIR="/usr/share/xtux/data" server
+ emake DATADIR="/usr/share/xtux/data" client
+}
+
+src_install() {
+ dobin xtux tux_serv
+
+ einstalldocs
+ dodoc -r doc/.
+
+ insinto /usr/share/xtux
+ doins -r data
+
+ newicon data/images/icon.xpm ${PN}.xpm
+ make_desktop_entry xtux "Xtux"
+}