Google Summer Of Code

From devkitPro
Revision as of 02:27, 13 March 2009 by Kraln (talk | contribs) (Edited out pernedit)
Jump to navigation Jump to search


Summer of Code

devkitPro is the suite of toolchains of choice for (homebrew) game development, currently available for Nintendo's GameBoy Advance, DS, GameCube, and Wii, and additionally the GP32 and Playstation Portable consoles.

There are actually three sets of toolchains--

  • devkitARM for the DS, GBA, and GP32
  • devkitPPC for GameCube and Wii
  • devkitPSP for PSP

Further information and discussion of these toolchains can be found in the devkitPro forums, located at http://forums.devkitpro.org, and additionally there are several IRC channels dedicated to homebrew development:

  • #gbadev, #dsdev and #wiidev on irc.blitzed.org.
  • #gp32dev and #gp2xdev on irc.efnet.org.
  • #pspdev on chat.freenode.net.

devkitPro is applying to become a mentoring organization for the 2009 Google Summer of Code. You can find more information about GSoC 2009 at the 2009 GSoC page.

Mentors

A list of mentors is available on the mentors page

Overall Expectations and Goals

Our organizational goal in participating in the Google Summer of Code is to encourage growth and community contribution for devkitPro, the toolchains and the support libraries, and to better support our end users. For students, we hope to increase your skills and give you experience working on a large project, while not totally drowning you in responsibility or isolating you from help.

We have split our project ideas into three categories, based on difficulty. If you aren't sure if you can tackle one of the more difficult ones, it may be in your best interests to pick a less challenging idea, but we will support whatever you think you can handle. Please feel free to hop on irc (blitzed/#devkitPro) and have a chat with one of the mentors if you need help deciding (or for any reason, really. we won't bite!)

For all of these projects, we'd like to emphasize not just programming skill, but also design, planning, and documentation. At the very least, we expect you to follow good programming practices, but in addition we'd like to see good inline comments as well as end-user documentation, tutorials, and sample code where applicable. It is just as important to learn good documenting as it is to learn good programming--it often does not matter as much who has the better solution, as much as it matters who can explain it better.

Development Hardware

Many of these projects would be difficult without access to development hardware, and as such we have worked out an agreement with Electrobee to supply participating GSoC students with hardware at little or no cost, if required.

Project Ideas

Potential projects that would benefit the homebrew scene in general. Please note that this list is not exclusive; if you have something you want to do, please please feel free to apply to do it and we will assign an appropriate mentor to you.

Beginner-Friendly Ideas

These are ideas that are probably best for someone who hasn't worked on a project with other people before, and may need a higher degree of assistance. These may require less programming than other ideas, but are still very useful.

devkitPro updater/installer enhancements

Currently, editions of devkitPro are kept up to date with several different installers for each platform, which all must be updated by hand for each release. We are looking for some improvements in this area, which would benefit all of our users and make it easier to bundle releases.

  • The web based installer is currently a little difficult to add packages, it would be greatly enhanced with the ability to add packages through an external configuration file.
  • The MinGW project uses an earlier version of this code and would benefit from a more configurable installer.
  • Other SourceForge based projects have expressed an interest in this kind of enhancement.
  • We have a license of Install4J that can be put towards this idea

Skills:

  • Work with multiple operating systems (Windows, OSX, Linux preferred)
  • Ability to work with installation suites, or script your own
  • Automation skills that span multiple operating systems

Create Game Resource Editor/Manager

There is a definite need for a free, open source "map editor" for creating and managing tile/game maps for tile based games. Most GBA and Many NDS games are tile based, or at least have tile based components.

  • We'd like to see this be cross-platform utility
  • Initially, we would like a tile/map editor that supports several layers and optimizing tiles
  • A long term goal of this project is to provide a means to organize and manipulate all common game resources. It would be beneficial if it also could work with and manage graphics objects (such as sprites and other non animated objects), strings and scripts, music files, and general data files. Being able to group these things and define rules for conversion as well as provide a means for integration into the build process is a more complex problem.

Skills:

  • .Net/Mono, Java, or something like WXWidgets
  • Image Processing
  • Documentation Skills
  • UI Skills

Sprite editor

It would be great if we had a cross-platform sprite editor.

  • This is listed as a separate idea, for reasons of scope. It is recommended/preferred this be an addon or be worked on with addition to the game resource editor, but that is not mandatory.

Skills:

  • Programming (Same language as above if an addon)
  • UI Design
  • Image Manipulation

Novice Ideas

These ideas are aimed at the vast majority of people we expect to see participating from GSoC

3D model export/conversion tools

