shithub: riscv

Download patch

ref: 37f710de39e9cf06240907053f3ab931f81d8e9a
parent: 93193b645d28bdb34cbf554834024485325f1904
author: qwx <qwx@sciops.net>
date: Sun Aug 13 15:53:47 EDT 2023

add /rc/bin/doom: games/doom launcher

sets the namespace for a given engine version and iwad and any
pwads and lumps; manpage pending.

--- /dev/null
+++ b/rc/bin/doom
@@ -1,0 +1,57 @@
+#!/bin/rc -e
+# set up namespace for a particular version of doom and launch it
+# default setup:
+# - $home/lib/doom: mntpt and location of config file
+# - $home/lib/doom/$game: user game directories: savegames and screenshots
+# - /sys/games/lib/doom/$game: system iwad and pwad directories
+# cwd is bound over $mntpt to allow loading stuff from there
+# example: launch doom2 with scythe.wad (both in /sys/games/lib/doom/d2)
+#	; doom d2 -file scythe.wad
+# example game version names:
+# doom.wad → /sys/games/lib/doom/d1/
+# doom2.wad → /sys/games/lib/doom/d2/
+# doom2f.wad → /sys/games/lib/doom/d2f/
+# doom1.wad → /sys/games/lib/doom/dsh/
+# plutonia.wad → /sys/games/lib/doom/plt/
+# tnt.wad → /sys/games/lib/doom/tnt/
+# doomu.wad → /sys/games/lib/doom/ud/
+
+rfork ne
+flagfmt='b,l,z,m mntpt'
+args='game [params]'
+if(! ifs=() eval `{aux/getflags $*} || ~ $#* 0){
+	aux/usage
+	exit usage
+}
+mntpt=$home/lib/doom
+if(~ $#flagm 1)
+	mntpt=$flagm
+if(! test -d $mntpt/$1)
+	mkdir -p $mntpt/$1
+bind -ac $mntpt/$1 $mntpt
+if(test -d /sys/games/lib/doom/$1)
+	bind -a /sys/games/lib/doom/$1 $mntpt
+if(! ~ $flagb 1)
+	bind -b `{pwd} $mntpt
+cd $mntpt
+
+if(~ $#vgasize 0 || ~ $flagz 1)
+	r=(-dx 328 -dy 208)
+if not
+	r=`{echo $vgasize |\
+		awk -Fx '{
+			a=$1/320;
+			b=$2/200;
+			c=int(b<a?b:a);
+			if(c*320 == $1 || c*200 == $2)
+				c--;
+			print "-dx", c*320+8, "-dy", c*200+8
+		}'
+	}
+if(! ~ $flagz 1)
+	echo resize $r >/dev/wctl
+
+if(! ~ $flagl 1)
+	games/doom $* >/dev/null
+if not
+	games/doom $* >/tmp/doomlog.$pid >[2=1]