From e5ab3413cb49edc7aba4d71c683c01419cf1ce2d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 14 Mar 2023 01:27:45 -0500 Subject: [PATCH] oh wow --- src/engine/dispatch.h | 6 +++--- src/engine/vgmOps.cpp | 4 ++-- src/gui/gui.cpp | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index 6cb1b4e99..9a87cc874 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -280,15 +280,15 @@ struct DivRegWrite { * - 0xffffffff: reset */ unsigned int addr; - unsigned short val; - DivRegWrite(unsigned int a, unsigned short v): + unsigned int val; + DivRegWrite(unsigned int a, unsigned int v): addr(a), val(v) {} }; struct DivDelayedWrite { int time; DivRegWrite write; - DivDelayedWrite(int t, unsigned int a, unsigned short v): + DivDelayedWrite(int t, unsigned int a, unsigned int v): time(t), write(a,v) {} }; diff --git a/src/engine/vgmOps.cpp b/src/engine/vgmOps.cpp index fdcd80720..01833d26f 100644 --- a/src/engine/vgmOps.cpp +++ b/src/engine/vgmOps.cpp @@ -583,8 +583,8 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write logD("writing stream command %x:%x with stream ID %d",write.addr,write.val,streamID); switch (write.addr&0xff) { case 0: // play sample - if (write.val out=e->buildROM(DIV_ROM_AMIGA_VALIDATION); + if (workingDirROMExport.size()>0) { + if (workingDirROMExport[workingDirROMExport.size()-1]!=DIR_SEPARATOR) workingDirROMExport+=DIR_SEPARATOR_STR; + } + for (DivROMExportOutput& i: out) { + String path=workingDirROMExport+i.name; + FILE* outFile=ps_fopen(path.c_str(),"wb"); + if (outFile!=NULL) { + fwrite(i.data->getFinalBuf(),1,i.data->size(),outFile); + fclose(outFile); + } + i.data->finish(); + delete i.data; + } + showError(fmt::sprintf("Done! Baked %d files.",(int)out.size())); ImGui::CloseCurrentPopup(); } ImGui::EndMenu();