{"id":32,"date":"2020-06-22T16:21:30","date_gmt":"2020-06-22T16:21:30","guid":{"rendered":"https:\/\/blogs.scummvm.org\/npjg\/?p=32"},"modified":"2022-05-23T16:36:03","modified_gmt":"2022-05-23T16:36:03","slug":"making-progress","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/npjg\/2020\/06\/22\/making-progress\/","title":{"rendered":"Making progress"},"content":{"rendered":"<p>Hey guys!<\/p>\n<p>I started off last week attempting to get the infamous\u00a0<code>zoomBox<\/code>\u00a0working with the new rendering pipeline I wrote for our Director engine. A zoomBox effect is the classic window movement animation in classic Mac OS: When you open or close a window, you see many spectral rectangles in between the window\u2019s origin and destination. Even though I haven\u2019t seen any games actually use it, this function was the first motivation I was given reworking the rendering pipeline. Before, we could not look ahead into the next frame to get the dimensions of a sprite.<\/p>\n<p>Moreover, before, we had to cache a copy of the screen so it could be restored after the animation was finished. I used the same trick that it seemed Mac OS used with many interface elements, though. As the animation was drawn, the pixels of the rectangle were inverted, and then on a second pass they were inverted back. Just like matrices, invertible animations are quite nice.<\/p>\n<p>I also modified much of my code from the previous weeks to get a major part of our benchmark kit, Macromedia\u2019s own The Apartment, working properly. Normally, when a sprite is puppeted, its position is not updated from the score. So animated puppeted sprites are impossible, which made my job a bit easier. There is another case, however, that required a major rework of the rendering code I had already written. I didn\u2019t realize that with a sprite simply declared moveable, rather than a full puppet, it can be animated. Thus, we could no longer store the current point in each sprite as it flew by over the playback head \u2013 that would give us very strange jitters. Instead, location information needed to be consistent across frames. So, another level of abstraction was needed, a\u00a0<code>Channel<\/code>\u00a0class that would keep track of this intraframe information.<\/p>\n<p>It feels strange to summarize into a single sentence a task that took me several hours to complete. But, I suppose this is the very nature of software engineering. Over the past weeks, I have learned very much about being patient with myself and taking breaks when I need to. I\u2019m going to try to be a bit better about working for a long time on the weekends, even though I find it very enjoyable.<\/p>\n<p>On Wednesday, I think it was, djsrv fixed a Lingo issue and I fixed several rendering\\widget issues that allowed me to get more than a quarter of the way into Warlock \u2013 and even then, it was my choice to stop and not a misplaced null pointer\u2019s. \ud83d\ude42 This is an exciting progress milestone for us. Ah, the beautiful Belshazzar!<\/p>\n<figure><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blogs.scummvm.org\/npjg\/wp-content\/uploads\/sites\/30\/2022\/05\/making-progress-2.png\" \/><\/figure>\n<p>On Friday, I didn\u2019t commit much because I got distracted by an engine I had mentioned briefly before, the Media Station engine. Many of the Disney Animated Storybook CD-ROMs were developed with this engine, as well as one of the few Living Books titles that didn\u2019t use Mohawk. Strangerke warned me a few weeks ago that the executable was very complicated, but I found some success using moralrecordings\u2019\u00a0<a href=\"https:\/\/github.com\/moralrecordings\/mrcrowbar\">Mr. Crowbar<\/a>\u00a0to peer inside the assets. They seemed like easy RIFF, but nearly all the chunks seem to be named some variation of \u201cigod\u201d and there\u2019s some extra structure hidden inside the chunks. Bitmap and waveform data is clearly visible, though, so there\u2019s probably not far to go to understand the format. After GSoC is over, I would hope stay on and keep working with this engine \u2013 plus Director, of course.<\/p>\n<p>Anyway, I\u2019d better get back to Director. I\u2019m now working on getting all of the inks (blitting modes) playing nicely together. Graphics programming has proven pretty neat, even if it often goes slowly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey guys! I started off last week attempting to get the infamous\u00a0zoomBox\u00a0working with the new rendering pipeline I wrote for our Director engine. A zoomBox effect is the classic window movement animation in classic Mac OS: When you open or close a window, you see many spectral rectangles in between the window\u2019s origin and destination. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-32","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/posts\/32","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/comments?post=32"}],"version-history":[{"count":2,"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/posts\/32\/revisions"}],"predecessor-version":[{"id":56,"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/posts\/32\/revisions\/56"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/media?parent=32"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/categories?post=32"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/npjg\/wp-json\/wp\/v2\/tags?post=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}