From a374641460c77f27a18791d29f41a150f886d550 Mon Sep 17 00:00:00 2001 From: pjgat09 Date: Sat, 4 May 2013 23:51:50 +0000 Subject: [PATCH] m64p: Changed the output formula for the framebuffer from glide64 to actually be correct. We actually don't need a formula... Changed glide64 to not force vsync. You apparently need to read the back buffer or else you get choppy video. N64: Changed the hardcoded video plugin to use glide. Glide apparently requires you to set the video mode before initializing the plugin --- .../Consoles/Nintendo/N64/N64.cs | 20 +++++++++--------- .../output/dll/mupen64plus-video-glide64.dll | Bin 571904 -> 571904 bytes .../mupen64plus-video-glide64/src/Main.cpp | 12 +++++------ .../src/wrapper/main.cpp | 2 ++ 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/N64/N64.cs b/BizHawk.Emulation/Consoles/Nintendo/N64/N64.cs index 0734cbe236..2f10b922d3 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/N64/N64.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/N64/N64.cs @@ -497,9 +497,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64 CoreDll = LoadLibrary("mupen64plus.dll"); if (CoreDll == IntPtr.Zero) throw new InvalidOperationException(string.Format("Failed to load mupen64plus.dll")); - GfxDll = LoadLibrary("mupen64plus-video-rice.dll"); + GfxDll = LoadLibrary("mupen64plus-video-glide64.dll"); if (GfxDll == IntPtr.Zero) - throw new InvalidOperationException(string.Format("Failed to load mupen64plus-video-rice.dll")); + throw new InvalidOperationException(string.Format("Failed to load mupen64plus-video-glide64.dll")); RspDll = LoadLibrary("mupen64plus-rsp-hle.dll"); if (RspDll == IntPtr.Zero) throw new InvalidOperationException(string.Format("Failed to load mupen64plus-rsp-hle.dll")); @@ -543,13 +543,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64 RspPluginShutdown = (PluginShutdown)Marshal.GetDelegateForFunctionPointer(GetProcAddress(RspDll, "PluginShutdown"), typeof(PluginShutdown)); // Set up the core - m64p_error result = m64pCoreStartup(0x20001, "", "", "Core", (IntPtr foo, int level, string Message) => { }, "", IntPtr.Zero); + m64p_error result = m64pCoreStartup(0x20001, "", "", "Core", (IntPtr foo, int level, string Message) => { Console.WriteLine(Message); }, "", IntPtr.Zero); result = m64pCoreDoCommandByteArray(m64p_command.M64CMD_ROM_OPEN, rom.Length, rom); - // Set up and connect the graphics plugin - result = GfxPluginStartup(CoreDll, "Video", (IntPtr foo, int level, string Message) => { }); - result = m64pCoreAttachPlugin(m64p_plugin_type.M64PLUGIN_GFX, GfxDll); - SetVideoSize(vidX, vidY); // Configure the video plugin IntPtr video_section = IntPtr.Zero; @@ -557,16 +553,20 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64 result = m64pConfigSetParameter(video_section, "ScreenWidth", m64p_type.M64TYPE_INT, ref vidX); result = m64pConfigSetParameter(video_section, "ScreenHeight", m64p_type.M64TYPE_INT, ref vidY); + // Set up and connect the graphics plugin + result = GfxPluginStartup(CoreDll, "Video", (IntPtr foo, int level, string Message) => { /*Console.WriteLine(Message);*/ }); + result = m64pCoreAttachPlugin(m64p_plugin_type.M64PLUGIN_GFX, GfxDll); + // Set up a null audio plugin - result = AudPluginStartup(CoreDll, "Audio", (IntPtr foo, int level, string Message) => { }); + result = AudPluginStartup(CoreDll, "Audio", (IntPtr foo, int level, string Message) => { Console.WriteLine(Message); }); result = m64pCoreAttachPlugin(m64p_plugin_type.M64PLUGIN_AUDIO, AudDll); // Set up a null input plugin - result = AudPluginStartup(CoreDll, "Input", (IntPtr foo, int level, string Message) => { }); + result = AudPluginStartup(CoreDll, "Input", (IntPtr foo, int level, string Message) => { Console.WriteLine(Message); }); result = m64pCoreAttachPlugin(m64p_plugin_type.M64PLUGIN_INPUT, InpDll); // Set up and connect the graphics plugin - result = RspPluginStartup(CoreDll, "RSP", (IntPtr foo, int level, string Message) => { }); + result = RspPluginStartup(CoreDll, "RSP", (IntPtr foo, int level, string Message) => { Console.WriteLine(Message); }); result = m64pCoreAttachPlugin(m64p_plugin_type.M64PLUGIN_RSP, RspDll); // Set up the frame callback function diff --git a/BizHawk.MultiClient/output/dll/mupen64plus-video-glide64.dll b/BizHawk.MultiClient/output/dll/mupen64plus-video-glide64.dll index 4d423ce957fe70f870a230a879a4316be9faba3e..a78e6cb55528df92d65dac5f43a899cc25b85fb3 100644 GIT binary patch delta 3002 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 KS?mAf^*;bExSZ<% delta 2977 zcmY*a3sh9q8lFAO22_wC9fJfxFLJ3%dfxAIMoTnH6Y_>4f?9eVXO(&jyK3r~N)l^w%Y zb_^>C1ZJWzuP=DjTrxFp8hE+Si3XD?dYHc{V*Sv;dDY+oxUjm&tQVQVh)>lkyv1~6 z<1l~gwiqtJ>OF0!I}J6?P|FRq!cgN4wZu>_7%E|?MS9TZApRv#io{!Bh55I;=(}4W z1zbb}T0nxiqa96a0er;4c0ZG2i^*hitl8*qbwclfb3Hw)PXy5w-e^?Z0_H|-`q|HP zWada5wzNtM^=2FDVnf|;s7n#;1+ieVKFtdrnL$39atBNRL(uj+zzIw!q!mQE=o;^p zM}DTvij2kdB{8z~p}+OLRChv~+jbK_W+w#Yj5pDpng7iob0(Q{w#VRXOd(~7=B%V{ zEI?LLPe_?HE40^q?CJ{3>Z5-0ukT!TCj|K=bi9}oB;_bcIE?HI{Z6UV+!4DQuxk6GUJ2XoZ$XdC&&(tJ8;CBZQEI?g|0qn?y-%*&0KvVFtZ{g z^Q^^Wa$22#Cd+$Czdu=ig~=i#gxeP`neI$ZOzN>QzF1b=?=VNq$GBqP?f>8*?m{44 zf##lo5w2aGJw0yU%ZrRWUQ0|)&SsTrEwsnBaVQ>1~qVkSQP6xWe{7R5Gbw^1`Y5U)RHF- z#3xu;hK5$cu>O;uaBB=M+298F?=+sDM>8uS1-eik7O^|-8#M(vmgVB3+Fqag7Y0|{ zzu?$}scjQ*W!`Vlol5x33v+$8f!UGP61)Z;!(&aa2hJ`qn|-PBi1m)m(S{G4eqQl+ zYlC(KuJ@%e?j(#E4W7I+&fsExkB~9iF~%SU{6P?o=>}o`gNSlu7(_eTeG*2|!M>r{ zjNTU+ZBN1z=xu%PBztG$FgWMh#Bd0 zg^xew`y{*BsW{k_M8_7KExswK=&2fb0OX<{YT(4DUb|;F#mEowxNjQe%+lj)VSpKk zh&ctn0}J%Kr(mM_sg2j5wI?R$Ei4=ZH()yzCDy?x5Q!EV;xWoK#1&Lxh{MQZh|Q?Y z5X+I(gGCx541xVTFbk|fjUHGBO7&f5pc4dk^oBo$2G_&UfIw;WFlxAX8Cp{=LF*EX z?=T858ZjPVgyS<2%M?^p59Q%wvA+!?0^>Q1zhICU0)`!FV)gG0eK zRC^9C1Wmep9!>&alW$$j}CC9)S4)7{M6f`shpWv3cZ(QQbY>XYtpazm}Wvu6QF2BFrELl^b`~ z8)Ogx1_8Yl=+3YMb0AK~)6;y11Nr2y)->#zWT)B4vp;6(uT=^r&iU;{<^x-PgW6#x0@ zu|fW)mjIyumg!&K&m3QOe*64}!WIBbOLC>QX(k|LfBYGQM zOz)%j(>3%N`U-uM{)z6Q%}f}Rz`V|+GV_=P%p&G}<^yIelf&dO1-Di z9t(ZM5HVbg5@W>YL{@x3d_|lhI>iieg_t8&iS^=D@uv8b*d}(0kHi2eT2iI)(sbz! zX}**pt&=uLpG(`N15&wEDV>oTq|1_5x+^`9EOK8tTy~9+Sy_@3^P@!AY+ww9rNqk@gt- z-|UoKw2!inv%hXnwa-F5`vYwGmjed6@J2U5lLy~KiAW&Q@E+&l{oO{KA@1SbwUT4V z3FK>JF8K|4lx!#Olh08EHIw=WRY+~2Jk)urFKwkq(PQbQ^h&yfF2n29Mn^NT%rs^u zlgs2YwTy=`vHq;Yj%KH@>FgSIH`~dka~a%XZW*@{&AAp3;;QE^a5uOP?h$9^1Nr{^ zK>is%nvdb*_;{Y+)A@J#EPgZp1%HsQ;H&v7yq6CXB*89>6XpnS3x#+SjtRAR588xi zQ4}?CtT;=YCl-ibi{FX|#2>^