{"id":38,"date":"2018-06-03T19:01:30","date_gmt":"2018-06-03T19:01:30","guid":{"rendered":"https:\/\/blogs.scummvm.org\/pantherengine\/?p=38"},"modified":"2022-05-23T19:05:54","modified_gmt":"2022-05-23T19:05:54","slug":"week-3","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/pantherengine\/2018\/06\/03\/week-3\/","title":{"rendered":"Week 3"},"content":{"rendered":"<p>At the third week I have done:<\/p>\n<ol>\n<li>Added metadata to the saving system<\/li>\n<li>Added World Book implementation(PDA)<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>Not much for this week. PDA in games is slightly different, so I need to reverse 2 executables, which aren\u2019t same. The newer executable has very aggressive inlining.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blogs.scummvm.org\/pantherengine\/wp-content\/uploads\/sites\/31\/2022\/05\/scumm.png\" \/><\/p>\n<p>PDA consists of content(text, sprites) and buttons. Buttons have commands:<img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blogs.scummvm.org\/pantherengine\/wp-content\/uploads\/sites\/31\/2022\/05\/carbon-2-1.png\" \/><\/p>\n<p>For now, I have implemented HokusCommandType.<\/p>\n<p>Joke from executable)<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blogs.scummvm.org\/pantherengine\/wp-content\/uploads\/sites\/31\/2022\/05\/idaj.png\" \/>\u00a0 Code for this asm<img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/blogs.scummvm.org\/pantherengine\/wp-content\/uploads\/sites\/31\/2022\/05\/carbon-3-1.png\" \/><\/p>\n<p>Here we access non-existent string if the array size is zero. This is SIGSEGV.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At the third week I have done: Added metadata to the saving system Added World Book implementation(PDA) &nbsp; Not much for this week. PDA in games is slightly different, so I need to reverse 2 executables, which aren\u2019t same. The newer executable has very aggressive inlining. PDA consists of content(text, sprites) and buttons. Buttons have [&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-38","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/comments?post=38"}],"version-history":[{"count":1,"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":43,"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/posts\/38\/revisions\/43"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/media?parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/categories?post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/pantherengine\/wp-json\/wp\/v2\/tags?post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}