shithub: wl3d

Download patch

ref: a88630d07570f7e9a30098817db9efe32307a776
parent: 5288bbb7556c87e95b0813bf5769eec6b3caf9bc
author: Konstantinn Bonnet <qu7uux@gmail.com>
date: Wed May 18 23:13:07 EDT 2016

bring introscreens back

have them as separate files loaded at startup before the rest of the files.
there is cause to have these, since on slower terminals or connections, etc.,
the initial loading time might be several seconds long, or more.

--- a/dat.h
+++ b/dat.h
@@ -35,7 +35,7 @@
 	Vt = Va * Vbp,
 	Tb = 70
 };
-extern uchar *px;
+extern uchar *px, pxb[];
 extern int npx, scale;
 
 typedef struct Col Col;
--- a/fs.c
+++ b/fs.c
@@ -943,7 +943,19 @@
 	Bterm(dat);
 }
 
-void
+static void
+loadscr(void)
+{
+	Biobuf *bf;
+
+	ext = ver < SDM ? "wl6" : "sod";
+	bf = bopen("intro.", OREAD);
+	eread(bf, pxb, Va);
+	out();
+	Bterm(bf);
+}
+
+static void
 fixpal(void)
 {
 	u32int *p, *s;
@@ -965,15 +977,17 @@
 	rfork(RFNAMEG);
 	if(bind(".", dir, MBEFORE|MCREATE) < 0 || chdir(dir) < 0)
 		fprint(2, "dat: %r\n");
+
+	if(ver >= SDM)
+		fixpal();
+	e = ext;
+	loadscr();
+	ext = e;
 	vswap();
 	gamemaps();
-	e = ext;
 	if(ver == SOD)
 		ext = "sod";
 	audiot();
 	gfx();
 	ext = e;
-	if(ver >= SDM)
-		fixpal();
-	pal = pals[C0];
 }
