{"id":10,"date":"2018-04-27T10:36:27","date_gmt":"2018-04-27T10:36:27","guid":{"rendered":"https:\/\/blogs.scummvm.org\/drenn1\/?p=10"},"modified":"2022-05-24T10:39:07","modified_gmt":"2022-05-24T10:39:07","slug":"google-summer-of-code-2018-boldly-going-where-one-team-has-gone-before","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/drenn1\/2018\/04\/27\/google-summer-of-code-2018-boldly-going-where-one-team-has-gone-before\/","title":{"rendered":"Google Summer of Code 2018: Boldly going where one team has gone before"},"content":{"rendered":"<p>This summer, I\u2019ve been accepted into Google Summer of Code to work on the\u00a0<a href=\"https:\/\/www.scummvm.org\/\">ScummVM<\/a>\u00a0project. My task: to reverse-engineer\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Star_Trek:_25th_Anniversary_(computer_game)\">Star Trek: 25th Anniversary<\/a>\u00a0and rewrite the game\u2019s code in C++ as part of ScummVM\u2019s framework.<\/p>\n<p>Why did I apply to ScummVM? Well, to me, it sounded a lot more interesting than traditional coding projects; I get a kick out of picking apart a game\u2019s code (as I\u2019ve been doing with\u00a0<a href=\"https:\/\/github.com\/drenn1\/ages-disasm\">Oracle of Ages<\/a>\u00a0for the last 3 years), so this should be an enjoyable summer for me.<\/p>\n<p>I\u2019m not quite starting from scratch &#8211; an engine with some basic file handling and image display was started by\u00a0<a href=\"https:\/\/clone2727.blogspot.ca\/\">clone2727<\/a> several years ago &#8211; but the vast majority of the work remains to be done. I got started on this while working on my proposal, and implemented the sprite and text systems in the ScummVM engine (see below).<\/p>\n<div>\n<figure class=\"image\"><figcaption><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blogs.scummvm.org\/drenn1\/wp-content\/uploads\/sites\/62\/2022\/05\/gsoc-introduction-textsystem.png\" \/><\/figcaption><\/figure>\n<\/div>\n<p>The task of rewriting the game is complicated by the fact that the game appears to have a great deal of hardcoded logic; unlike more \u201csophisticated\u201d engines which have their own scripting languages, everything here appears to be done with x86 assembly. On one hand, I\u2019ll need to rewrite all of this logic, which is a lot of work. On the other hand, all of the game\u2019s logic will be documented when it\u2019s done, so bugfixes will be easier to implement after the fact.<\/p>\n<p>I\u2019ll be posting weekly updates here as I proceed, at least once the \u201ccoding phase\u201d starts (May 14th). My work can be found in\u00a0<a href=\"https:\/\/github.com\/Drenn1\/scummvm\/tree\/startrek\">this repository<\/a>.<\/p>\n<p>Big thanks to Google and to the ScummVM team for selecting me.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This summer, I\u2019ve been accepted into Google Summer of Code to work on the\u00a0ScummVM\u00a0project. My task: to reverse-engineer\u00a0Star Trek: 25th Anniversary\u00a0and rewrite the game\u2019s code in C++ as part of ScummVM\u2019s framework. Why did I apply to ScummVM? Well, to me, it sounded a lot more interesting than traditional coding projects; I get a kick [&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-10","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/posts\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":1,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":91,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/posts\/10\/revisions\/91"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/media?parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/categories?post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/tags?post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}