{"id":80,"date":"2008-08-19T11:19:51","date_gmt":"2008-08-19T09:19:51","guid":{"rendered":"https:\/\/blogs.scummvm.org\/buddha\/?p=80"},"modified":"2022-04-15T12:42:05","modified_gmt":"2022-04-15T10:42:05","slug":"summers-end","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/buddha\/2008\/08\/19\/summers-end\/","title":{"rendered":"Summer\u2019s end"},"content":{"rendered":"<p>Hi! <a href=\"http:\/\/code.google.com\/opensource\/gsoc\/2008\/faqs.html#0.1_timeline\">Google Summer of Code 2008 just ended<\/a> and I thought that it\u2019d be good to make a new blog entry about where I got during the last days of <a href=\"http:\/\/en.wikipedia.org\/wiki\/Google_Summer_of_Code\">GSoC<\/a> and talk a bit about the overall experience.<\/p>\n<h3>Status update<\/h3>\n<p>The problem I was having with player movement last time really was just that, the player movement routine (executePlayerInput) was incomplete. Once I reverse engineered Operation Stealth\u2019s version of it and modified ScummVM\u2019s current implementation (<a href=\"https:\/\/github.com\/scummvm\/scummvm\/commit\/c2c2e940d0fc3960529e757195190568adb34580\" target=\"_blank\" rel=\"noopener\">r33872<\/a>) of that function a bit I got the swimming working and I could get to the girl and free her:<\/p>\n<p><!--more--><\/p>\n<figure id=\"attachment_82\" aria-describedby=\"caption-attachment-82\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-freeing_girl.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-82\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-freeing_girl-300x225.png\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-freeing_girl-300x225.png 300w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-freeing_girl.png 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-82\" class=\"wp-caption-text\">Freeing the girl in ScummVM<\/figcaption><\/figure>\n<p>I might as well tell a bit about what happens in the game after that:<\/p>\n<p>The player character and the girl swim to the surface and are rescued by a boat:<\/p>\n<figure id=\"attachment_83\" aria-describedby=\"caption-attachment-83\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-being_rescued_by_boat.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-83\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-being_rescued_by_boat-300x225.png\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-being_rescued_by_boat-300x225.png 300w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-being_rescued_by_boat.png 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-83\" class=\"wp-caption-text\">Being rescued by boat<\/figcaption><\/figure>\n<p>The story goes on and they meet The Movement for The Liberation of Santa Paragua for the first time:<\/p>\n<figure id=\"attachment_85\" aria-describedby=\"caption-attachment-85\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-meeting_the_movement.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-85\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-meeting_the_movement-300x225.png\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-meeting_the_movement-300x225.png 300w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-meeting_the_movement.png 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-85\" class=\"wp-caption-text\">Meeting the movement<\/figcaption><\/figure>\n<p>Then they leave to infiltrate a palace:<\/p>\n<figure id=\"attachment_86\" aria-describedby=\"caption-attachment-86\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-leaving_for_the_palace.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-86\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-leaving_for_the_palace-300x225.png\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-leaving_for_the_palace-300x225.png 300w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-leaving_for_the_palace.png 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-86\" class=\"wp-caption-text\">Leaving for the palace<\/figcaption><\/figure>\n<p>And enroute to the palace some masking bugs ?<\/p>\n<figure id=\"attachment_87\" aria-describedby=\"caption-attachment-87\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-enroute_to_palace-masking_bugs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-87\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-enroute_to_palace-masking_bugs-300x225.png\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-enroute_to_palace-masking_bugs-300x225.png 300w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-enroute_to_palace-masking_bugs.png 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-87\" class=\"wp-caption-text\">Masking bugging while enroute to the palace<\/figcaption><\/figure>\n<p>And then after a cutscene at the palace there\u2019s another arcade sequence: A labyrinth.<\/p>\n<h4>The labyrinth<\/h4>\n<p>Okay, so far I\u2019ve gotten to the second arcade sequence which is a labyrinth:<\/p>\n<figure id=\"attachment_88\" aria-describedby=\"caption-attachment-88\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-88\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth-300x225.png\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth-300x225.png 300w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth.png 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-88\" class=\"wp-caption-text\">First labyrinth<\/figcaption><\/figure>\n<p>But there are some showstopping problems here. The player can be controlled but the doors that should revolve when walked against don\u2019t revolve and so the arcade sequence is not yet completable.<\/p>\n<p>I played Operation Stealth using <a href=\"http:\/\/www.dosbox.com\/\">DOSBox<\/a> to the labyrinth and used <a href=\"http:\/\/vogons.zetafleet.com\/viewtopic.php?t=3944\">DOSBox\u2019s debugger<\/a> to look for the collision data page (And I found it! Yay!) and dumped it to a binary file. What I wanted to do was to compare the original\u2019s collision data page to the ScummVM\u2019s version in the labyrinth to see if there were any differences that could be breaking the gameplay. And voila, there were! Here are some pictures:<\/p>\n<figure id=\"attachment_89\" aria-describedby=\"caption-attachment-89\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth_collision_page_data_from_dosbox.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-89\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth_collision_page_data_from_dosbox-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth_collision_page_data_from_dosbox-300x188.png 300w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth_collision_page_data_from_dosbox.png 320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-89\" class=\"wp-caption-text\">First labyrinth&#8217;s collision data from DOSBox<\/figcaption><\/figure>\n<figure id=\"attachment_90\" aria-describedby=\"caption-attachment-90\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth_collision_page_data.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-90\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth_collision_page_data-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth_collision_page_data-300x188.png 300w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/scummvm-operation_stealth-first_labyrinth_collision_page_data.png 320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-90\" class=\"wp-caption-text\">First labyrinth&#8217;s collision data from ScummVM<\/figcaption><\/figure>\n<p>By the way the collision data page can currently be viewed in the Cine engine by pressing F11 (I added that in <a href=\"https:\/\/github.com\/scummvm\/scummvm\/commit\/e56359eac0d994c18e79a8a3a19acfcbedc0e0fb\" target=\"_blank\" rel=\"noopener\">r33877<\/a>).<\/p>\n<p>I tried loading the collision data I dumped from DOSBox to Cine\u2019s collision data page and yes, I got the doors to revolve! But alas, they didn\u2019t yet work totally correctly, sometimes you could just simply walk through a door like it was thin air and sometimes a door would shake between two frames of animation a bit weirdly.<\/p>\n<p>So it\u2019s looking like at least there\u2019s something wrong with how Cine currently manages the collision data or how it\u2019s loaded. I checked the collision data loading routine <a href=\"http:\/\/scummvm.svn.sourceforge.net\/viewvc\/scummvm\/scummvm\/trunk\/engines\/cine\/bg.cpp?revision=33669&amp;view=markup#l_65\">loadCtOS<\/a> and the data conversion routine <a href=\"http:\/\/scummvm.svn.sourceforge.net\/viewvc\/scummvm\/scummvm\/trunk\/engines\/cine\/gfx.cpp?revision=33976&amp;view=markup#l_1669\">gfxConvertSpriteToRaw<\/a> that it uses. It looks like the gfxConvertSpriteToRaw is indeed correct, I reverse engineered a version of it myself from Operation Stealth\u2019s disassembly, tried using my own version of it but it didn\u2019t seem to make a difference at all. So that particular routine doesn\u2019t look to be the culprit here.<\/p>\n<h4>Release testing related bugfixes<\/h4>\n<p>With the next stable version of ScummVM being prepared and release testing in progress I got some Future Wars related bug reports and did some bugfixing:<\/p>\n<ul>\n<li>Adlib sound related bugfix to fix a crash when teleporting to the swamp (<a href=\"https:\/\/github.com\/scummvm\/scummvm\/commit\/f055cf5c3edd202bd8294edca3e0df98d22edffa\" target=\"_blank\" rel=\"noopener\">r33935<\/a> trunk, r33937 0.12.0)<\/li>\n<li>Fix for overparanoid monks beating player unconscious (<a href=\"https:\/\/github.com\/scummvm\/scummvm\/commit\/cc82aeb18d9c5945560bdc2251d5b3c7147db9a5\" target=\"_blank\" rel=\"noopener\">r33950<\/a> trunk, r33951 0.12.0)<\/li>\n<li>Fix for crashing when examing rubble above a manhole (<a href=\"https:\/\/github.com\/scummvm\/scummvm\/commit\/a32cae809b5b12c592510285f09e125f7bc9415c\" target=\"_blank\" rel=\"noopener\">r33967<\/a> trunk, r33966 0.12.0)<\/li>\n<\/ul>\n<p>And with those fixes in place Future Wars\u2019s English DOS floppy version should now be completable using the 0.12.0 branch.<\/p>\n<h4>Reported Future Wars bugs still unfixed<\/h4>\n<p>There are some regressions and bugs still left in the Cine engine though:<\/p>\n<ul>\n<li><a href=\"https:\/\/sourceforge.net\/tracker\/index.php?func=detail&amp;aid=2057656&amp;group_id=37116&amp;atid=418820\">Bug #2057656<\/a>: FW: Assert during demo (regression)<\/li>\n<li><a href=\"https:\/\/sourceforge.net\/tracker\/index.php?func=detail&amp;aid=2057637&amp;group_id=37116&amp;atid=418820\">Bug #2057637<\/a>: FW: Spaceship glitches in demo (regression)<\/li>\n<li><a href=\"https:\/\/sourceforge.net\/tracker\/index.php?func=detail&amp;aid=2057619&amp;group_id=37116&amp;atid=418820\">Bug #2057619<\/a>: FW: Glitches in title display of demo (regression)<\/li>\n<li><a href=\"https:\/\/sourceforge.net\/tracker\/index.php?func=detail&amp;aid=2055912&amp;group_id=37116&amp;atid=418820\">Bug #2055912<\/a>: FW: incrustSprite fails on savegame loading<\/li>\n<li><a href=\"https:\/\/sourceforge.net\/tracker\/index.php?func=detail&amp;aid=2055836&amp;group_id=37116&amp;atid=418820\">Bug #2055836<\/a>: FW: Music is not restarted when loading a saved game<\/li>\n<li><a href=\"https:\/\/sourceforge.net\/tracker\/index.php?func=detail&amp;aid=2019344&amp;group_id=37116&amp;atid=418820\">Bug #2019344<\/a>: FW: crash with Amiga Italian version (photocopy room)<\/li>\n<\/ul>\n<h3>What I learned during this summer<\/h3>\n<p>Ok, enough about the status update, here are some points I\u2019d like to make about what I learned during this <em>summer of code<\/em>:<\/p>\n<ul>\n<li>A lot about reverse engineering \u2013 I feel a lot more competent in it now than I did before this summer \u2013 and in particular that <a href=\"http:\/\/www.hex-rays.com\/idapro\/freefiles\/ida5preview.htm\">IDA\u2019s graph view<\/a> is simply essential, I wouldn\u2019t dream about going back to not using it when reverse engineering something. It\u2019s just absolutely essential, no doubt about that.<\/li>\n<li>Tried <a href=\"http:\/\/valgrind.org\/\">Valgrind<\/a> for the first time and it looks like a good tool to have around when fixing memory corruption problems. I recommend giving it a go if you have memory corruption problems in a software you\u2019re developing!<\/li>\n<li>Tried <a href=\"http:\/\/vogons.zetafleet.com\/viewtopic.php?t=3944\">DOSBox\u2019s debugger<\/a> for the first time and it looks also to be a useful piece of software, although I probably don\u2019t know half of what can be done with it yet.<\/li>\n<li>That I\u2019m not always as productive as I might like to, my effort changes with the tasks I\u2019m doing. So knowing how to focus and get things done even though the task might not be to my current liking is something I haven\u2019t yet truly mastered. I\u2019ve heard that if you are completely present in a situation and totally focused on something then that something *becomes* interesting, whatever it may be. Now that\u2019d be a lifesaving thing to know how to do \u2013 maybe some meditation (e.g. <a href=\"http:\/\/en.wikipedia.org\/wiki\/Zazen\">Zazen<\/a>) would be in order?<\/li>\n<li>That I probably take my work too seriously at times: Getting something working felt great at times and not getting something working felt awful at other times. Or maybe it\u2019s simply human nature to feel like that? Dunno. Anyway, I should probably know when to relax and let go, simply do and not measure my worth by what I get done but by the effort I put in regardless of the outcome (Yeah, quite the Gandhi talking :-)).<\/li>\n<\/ul>\n<h4>What\u2019s so good about this reverse engineering thing anyway?<\/h4>\n<p>All in all this summer was a learning experience for me. What I found particularly interesting was the reverse engineering bit, taking a function in disassembly, looking at how big and intractable it looks and then starting on it, bit by bit, part by part making it more and more understandable until what you have in front of you is something you actually are able to understand. An example:<\/p>\n<figure id=\"attachment_94\" aria-describedby=\"caption-attachment-94\" style=\"width: 576px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-lowest_abstraction_level.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-94\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-lowest_abstraction_level.png\" alt=\"\" width=\"576\" height=\"746\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-lowest_abstraction_level.png 576w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-lowest_abstraction_level-232x300.png 232w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/a><figcaption id=\"caption-attachment-94\" class=\"wp-caption-text\">This is the graph of executePlayerInput function without any work done on it yet.<\/figcaption><\/figure>\n<figure id=\"attachment_95\" aria-describedby=\"caption-attachment-95\" style=\"width: 1577px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-quite_high_abstraction_level.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-95\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-quite_high_abstraction_level.png\" alt=\"\" width=\"1577\" height=\"670\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-quite_high_abstraction_level.png 1577w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-quite_high_abstraction_level-300x127.png 300w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-quite_high_abstraction_level-1024x435.png 1024w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-quite_high_abstraction_level-768x326.png 768w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-quite_high_abstraction_level-1536x653.png 1536w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-quite_high_abstraction_level-1200x510.png 1200w\" sizes=\"auto, (max-width: 1577px) 100vw, 1577px\" \/><\/a><figcaption id=\"caption-attachment-95\" class=\"wp-caption-text\">Here&#8217;s how the function looks after quite a bit of abstracting done on it.<\/figcaption><\/figure>\n<figure id=\"attachment_96\" aria-describedby=\"caption-attachment-96\" style=\"width: 428px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-highest_abstraction_level.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-96\" src=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-highest_abstraction_level.png\" alt=\"\" width=\"428\" height=\"186\" srcset=\"https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-highest_abstraction_level.png 428w, https:\/\/blogs.scummvm.org\/buddha\/wp-content\/uploads\/sites\/16\/2008\/08\/operation_stealth-executeplayerinput-ida-graph_view-highest_abstraction_level-300x130.png 300w\" sizes=\"auto, (max-width: 428px) 100vw, 428px\" \/><\/a><figcaption id=\"caption-attachment-96\" class=\"wp-caption-text\">And here&#8217;s the highest abstraction level graph that I made of the function.<\/figcaption><\/figure>\n<p>It\u2019s quite a bit of work, I tell you, but it\u2019s quite riveting (There\u2019s that focus thing again. I mean, just take a look at what Merriam-Webster says about the word <a href=\"http:\/\/www.merriam-webster.com\/dictionary\/riveting\">riveting<\/a>: <span class=\"sense_content\">\u201chaving the power to fix the attention\u201d). Yeah!<\/span><\/p>\n<h3>What about the future?<\/h3>\n<p>I\u2019m still committed to making <a href=\"http:\/\/en.wikipedia.org\/wiki\/Operation_Stealth\">Operation Stealth<\/a> completable although it\u2019ll be outside this <a href=\"http:\/\/en.wikipedia.org\/wiki\/Google_Summer_of_Code\">GSoC<\/a>. I\u2019ll be fixing some of the <a href=\"http:\/\/wiki.scummvm.org\/index.php\/Cine\">Cine<\/a> engine related bugs for the upcoming 0.12.0 release of <a href=\"http:\/\/www.scummvm.org\/\">ScummVM<\/a> too.<\/p>\n<h3>Closing words<\/h3>\n<p>I\u2019d like to congratulate everyone who made it to the end of Google Summer of Code 2008! It was an interesting ride, glad so many people with such diverse projects could get along for it. Thanks Google!<\/p>\n<p>And last but not least thanks to my mentor <a href=\"http:\/\/wiki.scummvm.org\/index.php\/User:Sev\">Eugene<\/a> for guiding me to a more productive direction in my work at times during this summer. His sane voice was the voice of practicality and, I imagine, experience.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi! Google Summer of Code 2008 just ended and I thought that it\u2019d be good to make a new blog entry about where I got during the last days of GSoC and talk a bit about the overall experience. Status update The problem I was having with player movement last time really was just that, [&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-80","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/posts\/80","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/comments?post=80"}],"version-history":[{"count":9,"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/posts\/80\/revisions"}],"predecessor-version":[{"id":108,"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/posts\/80\/revisions\/108"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/media?parent=80"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/categories?post=80"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/buddha\/wp-json\/wp\/v2\/tags?post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}