BizHawk/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64SyncSettings.Rice.cs

405 lines
13 KiB
C#

using System.Collections.Generic;
using System.ComponentModel;
using BizHawk.Emulation.Common;
using System.Reflection;
namespace BizHawk.Emulation.Cores.Nintendo.N64
{
public partial class N64SyncSettings
{
public class N64RicePluginSettings : IPluginSettings
{
public N64RicePluginSettings()
{
FrameBufferSetting = 0;
FrameBufferWriteBackControl = 0;
RenderToTexture = 0;
ScreenUpdateSetting = 4;
Mipmapping = 2;
FogMethod = 0;
ForceTextureFilter = 0;
TextureEnhancement = 0;
TextureEnhancementControl = 0;
TextureQuality = 0;
OpenGLDepthBufferSetting = 16;
MultiSampling = 0;
ColorQuality = 0;
OpenGLRenderSetting = 0;
AnisotropicFiltering = 0;
NormalAlphaBlender = false;
FastTextureLoading = false;
AccurateTextureMapping = true;
InN64Resolution = false;
SaveVRAM = false;
DoubleSizeForSmallTxtrBuf = false;
DefaultCombinerDisable = false;
EnableHacks = true;
WinFrameMode = false;
FullTMEMEmulation = false;
OpenGLVertexClipper = false;
EnableSSE = true;
EnableVertexShader = false;
SkipFrame = false;
TexRectOnly = false;
SmallTextureOnly = false;
LoadHiResCRCOnly = true;
LoadHiResTextures = false;
DumpTexturesToFiles = false;
UseDefaultHacks = true;
DisableTextureCRC = false;
DisableCulling = false;
IncTexRectEdge = false;
ZHack = false;
TextureScaleHack = false;
PrimaryDepthHack = false;
Texture1Hack = false;
FastLoadTile = false;
UseSmallerTexture = false;
VIWidth = -1;
VIHeight = -1;
UseCIWidthAndRatio = 0;
FullTMEM = 0;
TxtSizeMethod2 = false;
EnableTxtLOD = false;
FastTextureCRC = 0;
EmulateClear = false;
ForceScreenClear = false;
AccurateTextureMappingHack = 0;
NormalBlender = 0;
DisableBlender = false;
ForceDepthBuffer = false;
DisableObjBG = false;
FrameBufferOption = 0;
RenderToTextureOption = 0;
ScreenUpdateSettingHack = 0;
EnableHacksForGame = 0;
}
[DefaultValue(0)]
[DisplayName("Frame Buffer Emulation")]
[Description("0=ROM default, 1=disable")]
public int FrameBufferSetting { get; set; }
[DefaultValue(0)]
[DisplayName("Frame Buffer Write Back Control")]
[Description("Frequency to write back the frame buffer: 0=every frame, 1=every other frame, etc")]
public int FrameBufferWriteBackControl { get; set; }
[DefaultValue(0)]
[DisplayName("Render-to-texture emulation")]
[Description("0=none, 1=ignore, 2=normal, 3=write back, 4=write back and reload")]
public int RenderToTexture { get; set; }
[DefaultValue(4)]
[DisplayName("Screen Update Setting")]
[Description("0=ROM default, 1=VI origin update, 2=VI origin change, 3=CI change, 4=first CI change, 5=first primitive draw, 6=before screen clear, 7=after screen drawn")]
public int ScreenUpdateSetting { get; set; }
[DefaultValue(2)]
[DisplayName("Mip Mapping")]
[Description("0=no, 1=nearest, 2=bilinear, 3=trilinear")]
public int Mipmapping { get; set; }
[DefaultValue(0)]
[DisplayName("Fog Method")]
[Description("0=Disable, 1=Enable n64 choose, 2=Force Fog")]
public int FogMethod { get; set; }
[DefaultValue(0)]
[DisplayName("Force Texture Filter")]
[Description("0=auto: n64 choose, 1=force no filtering, 2=force filtering")]
public int ForceTextureFilter { get; set; }
[DefaultValue(0)]
[DisplayName("Primary texture enhancement filter")]
[Description("0=None, 1=2X, 2=2XSAI, 3=HQ2X, 4=LQ2X, 5=HQ4X, 6=Sharpen, 7=Sharpen More, 8=External, 9=Mirrored")]
public int TextureEnhancement { get; set; }
[DefaultValue(0)]
[DisplayName("Secondary texture enhancement filter")]
[Description("0 = none, 1-4 = filtered")]
public int TextureEnhancementControl { get; set; }
[DefaultValue(0)]
[DisplayName("Texture Quality")]
[Description("Color bit depth to use for textures: 0=default, 1=32 bits, 2=16 bits")]
public int TextureQuality { get; set; }
[DefaultValue(16)]
[DisplayName("OpenGL Depth Buffer Setting")]
[Description("Z-buffer depth (only 16 or 32)")]
public int OpenGLDepthBufferSetting { get; set; }
[DefaultValue(0)]
[DisplayName("Enable/Disable MultiSampling")]
[Description("0=off, 2,4,8,16=quality")]
public int MultiSampling { get; set; }
[DefaultValue(0)]
[DisplayName("Color Quality")]
[Description("Color bit depth for rendering window: 0=32 bits, 1=16 bits")]
public int ColorQuality { get; set; }
[DefaultValue(0)]
[DisplayName("OpenGL Render Setting")]
[Description("0=auto, 1=OGL_1.1, 2=OGL_1.2, 3=OGL_1.3, 4=OGL_1.4, 5=OGL_1.4_V2, 6=OGL_TNT2, 7=NVIDIA_OGL, 8=OGL_FRAGMENT_PROGRAM")]
public int OpenGLRenderSetting { get; set; }
[DefaultValue(0)]
[DisplayName("Anisotropic Filtering")]
[Description("0=no filtering, 2-16=quality")]
public int AnisotropicFiltering { get; set; }
[DefaultValue(false)]
[DisplayName("Normal Alpha Blender")]
[Description("Force to use normal alpha blender")]
public bool NormalAlphaBlender { get; set; }
[DefaultValue(false)]
[DisplayName("Fast Texture Loading")]
[Description("Use a faster algorithm to speed up texture loading and CRC computation")]
public bool FastTextureLoading { get; set; }
[DefaultValue(true)]
[DisplayName("Accurate Texture Mapping")]
[Description("Use different texture coordinate clamping code")]
public bool AccurateTextureMapping { get; set; }
[DefaultValue(false)]
[DisplayName("In N64 Resolution")]
[Description("Force emulated frame buffers to be in N64 native resolution")]
public bool InN64Resolution { get; set; }
[DefaultValue(false)]
[DisplayName("Save VRAM")]
[Description("Try to reduce Video RAM usage (should never be used)")]
public bool SaveVRAM { get; set; }
[DefaultValue(false)]
[DisplayName("Double Size for Small Texture Buffer")]
[Description("Enable this option to have better render-to-texture quality")]
public bool DoubleSizeForSmallTxtrBuf { get; set; }
[DefaultValue(false)]
[DisplayName("Default Combiner Disable")]
[Description("Force to use normal color combiner")]
public bool DefaultCombinerDisable { get; set; }
[DefaultValue(true)]
[DisplayName("Enable Hacks")]
[Description("Enable game-specific settings from INI file")]
public bool EnableHacks { get; set; }
[DefaultValue(false)]
[DisplayName("WinFrame Mode")]
[Description("If enabled, graphics will be drawn in WinFrame mode instead of solid and texture mode")]
public bool WinFrameMode { get; set; }
[DefaultValue(false)]
[DisplayName("Full TMEM Emulation")]
[Description("N64 Texture Memory Full Emulation (may fix some games, may break others)")]
public bool FullTMEMEmulation { get; set; }
[DefaultValue(false)]
[DisplayName("OpenGL Vertex Clipper")]
[Description("Enable vertex clipper for fog operations")]
public bool OpenGLVertexClipper { get; set; }
[DefaultValue(true)]
[DisplayName("Enable SSE")]
public bool EnableSSE { get; set; }
[DefaultValue(false)]
[DisplayName("Enable Vertex Shader")]
public bool EnableVertexShader { get; set; }
[DefaultValue(false)]
[DisplayName("Skip Frame")]
[Description("If this option is enabled, the plugin will skip every other frame")]
public bool SkipFrame { get; set; }
[DefaultValue(false)]
[DisplayName("Text Rect Only")]
[Description("If enabled, texture enhancement will be done only for TxtRect ucode")]
public bool TexRectOnly { get; set; }
[DefaultValue(false)]
[DisplayName("Small Texture Only")]
[Description("If enabled, texture enhancement will be done only for textures width+height<=128")]
public bool SmallTextureOnly { get; set; }
[DefaultValue(true)]
[DisplayName("Load Hi Res CRC Only")]
[Description("Select hi-resolution textures based only on the CRC and ignore format+size information (Glide64 compatibility)")]
public bool LoadHiResCRCOnly { get; set; }
[DefaultValue(false)]
[DisplayName("Load Hi Res Textures")]
public bool LoadHiResTextures { get; set; }
[DefaultValue(false)]
[DisplayName("Dump Textures to Files")]
public bool DumpTexturesToFiles { get; set; }
[DefaultValue(true)]
[DisplayName("Use Default Hacks")]
public bool UseDefaultHacks { get; set; }
[DefaultValue(false)]
[DisplayName("Disable Texture CRC")]
public bool DisableTextureCRC { get; set; }
[DefaultValue(false)]
[DisplayName("Disable Culling")]
public bool DisableCulling { get; set; }
[DefaultValue(false)]
[DisplayName("Include TexRect Edge")]
public bool IncTexRectEdge { get; set; }
[DefaultValue(false)]
[DisplayName("ZHack")]
public bool ZHack { get; set; }
[DefaultValue(false)]
[DisplayName("Texture Scale Hack")]
public bool TextureScaleHack { get; set; }
[DefaultValue(false)]
[DisplayName("Primary Depth Hack")]
public bool PrimaryDepthHack { get; set; }
[DefaultValue(false)]
[DisplayName("Texture 1 Hack")]
public bool Texture1Hack { get; set; }
[DefaultValue(false)]
[DisplayName("Fast Load Tile")]
public bool FastLoadTile { get; set; }
[DefaultValue(false)]
[DisplayName("Use Smaller Texture")]
public bool UseSmallerTexture { get; set; }
[DefaultValue(-1)]
[DisplayName("VI Width")]
public int VIWidth { get; set; }
[DefaultValue(-1)]
[DisplayName("VI Height")]
public int VIHeight { get; set; }
[DefaultValue(0)]
[DisplayName("Use CI Width and Ratio")]
public int UseCIWidthAndRatio { get; set; }
[DefaultValue(0)]
[DisplayName("Full THEM")]
public int FullTMEM { get; set; }
[DefaultValue(false)]
[DisplayName("Text Size Method 2")]
public bool TxtSizeMethod2 { get; set; }
[DefaultValue(false)]
[DisplayName("Enable Txt LOD")]
public bool EnableTxtLOD { get; set; }
[DefaultValue(0)]
[DisplayName("Fast Texture CRC")]
public int FastTextureCRC { get; set; }
[DefaultValue(0)]
[DisplayName("Emulate Clear")]
public bool EmulateClear { get; set; }
[DefaultValue(false)]
[DisplayName("Force Screen Clear")]
public bool ForceScreenClear { get; set; }
[DefaultValue(0)]
[DisplayName("Accurate Texture Mapping Hack")]
public int AccurateTextureMappingHack { get; set; }
[DefaultValue(0)]
[DisplayName("Normal Blender")]
public int NormalBlender { get; set; }
[DefaultValue(false)]
[DisplayName("Disable Blender")]
public bool DisableBlender { get; set; }
[DefaultValue(false)]
[DisplayName("Force Depth Buffer")]
public bool ForceDepthBuffer { get; set; }
[DefaultValue(false)]
[DisplayName("Disable Obj BG")]
public bool DisableObjBG { get; set; }
[DefaultValue(0)]
[DisplayName("Frame Buffer Option")]
public int FrameBufferOption { get; set; }
[DefaultValue(0)]
[DisplayName("Render to Texture Option")]
public int RenderToTextureOption { get; set; }
[DefaultValue(0)]
[DisplayName("Screen Update Setting Hack")]
public int ScreenUpdateSettingHack { get; set; }
[DefaultValue(0)]
[DisplayName("Enable Hacks for Game")]
public int EnableHacksForGame { get; set; }
public N64RicePluginSettings Clone()
{
return (N64RicePluginSettings)MemberwiseClone();
}
public void FillPerGameHacks(GameInfo game)
{
if (UseDefaultHacks)
{
DisableTextureCRC = game.GetBool("RiceDisableTextureCRC", false);
DisableCulling = game.GetBool("RiceDisableCulling", false);
IncTexRectEdge = game.GetBool("RiceIncTexRectEdge", false);
ZHack = game.GetBool("RiceZHack", false);
TextureScaleHack = game.GetBool("RiceTextureScaleHack", false);
PrimaryDepthHack = game.GetBool("RicePrimaryDepthHack", false);
Texture1Hack = game.GetBool("RiceTexture1Hack", false);
FastLoadTile = game.GetBool("RiceFastLoadTile", false);
UseSmallerTexture = game.GetBool("RiceUseSmallerTexture", false);
VIWidth = game.GetInt("RiceVIWidth", -1);
VIHeight = game.GetInt("RiceVIHeight", -1);
UseCIWidthAndRatio = game.GetInt("RiceUseCIWidthAndRatio", 0);
FullTMEM = game.GetInt("RiceFullTMEM", 0);
TxtSizeMethod2 = game.GetBool("RiceTxtSizeMethod2", false);
EnableTxtLOD = game.GetBool("RiceEnableTxtLOD", false);
FastTextureCRC = game.GetInt("RiceFastTextureCRC", 0);
EmulateClear = game.GetBool("RiceEmulateClear", false);
ForceScreenClear = game.GetBool("RiceForceScreenClear", false);
AccurateTextureMappingHack = game.GetInt("RiceAccurateTextureMappingHack", 0);
NormalBlender = game.GetInt("RiceNormalBlender", 0);
DisableBlender = game.GetBool("RiceDisableBlender", false);
ForceDepthBuffer = game.GetBool("RiceForceDepthBuffer", false);
DisableObjBG = game.GetBool("RiceDisableObjBG", false);
FrameBufferOption = game.GetInt("RiceFrameBufferOption", 0);
RenderToTextureOption = game.GetInt("RiceRenderToTextureOption", 0);
ScreenUpdateSettingHack = game.GetInt("RiceScreenUpdateSettingHack", 0);
EnableHacksForGame = game.GetInt("RiceEnableHacksForGame", 0);
}
}
public PluginType GetPluginType()
{
return PluginType.Rice;
}
}
}
}