Skip to content
Thompson Lee edited this page Aug 17, 2016 · 26 revisions

Citro3D C++ Programming Tutorials

Brief Introduction

This wiki is a Citro3D programming tutorial, and also contains milestones this project has reached thus far. Please browse the sidebar on your right to view the source codes. The source codes, mainly written in C++ with a bit of C, have been commented with descriptions to guide you through. I use Eclipse CDT C/C++ and Visual Studio 2015 for development and testing, mainly because I wanted a feature-complete C/C++ auto-completion.

Main targeted audience is for readers who are at intermediate levels of proficiency in C/C++ programming. Beginners are also welcomed to read. I welcome advanced readers to give feedback, so I can improve the code and the tutorials.

Each page title, listed with the version number, explains what important milestone for that particular commit does, for the duration of this project's active development.

This project uses the following projects for homebrew development:

devkitPro is an organization of contributors that releases C/C++ compilers to compile written codes into binary files for video game devices (handhelds and consoles). The package we want is the devkitARM, which can compile our codes into a binary file that Citra can run. The binary file requires ctrulib in order for Citra3DS emulator to read and understand the binary file's contents and data. citro3d is a library wrapper for communicating with PICA200 graphics card, and is emulated by Citra3DS.

For this project, I dedicate my spare time to work on an educational assignment, written to understand software development and the process of overcoming technical limitations, by reaching certain milestones in a linear fashion. This is not a homework assignment, so I am not obligated to finish this work under stress. This project is not, will not, and should not be used for-profit and for commercial/business purposes.

Special thanks to those who helped with the code, mostly helping me while I am contributing to the Citro3D library, in alphabetical order:

  • bunnei (Citra main developer)
  • Cruel`
  • fincs (Citro3D)
  • Koopa (tester)
  • mtheall (Citro3D contributor)
  • profi200 (ctrulib)
  • smea (ctrulib)
  • Starry2001 (...gg)
  • wedr (Citro3D contributor)
  • WinterMute (devkitARM)
  • yellows8

Instructions

To start reading the tutorial, click on the link in the sidebar on your right hand side. All articles will be written in the following format:

  • Brief Introduction
  • Purpose
  • Commit Link, which you can browse the particular commit's source code without worrying about new changes being added to the master branch.
  • Picture. Usually, it will be in PNG format, but sometimes, having it animated in GIF is preferred.
  • Instructions on how to compile the source code.
  • Written article explaining the codes. (Work-In-Progress)

This last part, marked with (Work-In-Progress), meant there will be errors (spelling, grammar, logic, etc.) and unclear parts meant to explain more clearly about the code. This part is currently being written by the author as if it is a book. Please do not hesitate and file an Issues report to this repository regarding about the Wiki articles, and/or the source codes. Known issues will be further explained in this section, as well as some personal thoughts respectively if it warrants it.

Please feel free to share this repository to anyone who is interested in learning Citro3D programming. Good luck, have fun!