{"id":85,"date":"2025-08-25T20:44:25","date_gmt":"2025-08-25T20:44:25","guid":{"rendered":"https:\/\/blogs.scummvm.org\/prime\/?p=85"},"modified":"2025-08-25T20:44:25","modified_gmt":"2025-08-25T20:44:25","slug":"week-12-keymapper-support-for-hypno-and-dungeon-master","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/prime\/2025\/08\/25\/week-12-keymapper-support-for-hypno-and-dungeon-master\/","title":{"rendered":"Week 12: Keymapper Support for Hypno and Dungeon Master"},"content":{"rendered":"<p data-start=\"150\" data-end=\"269\">This week I worked on the <strong data-start=\"176\" data-end=\"185\">Hypno<\/strong> and <strong data-start=\"190\" data-end=\"208\">Dungeon Master<\/strong> engines. I also got my <a href=\"https:\/\/github.com\/scummvm\/scummvm\/pull\/6879\"><strong data-start=\"232\" data-end=\"243\">Chamber<\/strong><\/a> keymapper PR merged \ud83c\udf89.<\/p>\n<hr data-start=\"271\" data-end=\"274\" \/>\n<h4 data-start=\"276\" data-end=\"295\">Hypno Engine<\/h4>\n<p data-start=\"296\" data-end=\"452\">Working on the Hypno engine felt a bit nostalgic\u2014it was actually the <strong data-start=\"365\" data-end=\"402\">first engine I touched in ScummVM<\/strong> when I fixed a small bug as an intake task for GSoC.<\/p>\n<p data-start=\"454\" data-end=\"634\">The engine supports three different games, each with its own input handling. Because of this, I had to create <strong data-start=\"564\" data-end=\"598\">separate keymaps for each game<\/strong>, rather than a single shared one.<\/p>\n<p data-start=\"636\" data-end=\"722\">Apart from that, the implementation was fairly straightforward. The main tasks were:<\/p>\n<ul data-start=\"724\" data-end=\"872\">\n<li data-start=\"724\" data-end=\"815\">\n<p data-start=\"726\" data-end=\"815\">Disabling the keymapper in certain sections where the game uses <strong data-start=\"790\" data-end=\"813\">full keyboard input<\/strong><\/p>\n<\/li>\n<li data-start=\"816\" data-end=\"872\">\n<p data-start=\"818\" data-end=\"872\">Enabling\/disabling keymaps for some of the <strong data-start=\"861\" data-end=\"870\">menus<\/strong><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"874\" data-end=\"971\">Nothing particularly tricky, but it was nice to revisit the engine where my GSoC journey began.<\/p>\n<hr data-start=\"973\" data-end=\"976\" \/>\n<h4 data-start=\"978\" data-end=\"1006\">Dungeon Master Engine<\/h4>\n<p data-start=\"1007\" data-end=\"1244\">Dungeon Master was another <strong data-start=\"1034\" data-end=\"1056\">unannounced engine<\/strong> that I added keymapper support to. Fortunately, it didn\u2019t have any blocking bugs or missing features, so I was able to test it thoroughly without issues.<\/p>\n<p data-start=\"1246\" data-end=\"1385\">The engine came with a <strong data-start=\"1269\" data-end=\"1301\">decent number of keys to map<\/strong>, but overall the process was smooth and didn\u2019t pose any significant difficulties.<\/p>\n<hr data-start=\"1387\" data-end=\"1390\" \/>\n<h4 data-start=\"1392\" data-end=\"1406\">Wrap-Up<\/h4>\n<p data-start=\"1407\" data-end=\"1422\">This week, I:<\/p>\n<ul data-start=\"1424\" data-end=\"1524\">\n<li data-start=\"1424\" data-end=\"1488\">\n<p data-start=\"1426\" data-end=\"1488\">Added keymapper support for <strong data-start=\"1454\" data-end=\"1463\">Hypno<\/strong> and <strong data-start=\"1468\" data-end=\"1486\">Dungeon Master<\/strong><\/p>\n<\/li>\n<li data-start=\"1489\" data-end=\"1524\">\n<p data-start=\"1491\" data-end=\"1524\">Got my <a href=\"https:\/\/github.com\/scummvm\/scummvm\/pull\/6879\"><strong data-start=\"1498\" data-end=\"1509\">Chamber<\/strong><\/a> PR merged \ud83c\udf89<\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This week I worked on the Hypno and Dungeon Master engines. I also got my Chamber keymapper PR merged \ud83c\udf89. Hypno Engine Working on the Hypno engine felt a bit nostalgic\u2014it was actually the first engine I touched in ScummVM when I fixed a small bug as an intake task for GSoC. The engine supports [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-85","post","type-post","status-publish","format-standard","hentry","category-week-12"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/posts\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":1,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/posts\/85\/revisions"}],"predecessor-version":[{"id":86,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/posts\/85\/revisions\/86"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/media?parent=85"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/categories?post=85"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/tags?post=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}