Skip to content

Commit

Permalink
NES/SNES core updates and misc tweaks
Browse files Browse the repository at this point in the history
* Imagine: Clean up OpenGL configuration code and add glUtils.hh with various utility functions
* Imagine: Extend logger API for multi-part messages
* Imagine: Use variant visit() as member function in more places
* Imagine: Clean up View and MenuItem virtual interfaces
* Imagine: Use mold linker on all Linux builds
* Imagine: Update bundled XZ Utils to 5.6.2
* NES.emu: Update core to FCEUX GIT c919de0 (2024.05.29)
* Snes9x EX+: Update core to Snes9x GIT a277d7f (2024.05.26)
  • Loading branch information
Robert Broglia committed Jun 10, 2024
1 parent eb2b413 commit 9c09335
Show file tree
Hide file tree
Showing 110 changed files with 1,013 additions and 714 deletions.
8 changes: 4 additions & 4 deletions C64.emu/src/main/EmuMenuViews.cc
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ class DatasetteControlsView : public TableView, public MainAppHelper
void onShow() final
{
updateTapeCounter();
tapeCounter.compile();
tapeCounter.place();
}
};

Expand All @@ -546,7 +546,7 @@ class C64IOControlView : public TableView, public MainAppHelper
void onTapeMediaChange()
{
updateTapeText();
tapeSlot.compile();
tapeSlot.place();
}

void addTapeFilePickerView(Input::Event e, bool dismissPreviousView)
Expand Down Expand Up @@ -621,7 +621,7 @@ class C64IOControlView : public TableView, public MainAppHelper
void onROMMediaChange()
{
updateROMText();
romSlot.compile();
romSlot.place();
}

void addCartFilePickerView(Input::Event e, bool dismissPreviousView)
Expand Down Expand Up @@ -682,7 +682,7 @@ class C64IOControlView : public TableView, public MainAppHelper
void onDiskMediaChange(int slot)
{
updateDiskText(slot);
diskSlot[slot].compile();
diskSlot[slot].place();
}

void addDiskFilePickerView(Input::Event e, uint8_t slot, bool dismissPreviousView)
Expand Down
8 changes: 4 additions & 4 deletions EmuFramework/include/emuframework/ButtonConfigView.hh
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ public:
ButtonConfigSetView(ViewAttachParams attach, InputManagerView &rootIMView,
Input::Device &dev, std::string_view actionName, SetDelegate onSet);
void place() final;
bool inputEvent(const Input::Event &) final;
void draw(Gfx::RendererCommands &__restrict__) final;
bool inputEvent(const Input::Event&, ViewInputEventParams p = {}) final;
void draw(Gfx::RendererCommands&__restrict__, ViewDrawParams p = {}) const final;
void onAddedToController(ViewController *, const Input::Event &) final;

private:
Expand All @@ -57,15 +57,15 @@ private:
MappedKeys pushedKeys;

void initPointerUI();
bool pointerUIIsInit();
bool pointerUIIsInit() const;
void finalize();
};

