fix build

remove underscore from non-private fields
expose wipe screen setting
This commit is contained in:
feos 2025-03-16 23:03:15 +03:00
parent 9351a045c0
commit f0765a3a72
5 changed files with 69 additions and 64 deletions

View File

@ -820,7 +820,7 @@ namespace BizHawk.Emulation.Common
},
[VSystemID.Raw.Doom] = new()
{
["Automap"] = "M",
["Automap"] = 'M',
["Backward"] = 'v',
["End Player"] = 'E',
["Fire"] = 'F',

View File

@ -64,57 +64,57 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
}
// initial axis read
players[i]._RunSpeed = potReaders[i](controller, 0);
players[i]._StrafingSpeed = potReaders[i](controller, 1);
players[i]._TurningSpeed = potReaders[i](controller, 2);
players[i]._WeaponSelect = potReaders[i](controller, 3);
players[i].RunSpeed = potReaders[i](controller, 0);
players[i].StrafingSpeed = potReaders[i](controller, 1);
players[i].TurningSpeed = potReaders[i](controller, 2);
players[i].WeaponSelect = potReaders[i](controller, 3);
// override axis based on movement buttons (turning is reversed upstream)
if (controller.IsPressed($"P{i+1} Forward")) players[i]._RunSpeed = _runSpeeds[speedIndex];
if (controller.IsPressed($"P{i+1} Backward")) players[i]._RunSpeed = -_runSpeeds[speedIndex];
if (controller.IsPressed($"P{i+1} Strafe Right")) players[i]._StrafingSpeed = _strafeSpeeds[speedIndex];
if (controller.IsPressed($"P{i+1} Strafe Left")) players[i]._StrafingSpeed = -_strafeSpeeds[speedIndex];
if (controller.IsPressed($"P{i + 1} Turn Right")) players[i]._TurningSpeed = -turnSpeed;
if (controller.IsPressed($"P{i + 1} Turn Left")) players[i]._TurningSpeed = turnSpeed;
if (controller.IsPressed($"P{i + 1} Forward")) players[i].RunSpeed = _runSpeeds[speedIndex];
if (controller.IsPressed($"P{i + 1} Backward")) players[i].RunSpeed = -_runSpeeds[speedIndex];
if (controller.IsPressed($"P{i + 1} Strafe Right")) players[i].StrafingSpeed = _strafeSpeeds[speedIndex];
if (controller.IsPressed($"P{i + 1} Strafe Left")) players[i].StrafingSpeed = -_strafeSpeeds[speedIndex];
if (controller.IsPressed($"P{i + 1} Turn Right")) players[i].TurningSpeed = -turnSpeed;
if (controller.IsPressed($"P{i + 1} Turn Left")) players[i].TurningSpeed = turnSpeed;
// mouse-driven running
// divider matches the core
players[i]._RunSpeed -= (int)(potReaders[i](controller, 4) * _syncSettings.MouseRunSensitivity / 8.0);
players[i]._RunSpeed = players[i]._RunSpeed.Clamp<int>(-_runSpeeds[1], _runSpeeds[1]);
players[i].RunSpeed -= (int)(potReaders[i](controller, 4) * _syncSettings.MouseRunSensitivity / 8.0);
players[i].RunSpeed = players[i].RunSpeed.Clamp<int>(-_runSpeeds[1], _runSpeeds[1]);
// mouse-driven turning
// divider recalibrates minimal mouse movement to be 1 (requires global setting)
players[i]._TurningSpeed -= (int)(potReaders[i](controller, 5) * _syncSettings.MouseTurnSensitivity / 272.0);
players[i].TurningSpeed -= (int)(potReaders[i](controller, 5) * _syncSettings.MouseTurnSensitivity / 272.0);
if (_syncSettings.TurningResolution == TurningResolution.Shorttics)
{
// calc matches the core
players[i]._TurningSpeed = ((players[i]._TurningSpeed << 8) + 128) >> 8;
players[i].TurningSpeed = ((players[i].TurningSpeed << 8) + 128) >> 8;
}
// bool buttons
var actionsBitfield = portReaders[i](controller);
players[i]._Fire = actionsBitfield & 0b00001;
players[i]._Action = (actionsBitfield & 0b00010) >> 1;
players[i]._Automap = (actionsBitfield & 0b00100) >> 2;
players[i].Fire = actionsBitfield & 0b00001;
players[i].Action = (actionsBitfield & 0b00010) >> 1;
players[i].Automap = (actionsBitfield & 0b00100) >> 2;
// Raven Games
if (_syncSettings.InputFormat is DoomControllerTypes.Heretic or DoomControllerTypes.Hexen)
{
players[i]._FlyLook = potReaders[i](controller, 6);
players[i]._ArtifactUse = potReaders[i](controller, 7);
players[i].FlyLook = potReaders[i](controller, 6);
players[i].ArtifactUse = potReaders[i](controller, 7);
if (_syncSettings.InputFormat is DoomControllerTypes.Hexen)
{
players[i]._Jump = (actionsBitfield & 0b01000) >> 3;
players[i]._EndPlayer = (actionsBitfield & 0b10000) >> 4;
players[i].Jump = (actionsBitfield & 0b01000) >> 3;
players[i].EndPlayer = (actionsBitfield & 0b10000) >> 4;
}
}
}
}
PackedRenderInfo renderInfo = new PackedRenderInfo();
renderInfo._RenderVideo = renderVideo ? 1 : 0;
renderInfo._RenderAudio = renderAudio ? 1 : 0;
renderInfo._PlayerPointOfView = _settings.DisplayPlayer - 1;
renderInfo.RenderVideo = renderVideo ? 1 : 0;
renderInfo.RenderAudio = renderAudio ? 1 : 0;
renderInfo.PlayerPointOfView = _settings.DisplayPlayer - 1;
IsLagFrame = _core.dsda_frame_advance(
ref players[0],

View File

@ -259,6 +259,11 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
[DefaultValue(true)]
public bool AlwaysRun { get; set; }
[DisplayName("Render Wipescreen")]
[Description("Enables screen melt - an effect seen when Doom changes scene, for example, when starting or exiting a level.")]
[DefaultValue(true)]
public bool RenderWipescreen { get; set; }
[DisplayName("Turning Resolution")]
[Description("\"Shorttics\" refers to decreased turning resolution used for demos. \"Longtics\" refers to the regular turning resolution outside of a demo-recording environment.")]
[DefaultValue(TurningResolution.Longtics)]
@ -313,16 +318,16 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
{
return new CInterface.InitSettings
{
_Player1Present = Player1Present ? 1 : 0,
_Player2Present = Player2Present ? 1 : 0,
_Player3Present = Player3Present ? 1 : 0,
_Player4Present = Player4Present ? 1 : 0,
_Player1Class = (int) Player1Class,
_Player2Class = (int) Player2Class,
_Player3Class = (int) Player3Class,
_Player4Class = (int) Player4Class,
_PreventLevelExit = PreventLevelExit ? 1 : 0,
_PreventGameEnd = PreventGameEnd ? 1 : 0
Player1Present = Player1Present ? 1 : 0,
Player2Present = Player2Present ? 1 : 0,
Player3Present = Player3Present ? 1 : 0,
Player4Present = Player4Present ? 1 : 0,
Player1Class = (int) Player1Class,
Player2Class = (int) Player2Class,
Player3Class = (int) Player3Class,
Player4Class = (int) Player4Class,
PreventLevelExit = PreventLevelExit ? 1 : 0,
PreventGameEnd = PreventGameEnd ? 1 : 0
// MouseRunSensitivity is handled at Bizhawk level
// MouseTurnSensitivity is handled at Bizhawk level
};

View File

@ -77,16 +77,16 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
_nativeResolution.X * _settings.ScaleFactor}x{
_nativeResolution.Y * _settings.ScaleFactor}\"\n"
+ $"usegamma {_settings.Gamma}\n"
+ "dsda_exhud 0\n"
+ "dsda_pistol_start 0\n"
+ "uncapped_framerate 0\n"
+ $"render_wipescreen {(_syncSettings.RenderWipescreen ? 1 : 0)}\n"
+ "render_aspect 3\n" // 4:3, controls FOV on higher resolutions (see SetRatio())
+ "render_stretch_hud 0\n"
+ "render_stretchsky 0\n"
+ "render_doom_lightmaps 1\n"
+ "render_wipescreen 1\n"
+ "dsda_exhud 0\n"
+ "uncapped_framerate 0\n"
+ "map_coordinates 0\n"
+ "map_totals 0\n"
+ "map_time 0\n"
);
_elf = new WaterboxHost(new WaterboxOptions
@ -178,7 +178,7 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
ConditionalArg(_syncSettings.MultiplayerMode == MultiplayerMode.Deathmatch, "-deathmatch");
ConditionalArg(_syncSettings.MultiplayerMode == MultiplayerMode.Altdeath, "-altdeath");
ConditionalArg(_syncSettings.Turbo > 0, $"-turbo {_syncSettings.Turbo}");
ConditionalArg((initSettings._Player1Present + initSettings._Player2Present + initSettings._Player3Present + initSettings._Player4Present) > 1, "-solo-net");
ConditionalArg((initSettings.Player1Present + initSettings.Player2Present + initSettings.Player3Present + initSettings.Player4Present) > 1, "-solo-net");
}
private void ConditionalArg(bool condition, string setting)