We need a standardized way of getting 3D models and textures from modeling applications into a format which is easily usable on the NDS, Gamecube and Wii. Currently everyone who wants to write 3D applications has to either hobble along with partially working tools, or write their own from scratch. Having a full-featured, highly-compatible conversion/export tool would make 3D development accessible to many more people. Some work has been done on a collada parser which could be provided as a starting point.

  • ability to read 3d models (mesh, bone, texture, etc) from programs such as Blender, LightWave, Milkshape
  • Wings3D, Maya, 3dsMAX, and other support if time permits
  • define a standard model format for NDS/GC/Wii and allow export to this format
  • sample code and documentation is a must

Skills:

  • 3d Math
  • 3d Math (really important!)

libfat port to cube/wii

libfat is a library for NDS/GBA which provides access to FAT filesystems, mainly on SD and CF cards. The current SD card code in libogc is rather buggy and would benefit from being replaced with a tested FAT support layer.

  • Port existing libfat to libogc or rewrite SD code
  • Create unit tests
  • Document API

Skills:

  • C/C++
  • Understanding of file systems and file system apis

ndstool enhancements

ndstool is the application which builds a .nds file from it's component parts - the arm7 & arm9 binaries, icons, banner text and the embedded filesystem.

Currently it cannot edit an existing file without first extracting the indvidual parts. There is also a feature request asking for separate banner & banner text manipulation.

  • possible rewrite, with the objective to allow editing as well as extraction & creation.
  • ground-up rewrite utilizing OOP would be great
  • support existing command line arguments

Skills:

  • C/C++
  • binary file manipulation

Homebrew Launcher

Currently most NDS flash cards use a proprietary launcher menu and file browser. The homebrew scene would benefit a great deal from an open source launcher which could support additional features available in the toolchain like the latest argv support mechanism.

  • Be as device-independent as possible
  • Allow for skinning
  • Allow for downloading and executing code over http

Skills:

  • C/C++
  • (some) Arm Assembly

Online Homebrew Catalog

This would be browsable from the DS as well as the web and allow directly loading and launching applications from the DS. Amateur developers would be able to upload games and applications for peer review which would then be accessible via an application on the Nintendo DS.

  • This would be similar in functionality to Xbox live arcade or the Wii channels.
  • Some work has gone into a browser for the DS.
  • A few backends are at about the same level of completeness for this project, one written in PHP and one in Python/Django

Skills:

  • Web development (PHP or Django)
  • C/C++
  • Good UI design

Open Source replacement for SDload

SDload is a menu system for launching homebrew applications from an SD Adapter such as SDgecko. Unfortunately this is a closed source application and not easily updated for the Wii.

  • Re-implement or reverse engineer SDLoad

Skills:

  • Reverse engineering
  • C/C++
  • TCP/IP

Advanced Ideas

Up for a challenge? These ideas are things we'd really like to see done, but feel that their scope or difficulty may lay outside of what can be accomplished during the GSoC. That said, you don't have to stop when the GSoC is over, and these would make great projects for some.

GDB stub and host proxy

For GBA, there was a device called Xboo which allowed for hardware debugging. No such device has been developed for the Nintendo DS If developed, this would allow developers to debug their applications on the target platform via a stub which communicates with GDB (GNU Debugger) running on a host PC. Being able to debug on hardware is very valuable, since currently all PC-based emulators are either lacking debug capability or lacking in emulation accuracy.

  • Create hardware (or possibly wifi) debugging interface for Nintendo DS
  • Tie in to GDB

Skills:

  • Great knowledge of ARM Architecture
  • Knowledge of GDB/Insight
  • Some hardware design experience

Improve DS OpenGL interface

libnds attempts to mimic an OpenGL interface to the DS 3D hardware. While functional this implementation could use a lot of work.

  • General bug fixing is needed to upgrade the existing portions of the library to gl compliant status.
  • The DS texture memory is limited and does not map very well to the gl style of texture management. As such, libnds would benefit greatly from a completely reworked texture memory management system.

Skills:

  • 3d Math
  • C/C++
  • OpenGL

DSi Homebrew

Nintendo has created a new console, the Nintedo DSi. Currently, there is no way to run homebrew code on this device in native (DSi) mode.

  • Reverse engineer security mechanisms to find a way to inject or otherwise run homebrew code<ref>the DMCA allows software developers to circumvent technological protection measures of a lawfully obtained computer program in order "the elements necessary to achieve interoperability of an independently created computer program with other programs."</ref>

Skills:

  • Reverse engineering
  • ARM Assembly
  • Hardware/FGPA experience will help (for prototyping and intercepting data)

Note

<references />