mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-24 23:22:25 +01:00
byuu says: Changelog: - finished cleaning up the SFC core to my new coding conventions - removed sfc/controller/usart (superseded by 21fx) - hid Synchronize Video option from the menu (still in the configuration file) Pretty much the only minor detail left is some variable names in the SA-1 core that really won't look good at all if I move to camelCase, so I'll have to rethink how I handle those. It's probably a good area to attempt using BitFields, to see how it impacts performance. But I'll do that in a test branch first. But for the most part, this should be the end of the gigantic diffs (this one was 174KiB), at least for the SFC/WS cores. Still have the FC/GB/GBA cores to clean up more fully. Assuming we don't spot any new regressions, we should be ~95% out of the woods on code cleanups breaking things.
50 lines
1.5 KiB
C++
50 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <nall/nall.hpp>
|
|
using namespace nall;
|
|
|
|
#include <audio/audio.hpp>
|
|
#include <video/video.hpp>
|
|
#include <resource/resource.hpp>
|
|
|
|
namespace Emulator {
|
|
static const string Name = "higan";
|
|
static const string Version = "099.03";
|
|
static const string Author = "byuu";
|
|
static const string License = "GPLv3";
|
|
static const string Website = "http://byuu.org/";
|
|
}
|
|
|
|
#include "interface.hpp"
|
|
|
|
//debugging function hook:
|
|
//no overhead (and no debugger invocation) if not compiled with -DDEBUGGER
|
|
//wraps testing of function to allow invocation without a defined callback
|
|
template<typename T> struct hook;
|
|
template<typename R, typename... P> struct hook<auto (P...) -> R> {
|
|
function<auto (P...) -> R> callback;
|
|
|
|
auto operator()(P... p) const -> R {
|
|
#if defined(DEBUGGER)
|
|
if(callback) return callback(forward<P>(p)...);
|
|
#endif
|
|
return R();
|
|
}
|
|
|
|
hook() {}
|
|
hook(const hook& hook) { callback = hook.callback; }
|
|
hook(void* function) { callback = function; }
|
|
hook(auto (*function)(P...) -> R) { callback = function; }
|
|
template<typename C> hook(auto (C::*function)(P...) -> R, C* object) { callback = {function, object}; }
|
|
template<typename C> hook(auto (C::*function)(P...) const -> R, C* object) { callback = {function, object}; }
|
|
template<typename L> hook(const L& function) { callback = function; }
|
|
|
|
auto operator=(const hook& source) -> hook& { callback = source.callback; return *this; }
|
|
};
|
|
|
|
#if defined(DEBUGGER)
|
|
#define privileged public
|
|
#else
|
|
#define privileged private
|
|
#endif
|