{"id":162,"date":"2024-06-30T12:45:12","date_gmt":"2024-06-30T07:15:12","guid":{"rendered":"https:\/\/blogs.scummvm.org\/krish\/?p=162"},"modified":"2024-07-01T17:23:02","modified_gmt":"2024-07-01T11:53:02","slug":"week-5-progress-and-unstubbing-qtvr-xtra","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/krish\/week-5-progress-and-unstubbing-qtvr-xtra\/","title":{"rendered":"Week 5 Progress and Unstubbing QTVR Xtra"},"content":{"rendered":"<p>Hey everyone \ud83d\udc4b\ud83c\udffb<\/p>\n<p>Welcome back to my GSoC blog! As we wrap up week 5, I want to share my progress. This week had its challenges because I couldn&#8217;t get the panorama rendering working as planned. However, learning from these challenges is an important part of our journey, and despite this setback, I made progress in other areas.<\/p>\n<p><strong>Task 1: Rendering Panorama Movies<\/strong><\/p>\n<p>For this task, I started by studying a patent that explains how to map a cylindrical image to a planar image using scan line coherence. You can read more about it <a href=\"https:\/\/patentimages.storage.googleapis.com\/74\/82\/23\/744b4091f6a2c0\/US5396583.pdf\" target=\"_new\" rel=\"noreferrer noopener\">here<\/a>. With this knowledge, I began coding. Unfortunately, despite my efforts, the implementation didn&#8217;t quite pan out, and debugging was challenging, especially with my math skills adding an extra layer of complexity \ud83d\ude05. After spending days trying to fix it, I talked to Sev, who kindly allowed me to temporarily pause this task.<\/p>\n<p><strong>Task 2: Unstubbing the QTVR Xtra<\/strong><\/p>\n<p>Xtras are basically components that extend the functionality of Director projects. Some Xtras come installed with Director, while others are available through third-party developers. These modular extensions can add additional behaviors and scripting capabilities.<\/p>\n<p>The QTVR Xtra is designed to work with QuickTime VR (QTVR) movies. It provides various functions to facilitate the loading and playback of QTVR movies.<\/p>\n<p>&#8220;Unstubbing&#8221; refers to the process of replacing stubbed-out or placeholder code or functionality with actual functional code.<\/p>\n<p>To integrate QTVR with Director, after discussions with Sev and Rvanlaar, we chose the SafeCracker game, which utilizes the QTVR Xtra. Our approach involves unstubbing the necessary functions by analyzing the scripts and unstubbing the placeholder code.<\/p>\n<p>To examine the behavior and functionality, we utilize projector rays for decompiling DXR and CXT files. This tool allows us to dump the scripts embedded within. The only issue is that there are way too many nested folders containing these DXR and CXT files, so I created two simple PowerShell scripts to streamline my work:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-181 alignleft\" src=\"https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-1.png\" alt=\"\" width=\"750\" height=\"206\" srcset=\"https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-1.png 1500w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-1-300x82.png 300w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-1-1024x281.png 1024w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-1-768x211.png 768w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-184 alignleft\" src=\"https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-2.png\" alt=\"\" width=\"750\" height=\"225\" srcset=\"https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-2.png 1500w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-2-300x90.png 300w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-2-1024x307.png 1024w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/06\/Script-2-768x230.png 768w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>I have begun the unstubbing process for the QTVR Xtra this week and will continue making progress on this task.<\/p>\n<p><strong>Additional Task: Ensure Selection Stays within Selectable Area in Console<\/strong><\/p>\n<figure id=\"attachment_164\" aria-describedby=\"caption-attachment-164\" style=\"width: 1024px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-164 size-large\" src=\"https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/07\/Console-1024x535.png\" alt=\"\" width=\"1024\" height=\"535\" srcset=\"https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/07\/Console-1024x535.png 1024w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/07\/Console-300x157.png 300w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/07\/Console-768x401.png 768w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/07\/Console-1536x802.png 1536w, https:\/\/blogs.scummvm.org\/krish\/wp-content\/uploads\/sites\/76\/2024\/07\/Console.png 1918w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption id=\"caption-attachment-164\" class=\"wp-caption-text\">Before the fix<\/figcaption><\/figure>\n<p>This was a straightforward and minor change involving the addition of two if guards appropriately to ensure that text selection remains within the designated selectable area when using the console.<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>This wraps up the updates for week 5. Stay tuned for more in the next post!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey everyone \ud83d\udc4b\ud83c\udffb Welcome back to my GSoC blog! As we wrap up week 5, I want to share my progress. This week had its challenges because I couldn&#8217;t get the panorama rendering working as planned. However, learning from these challenges is an important part of our journey, and despite this setback, I made progress [&hellip;]<\/p>\n","protected":false},"author":24,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-162","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/posts\/162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/comments?post=162"}],"version-history":[{"count":18,"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/posts\/162\/revisions"}],"predecessor-version":[{"id":188,"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/posts\/162\/revisions\/188"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/media?parent=162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/categories?post=162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/krish\/wp-json\/wp\/v2\/tags?post=162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}