History of Project Artemis
From Wiki - GameHacking.org
-[Written by Lazy Bastard; others are encouraged to contribute their piece(s) of the puzzle]
In the aftermath of the original PlayStation's essential demise, the PlayStation side of the hacking scene went through a deadly bottleneck. Having been spoiled by the ease of RAM-hacking the PSX via one of several systems, the scene as a whole was very disappointed when a hacking system wasn't released for the PS2. Most of its denizens left the scene entirely, and the remainder languished about, still hacking the PSX, or hacking emulated retro systems, such as Genesis, SNES, NES, and the like (though, there was emulated GBA hacking to keep us busy for a while). A very small minority mastered MIPS ASM, and, using hanimar's PS2Dis (and, occasionally, IDA Pro), hacked PS2 codes by static disassembly, relying heavily on labels and known patterns. These codes could then be converted to work with commercial cheat systems that used encrypted codes, or left as they were for systems that didn't. Most of this activity took place (and still does) on Codemasters-Project.net.
Personally, I wasn't about to buy a system for which I couldn't properly hack, so I abstained from getting a PS2 for years. I left for the military in 2003, with some vague goal of making a GSPro-esque hacking system for the PS2, at some point.
Sometime in early 2005, having received chemical burns to my lungs and being close to out-processing from the military, I began gathering information on making a PS2 hacking system. Originally, the plan was to learn as much as possible in a short period of time about developing applications for the PS2, then contract the development of this hacking system out to someone with the skill to do so (and guide the project using the basic knowledge we had). So, in secret, GSHI staff began tossing together ideas, and I pieced these into specs for the project. Of the fifteen or twenty separate topics of discussion, that of what we should call the hacking system ended tentatively with the name "Artemis" (the Greek goddess of Hunting).
Because a part of this endeavor entailed making GSHI a company (by marketing this yet-unnamed hacking system), I set out to try my hand at what none of the other cheat system companies had managed: getting licensed directly by Sony. This would accomplish three important things:
1). As a part of licensing, Sony would be apprised of our plans and actions, and of the capabilities and limitations of our system. This would mean that Sony would be able to keep an eye on the only actual hacking system for the PS2, and ensure that it isn't used for piracy or copyright circumvention, and that we'd be protected from the start from running into hot water legally. Of course, the down side of this is that it would restrict us from a quick and dirty start, having to follow a few rules.
2.) It would put us in a good position to request useful information from Sony concerning the PS2.
3.) It would establish GSHI, as opposed to our competitors, as the only company of our kind to be recognized by Sony, and officially licensed. This would give us a serious advantage in the marketplace, where customers are often scared away by third party, unlicensed products.
So, I took the first step: I looked online, at Sony Computer Entertainment America's website, found the number to SCEA's front desk, and called it. After asking to speak with someone from Licensing, I was whisked away to that department, and spoke with a manager of one of its sub-departments (or whatever it is they call them). After pouring out the dream of GSHI, and the specific dream of creating a hacking system to bring back the glory days of the GSPro (after establishing that "hacking" wasn't a bad word), the manager said he quite liked the idea, but that it wasn't nearly his call. He gave me the number of his boss, who I promptly called, and actually managed to get in touch with after very little waiting. I unleashed the same fervor and such that I'd piled on to the previous guy, and he seemed to like the concept quite a bit. He even went so far as to say he was pretty sure it would get approved, but admitted that it would have to go through his boss first. His boss happened to be the director of Licensing for SCEA. I wasn't given his number, but was asked to leave mine, so that he might contact me when he had the time. Not wanting to wait, and now having his full name, I promptly called back, and asked the woman at the front desk (or wherever she actually was) to transfer me to his extension, which she did, and I was left at his voice mail. So, I left a message, and called back about three times a day for the next three days or so (not leaving any more messages). Finally, I got through. I laid the same story out, quite well if I say so myself, and we talked for a solid two hours or so. At the end of our conversation, he said he'd give me a call back with the official "Yes" or "No", and would then direct me to someone in his department to begin the licensing process (assuming everything went well). Unfortunately, his call the next day went a little something like, "Apparently, we can't license or officially endorse any cheat-related software or hardware. The game companies are pretty much dead-set against cheat systems, and Sony is worried it would lose its already shaky relationships with several key game companies, which would be more than happy to speak with Microsoft or Nintendo instead." Essentially, paranoid and uninformed game companies were holding Sony ransom, and blocking any possibility of licensing for a cheat system. I asked if there was anything else I could do, or anyone I could speak to, and he told me the only thing that would change anything would be for me to convince the game companies that cheat systems were not bad for business, and even that might not sway the top Sony officials, who would still be worried about future game companies steering clear of Sony for that reason.
Having resigned myself to 3rd party infamy, I began searching for prospective contractors. After speaking with several custom electronics companies, it became quite clear that no one had a clue how to defeat MagicGate (how to boot code from the Memory Card), and only a handful of companies even purported to be able to create bootable PS2 discs (at prohibitive prices). Artemis would not be a hardware solution as the GSPro was, but a software one, with a hardware bypass of some sort. So, I began doing my own research on PS2 discs, and came to some interesting conclusions. It turned out that a certain company, which shall remain nameless for legal reasons (but whose name should be easy to ascertain), had simply cut out the inner portion of a genuine PS2 disc with an ELF at a high LBA (Logical Block Address, which, in this case, is synonymous with PSN - Physical Sector Number), used dummy files of specific sizes to push their own ELF out to the same location at which the original ELF resided (which I later achieved much more efficiently by forcing fixed LBA), burned their own disc with files of the same names, sizes, and LBAs as those of the original, cut the inner portion of their own disc out, and bound the genuine inner portion with their counterfeit outer portion, resulting in a generally bootable PS2 disc (that is to say, most of the time, the result isn't a total loss, and when it isn't, that is to say it boots most of the time, heh). Several other companies followed suit, most even going so far as to use the exact same original PS2 disc. We now had a method of producing bootable PS2 discs, but still lacked the proper precision to do so consistently, and the equipment to do so at any acceptable rate of speed. Still, these were issues we could handle later.
At the same time, I'd started searching for potential software developers for Artemis. I scoured PS2dev.org, and all the freelance developer sites (RentACoder.com, elance.com, etc), selected ten or so of the (seemingly) most qualified programmers or groups of programmers, and conferred with the rest of GSHI staff as to who they thought was the best. We came to agreement concerning a company named Sang123, in India. After making contact concerning the project, Sang123 accepted the proposal, and began research. After about two weeks (on August 31, 2006), they apparently determined that they did not have the expertise required, and that it would take prohibitively long to acquire that expertise, and withdrew from the project. We were left with the task of finding another developer. After some scouring, I stumbled upon Punkajj, who (according to his resume, in any case) seemed quite the skilled developer and reverse engineer. He unofficially accepted the project, but returned a few days later (September 4, 2006), with much the same discovery that Sang123 had made: that he simply didn't have the specific expertise and experience required to complete the project within a reasonable time. He was very gracious, and even offered to provide any info and advise he could, after we found another developer. Unfortunately, finding another developer took about two months this time. I was a little more wary, and stringent in my search, and PS2 developers are few and far between. Eventually, I found Hit n' Run Games, a small game company in India that had made a couple of PS2 games already. They seemed fairly promising, and jumped right into specs the moment we started talking about Artemis. They accepted the project, built a small PS2-side GUI, then suddenly stopped responding and posted no new updates on the project for about a week. When they finally resurfaced (November 25, 2006), it was only in the form of the owner letting us know that, for whatever reason, he no longer had any developers, and could not work on the project any longer.
At this point, having gone through three professional developers with no luck, I decided it would perhaps be best to try contracting a member of the hacking scene, with PS2 development experience. I immediately thought of misfire. I'd seen him at PS2Dev.org quite a bit during my quest for experienced developers, and of course knew his work in the hacking scene, particularly in reverse engineering. I got in touch with him, and we began discussing the goals of Artemis. misfire had already been toying with a cheat engine of his own for the PS2, and was quite interested in the project. I paid him what I could, with the agreement that he would receive a large amount of the eventual proceeds from the finished product, and he began working on Artemis. Though he was quite busy, he made some progress, and improved the work he'd already done on a cheat system, which was to become the base of Project Artemis.
After releasing a basic cheat system, misfire was swallowed up by the woes of real life. For the following two years (2006-2008), without much free time, some work was done on research, but no tangible progress was made. After much consideration, we decided that whether or not GSHI would benefit from the fruit of its labor, there should be a hacking system for the PS2, so that everyone could hack codes for it, and thus moved the project into the realm of open source, with the hope that this would bring new developers and increased activity in the project.
In early January 2009, I managed to talk Oobles (owner of PS2Dev.org) into allowing me to post a thread concerning Artemis under the Projects forum of PS2Dev.org (the forums were previously against any posts concerning cheat and hacking systems). Through that and other avenues (posts across a swath of other forums, private messages and emails to well-known developers, etc), interest in Artemis began to pick up, and though there were few responses to the PS2Dev.org thread itself, several developers private messaged me with questions and ideas.
After mentioning a desire to reward developers monetarily for accomplishing milestones but not having a good idea of how to do so, Parasyte pointed me to BountySource.com, an infrastructure for just such a thing. On January 14, 2009, I put together a BountySource account for Artemis, placed a few bounties on various milestones, and announced it to the world. Soon after, Parasyte placed a generous bounty ($256) on the task of "Breakpoints and watchpoints", Modman placed another generous bounty of $100 on another task (I can't recall which, but it has since been accomplished), I've placed several bounties of $100 or more on various tasks, and many people have helped with specifications, ideas, and testing. The Artemis BountySource account has become a cornerstone of Artemis development, serving to motivate and cultivate development.
During the same time period, I became fairly active in the PS2 homebrew development community as a whole. At the time, the homebrew PS2SDK (software development kit) was only building in Linux, as current updates had broken compatibility with Cygwin. As a result, Win32 users were forced to virtualize Linux, or run a Linux box on the side. Needless to say, many, perhaps most, Win32 developers simply stopped developing and awaited a fix, while most potential developers who came across the PS2SDK gave up their aspirations to develop for the PS2 when they discovered they'd have to use Linux. Lukasz Bruun, a well-known developer of homebrew PS2 apps and libraries, provided a fix for Cygwin, but it was soon broken by yet another barrage of updates to the PS2SDK. This time, it seemed there would be no fix for Cygwin, and he turned his attention on a solution using MinGW and msys. This worked well for some time, until another series of updates broke this solution as well. And for some time, Win32 PS2 development lay dormant. Lukasz became busy with other aspects of life, but I happened upon his MinGW/msys fix, and began tediously fixing one issue after another, until the PS2SDK built properly. I then began installing additional libraries (gsKit, etc), and put together a portable, compressed, pre-built PS2SDK, for all to download and use "out of the box". This boosted PS2 development considerably, particularly for beginners, and allowed me to stop virtualizing Ubuntu and start coding directly in Windows. I then collected all the homebrew PS2 source I could locate, and as most of it didn't compile using the current PS2SDK, I updated it (or convinced the original author to update it), and put together a compilable source collection for beginners to learn from. I had also been speaking with Oobles fairly regularly, and was given administrative access to both the PS2Dev.org site and the SVN repository, which allowed me to make considerable updates to the PS2 section of the main site, and to commit changes to the repo.
Aside from establishing a network of developers and other contacts in the homebrew scene, all of this caught the attention of a small video game peripheral company, Digital Xtreme Technologies, which was interested in creating a multi-disc CD/DVD changer for the PS2 (called the 'Xtreme Gamer'), and then moving on to add compatibility for other systems. They contacted me concerning this project, and despite my protests that there were far more experienced developers available, they insisted that I was perfect for the job of putting together the team, managing the project, assisting with development, and interfacing between developers and business members. I accepted the job, and began scouting for developers with extensive I/O experience. After speaking with a few such developers whose work I was well-acquainted with, but who either did not think such a feat was possible, or didn't currently have time to attempt it, I placed a thread on the PS2Dev.org forums, and waited a couple of days. To my surprise, the best possible developer (someone I hadn't even considered) contacted me via private message: jimmikaelkael, co-author of FMCB (Free Memory Card Boot). He tossed together some ideas and a bit of proof-of-concept code, and we both signed on the dotted line and began working. I built the GUI while he wrote the I/O code, and we finished the project just in time for E3. If I may say so, the display was quite successful (and E3 was a great time).
jimmi and I had spent a lot of time working and talking with one another, and became good friends. After the XG project, he took a look at Project Artemis, and, within a day, came up with a solution for dumping memory to PC (something we couldn't accomplish beforehand for years). He then accomplished memory modification from the PC (constant write of a specified value to a specified address on the PS2), another huge milestone. Afterward, he wanted to take a break from developing, and asked if anyone else was interested in writing a memory dump comparison app for the PC side. misfire and I suggested Viper187, I contacted him, and he promptly wrote a modified version of his Renegade (a dump comparison app for emulators), called PS2CC (PlayStation 2 Code Creator), which provided a myriad of search capabilities and was based on jimmi's PC-side dump control app, NTPBserver (later renamed NTPBclient, as the client-server scheme was reversed). Thus, with dumping, comparing/searching, and specified constant-write, we could dump, compare, and test codes, and had a functional hacking system. People began hacking codes using Artemis, and misfire and jimmi began working together to combine the cheat engine with the dumping system. The merge was official with the release of artemis v0.2. Since then, there has been extensive work on compatibility, and many improvements have been made. __________________________________________
-[Written by other authors to come...]