{"id":16,"date":"2026-05-26T08:30:31","date_gmt":"2026-05-26T08:30:31","guid":{"rendered":"https:\/\/blogs.scummvm.org\/priyanshu\/?p=16"},"modified":"2026-05-26T08:31:52","modified_gmt":"2026-05-26T08:31:52","slug":"week-1","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/priyanshu\/2026\/05\/26\/week-1\/","title":{"rendered":"Week 1"},"content":{"rendered":"<p>We are into the first week and I have a lot of work to brief about which also includes the work done before the official start of gsoc.<\/p>\n<p>For ibass, I started off by adding it to the detection table. Unlike og bass, ibass doesn&#8217;t have a separate file for the dinner table entries. Hence, adding it to the skyVersions[] array seemed a bit incorrect. So, I created a separate <a href=\"https:\/\/github.com\/Priyanshu3820\/scummvm\/blob\/a492d7f23380bc3dd62bfee3da4b9afc6504793c\/engines\/sky\/detection.cpp#L35\">PlainGameDescriptor<\/a> for ibass.<\/p>\n<p>After the detection, the next milestone was to make the game start. But the problem was, the UI icons used in ibass are 32-bit images but our sky engine was 8-bit. So, what I did to solve this mismatch was turning the engine into a 32-bit one, keeping the game screen separately at 8-bit and clapped them together before the output.<\/p>\n<p>I have skipped the intro for now because it has a separate video for the intro(and for the outro too). I have saved it for later.<\/p>\n<p>The next natural step was to overlay the icons. To load the bitmaps, I ported the loadAnim() function from the ibass sources and wrote an icon renderer that we then call from our screen <a href=\"https:\/\/github.com\/Priyanshu3820\/scummvm\/blob\/a492d7f23380bc3dd62bfee3da4b9afc6504793c\/engines\/sky\/screen.cpp#L257\">compositor<\/a>. And finally, we have the icons rendered on our screen-<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-17\" src=\"https:\/\/blogs.scummvm.org\/priyanshu\/wp-content\/uploads\/sites\/85\/2026\/05\/Screenshot-from-2026-05-26-13-34-46-300x241.png\" alt=\"\" width=\"300\" height=\"241\" srcset=\"https:\/\/blogs.scummvm.org\/priyanshu\/wp-content\/uploads\/sites\/85\/2026\/05\/Screenshot-from-2026-05-26-13-34-46-300x241.png 300w, https:\/\/blogs.scummvm.org\/priyanshu\/wp-content\/uploads\/sites\/85\/2026\/05\/Screenshot-from-2026-05-26-13-34-46.png 643w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Next step was to trigger the respective actions for those icons. Upon a click, it incorporates something called &#8220;_actionFlash&#8221;. When we click, the &#8220;_actionFlashTime&#8221; starts decrementing if _actionFlash is set. So, it gives a flickering effect to the icon until _actionFlashTime becomes zero. It happens like <a href=\"https:\/\/github.com\/Priyanshu3820\/scummvm\/blob\/a492d7f23380bc3dd62bfee3da4b9afc6504793c\/engines\/sky\/mouse.cpp#L272\">this<\/a>. As you can see, when _actionFlashTime is even, the icon is cleared and vice versa. In the game, it looks like this-<\/p>\n<div style=\"width: 580px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-16-1\" width=\"580\" height=\"465\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/webm\" src=\"https:\/\/blogs.scummvm.org\/priyanshu\/wp-content\/uploads\/sites\/85\/2026\/05\/Screencast-from-2026-05-26-13-52-30.webm?_=1\" \/><a href=\"https:\/\/blogs.scummvm.org\/priyanshu\/wp-content\/uploads\/sites\/85\/2026\/05\/Screencast-from-2026-05-26-13-52-30.webm\">https:\/\/blogs.scummvm.org\/priyanshu\/wp-content\/uploads\/sites\/85\/2026\/05\/Screencast-from-2026-05-26-13-52-30.webm<\/a><\/video><\/div>\n<p>Thanks for reading \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are into the first week and I have a lot of work to brief about which also includes the work done before the official start of gsoc. For ibass, I started off by adding it to the detection table. Unlike og bass, ibass doesn&#8217;t have a separate file for the dinner table entries. Hence, [&hellip;]<\/p>\n","protected":false},"author":33,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-16","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/posts\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":2,"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/posts\/16\/revisions"}],"predecessor-version":[{"id":20,"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/posts\/16\/revisions\/20"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/media?parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/categories?post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/priyanshu\/wp-json\/wp\/v2\/tags?post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}