Desenvolvimento de Jogos em C para Nintendo DS
Introdução
Um belo dia estava me perguntando como que se desenvolvia jogos de antigamente, e pensei em desenvolver meu próprio classico só que no nosso tempo, e a primeira coisa que eu tinha que fazer foi escolher a plataforma, e eu optei pelo Nintendo DS, já por ter o console e ter uma curiosidade tremenda de como funciona o desenvolvimento de algo que precisa do touch achei a escolha perfeita.
Buscando o Kit
Como de costume todo o console da nintendo possui um kit de desenvolvimento, até mesmo o nintendo swich possui o seu, assim como um console somente utilizado para testar seus jogos, no nintendo ds existia uma biblioteca chamada libnds que era utililazada no desenvolvimento de jogos para o console em conjunto com a linguagem de programação C.
Existem diversas possibilidades de download, mas o mais comum é pelo site devKitPro lá você encontrará um passo a passo de instalação para cada sistema operacional.
Desenhando com o touch
Para esse simples tutorial, escolhi desenvolver um simples local para desenho, utilizando a caneta do nintendo ds, deixarei abaixo o código desenvolvido, mas recomendo a todos estudarem programação em C.
main.c
#include <nds.h>
int main() {
// Inicializa a tela de toque
touchPosition touch;
// Inicializa a tela de vídeo
videoSetMode(MODE_FB0);
vramSetBankA(VRAM_A_LCD);
while(1) {
// Verifica se a tela de toque foi pressionada
scanKeys();
if (keysHeld() & KEY_TOUCH) {
touchRead(&touch);
VRAM_A[(touch.py * 256) + touch.px] = RGB15(31,31,31);
}
swiWaitForVBlank();
}
return 0;
}
Makefile
Esse arquivo é necessário para compilar o código.
TARGET := $(shell basename $(CURDIR))
BUILD := build
SOURCES := source
INCLUDE := -I$(DEVKITPRO)/libnds/include
LIBS := -lnds9
CC := arm-none-eabi-gcc
ARCH := -mthumb -mthumb-interwork
CFLAGS := -g -Wall -O2\
$(ARCH)
CFLAGS += $(INCLUDE) -DARM9
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) -L/opt/devkitpro/libnds/lib
app: main.c
@$(CC) $(CFLAGS) $(LDFLAGS) main.c -o $(TARGET).elf $(LIBS)
@ndstool -c $(TARGET).nds -9 $(TARGET).elf
Execute o seguinte comando no seu terminal: make
Sua saida deve ser o nome do seu jogo com a extensão .nds, para executar sugiro um emulador ou insira o arquivo dentro do seu R4 e execute no console.