class ButtonConfigView : public TableView, public EmuAppHelper
{
public:
ButtonConfigView(ViewAttachParams attach, InputManagerView &rootIMView, const KeyCategory &cat, InputDeviceConfig &devConf);
bool inputEvent(const Input::Event &) final;
bool inputEvent(const Input::Event&, ViewInputEventParams p = {}) final;

private:
InputManagerView &rootIMView;
Expand Down
4 changes: 2 additions & 2 deletions EmuFramework/include/emuframework/CreditsView.hh
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ public:
CreditsView(ViewAttachParams attach, UTF16String str);
~CreditsView();
void prepareDraw() final;
void draw(Gfx::RendererCommands &__restrict__) final;
void draw(Gfx::RendererCommands&__restrict__, ViewDrawParams p = {}) const final;
void place() final;
bool inputEvent(const Input::Event &) final;
bool inputEvent(const Input::Event&, ViewInputEventParams p = {}) final;
std::u16string_view name() const final;

private:
Expand Down
12 changes: 5 additions & 7 deletions EmuFramework/include/emuframework/EmuApp.hh
Original file line number Diff line number Diff line change
Expand Up @@ -190,9 +190,7 @@ public:
bool loadState(CStringView path);
bool loadStateWithSlot(int slot);
bool shouldOverwriteExistingState() const;
const auto &contentSearchPath() const { return contentSearchPath_; }
FS::PathString contentSearchPath(std::string_view name) const;
void setContentSearchPath(auto &&path) { contentSearchPath_ = IG_forward(path); }
FS::PathString inContentSearchPath(std::string_view name) const;
FS::PathString validSearchPath(const FS::PathString &) const;
static void updateLegacySavePath(IG::ApplicationContext, CStringView path);
auto screenshotDirectory() const { return system().userPath(userScreenshotPath); }
Expand All @@ -219,6 +217,7 @@ public:
void unsetDisabledInputKeys();
Gfx::TextureSpan asset(AssetID) const;
Gfx::TextureSpan asset(AssetDesc) const;
Gfx::TextureSpan collectTextCloseAsset() const;
VController &defaultVController() { return inputManager.vController; }
std::unique_ptr<View> makeView(ViewAttachParams, ViewID);
std::unique_ptr<YesNoAlertView> makeCloseContentView();
Expand Down Expand Up @@ -331,11 +330,10 @@ public:
postMessage(secs, true, IG_forward(msg));
}

protected:
public:
IG::FontManager fontManager;
mutable Gfx::Renderer renderer;
ViewManager viewManager;
public:
EmuAudio audio;
EmuVideo video;
EmuVideoLayer videoLayer;
Expand All @@ -349,7 +347,6 @@ protected:
EmuSystemTask emuSystemTask{*this};
mutable Gfx::Texture assetBuffImg[wise_enum::size<AssetFileID>];
int savedAdvancedFrames{};
FS::PathString contentSearchPath_;
[[no_unique_address]] IG::Data::PixmapReader pixmapReader;
[[no_unique_address]] IG::Data::PixmapWriter pixmapWriter;
[[no_unique_address]] PerformanceHintManager perfHintManager;
Expand All @@ -361,6 +358,7 @@ protected:
public:
BluetoothAdapter bluetoothAdapter;
RecentContent recentContent;
FS::PathString contentSearchPath;
std::string userScreenshotPath;
Property<IG::PixelFormat, CFGKEY_RENDER_PIXEL_FORMAT,
PropertyDesc<IG::PixelFormat>{.isValid = renderPixelFormatIsValid}> renderPixelFormat;
Expand Down Expand Up @@ -418,13 +416,13 @@ public:
ConditionalMember<Gfx::supportsPresentationTime, PresentationTimeMode> presentationTimeMode{PresentationTimeMode::basic};
Property<bool, CFGKEY_BLANK_FRAME_INSERTION> allowBlankFrameInsertion;

protected:
struct ConfigParams
{
Gfx::DrawableConfig windowDrawableConf{};
};

void onMainWindowCreated(ViewAttachParams, const Input::Event &);
Gfx::TextureSpan collectTextCloseAsset() const;
ConfigParams loadConfigFile(IG::ApplicationContext);
void saveConfigFile(IG::ApplicationContext);
void saveConfigFile(FileIO &);
Expand Down
4 changes: 2 additions & 2 deletions EmuFramework/include/emuframework/EmuInputView.hh
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ public:
EmuInputView();
EmuInputView(ViewAttachParams attach, VController &vCtrl, EmuVideoLayer &videoLayer);
void place() final;
void draw(Gfx::RendererCommands &__restrict__) final;
bool inputEvent(const Input::Event &) final;
void draw(Gfx::RendererCommands &__restrict__, ViewDrawParams p = {}) const final;
bool inputEvent(const Input::Event&, ViewInputEventParams p = {}) final;
void resetInput();
bool toggleAltSpeedMode(AltSpeedMode);
bool setAltSpeedMode(AltSpeedMode, bool on);
Expand Down
10 changes: 8 additions & 2 deletions EmuFramework/include/emuframework/EmuSystemTask.hh
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include <imagine/base/MessagePort.hh>
#include <imagine/thread/Thread.hh>
#include <imagine/time/Time.hh>
#include <variant>
#include <imagine/util/variant.hh>

