{"id":20472,"date":"2012-01-10T21:16:19","date_gmt":"2012-01-10T21:16:19","guid":{"rendered":"http:\/\/127.0.0.1\/ef\/?p=20472"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T22:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/www.emu-france.com\/?p=20472","title":{"rendered":"[www] Emulateur NES en 940 Lignes de code"},"content":{"rendered":"<p>Ecrit en<a href=\"http:\/\/fr.wikipedia.org\/wiki\/C%2B%2B11\"> C++11<\/a> (derni\u00e8re r\u00e9vision du C++), voici une vid\u00e9o d&rsquo;un \u00e9mulateur de Nintendo NES qui tiens en quelques lignes de code. Ce projet est personnel et n&rsquo;a pas pour but de battre les autres, il s&rsquo;agit simplement d&rsquo;un hobby perso.<\/p>\n<p style=\"text-align: center;\"><object style=\"height: 243px; width: 400px\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/y71lli8MS8s?version=3&#038;feature=player_detailpage\"><param name=\"allowFullScreen\" value=\"true\"><param name=\"allowScriptAccess\" value=\"always\"><\/object><\/p>\n<p><em>It is just a programming hobby project.<br \/>\nSure, it can run TASes, but it&rsquo;s just a hobby project. And it&rsquo;s only 940 lines of source code.<\/p>\n<p>Examples of it running TASes:<br \/>\n&#8213; <a href=\"http:\/\/www.youtube.com\/watch?v=oPSERZz1PvU\">Rockman TAS by Bisqwit (tasvideos movie 726)<\/a><br \/>\n&#8213; <a href=\"http:\/\/www.youtube.com\/watch?v=c8uPdDT4mfQ\">Metroid TAS by Lord Tom (tasvideos movie 1144)<\/a><br \/>\n&#8213; <a href=\"http:\/\/www.youtube.com\/watch?v=XZWw745wPXY&#038;feature=youtu.be\">Part 2\/2<\/a> which demonstrates this particular revision of the emulator.<br \/>\nI only showcase a maximum of 15 minutes long TASes because that&rsquo;s what my account is capped to. But it does sync with e.g. <a href=\"http:\/\/tasvideos.org\/1649M.html\">Mega Man 2 by Shinryuu<\/a> (24 minutes)&#8230;<\/p>\n<p>It does not have savestates yet. And in fact, it does not even have an UI yet. It reads joypad input from a Famtasia movie file; it does not react to any other inputs. But due to its architecture, adding savestates would be trivial.<\/p>\n<p>It does not have many features; for example, iNES mapper 4 support is completely missing so far (which means e.g. SMB3 won&rsquo;t run), but those that are implemented are fairly accurate. It scores fewer failures in Blargg&rsquo;s tests than FCEUX does, for those parts that are implemented (mostly CPU &#038; PPU related tests).<\/p>\n<p>The RAM &#038; waveform displays shown on these videos are non-realtime add-ons; they are not part of the 940-line source code.<\/em><\/p>\n<p>\ud83d\ude42<\/p>\n<div class=\"fcbkbttn_buttons_block\" id=\"fcbkbttn_left\"><div class=\"fb-share-button  \" data-href=\"https:\/\/www.emu-france.com\/?p=20472\" data-type=\"button_count\" data-size=\"small\"><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Ecrit en C++11 (derni\u00e8re r\u00e9vision du C++), voici une vid\u00e9o d&rsquo;un \u00e9mulateur de Nintendo NES qui tiens en quelques lignes de code. Ce projet est personnel et n&rsquo;a pas pour but de battre les autres, il s&rsquo;agit simplement d&rsquo;un hobby &#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[],"tags":[],"class_list":["post-20472","post","type-post","status-publish","format-standard","hentry","uentry","postonpage-1","odd","post-author-Jets"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/sKi2R-","jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/20472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=20472"}],"version-history":[{"count":0,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/20472\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}