Index: Daodan/src/Daodan.c
===================================================================
--- Daodan/src/Daodan.c	(revision 446)
+++ Daodan/src/Daodan.c	(revision 447)
@@ -47,4 +47,5 @@
 bool patch_windowhack = true;
 bool patch_daodaninit = true;
+bool patch_bsl = true;
 
 bool opt_usedaodanbsl = true;
@@ -241,4 +242,6 @@
 			else if (!stricmp(name, "daodaninit"))
 				patch_daodaninit = !stricmp(value, "true");
+			else if (!stricmp(name, "bsl"))
+				patch_bsl = !stricmp(value, "true");
 			else
 				DDrStartupMessage("unrecognised patch \"%s\"", name);
@@ -427,4 +430,8 @@
 		DDrPatch_MakeCall(OniExe + 0x000d345a, DDrGame_Init);
 	
+	// Patches for existing BSL functions
+	if (patch_bsl)
+		SLrDaodan_Patch();
+	
 	init_daodan_gl();
 	
Index: Daodan/src/Daodan_BSL.c
===================================================================
--- Daodan/src/Daodan_BSL.c	(revision 446)
+++ Daodan/src/Daodan_BSL.c	(revision 447)
@@ -5,8 +5,10 @@
 #include "Daodan_BSL.h"
 #include "Daodan_Utility.h"
+#include "Daodan_Patch.h"
 #include "Daodan_Console.h"
 #include "BFW_ScriptLang.h"
 #include "Oni.h"
 #include "Oni_Character.h"
+#include "oni_gl.h"
 #include "dSFMT\dSFMT.h"
 #include "Daodan_Character.h"
@@ -343,4 +345,11 @@
 }
 
+// Widescreen patch for talking heads.
+uint16_t ONICALL cinematic_start_patch(sl_callinfo* callinfo, unsigned int numargs, sl_arg args[], void* dontuse1, void* dontuse2, sl_arg* ret)
+{
+	args[1].value_int32 = (double)args[1].value_int32 / (double)(gl->DisplayMode.Width) * (4.0 / 3.0 * (double)(gl->DisplayMode.Height));
+	return ((sl_func)(OniExe + 0x000f3830))(callinfo, numargs, args, dontuse1, dontuse2, ret);
+}
+
 void SLrDaodan_Initalize()
 {
@@ -365,5 +374,9 @@
 	
 	SLrScript_Command_Register_ReturnType("sprintf", "C-style sprintf.", "format:string arg1 arg2 ...", sl_str32, bsl_sprintf);
-
 	SLrScript_Command_Register_ReturnType("dprintcolor", "prints to console in color", "text:string [color: r b g] [color: r b g]", sl_void, bsl_dprintcolored);
 }
+
+void SLrDaodan_Patch()
+{
+	DDrPatch_Int32(OniExe + 0x000f3755, (int)cinematic_start_patch);
+}
Index: Daodan/src/Daodan_BSL.h
===================================================================
--- Daodan/src/Daodan_BSL.h	(revision 446)
+++ Daodan/src/Daodan_BSL.h	(revision 447)
@@ -6,4 +6,5 @@
 
 void SLrDaodan_Initalize();
+void SLrDaodan_Patch();
 
 #endif
