{"id":338,"date":"2011-08-05T00:48:56","date_gmt":"2011-08-05T06:48:56","guid":{"rendered":"http:\/\/blackbird.usask.ca\/wordpress\/?p=338"},"modified":"2011-08-05T00:48:56","modified_gmt":"2011-08-05T06:48:56","slug":"genplusdroid-real-time-rewind","status":"publish","type":"post","link":"https:\/\/halsafar.ca\/blog\/2011\/08\/05\/genplusdroid-real-time-rewind\/","title":{"rendered":"GENPlusDroid &#8211; Real Time Rewind"},"content":{"rendered":"<p>Not to long ago I adopted a method created by Maister into the genplus emulator that allows for real time rewinding (think Prince of Persia or Braid). \u00a0The method is somewhat like video compression P-Frames where you store the diff of the last frame. \u00a0Emulators like FCEU use state saving to disk to pull this off which is very expensive. \u00a0The individual state frames are often large ranging anywhere from 75Kb to 300Kb. \u00a0 This method of storing the diffs in memory allows us to provide almost 30 seconds of rewind (varies depending on the game). \u00a0You can do the math to get a rough estimate how much space 30 seconds at 60fps worth of frames would take in its raw form. \u00a0The only real performance hit is the serialization and unserialization of the state itself, this proves fairly\u00a0negligible. \u00a0This is really just a for fun feature it is however neat none the less.<\/p>\n<p>See a video here:<br \/>\n<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"425\" height=\"350\" codebase=\"http:\/\/download.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=6,0,40,0\"><param name=\"src\" value=\"http:\/\/www.youtube.com\/v\/3VLp57982gs\" \/><embed type=\"application\/x-shockwave-flash\" width=\"425\" height=\"350\" src=\"http:\/\/www.youtube.com\/v\/3VLp57982gs\"><\/embed><\/object><a href=\"http:\/\/www.youtube.com\/watch?v=3VLp57982gs\"><br \/>\n<\/a><\/p>\n<p>This also marks the release of GENPlusDroid (for free).  If you have any problems please visit the forums.  Download from the market, leave a comment.<br \/>\n<a href=\"https:\/\/market.android.com\/details?id=ca.halsafar.genesisdroid\">https:\/\/market.android.com\/details?id=ca.halsafar.genesisdroid<br \/>\n<\/a><\/p>\n<p>Scan the QR Code for quick access:<br \/>\n<img decoding=\"async\" title=\"Hosted by imgur.com\" src=\"http:\/\/i.imgur.com\/Y9ZgF.png\" alt=\"\" \/><\/p>\n<p>Halsafar<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Not to long ago I adopted a method created by Maister into the genplus emulator that allows for real time rewinding (think Prince of Persia or Braid). \u00a0The method is somewhat like video compression P-Frames where you store the diff<span class=\"ellipsis\">&hellip;<\/span><\/p>\n<div class=\"read-more\"><a href=\"https:\/\/halsafar.ca\/blog\/2011\/08\/05\/genplusdroid-real-time-rewind\/\">Read more <span class=\"screen-reader-text\">GENPlusDroid &#8211; Real Time Rewind<\/span><span class=\"meta-nav\"> &#8250;<\/span><\/a><\/div>\n<p><!-- end of .read-more --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6],"tags":[9,17,20,88,22,23,37],"class_list":["post-338","post","type-post","status-publish","format-standard","hentry","category-android-development","category-halsafar","tag-android","tag-emulators","tag-genesis","tag-halsafar","tag-linkedin","tag-maister","tag-rewind"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/halsafar.ca\/blog\/wp-json\/wp\/v2\/posts\/338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/halsafar.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/halsafar.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/halsafar.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/halsafar.ca\/blog\/wp-json\/wp\/v2\/comments?post=338"}],"version-history":[{"count":0,"href":"https:\/\/halsafar.ca\/blog\/wp-json\/wp\/v2\/posts\/338\/revisions"}],"wp:attachment":[{"href":"https:\/\/halsafar.ca\/blog\/wp-json\/wp\/v2\/media?parent=338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/halsafar.ca\/blog\/wp-json\/wp\/v2\/categories?post=338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/halsafar.ca\/blog\/wp-json\/wp\/v2\/tags?post=338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}