diff --git a/Assets/dll/dsda.wbx.zst b/Assets/dll/dsda.wbx.zst index 0d467bf925..64dd113eb8 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.cs b/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.cs index 9df4b82058..8e07fceeb2 100644 --- a/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.cs +++ b/src/BizHawk.Emulation.Cores/Computers/Doom/DSDA.cs @@ -84,7 +84,7 @@ namespace BizHawk.Emulation.Cores.Computers.Doom + "render_stretch_hud 0\n" + "render_stretchsky 0\n" + "render_doom_lightmaps 1\n" - + "render_wipescreen 0\n" + + "render_wipescreen 1\n" + "map_coordinates 0\n" + "map_totals 0\n" ); diff --git a/waterbox/dsda/BizhawkInterface.c b/waterbox/dsda/BizhawkInterface.c index bc8075e1aa..33763971c5 100644 --- a/waterbox/dsda/BizhawkInterface.c +++ b/waterbox/dsda/BizhawkInterface.c @@ -1,6 +1,7 @@ #include "BizhawkInterface.h" bool foundIWAD = false; +bool wipeDone = true; ECL_EXPORT void dsda_get_audio(int *n, void **buffer) { @@ -116,11 +117,19 @@ ECL_EXPORT void dsda_frame_advance(struct PackedPlayerInput *player1Inputs, stru if (!renderInfo->RenderAudio) headlessDisableAudioRendering(); if (renderInfo->RenderAudio) headlessEnableAudioRendering(); - // Running a single tick - headlessRunSingleTick(); + if ((wipe_Pending() || !wipeDone) && dsda_RenderWipeScreen()) + { + wipeDone = wipe_ScreenWipe(1); + I_FinishUpdate(); + } + else + { + // Running a single tick + headlessRunSingleTick(); - // Move positional sounds - headlessUpdateSounds(); + // Move positional sounds + headlessUpdateSounds(); + } // Updating video if (renderInfo->RenderVideo) diff --git a/waterbox/dsda/BizhawkInterface.h b/waterbox/dsda/BizhawkInterface.h index 3830802304..7d5578871b 100644 --- a/waterbox/dsda/BizhawkInterface.h +++ b/waterbox/dsda/BizhawkInterface.h @@ -2,12 +2,16 @@ #define __BIZHAWK_INTERFACE__ #include "emulibc.h" +#include "d_main.h" #include "d_player.h" #include "doomstat.h" +#include "f_wipe.h" #include "g_game.h" +#include "i_sound.h" +#include "i_video.h" #include "p_mobj.h" -#include "w_wad.h" #include "dsda/args.h" +#include "dsda/settings.h" extern int headlessMain(int argc, char **argv); extern void headlessRunSingleTick(); @@ -16,10 +20,6 @@ extern void headlessSetTickCommand(int playerId, int forwardSpeed, int strafingS extern void headlessGetMapName(char *outString); extern void headlessSetSaveStatePointer(void *savePtr, int saveStateSize); extern size_t headlessGetEffectiveSaveSize(); -extern void dsda_ArchiveAll(void); -extern void dsda_UnArchiveAll(void); -extern void D_AddFile (const char *file, wad_source_t source, void *const buffer, const size_t size); -extern void AddIWAD(const char *iwad, void *const buffer, const size_t size); // Video extern void headlessUpdateVideo(void); @@ -35,8 +35,6 @@ extern uint32_t* headlessGetPallette(); extern void headlessUpdateSounds(void); extern void headlessEnableAudioRendering(); extern void headlessDisableAudioRendering(); -extern void I_InitSound(void); -extern void I_SetSoundCap (void); extern uint8_t *I_CaptureAudio (int *nsamples); // Players information @@ -49,6 +47,9 @@ extern int numthings; extern mobj_t **mobj_ptrs; extern dsda_arg_t arg_value[dsda_arg_count]; +#ifdef PALETTE_SIZE +#undef PALETTE_SIZE +#endif #define PALETTE_SIZE 256 uint32_t _convertedPaletteBuffer[PALETTE_SIZE]; diff --git a/waterbox/dsda/core b/waterbox/dsda/core index 2f1f11a633..3bb3753888 160000 --- a/waterbox/dsda/core +++ b/waterbox/dsda/core @@ -1 +1 @@ -Subproject commit 2f1f11a633b504f79adc7670a97e17ba0c2adb77 +Subproject commit 3bb375388836ac6187cce61cc39ca50ae8b06a98