--- /dev/null
+++ b/intro.sod
@@ -1,0 +1,1 @@
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
\ No newline at end of file
--- /dev/null
+++ b/intro.wl6
@@ -1,0 +1,1 @@
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))"$!"#!"%%""$""&"%"!%#!"""!%"%$%"!""!$#()()#&%&"##&$#%%###%(%#$"%(((###"#%#%%""!##%%"#%&#))"$#"%"##"#%$###%$(#"##"$%"""$$$$$%$(*#"&"&%""&(&(($$%"$%"%%%&"%$$$%$%"$%%&$"&&$$#"%($&"&%&*(#%%%#(%%%$#%#(&%  % ""%"(%%((%$$$$$%%((%%&#%$%((#&%&%&%(($&(  & #&%$&((($((%%&&%&&&"%%"($(%&&&%%((&(((&($((&%&&&%(&)%"%#%%"""#%%#""""!$$#%""!###$#%%%"%#%%%%%$%$#%$"%%$"###%&%%$$%$$!%&"%%#"%&###&"%%&$%&$"%$%(%&&(#%""&#%"%"%#"#$"$#((!$%$(#((%%##$%$"%(&&&&&%($%($%$%$$$$$$"$#%%%&%%&&%&%%&&&((&%((((($%#&%%&#   "   &#(&%((&&(((&&$&%('$&(&&"(%(%%&$&&#&#&%$%"%&%$%"%&%&&%($(%&$%$&&(%#&((%(#&($%&&%(((%$%(&&$&%)""%&%"&!%%""#%$$!#"$!"&"""$$"(%%#(#%%%%##""%%%""###"$$%%%#$%#"#$$#"%$&%%(&%%"&%%&%%%&)))((%&&(%#&((((%%##%%&%#$%%&&%%%'("$(&&(#"#$(%$$%($($"&((&"$%%%(%&%&&%$&"%&&&%%%"$%&$(&%%((&)()('%&%""$&#   "  "%%&(%%($%((&(%%(%$&&&&(((%(%%&&&%#%"""$&$&&%%($$(&(%"&$"($"$&$&$&&&%%&(&(&&((&&$%((&((&%$&$%)!%"$""!%$#"%%!$#!($$"##$%%&$(&%((&%"#$$#%#%%&%""(##&"%%#"##%$#"&#"##%"$"!(%&(%(&)&$'(#&#&$($$&&((&(%&&%($(%&))))$))&%#)(%'&"%&($$&&&$&$(&#&#((&(&&%(%(%(%%(((&&&((%'&&%(($((()**&(('%$"## "$"$!""#&$%%&$&%$&($(&&$(&&$$$%&$&%($%$&(&%&%%#%%##&%&((#(&%&&((%%&(%($&$($(((&&%(((%(&$&$((&%(()""""#""(%!%#""%#"$$&&&$&&&&%%$%$(&%&#"#"%#"###&$%###%#%###"%"#"!##"%#%%&'&)(($#&&##%%$$%#"%###"(#&$$&)(((%$((()%&''%'$$('%()%)&%((((((%&(%(&"((&%&(&$$%&&%&(%"(%(%$&'(%*&(&*(((%&($(%#$$"%$"  $#!%%$%(%(&&#(($$&%&&%%%%&$$%$(%%&(#&("&#%$(%!$"%&(%$(&($&%#%%&(&((%($&(''%(&(%$%(%(((%(()()()(((&))())()%%$%($$$&!!%!$"$%%(&#((&%($$(&()($#((%&&&$(&#%&$"%%"$#"%$&&"##!%#$#&%($"%("$#%#%&%#"(#%#%%%%#$%$(#((((&%$&&%((%$$$%#$!$%&&&%$(%%#(&&&&(&$(%$"&&$&&($$%(()$)(%)((((%((('&&$%#&" ""&$"%#"(#(%%&(&%&%&%(%%&&%(%%%&%&%%&&&&&&%&%& "$&&(((&&(&&$($%&&$%&$%&&((((%&(&%%(&(($%(%*(*(*)*())(((%)"!!$$!!$# $  ""$$$%%%&(&&%&(("('($(%)(&("%#%"#%%&&$&%((%&(%$$%&&%(%%#&&%$((&&%"#"##$#"$&&$!%&$#$##""&%$&&($&%($&((%%%($#"%$%%%#%$%#$%%"$$%$$$$$%%((%$&($%#"$)&&&((&)($%%%((((%%%$"$%# #%%$%##%$#$&&&#%$(%&%&&(&&%%&%%&$&%&(#((&&%%" "%$&&&(%((&%&(&(%&$&$%%(%&%$$((%(((((%(&$))()((&)()((%#%'$&) &"     "#%$""&& &%$"(&&(&((%$(&&%%&(#'&((%"#%$%%%%&%$'%(%$&%#((((&)&('$&%(&%"&%"#$##""##%$%"#&$&$%&(#$&$%(&#($$"#"%%%&%%$%#"$$($%#$%%$&%%(%$%%$&$$(()((()&)()))&%'%(('(&(&&)(&(%%($ # ""#%"#$"$##&$(#($&(&$&&%%$&%&&%(%%&%$(#((&$%&%$$$$$$&(%#&%%("%($$%(%'(&&'(('%%((((&)&%($%$(%$%$'$(&&((&($(%(#($((&&)!"%$#"%%!%&&((%!  %"%%$(%%$$#(%%%##%##%)(&$(%%(%&('%($((((&(('$('(&&(((%(%%%%&$%"#"%##%$#%&&&&$$(&&($&((%#$&$"#$#"##%$#""#%(%#&#%&(#%"%"$$"%$""$#($&$$#(((((((%%('((((&(&(&$ """"%#%#$%$%%%"&(&&$&$%&"%&&(#(&%(#&%(($($&(%%%%#&%# $$#$%&%(&$&&&&&&(&(&)%)&(((())(&&()(($%((%(((&%($&&#$&((%&%)&((&%&&&&&&&$$%"%"&$(((&#$(%%#&(%%&%"%&&'(%(%%%(&$%((#$"&&%"((#&&%('%&$&)((&&'$&$"&%"%$$(%&&&$#%%$%%""(%%"%$$&%%##%%&"$$%%$#%$%&&(($&&%($%&&"$%(&((((($()(((%%&&#%!$" %$(#%$#$"%%(&#%"&%%&&$%%&$((%&%$&%&&&$(&$((((%%%$#" $!(%(%(%&(&(&%(%$%(()((&(%(%&&))%(%$&()(&%'$#%(%&($%%(%$&&&&&"%(#(()$($(%$&$#&"($(%&%((($ "(%##($"%""!&%#!""%(%("(($"%%"#%"!#""(##$(("(%((&&(($"%(((&%((&%(&%&(%"&###!%&%&%(%&%&"%$$%%($"&$&$%&&%%(($$(%#$"&&((&&'$(%&%)(%(((%%'(&($#$#%$ "#%#(&#$%%#&&%%$(%($$%(&(%%(&((((%&&$("&%%&%&%%"%##(%%$"($&%$%%&%((()(('$('%'%(((&(("&&((&((%($"%((#(&((&&$$&%($#$)(((((&'(&$&%#((('$%$&%$#%   % ((#&&%%#"     "#&(#$%#(#&%%%((($%(&%&#$(%&$&%%$%"(&%"&(%%(%($&%&&(%$&&&(($$%$(&&('(%%$'&$'($%&(&%%%((%(%%((%((%#)((((%&$%%(%&&%!%#"!%$ %(##%"%#"&($&&%((#&%(%%(%(&(("%(&(%%&%((&%&(&&&&$%%#%%%#($"%('$(&
\ No newline at end of file
--- a/mkfile
+++ b/mkfile
@@ -20,6 +20,10 @@
 </sys/src/cmd/mkmany
 BIN=$home/bin/$objtype
 
