summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Oliver Stöneberg <oliverst@online.de>2014-10-25 18:14:16 +0200
committer Oliver Stöneberg <oliverst@online.de>2014-10-25 18:14:16 +0200
commit4f9db1e7349c32161abca4444e38591f4b7bceab (patch)
treea3de90e932fe2b8cadfc2d64301416237294ee53
parent6a48055e4432be5ede1b428498656f046d03746e (diff)
added command-line option -[no]snapbilinear to control binlinear filtering for snapshots (enabled by default) [Oliver Stöneberg]
this is mainly for making testruns and debugging faster - could also be used to speed up -aviwrite usage though
-rw-r--r--src/emu/emuopts.c1
-rw-r--r--src/emu/emuopts.h2
-rw-r--r--src/emu/video.c8
3 files changed, 10 insertions, 1 deletions
diff --git a/src/emu/emuopts.c b/src/emu/emuopts.c
index 5ddb588c75a..3f845cc888e 100644
--- a/src/emu/emuopts.c
+++ b/src/emu/emuopts.c
@@ -65,6 +65,7 @@ const options_entry emu_options::s_option_entries[] =
{ OPTION_SNAPNAME, "%g/%i", OPTION_STRING, "override of the default snapshot/movie naming; %g == gamename, %i == index" },
{ OPTION_SNAPSIZE, "auto", OPTION_STRING, "specify snapshot/movie resolution (<width>x<height>) or 'auto' to use minimal size " },
{ OPTION_SNAPVIEW, "internal", OPTION_STRING, "specify snapshot/movie view or 'internal' to use internal pixel-aspect views" },
+ { OPTION_SNAPBILINEAR, "1", OPTION_BOOLEAN, "specify if the snapshot should have bilinear filtering applied" },
{ OPTION_STATENAME, "%g", OPTION_STRING, "override of the default state subfolder naming; %g == gamename" },
{ OPTION_BURNIN, "0", OPTION_BOOLEAN, "create burn-in snapshots for each screen" },
diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h
index 71846945f8a..39bea138d2d 100644
--- a/src/emu/emuopts.h
+++ b/src/emu/emuopts.h
@@ -78,6 +78,7 @@ enum
#define OPTION_SNAPNAME "snapname"
#define OPTION_SNAPSIZE "snapsize"
#define OPTION_SNAPVIEW "snapview"
+#define OPTION_SNAPBILINEAR "snapbilinear"
#define OPTION_STATENAME "statename"
#define OPTION_BURNIN "burnin"
@@ -239,6 +240,7 @@ public:
const char *snap_name() const { return value(OPTION_SNAPNAME); }
const char *snap_size() const { return value(OPTION_SNAPSIZE); }
const char *snap_view() const { return value(OPTION_SNAPVIEW); }
+ bool snap_bilinear() const { return bool_value(OPTION_SNAPBILINEAR); }
const char *state_name() const { return value(OPTION_STATENAME); }
bool burnin() const { return bool_value(OPTION_BURNIN); }
diff --git a/src/emu/video.c b/src/emu/video.c
index 1194d7bd6f6..63c8e6d4b80 100644
--- a/src/emu/video.c
+++ b/src/emu/video.c
@@ -1058,6 +1058,9 @@ void video_manager::recompute_speed(const attotime &emutime)
// given screen
//-------------------------------------------------
+typedef software_renderer<UINT32, 0,0,0, 16,8,0, false, true> snap_renderer_bilinear;
+typedef software_renderer<UINT32, 0,0,0, 16,8,0, false, false> snap_renderer;
+
void video_manager::create_snapshot_bitmap(screen_device *screen)
{
// select the appropriate view in our dummy target
@@ -1083,7 +1086,10 @@ void video_manager::create_snapshot_bitmap(screen_device *screen)
// render the screen there
render_primitive_list &primlist = m_snap_target->get_primitives();
primlist.acquire_lock();
- software_renderer<UINT32, 0,0,0, 16,8,0, false, true>::draw_primitives(primlist, &m_snap_bitmap.pix32(0), width, height, m_snap_bitmap.rowpixels());
+ if (machine().options().snap_bilinear())
+ snap_renderer_bilinear::draw_primitives(primlist, &m_snap_bitmap.pix32(0), width, height, m_snap_bitmap.rowpixels());
+ else
+ snap_renderer::draw_primitives(primlist, &m_snap_bitmap.pix32(0), width, height, m_snap_bitmap.rowpixels());
primlist.release_lock();
}