{"id":120,"date":"2018-08-12T11:07:50","date_gmt":"2018-08-12T11:07:50","guid":{"rendered":"https:\/\/blogs.scummvm.org\/drenn1\/?p=120"},"modified":"2022-05-24T11:08:29","modified_gmt":"2022-05-24T11:08:29","slug":"gsoc-2018-wrapup-and-final-mission-details","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/drenn1\/2018\/08\/12\/gsoc-2018-wrapup-and-final-mission-details\/","title":{"rendered":"GSoC 2018 Wrapup (and final mission details)"},"content":{"rendered":"<p>Google Summer of Code officially ended last Monday, August 6th. My project was to reimplement\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Star_Trek:_25th_Anniversary_(computer_game)\">Star Trek: 25th Anniversary<\/a>\u00a0in ScummVM.<\/p>\n<p>The project involved reimplementation of all of the hardcoded game logic, since it doesn\u2019t have a scripting language. In my original proposal, I conservatively estimated that I would finish only the first 4 away missions, of 7 in total. In fact, I managed to finish all 7 (though it took a few days past the official end time).<\/p>\n<p>That doesn\u2019t mean it\u2019s done though; the away missions are only half of the game, albeit the larger and more interesting half. There also remains the pseudo-3D space combat element, which I dabbled with, but am still nowhere near done with. I\u2019m hoping to be able to finish that by the time summer\u2019s over, though I can\u2019t make any guarantees on that.<\/p>\n<p>So: the end result is that, right now, you can play all 7 away missions in Star Trek: 25th Anniversary in ScummVM. However, without the bridge sections or space combat, players will be missing the context of why you\u2019re on the away mission in the first place.<\/p>\n<p>Here is a more comprehensive list of what remains to be done in the long-term:<\/p>\n<ul>\n<li>Space combat, segments taking place on the bridge (finish implementing 25th anniversary)<\/li>\n<li>Support for non-DOS versions (mac, amiga) and other languages (french, german)<\/li>\n<li>Support for Judgment Rites (probably not happening too soon unfortunately)<\/li>\n<\/ul>\n<h2 id=\"get-the-code\">Get the code<\/h2>\n<p>See my commits\u00a0<a href=\"https:\/\/github.com\/scummvm\/scummvm\/commits?author=Drenn1\">here<\/a>.<\/p>\n<p>To compile ScummVM with the star trek engine, run:<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-bash\" data-lang=\"bash\">.\/configure <span class=\"nt\">--enable-engine<\/span><span class=\"o\">=<\/span>startrek\r\nmake<\/code><\/pre>\n<\/figure>\n<p>Then, you will need to provide ScummVM with the original DOS game data files, and copy the \u201cvoc\u201d folder from the CD into the same folder. (If you don\u2019t do this there will be no voice acting and missing audio.)<\/p>\n<h2 id=\"the-final-mission\">The final mission<\/h2>\n<p>Continue reading for the regular postmortem on the mission I just finished working on. Spoiler alert.<\/p>\n<p>In this mission, the USS Republic, which you fought in a mock battle at the very beginning of the game, gets demolished by a mysterious assailant.<\/p>\n<div>\n<figure class=\"image\"><img decoding=\"async\" src=\"..\/images\/gsoc-wrapup-republic.png\" alt=\"\" \/><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blogs.scummvm.org\/drenn1\/wp-content\/uploads\/sites\/62\/2022\/05\/gsoc-wrapup-republic.png\" \/><figcaption><\/figcaption><\/figure>\n<\/div>\n<p>There are reports of softlocks in this mission. One is that after you lower the shields, the Elasi immediately beam over before you can shoot them, rendering the mission unbeatable. I haven\u2019t verified this, but I can see why it would happen based on reading the code; the timer that\u2019s supposed to make them beam over before you raise the shields, also applies after you lower the shields! So, if you lower the shields much more quickly than the developers expected, that counter may reach 0 and cause the elasi to beam over.<\/p>\n<p>There\u2019s another reported softlock, though, that doesn\u2019t seem to be a real softlock. For some background, in the auxiliary control room, you\u2019re supposed to either \u201cuse\u201d or \u201clook at\u201d a specific part of a console in order to see that the torpedo loading mechanism is jammed. This triggers an event flag necessary to complete the mission. A GameFAQs guide claims that under certain circumstances, it becomes impossible to do this, which is only half-true.<\/p>\n<p>Once you power up the shields, it becomes impossible to power up the weapons until later on. The result is that you cannot \u201cuse\u201d the weapon system to trigger this event flag; however, you can still \u201clook\u201d at it to do so.<\/p>\n<p>It\u2019s all rather confusing &#8211; and it doesn\u2019t help that you need to click on a very specific part of the console for any of this to work &#8211; but I haven\u2019t found a softlock here. Though if I\u2019m mistaken I\u2019ll gladly fix any further softlocks.<\/p>\n<p>Interestingly though, in the hallway that links the two turbolifts together, using Spock on the debris at the end of the hall, when the support beam is in place, would crash the game, because code execution actually derails into executing data. Those kind of mistakes can happen when writing raw assembly\u2026<\/p>\n<p>Anyway, that\u2019s the most interesting stuff I\u2019ve found in the final mission. I may make more infrequent blog posts as I work on the rest of the game, though don\u2019t expect the almost-weekly updates I\u2019ve been providing up until now.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Google Summer of Code officially ended last Monday, August 6th. My project was to reimplement\u00a0Star Trek: 25th Anniversary\u00a0in ScummVM. The project involved reimplementation of all of the hardcoded game logic, since it doesn\u2019t have a scripting language. In my original proposal, I conservatively estimated that I would finish only the first 4 away missions, of [&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-120","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/posts\/120","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=120"}],"version-history":[{"count":1,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/posts\/120\/revisions"}],"predecessor-version":[{"id":121,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/posts\/120\/revisions\/121"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/media?parent=120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/categories?post=120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/drenn1\/wp-json\/wp\/v2\/tags?post=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}