From 32eadfc315a643ba7fce0b786144e9d41ce18430 Mon Sep 17 00:00:00 2001 From: pjgat09 Date: Sat, 16 Nov 2013 21:29:42 +0000 Subject: [PATCH] N64: Set the DisplayType based on the rom's country code, and set a PAL flag in the movie file if needed. --- BizHawk.Client.EmuHawk/movie/RecordMovie.cs | 5 ++++ .../Consoles/Nintendo/N64/N64.cs | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/BizHawk.Client.EmuHawk/movie/RecordMovie.cs b/BizHawk.Client.EmuHawk/movie/RecordMovie.cs index ab1caa7eee..18e4c133aa 100644 --- a/BizHawk.Client.EmuHawk/movie/RecordMovie.cs +++ b/BizHawk.Client.EmuHawk/movie/RecordMovie.cs @@ -137,6 +137,11 @@ namespace BizHawk.Client.EmuHawk MovieToRecord.Header.SetHeaderLine(setting.Key, setting.Value.ToString()); } } + + if ((Global.Emulator as N64).DisplayType == DisplayType.PAL) + { + MovieToRecord.Header.SetHeaderLine(MovieHeader.PAL, "1"); + } } if (StartFromCombo.SelectedItem.ToString() == "Now") diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs index dfd08499a4..0e6fa29464 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs @@ -32,6 +32,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 public int BufferHeight { get; set; } public int BackgroundColor { get { return 0; } } + private DisplayType _display_type = DisplayType.NTSC; + public DisplayType DisplayType { get { return _display_type; } } public SpeexResampler resampler; @@ -330,6 +332,31 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 this.rom = rom; this.game = game; + byte country_code = rom[0x3E]; + switch (country_code) + { + // PAL codes + case 0x44: + case 0x46: + case 0x49: + case 0x50: + case 0x53: + case 0x55: + case 0x58: + case 0x59: + _display_type = DisplayType.PAL; + break; + + // NTSC codes + case 0x37: + case 0x41: + case 0x45: + case 0x4a: + default: // Fallback for unknown codes + _display_type = DisplayType.NTSC; + break; + } + api = new mupen64plusApi(this, rom, video_settings, SaveType); api.SetM64PInputCallback(new mupen64plusApi.InputCallback(setControllers));