{"id":88,"date":"2026-08-03T20:41:27","date_gmt":"2026-08-03T20:41:27","guid":{"rendered":"https:\/\/blogs.scummvm.org\/andy\/?p=88"},"modified":"2026-08-03T20:43:30","modified_gmt":"2026-08-03T20:43:30","slug":"week-10","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/andy\/2026\/08\/03\/week-10\/","title":{"rendered":"Week 10"},"content":{"rendered":"<p data-path-to-node=\"5\">Last week ended with detection and extraction finally sorted, and a promise that testing begins. This week I made good on it \u2014 I sat down and actually played through <i data-path-to-node=\"5\" data-index-in-node=\"166\">D\u00e9j\u00e0 Vu<\/i>, mouse in hand, watching for anything that felt off. It turns out playing a game from start to finish is the best bug report you can write, and <i data-path-to-node=\"5\" data-index-in-node=\"318\">D\u00e9j\u00e0 Vu<\/i> handed me a nice little pile of them.<\/p>\n<h2 data-path-to-node=\"6\">Cleaning up the Clean Up<\/h2>\n<p data-path-to-node=\"7\">The <code data-path-to-node=\"7\" data-index-in-node=\"4\">Special \u2192 Clean Up<\/code> menu action, which is supposed to tidily arrange the items inside a window, was throwing them outside the window instead \u2014 leaving the item boxes looking empty. The items were never actually lost, it was a redraw bug: the code was mixing absolute screen coordinates with window-relative ones. Once both sides spoke the same coordinate system, Clean Up went back to doing exactly what its name promises.<\/p>\n<h2 data-path-to-node=\"8\">Reading to the end<\/h2>\n<p data-path-to-node=\"9\">The output console at the bottom of the screen was only showing the last line of a longer message \u2014 the rest scrolled off before you could read it. A small padding overshoot in the auto-scroll was to blame. Now the whole message stays visible.<\/p>\n<h2 data-path-to-node=\"10\">A watch while you wait<\/h2>\n<p data-path-to-node=\"11\">While the engine chewed on a command, the screen just sat there, making it look frozen. A classic Mac touch fixed this: I show the watch cursor while a command is being processed, so it&#8217;s clear the game is working and not stuck.<\/p>\n<h2 data-path-to-node=\"12\">Animations at the right speed<\/h2>\n<p data-path-to-node=\"13\">This was my favourite one. Animations \u2014 the cab driver turning his head, the &#8220;BOOM&#8221; flash when you fire a gun \u2014 were blowing past almost instantly, when they should linger for a second or two. The culprit was the script <code data-path-to-node=\"13\" data-index-in-node=\"220\">SLEEP<\/code> opcode, which computed its delay as <code data-path-to-node=\"13\" data-index-in-node=\"262\">(ticks \/ 60) * 1000<\/code>. Because the division happened first, any pause shorter than a second was truncated straight to zero. Swapping it to <code data-path-to-node=\"13\" data-index-in-node=\"399\">(ticks * 1000) \/ 60<\/code> (and guarding against negative values that would otherwise wrap into an enormous delay) brought every animation back to its intended pace.<\/p>\n<h2 data-path-to-node=\"14\">The ones that got away<\/h2>\n<p data-path-to-node=\"15\">Not everything landed. The elevator doors still animate too fast, and I spent a good while trying to page the console text like the original&#8217;s &#8220;Click to continue&#8221; prompt. Both run into the same wall: MacVenture only draws a fully consistent screen at the end of its main loop, and any attempt to draw mid-script trips over half-built windows and invalid rectangles. So for now those two stay on the list \u2014 the right fix needs the engine&#8217;s proper animation path, not a quick hack.<\/p>\n<h2 data-path-to-node=\"16\">Next week<\/h2>\n<p data-path-to-node=\"17\">There are still a few small things left to polish in <i data-path-to-node=\"17\" data-index-in-node=\"53\">D\u00e9j\u00e0 Vu<\/i>, but it&#8217;s playable from start to finish now, which feels great. So it&#8217;s time to move on: next up I&#8217;m starting on <i data-path-to-node=\"17\" data-index-in-node=\"174\">D\u00e9j\u00e0 Vu II<\/i>, playing it through the same way and fixing whatever surfaces. I&#8217;ll also keep the elevator-door animation and the &#8220;Click to continue&#8221; console sync on the list, to come back to through the engine&#8217;s proper update path.<\/p>\n<p data-path-to-node=\"18\">As always, thanks to my mentors for the steady guidance and patience \u2014 onward to <i data-path-to-node=\"18\" data-index-in-node=\"68\">D\u00e9j\u00e0 Vu II<\/i>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last week ended with detection and extraction finally sorted, and a promise that testing begins. This week I made good on it \u2014 I sat down and actually played through D\u00e9j\u00e0 Vu, mouse in hand, watching for anything that felt off. It turns out playing a game from start to finish is the best bug [&hellip;]<\/p>\n","protected":false},"author":31,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-88","post","type-post","status-publish","format-standard","hentry","category-gsoc-2026"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/posts\/88","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/comments?post=88"}],"version-history":[{"count":2,"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/posts\/88\/revisions"}],"predecessor-version":[{"id":90,"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/posts\/88\/revisions\/90"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/media?parent=88"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/categories?post=88"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/andy\/wp-json\/wp\/v2\/tags?post=88"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}