dsda: detect wipe as lag

automap mnemonic
This commit is contained in:
feos 2025-03-16 22:44:37 +03:00
parent 89b6da50d0
commit 9351a045c0
7 changed files with 23 additions and 10 deletions

Binary file not shown.

View File

@ -820,6 +820,7 @@ namespace BizHawk.Emulation.Common
},
[VSystemID.Raw.Doom] = new()
{
["Automap"] = "M",
["Backward"] = 'v',
["End Player"] = 'E',
["Fire"] = 'F',
@ -891,14 +892,14 @@ namespace BizHawk.Emulation.Common
},
[VSystemID.Raw.Doom] = new()
{
["Fly / Look"] = "L",
["Mouse Running"] = "mR",
["Mouse Turning"] = "mT",
["Run Speed"] = "R",
["Strafing Speed"] = "S",
["Turning Speed"] = "T",
["Weapon Select"] = "W",
["Fly / Look"] = "L",
["Use Artifact"] = "U",
["Mouse Running"] = "mR",
["Mouse Turning"] = "mT"
["Weapon Select"] = "W",
},
};
}

View File

@ -116,7 +116,7 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
renderInfo._RenderAudio = renderAudio ? 1 : 0;
renderInfo._PlayerPointOfView = _settings.DisplayPlayer - 1;
_core.dsda_frame_advance(
IsLagFrame = _core.dsda_frame_advance(
ref players[0],
ref players[1],
ref players[2],
@ -131,6 +131,11 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
Frame++;
if (IsLagFrame)
{
LagCount++;
}
return true;
}

View File

@ -4,9 +4,8 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
{
public partial class DSDA : IInputPollable
{
public int LagCount { get; set; }
public bool IsLagFrame { get; set; }
public int LagCount { get; set; } = 0;
public bool IsLagFrame { get; set; } = false;
public IInputCallbackSystem InputCallbacks => _inputCallbacks;

View File

@ -18,6 +18,9 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
_turnHeld[3] = reader.ReadInt32();
Frame = reader.ReadInt32();
LagCount = reader.ReadInt32();
IsLagFrame = reader.ReadBoolean();
// any managed pointers that we sent to the core need to be resent now!
UpdateVideo();
}
@ -32,6 +35,8 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
writer.Write(_turnHeld[3]);
writer.Write(Frame);
writer.Write(LagCount);
writer.Write(IsLagFrame);
}
}
}

View File

@ -76,7 +76,7 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
public abstract bool dsda_init(ref InitSettings settings, int argc, string[] argv);
[BizImport(CallingConvention.Cdecl)]
public abstract void dsda_frame_advance(
public abstract bool dsda_frame_advance(
ref PackedPlayerInput player1Inputs,
ref PackedPlayerInput player2Inputs,
ref PackedPlayerInput player3Inputs,

View File

@ -38,7 +38,7 @@ ECL_EXPORT void dsda_get_video(int *w, int *h, int *pitch, uint8_t **buffer, int
*paletteBuffer = _convertedPaletteBuffer;
}
ECL_EXPORT void dsda_frame_advance(struct PackedPlayerInput *player1Inputs, struct PackedPlayerInput *player2Inputs, struct PackedPlayerInput *player3Inputs, struct PackedPlayerInput *player4Inputs, struct PackedRenderInfo *renderInfo)
ECL_EXPORT bool dsda_frame_advance(struct PackedPlayerInput *player1Inputs, struct PackedPlayerInput *player2Inputs, struct PackedPlayerInput *player3Inputs, struct PackedPlayerInput *player4Inputs, struct PackedRenderInfo *renderInfo)
{
// Setting inputs
headlessClearTickCommand();
@ -137,6 +137,9 @@ ECL_EXPORT void dsda_frame_advance(struct PackedPlayerInput *player1Inputs, stru
headlessUpdateVideo();
}
}
// Assume wipe is lag
return !wipeDone;
}
ECL_ENTRY void (*input_callback_cb)(void);