Wii coding library
Find a file
2022-11-23 23:35:53 -05:00
.devcontainer Add devcontainer.json file 2021-07-18 12:39:02 -04:00
.github/workflows Add GRRLIB_Ellipse 2022-09-09 10:47:23 -04:00
docs Move GRRLIB logo to docs folder 2020-12-14 01:09:10 -05:00
examples Reduce variable scope 2022-11-23 23:35:53 -05:00
GRRLIB Reduce variable scope 2022-11-23 23:35:53 -05:00
.editorconfig Add EditorConfig file 2021-06-26 13:14:43 -04:00
.gitattributes Add .gitattributes file 2020-10-18 18:07:35 -04:00
.gitignore Set HTML documentation output folder to 'html' 2020-12-14 00:54:00 -05:00
CHANGELOG.md Use proper types 2022-11-20 14:40:19 -05:00
grrlib.doxygen Add GRRLIB_Ellipse 2022-09-09 10:47:23 -04:00
LICENCE.md Add missing information in CHANGELOG 2022-01-05 02:25:08 -05:00
README.md Fix codacy link 2022-09-24 11:30:01 -04:00

GRRLIB

Continuous Integration Codacy Badge Join the chat at https://gitter.im/GRRLIB/GRRLIB

Table of Contents

Introduction

GRRLIB is a C/C++ 2D/3D graphics library for Wii application developers. It is essentially a wrapper which presents a friendly interface to the Nintendo GX core.

GRRLIB is supplied as a standard C/C++ library (aka. archive) called 'libgrrlib'. Because GRRLIB processes JPEG and PNG images, it requires the installation of the 'libjpeg' and 'libpngu' libraries. 'libpngu', in turn, requires 'libpng'. GRRLIB has FileIO functions to allow real-time loading and saving of graphical data, and thus requires 'libfat'. GRRLIB also has the possibility to use TrueType fonts, so 'libfreetype' is also required.

libgrrlib          <- 2D/3D graphics library
├── libfat         <- File I/O
├── libjpeg        <- JPEG image processor
├── libpngu        <- Wrapper for libpng
│   └── libpng     <- PNG image processor
└── libfreetype    <- TrueType font processor

Developing for the Wii

Do not progress until you have installed and configured devkitPro. Guides are and assistance are available at https://devkitpro.org/index.php

If you have just performed a clean (re)install on your Windows PC, be sure to reboot before you continue.

Downloading GRRLIB

You are invited to use "the latest Git master version" of GRRLIB at all times.

The Git repository is located at: https://github.com/GRRLIB/GRRLIB

There is a simple guide to "Using GitHub" later in this document.

This document will presume that you have downloaded "the latest Git master version" to a directory called C:\grr

Installing GRRLIB

This guide is for Windows. If you are using Linux, I am going to presume you are smart enough to convert these instructions.

GRRLIB      is supplied as source code
libpngu     is supplied as source code
libpng      is supplied via devkitPro pacman (ppc-libpng)
libfreetype is supplied via devkitPro pacman (ppc-freetype)
libjpeg     is supplied via devkitPro pacman (ppc-libjpeg-turbo)
libfat      is supplied via devkitPro pacman (libfat-ogc)

The easy way is to install GRRLIB and all the required libraries in a single command:

  c:
  cd \grr\GRRLIB
  pacman --sync --needed --noconfirm libfat-ogc ppc-libpng ppc-freetype ppc-libjpeg-turbo
  make clean all install

This process may take some time depending on the speed of your PC.

If you used the method above the following steps are not required, GRRLIB is installed and you are ready to start developing Wii homebrew games.

If you want, you could install the libfat, libpng, libfreetype and libjpeg with there dependencies in a single command:

  pacman --sync --needed --noconfirm libfat-ogc ppc-libpng ppc-freetype ppc-libjpeg-turbo

Each library could also be installed individually:

To install libpngu:

  c:
  cd \grr\GRRLIB\lib\pngu
  make clean all install

To install libgrrlib for Wii:

  c:
  cd \grr\GRRLIB\GRRLIB
  make clean all install

To install libgrrlib for GameCube:

  c:
  cd \grr\GRRLIB\GRRLIB
  make PLATFORM=cube clean all install

Using GRRLIB

After everything is installed, simply put

#include <grrlib.h>

at the top of your .c/.cpp file and use the functions as required

You will need to add

-lgrrlib -lfreetype -lbz2 -lfat -ljpeg -lpngu -lpng -lz

to the libs line in your makefile

...Remember the order of the libraries is critical. You may (need to) insert other libraries in the middle of the list, you may need to add others to the start, or even the end - but do not change the order of the libraries shown here.

Also add $(PORTLIBS) to the LIBDIRS line in your makefile

You do NOT need to place /anything/ in your application directory.

If you would like to see a working example of this, you can look at the example found in: C:\grr\examples\template\source

Upgrading to v4.4.0 From Previous Versions of GRRLIB

This version now uses the ported libraries for the Wii.

To install them, use this command line:

  pacman --sync --needed --noconfirm libfat-ogc ppc-libpng ppc-freetype ppc-libjpeg-turbo

You will need to add $(PORTLIBS) to the LIBDIRS line in your makefile.

Previously it could have looked like this:

LIBDIRS	:=

Now it needs to be like this:

LIBDIRS	:= $(PORTLIBS)

The FreeType library is now compiled with a dependency on bzip2, so lbz2 needs to be added after lfreetype in your makefile.

For example:

LIBS	:= -lgrrlib -lfreetype -lbz2 -lpngu -lpng -ljpeg -lz -lfat

Since GRRLIB and libpngu are now installed into the porlibs folder, make sure you don't have any leftovers from previous installations. You will need to manually delete unneeded libraries in devkitPro\libogc\lib\wii as well as include files in devkitPro\libogc\include

Using GitHub

GitHub allows the developers to submit changes to the code in such a way that these changes can be easily monitored, quickly merged together with other changes. and (if necessary) reverted.

It also allows the power-users to gain access to the latest (often "in-test") features.

To obtain the "cutting edge" codebase go to https://github.com/GRRLIB/GRRLIB/tree/master

  1. Create a directory to hold the code (e.g. C:\grr)
  2. Click the Download ZIP button if you don't have the proper tools installed on your PC or Clone the following URL https://github.com/GRRLIB/GRRLIB.git

All official releases can be found here https://github.com/GRRLIB/GRRLIB/releases

Credits

Project Leader

  • NoNameNo

Documentation

  • Crayon
  • BlueChip

Lead Coder

  • NoNameNo

Support Coders

  • Crayon
  • Xane
  • DragonMinded
  • BlueChip
  • elisherer

Advisors

  • RedShade
  • Jespa

Licence

GRRLIB is released under the MIT Licence. If we had chosen the GPL licence you would be +forced+ (legally required) to release your source code. But in the spirit of "free as in FREE" we have left you with the +option+ to release your source code.

We do +request+ that you tell others about us by naming our library (GRRLIB) in the credits of your game/application. And, if you +choose+ to do that, we encourage you to use our logo to achieve it; You can find our logo here: C:\grr\docs\grrlib_logo.png and here: https://grrlib.github.io/GRRLIB/grrlib_logo.png