Google Summer Of Code

From devkitPro
Jump to navigation Jump to search


Summer of Code

devkitPro is the provider and maintainer of toolchains and libraries of choice for (homebrew) game development, currently available for Nintendo's GameBoy Advance, DS, 3DS, GameCube, Wii, WiiU and Switch as well as the Gamepark GP32.

There are currently three sets of toolchains--

  • devkitARM for the 3DS, DS, GBA, and GP32
  • devkitPPC for GameCube, Wii and WiiU
  • devkitA64 for Switch

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

  • #dsdev and #wiidev on irc.blitzed.org.
  • #switchdev and #3dsdev on irc.efnet.org.

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

Mentors

A list of mentors is available on the mentors page. Our goal is to pair mentors with students based on which project idea the student would like to tackle, and so that the particular strengths and weaknesses of each mentor and student will balance out and create a strong bond.

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 four 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.

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.

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:

  • Qt/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

ndstool enhancements

ndstool is the application which builds a .nds file from its 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 was 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

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.

Skills:

  • Web development
  • C/C++
  • Good UI design

Intermediate Ideas

Refactor gamecube and wii SDL ports

SDL ports already exists but use custom makefiles rather than the existing configure system. It also converts from RGB to the wii/cube YCbCr framebuffer in software where using the 3D hardware would make more sense. We'd like these refactored and packaged for use with our pacman installer.


Skills:

  • C/C++

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


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

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!)

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 />