diff --git a/Assets/dll/dsda.wbx.zst b/Assets/dll/dsda.wbx.zst index 50854fa449..11aef2785c 100644 Binary files a/Assets/dll/dsda.wbx.zst and b/Assets/dll/dsda.wbx.zst differ diff --git a/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.ISettable.cs b/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.ISettable.cs index ba5eb6ddd5..2d2cdf4923 100644 --- a/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.ISettable.cs +++ b/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.ISettable.cs @@ -246,6 +246,11 @@ namespace BizHawk.Emulation.Cores.Computers.Doom [TypeConverter(typeof(DescribableEnumConverter))] public MapDetail MapDetails { get; set; } + [DisplayName("Full Vision")] + [Description("Disables all darkness.\n\nAvailable in vanilla via the IDBEHOLDL cheat code.\n\nRequires restart.")] + [DefaultValue(false)] + public bool FullVision { get; set; } + [DisplayName("Player Point of View")] [Description("Which of the players' point of view to use during rendering.")] [Range(1, 4)] @@ -271,7 +276,8 @@ namespace BizHawk.Emulation.Cores.Computers.Doom paramName: nameof(o)); } var ret = (_settings.ScaleFactor == o.ScaleFactor - && _settings.InternalAspect == o.InternalAspect) + && _settings.InternalAspect == o.InternalAspect + && _settings.FullVision == o.FullVision) ? PutSettingsDirtyBits.None : PutSettingsDirtyBits.RebootCore; _settings = o; diff --git a/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.cs b/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.cs index e3380bd28a..e0a5f25fdd 100644 --- a/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.cs +++ b/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.cs @@ -179,6 +179,7 @@ namespace BizHawk.Emulation.Cores.Computers.Doom _elf.AddReadonlyFile(_configFile, "dsda-doom.cfg"); var initSettings = _syncSettings.GetNativeSettings(); + initSettings.FullVision = _settings.FullVision ? 1 : 0; CreateArguments(initSettings); var initResult = _core.dsda_init(ref initSettings, _args.Count, _args.ToArray()); if (!initResult) diff --git a/src/BizHawk.Emulation.Cores/Computers/Doom/LibDSDA.cs b/src/BizHawk.Emulation.Cores/Computers/Doom/LibDSDA.cs index 31f27b39e6..2fe451cc96 100644 --- a/src/BizHawk.Emulation.Cores/Computers/Doom/LibDSDA.cs +++ b/src/BizHawk.Emulation.Cores/Computers/Doom/LibDSDA.cs @@ -58,6 +58,7 @@ namespace BizHawk.Emulation.Cores.Computers.Doom public int Player4Class; public int PreventLevelExit; public int PreventGameEnd; + public int FullVision; //public uint RNGSeed; } diff --git a/waterbox/dsda/BizhawkInterface.c b/waterbox/dsda/BizhawkInterface.c index c90cec70eb..37371ccbea 100644 --- a/waterbox/dsda/BizhawkInterface.c +++ b/waterbox/dsda/BizhawkInterface.c @@ -368,6 +368,18 @@ ECL_EXPORT int dsda_init(struct InitSettings *settings, int argc, char **argv) // Enabling DSDA output, for debugging enableOutput = 1; + if (settings->FullVision) + { + for (int i = 0; i < 4; i++) + { + if (playeringame[i]) + { + players[i].fixedcolormap = 1; + players[i].powers[pw_infrared] = -1; + } + } + } + return 1; } diff --git a/waterbox/dsda/BizhawkInterface.h b/waterbox/dsda/BizhawkInterface.h index c40c3b6e95..cdefbdd810 100644 --- a/waterbox/dsda/BizhawkInterface.h +++ b/waterbox/dsda/BizhawkInterface.h @@ -155,6 +155,7 @@ struct InitSettings int Player4Class; int PreventLevelExit; int PreventGameEnd; + int FullVision; //unsigned int RNGSeed; } __attribute__((packed));