+dirinstall:V:
+	mkdir -p /sys/games/lib/wl3d
+	cp intro.wl6 intro.sod /sys/games/lib/wl3d
+
 $O.wl3d: $WOFILES
 	$LD -o $target $prereq
 
--- a/mn.c
+++ b/mn.c
@@ -31,6 +31,7 @@
 };
 
 enum{
+	Lload,
 	Lintro,
 	Ltitle,
 	Lcreds,
@@ -509,6 +510,7 @@
 	dieq[] = {{10, fadeout}, {1, die}};
 
 static Menu *mp, ml[] = {
+	[Lload] {nil, decq, decq+nelem(decq), ml+Lintro, &fblk},
 	[Lintro] {intro, introq, introq+nelem(introq), ml+Ltitle, &fblk},
 	[Ltitle] {title, titleq, titleq+nelem(titleq), ml+Lcreds, &fblk},
 	[Lcreds] {creds, loopq, loopq+nelem(loopq), ml+Lscore, &fblk},
@@ -568,7 +570,7 @@
 	mcol[Doff] = mcol[Dbg] ^ 6;
 	mcol[Dbrd] = mcol[Dbg] ^ 4;
 	mcol[Dbrd2] = mcol[Dbg] ^ 14;
-	reset(ml+Lintro);
+	reset(ml+Lload);
 	cson++;
 	mus(ver<SDM ? Mintro : Mtower);
 }
--- a/rend.c
+++ b/rend.c
@@ -9,8 +9,7 @@
 Dat *wals, *sprs;
 
 int scale, npx;
-uchar *px;
-static uchar pxb[Va];
+uchar *px, pxb[Va];
 static Col *fcol;
 static u32int *fref;
 static int fi, fo, fdt;
--- a/wl3d.c
+++ b/wl3d.c
@@ -250,13 +250,13 @@
 	default:
 		usage();
 	}ARGEND;
-	dat(datdir);
-
 	notify(croak);
-	initsnd();
 	if(initdraw(nil, nil, "wl3d") < 0)
 		sysfatal("initdraw: %r");
+	pal = pals[C0];
 	resetfb();
+	dat(datdir);
+	initsnd();
 	kbc = chancreate(sizeof(int), 20);
 	csc = chancreate(sizeof(Rune), 20);
 	reszc = chancreate(sizeof(int), 2);