View File

@ -29,44 +29,44 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
[StructLayout(LayoutKind.Sequential)]
public struct InitSettings
{
public int _Player1Present;
public int _Player2Present;
public int _Player3Present;
public int _Player4Present;
public int _Player1Class;
public int _Player2Class;
public int _Player3Class;
public int _Player4Class;
public int _PreventLevelExit;
public int _PreventGameEnd;
public int Player1Present;
public int Player2Present;
public int Player3Present;
public int Player4Present;
public int Player1Class;
public int Player2Class;
public int Player3Class;
public int Player4Class;
public int PreventLevelExit;
public int PreventGameEnd;
}
[StructLayout(LayoutKind.Sequential)]
public struct PackedPlayerInput
{
public int _RunSpeed;
public int _StrafingSpeed;
public int _TurningSpeed;
public int _WeaponSelect;
public int _Fire;
public int _Action;
public int _Automap;
public int RunSpeed;
public int StrafingSpeed;
public int TurningSpeed;
public int WeaponSelect;
public int Fire;
public int Action;
public int Automap;
// Hexen + Heretic (Raven Games)
public int _FlyLook;
public int _ArtifactUse;
public int FlyLook;
public int ArtifactUse;
// Hexen only
public int _Jump;
public int _EndPlayer;
public int Jump;
public int EndPlayer;
}
[StructLayout(LayoutKind.Sequential)]
public struct PackedRenderInfo
{
public int _RenderVideo;
public int _RenderAudio;
public int _PlayerPointOfView;
public int RenderVideo;
public int RenderAudio;
public int PlayerPointOfView;
}
[BizImport(CallingConvention.Cdecl)]