{"id":11,"date":"2010-04-29T00:07:03","date_gmt":"2010-04-29T00:07:03","guid":{"rendered":"https:\/\/blogs.scummvm.org\/toneman\/?p=11"},"modified":"2022-05-21T21:43:14","modified_gmt":"2022-05-21T21:43:14","slug":"being-for-the-benefit-of-ram-thats-tight","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/toneman\/2010\/04\/29\/being-for-the-benefit-of-ram-thats-tight\/","title":{"rendered":"Being for the Benefit of RAM that&#8217;s tight"},"content":{"rendered":"<p><span class=\"Apple-style-span\">For the benefit of anyone interested in what I&#8217;ll be working on this summer for ScummVM as part of Google Summer of Code, here&#8217;s a (slightly) modified copy of my GSoC application:<\/span><br \/>\n<span class=\"Apple-style-span\"><br \/>\n<\/span><\/p>\n<table>\n<tbody>\n<tr title=\"\">\n<td class=\"formfieldlabel\">Title:<\/td>\n<td class=\"formfieldvalue\">Implementing Support for Loadable Modules on MIPS and ARM-based platforms<\/td>\n<\/tr>\n<tr title=\"\">\n<td class=\"formfieldlabel\">Student:<\/td>\n<td class=\"formfieldvalue\">Anthony Puccinelli<\/td>\n<\/tr>\n<tr title=\"\">\n<td class=\"formfieldlabel\">Abstract:<\/td>\n<td class=\"formfieldvalue\">ScummVM has grown to include support for adventure games running on many different engines. This much-appreciated support has unfortunately bloated the size of the ScummVM binary and the space it takes up in RAM, which is a problem for small devices that don&#8217;t have much RAM to work with. To alleviate this issue, custom module loaders can be written for these devices that enable them to only load one needed engine into RAM at a time, depending on the game selected.<\/td>\n<\/tr>\n<tr title=\"\">\n<td class=\"formfieldlabel\">Content:<\/td>\n<td class=\"formfieldvalue\">\n<ul>\n<li><strong>Name:\u00a0<\/strong>Tony Puccinelli<\/li>\n<li><strong>Email:\u00a0<\/strong>tony.puccinelli@gmail.com<\/li>\n<li><strong>Mentor:\u00a0<\/strong>Yotam Barnoy<\/li>\n<li><b>Co-mentor:\u00a0<\/b>John Willis<\/li>\n<li><strong>Deliverables<\/strong>:\n<ul>\n<li>Write a linker script and custom ELF loader to provide full support for loadable modules in ScummVM\u2019s PS2 Port, using the pre-existing PSP code as a starting point.<i><br \/>\n<\/i><\/li>\n<li>Abstract parent \u201cELF Loader\u201d class to be inherited by targets that support loadable modules.<i><br \/>\n<\/i><\/li>\n<li>Implement support for loadable modules on the GP2x, an ARM target.<i><br \/>\n<\/i><\/li>\n<li>Implement support for loadable modules on the DS with the aid of the ARM-based GP2x code.<i><br \/>\n<\/i><\/li>\n<\/ul>\n<\/li>\n<li><strong>Benefits to the ScummVM Community:<\/strong>\n<ul>\n<li>Helps to reduce memory usage for the ports involved, which could especially help the RAM-deprived DS port to be more functional\u00a0with games like &#8220;The Dig&#8221; and &#8220;Full Throttle&#8221;.<\/li>\n<li>Will help eliminate the need for confusing and difficult alternate versions of the ScummVM binary that hold some subset of the game engines ScummVM supports.<\/li>\n<li>Generic \u201cELF loader\u201d will lay the groundwork for loadable module support in other ports in the near-future.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Project Schedule<\/strong><strong>:<\/strong><strong>\u00a0<\/strong>I\u2019m utterly swamped by coursework this semester, so I can\u2019t commit to coding work until the official start of gsoc according to their timeline (May 24th). I aim to be finished with the project on August 13th to leave a little time for some refining\/testing\/debugging work the last weekend of\u00a0the program. I\u2019m interested in continuing to contribute to the ScummVM project after gsoc is over as well, perhaps by\u00a0attempting to more fully support the DS. A more detailed schedule follows (I am currently planning to work 7-8 hours a day M-F. This schedule is DEFINITELY subject to change as I imagine I will have to be quite flexible if unforeseen problems arise):\n<ul>\n<li>Week\u00a00 (May 17 &#8211; May 21):\n<ul>\n<li>Poke around ScummVM code \ud83d\ude42<\/li>\n<li>Ensure I am up and running with homebrew on the DS, PS2, and GP2x.<\/li>\n<\/ul>\n<\/li>\n<li>Week 1 (May 24 &#8211; May 28):\n<ul>\n<li>Tweak PSP loader code for PS2.<\/li>\n<li>Write custom GNU linker script and modify PS2 port&#8217;s Makefile to get plugins to build properly.<\/li>\n<\/ul>\n<\/li>\n<li>Week 2 (May 31 &#8211; June 4):\n<ul>\n<li>Finish\/Debug Week 1 task.<\/li>\n<\/ul>\n<\/li>\n<li>Week 3 (June 7 &#8211; June 11):\n<ul>\n<li>Generalize an &#8220;ELF Loader&#8221; that all ports can inherit (this may be similar to &#8220;elf32.h&#8221;).<\/li>\n<\/ul>\n<\/li>\n<li>Week 4 (June 14 &#8211; June 18):\n<ul>\n<li>Finish\/Debug Week 3 task.<\/li>\n<\/ul>\n<\/li>\n<li>Week 5 (June 21 &#8211; June 25):\n<ul>\n<li>Better familiarize myself with ARM.<\/li>\n<li>Write a GP2x loader.<\/li>\n<li>Utilize GP2x&#8217;s Linux capabilities to aid in debugging.<\/li>\n<\/ul>\n<\/li>\n<li>Week 6 (June 28 &#8211; July 2):\n<ul>\n<li>Continue work on GP2x loader.<\/li>\n<li>Start writing linker script and modify Makefile to get plugins to build properly on GP2x.<\/li>\n<\/ul>\n<\/li>\n<li>Week 7 (July 5 &#8211; July 9):\n<ul>\n<li>Finish Week 5 and 6 tasks.<\/li>\n<\/ul>\n<\/li>\n<li>Week 8 (July 12 &#8211; July 16):\n<ul>\n<li>Begin work on DS loader\/linker.<\/li>\n<li>Modify loader to load only the engine of the desired game instead of loading all of them, then deleting.<\/li>\n<\/ul>\n<\/li>\n<li>Week 9 (July 19 &#8211; July 23):\n<ul>\n<li>Continue work on the DS.<\/li>\n<\/ul>\n<\/li>\n<li>Week 10 (July 26 &#8211; July 30):\n<ul>\n<li>Continue work on the DS.<\/li>\n<\/ul>\n<\/li>\n<li>Week 11 (August 2 &#8211; August 6):\n<ul>\n<li>Finish work on DS.<\/li>\n<li>If time allows, begin turning audio codecs into loadable modules (work that might continue after gsoc).<\/li>\n<\/ul>\n<\/li>\n<li>Week 12 (August 9 &#8211; August 13):\n<ul>\n<li>Final Testing\/Debugging\/Refinement phase.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Availability:<\/strong>\u00a0I plan to treat this as a full-time job, and will thus make myself available to work 35-40 hours a week. I have\u00a0made no other major commitments this Summer and am willing to up the time I work each week if necessary. I am also willing to add more to the project if it turns out work goes quicker than expected (though from my prior programming experience, I&#8217;ve found it is far easier to underestimate how much time a task will take than to overestimate it).<\/li>\n<li><strong>Skype ID:<\/strong>\u00a0toneman73<\/li>\n<li><strong>Phone Number:<\/strong>\u00a0(916) 616-5265<\/li>\n<li><strong>Timezone:<\/strong>\u00a0Pacific Standard Time (I&#8217;m in California)<\/li>\n<li><strong>Bio<\/strong>:\u00a0I am a Junior CS major and English minor at UC Berkeley and a long-time user of ScummVM. I am passionate about interactive storytelling and love adventure games for their focus on smart dialogue and tongue-in-cheek humor (In fact, a friend and I are VERY slowly beginning work on a point \u2018n\u2019 click adventure of our own using Adventure Game Studio). On the technical side of things, I am well-versed in MIPS as I\u2019ve not only written MIPS code, but have written an assembler that translates a simplified, 16-bit version of MIPS dubbed CAL16 into machine language. I\u2019ve also designed a circuit (using LogiSIM) that can take a CAL16 program into RAM and run it. Thus, the PS2 task is right up my alley. My current coursework involves writing a Python compiler in C++ and implementing features like caching and virtual memory mechanisms, CPU scheduling, multi-threaded processes, etc. into a simple OS dubbed Nachos. These projects are, I feel, uniquely preparing me for the type of work I&#8217;d be doing with this task, work that specifically concerns the hardware\/software boundary. Thanks very much for your consideration; I&#8217;m looking forward to the possibility of working on this project, as it is one I&#8217;ve respected and used for years.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>For the benefit of anyone interested in what I&#8217;ll be working on this summer for ScummVM as part of Google Summer of Code, here&#8217;s a (slightly) modified copy of my GSoC application: Title: Implementing Support for Loadable Modules on MIPS and ARM-based platforms Student: Anthony Puccinelli Abstract: ScummVM has grown to include support for adventure [&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-11","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/comments?post=11"}],"version-history":[{"count":1,"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/posts\/11\/revisions"}],"predecessor-version":[{"id":12,"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/posts\/11\/revisions\/12"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/media?parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/categories?post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/toneman\/wp-json\/wp\/v2\/tags?post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}