About The Artemus Project
The Artemus Project is a collection of tools and frameworks for analysis of C# code executing on the Microsoft ® Xbox 360 platform through XNA Game Studio. The project may eventually evolve into a generic XNA Game Studio code analysis tool compatible with the Windows platform, but at this time the focus is Xbox 360 code analysis. The lack of profiling and code analysis tools currently available for XNA Game Studio developers on the Xbox 360 platform justify this focus.
There are currently several tools being created for the Artemus Project, all of which are packaged together into a single package. The components are outlined below:
- Code Server. This component is implemented as an XNA Game Studio Xbox 360 game. It uses the System.Reflection libaries to query the loaded assemblies, types, and methods on the Xbox 360. Limited memory inspection code is also implemented in the code server, giving it the ability to extract the native PowerPC code generated for each non-abstract method. A System Link interface is available through the code server for communication with external analysis tools.
- Code Analysis Client. This component is a front-end for the Artemus code analysis framework. It reads assembly/type/method data from the code server component and allows developers to analyze the native PowerPC code generated for their C# game code. Unlike the components implemented using XNA Game Studio, this front-end component is written in portable C++ using wxWidgets and is currently running on both Linux and Windows platforms. A Mac OSX version may be created in the future.
- Proxy Service. This component is the bridge between the code server component and the code analysis front-end client. It communicates with the code server using System Link networking, and with client front-ends using system sockets. Even though it is an XNA Game Studio "game," the proxy service does not require graphics hardware to run and can be executed in a virtualized environment as long as there is a Windows XP or Vista guest OS..
- Artemus Runtime Library (libartemus). Though least mature of all current Artemus components, the libartemus library is the core of the Artemus project and is the back-end for the code analysis tools. The library will eventually be capable of analyzing PowerPC code dumps from the code server and the original C# game source code for performance and robustness issues. This component is still being designed.