namespace EmuEx
{
Expand All @@ -42,11 +42,17 @@ public:
struct ExitCommand {};

using CommandVariant = std::variant<FrameParamsCommand, FramePresentedCommand, PauseCommand, ExitCommand>;
class Command: public CommandVariant, public AddVisit
{
public:
using CommandVariant::CommandVariant;
using AddVisit::visit;
};

struct CommandMessage
{
std::binary_semaphore *semPtr{};
CommandVariant command{PauseCommand{}};
Command command{PauseCommand{}};

void setReplySemaphore(std::binary_semaphore *semPtr_) { assert(!semPtr); semPtr = semPtr_; };
};
Expand Down
8 changes: 4 additions & 4 deletions EmuFramework/include/emuframework/EmuVideo.hh
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public:
void setRendererTask(Gfx::RendererTask &);
bool hasRendererTask() const;
bool setFormat(IG::PixmapDesc desc, EmuSystemTaskContext task = {});
void dispatchFormatChanged();
void dispatchFormatChanged() { onFormatChanged(*this); }
void resetImage(IG::PixelFormat newFmt = {});
IG::PixmapDesc deleteImage();
EmuVideoImage startFrame(EmuSystemTaskContext);
Expand All @@ -64,7 +64,7 @@ public:
void startUnchangedFrame(EmuSystemTaskContext);
void finishFrame(EmuSystemTaskContext, Gfx::LockedTextureBuffer texBuff);
void finishFrame(EmuSystemTaskContext, IG::PixmapView pix);
void dispatchFrameFinished();
void dispatchFrameFinished() { onFrameFinished(*this); }
void clear();
void takeGameScreenshot();
bool isExternalTexture() const;
Expand All @@ -73,8 +73,6 @@ public:
IG::ApplicationContext appContext() const;
WSize size() const;
bool formatIsEqual(IG::PixmapDesc desc) const;
void setOnFrameFinished(FrameFinishedDelegate del);
void setOnFormatChanged(FormatChangedDelegate del);
void setTextureBufferMode(EmuSystem &, Gfx::TextureBufferMode mode);
void setSampler(Gfx::TextureSamplerConfig);
constexpr auto colorSpace() const { return colSpace; }
Expand All @@ -87,8 +85,10 @@ public:
protected:
Gfx::RendererTask *rTask{};
Gfx::PixmapBufferTexture vidImg;
public:
FrameFinishedDelegate onFrameFinished;
FormatChangedDelegate onFormatChanged;
protected:
IG::PixelFormat renderFmt;
Gfx::TextureBufferMode bufferMode{};
bool screenshotNextFrame{};
Expand Down
5 changes: 2 additions & 3 deletions EmuFramework/include/emuframework/EmuView.hh
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,15 @@ public:
EmuView(ViewAttachParams, EmuVideoLayer *, EmuSystem &);
void place() final;
void prepareDraw() final;
void draw(Gfx::RendererCommands &__restrict__) final;
void draw(Gfx::RendererCommands &__restrict__, ViewDrawParams p = {}) const final;
void drawframeTimeStatsText(Gfx::RendererCommands &__restrict__);
bool inputEvent(const Input::Event &) final;
bool hasLayer() const { return layer; }
void setLayoutInputView(EmuInputView *view) { inputView = view; }
void updateFrameTimeStats(FrameTimeStats, SteadyClockTimePoint currentFrameTimestamp);
void updateAudioStats(int underruns, int overruns, int callbacks, double avgCallbackFrames, int frames);
void clearAudioStats();
EmuVideoLayer *videoLayer() const { return layer; }
EmuSystem &system() { return *sysPtr; }
auto& system(this auto&& self) { return *self.sysPtr; }

private:
EmuVideoLayer *layer{};
Expand Down
4 changes: 2 additions & 2 deletions EmuFramework/include/emuframework/EmuViewController.hh
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class EmuMenuViewStack : public ViewStack
{
public:
EmuMenuViewStack(ViewAttachParams, EmuApp &);
bool inputEvent(const Input::Event &) final;
bool inputEvent(const Input::Event&) final;
constexpr EmuApp &app() { return *emuAppPtr; }

protected:
Expand All @@ -70,7 +70,7 @@ public:
void popTo(View &v) final;
void dismissView(View &v, bool refreshLayout) final;
void dismissView(int idx, bool refreshLayout) final;
bool inputEvent(const Input::Event &) final;
bool inputEvent(const Input::Event&) final;
bool extraWindowInputEvent(const Input::Event &e);
void showEmulationView(FrameTimeConfig);
void showMenuView(bool updateTopView);
Expand Down
4 changes: 2 additions & 2 deletions EmuFramework/include/emuframework/InputManagerView.hh
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ public:

IdentInputDeviceView(ViewAttachParams attach);
void place() final;
bool inputEvent(const Input::Event &) final;
void draw(Gfx::RendererCommands &__restrict__) final;
bool inputEvent(const Input::Event&, ViewInputEventParams p = {}) final;
void draw(Gfx::RendererCommands&__restrict__, ViewDrawParams p = {}) const final;

private:
Gfx::Text text;
Expand Down
3 changes: 1 addition & 2 deletions EmuFramework/include/emuframework/LoadProgressView.hh
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ public:
void setPos(int val);
void setLabel(UTF16Convertible auto &&label) { text.resetString(IG_forward(label)); }
void place() final;
bool inputEvent(const Input::Event &) final;
void draw(Gfx::RendererCommands &__restrict__) final;
void draw(Gfx::RendererCommands&__restrict__, ViewDrawParams p = {}) const final;
MessagePortType &messagePort();

private:
Expand Down
2 changes: 1 addition & 1 deletion EmuFramework/include/emuframework/TouchConfigView.hh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class TouchConfigView final: public TableView, public EmuAppHelper
public:
TouchConfigView(ViewAttachParams attach, VController &vController);
void place() final;
void draw(Gfx::RendererCommands &__restrict__) final;
void draw(Gfx::RendererCommands&__restrict__, ViewDrawParams p = {}) const final;
void reloadItems();
void onShow() final;

Expand Down
4 changes: 2 additions & 2 deletions EmuFramework/src/ConfigFile.cc
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ void EmuApp::saveConfigFile(FileIO &io)
writeOptionValueIfNotDefault(io, presentMode);
if(renderer.supportsPresentationTime())
writeOptionValueIfNotDefault(io, CFGKEY_RENDERER_PRESENTATION_TIME, presentationTimeMode, PresentationTimeMode::basic);
writeStringOptionValue(io, CFGKEY_LAST_DIR, contentSearchPath());
writeStringOptionValue(io, CFGKEY_LAST_DIR, contentSearchPath);
writeStringOptionValue(io, CFGKEY_SAVE_PATH, system().userSaveDirectory());
writeStringOptionValue(io, CFGKEY_SCREENSHOTS_PATH, userScreenshotPath);
system().writeConfig(ConfigType::MAIN, io);
Expand Down Expand Up @@ -171,7 +171,7 @@ EmuApp::ConfigParams EmuApp::loadConfigFile(IG::ApplicationContext ctx)
case CFGKEY_FRAME_RATE: return readOptionValue<FrameTime>(io, [&](auto &&val){outputTimingManager.setFrameTimeOption(VideoSystem::NATIVE_NTSC, val);});
case CFGKEY_FRAME_RATE_PAL: return readOptionValue<FrameTime>(io, [&](auto &&val){outputTimingManager.setFrameTimeOption(VideoSystem::PAL, val);});
case CFGKEY_LAST_DIR:
return readStringOptionValue<FS::PathString>(io, [&](auto &&path){setContentSearchPath(path);});
return readStringOptionValue<FS::PathString>(io, [&](auto &&path){contentSearchPath = path;});
case CFGKEY_FONT_Y_SIZE: return readOptionValue(io, fontSize);
case CFGKEY_GAME_ORIENTATION: return readOptionValue(io, emuOrientation);
case CFGKEY_MENU_ORIENTATION: return readOptionValue(io, menuOrientation);
Expand Down
Loading

0 comments on commit 9c09335

Please sign in to comment.