405 lines
13 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|