mirror of
https://github.com/knightfox75/nds_nflib.git
synced 2025-06-18 16:55:32 -04:00
build: Update WiFi example to not have a copy of NFlib
This commit is contained in:
parent
daee0a3334
commit
83d3d6597d
@ -1,60 +1,17 @@
|
||||
#---------------------------------------------------------------------------------
|
||||
# Makefile for NightFox's Lib Projects
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
.SUFFIXES:
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
ifeq ($(strip $(DEVKITARM)),)
|
||||
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
|
||||
endif
|
||||
|
||||
# These set the information text in the nds file
|
||||
#GAME_TITLE := My Wonderful Homebrew
|
||||
#GAME_SUBTITLE1 := built with devkitARM
|
||||
#GAME_SUBTITLE2 := http://devitpro.org
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# This part substitutes this include:
|
||||
# include $(DEVKITARM)/ds_rules
|
||||
# This allows you to set ROM info and icon easy
|
||||
# Please update this block from DS_RULES file at every DEVKITARM update
|
||||
#---------------------------------------------------------------------------------
|
||||
include $(DEVKITARM)/base_rules
|
||||
|
||||
LIBNDS := $(DEVKITPRO)/libnds
|
||||
|
||||
GAME_TITLE := Text 1
|
||||
GAME_SUBTITLE1 := Text 2
|
||||
GAME_SUBTITLE2 := Text 3
|
||||
GAME_ICON := $(CURDIR)/../icon.bmp
|
||||
|
||||
_ADDFILES := -d $(NITRO_FILES)
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.nds: %.arm9
|
||||
@ndstool -c $@ -9 $< -b $(GAME_ICON) "$(GAME_TITLE);$(GAME_SUBTITLE1);$(GAME_SUBTITLE2)" $(_ADDFILES)
|
||||
@echo built ... $(notdir $@)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.nds: %.elf
|
||||
@ndstool -c $@ -9 $< -b $(GAME_ICON) "$(GAME_TITLE);$(GAME_SUBTITLE1);$(GAME_SUBTITLE2)" $(_ADDFILES)
|
||||
@echo built ... $(notdir $@)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.arm9: %.elf
|
||||
@$(OBJCOPY) -O binary $< $@
|
||||
@echo built ... $(notdir $@)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.arm7: %.elf
|
||||
@$(OBJCOPY) -O binary $< $@
|
||||
@echo built ... $(notdir $@)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.elf:
|
||||
@echo linking $(notdir $@)
|
||||
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
|
||||
|
||||
include $(DEVKITARM)/ds_rules
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# TARGET is the name of the output
|
||||
@ -62,43 +19,56 @@ _ADDFILES := -d $(NITRO_FILES)
|
||||
# SOURCES is a list of directories containing source code
|
||||
# INCLUDES is a list of directories containing extra header files
|
||||
# DATA is a list of directories containing binary files embedded using bin2o
|
||||
# NITRODATA is the directory where files for NitroFS will be placed
|
||||
# GRAPHICS is a list of directories containing image files to be converted with grit
|
||||
# AUDIO is a list of directories containing audio to be converted by maxmod
|
||||
# ICON is the image used to create the game icon, leave blank to use default rule
|
||||
# NITRO is a directory that will be accessible via NitroFS
|
||||
#---------------------------------------------------------------------------------
|
||||
TARGET := $(shell basename $(CURDIR))
|
||||
BUILD := build
|
||||
SOURCES := source
|
||||
INCLUDES := include
|
||||
DATA := data
|
||||
NITRODATA := nitrofiles
|
||||
TARGET := $(shell basename $(CURDIR))
|
||||
BUILD := build
|
||||
SOURCES := source
|
||||
INCLUDES := include source
|
||||
DATA :=
|
||||
GRAPHICS :=
|
||||
AUDIO :=
|
||||
ICON :=
|
||||
|
||||
# specify a directory which contains the nitro filesystem
|
||||
# this is relative to the Makefile
|
||||
NITRO := nitrofiles
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# options for code generation
|
||||
#---------------------------------------------------------------------------------
|
||||
ARCH := -mthumb -mthumb-interwork
|
||||
ARCH := -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s
|
||||
|
||||
CFLAGS := -g -Wall -O2\
|
||||
-march=armv5te -mtune=arm946e-s -fomit-frame-pointer\
|
||||
-ffast-math \
|
||||
$(ARCH)
|
||||
|
||||
CFLAGS += $(INCLUDE) -DARM9
|
||||
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
|
||||
|
||||
ASFLAGS := -g $(ARCH)
|
||||
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
|
||||
CFLAGS := -g -Wall -O3\
|
||||
$(ARCH) $(INCLUDE) -DARM9
|
||||
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
|
||||
ASFLAGS := -g $(ARCH)
|
||||
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# any extra libraries we wish to link with the project
|
||||
# any extra libraries we wish to link with the project (order is important)
|
||||
#---------------------------------------------------------------------------------
|
||||
LIBS := -lnflib -ldswifi9 -lfilesystem -lfat -lnds9
|
||||
LIBS := -lnflib
|
||||
|
||||
# automatigically add libraries for NitroFS
|
||||
ifneq ($(strip $(NITRO)),)
|
||||
LIBS := $(LIBS) -lfilesystem -lfat
|
||||
endif
|
||||
# automagically add maxmod library
|
||||
ifneq ($(strip $(AUDIO)),)
|
||||
LIBS := $(LIBS) -lmm9
|
||||
endif
|
||||
|
||||
LIBS := $(LIBS) -ldswifi9 -lnds9
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# list of directories containing libraries, this must be the top level containing
|
||||
# include and lib
|
||||
#---------------------------------------------------------------------------------
|
||||
LIBDIRS := $(LIBNDS) $(CURDIR)/nflib
|
||||
|
||||
LIBDIRS := $(LIBNDS) $(PORTLIBS) $(DEVKITPRO)/nflib
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# no real need to edit anything past this point unless you need to add additional
|
||||
@ -107,64 +77,97 @@ LIBDIRS := $(LIBNDS) $(CURDIR)/nflib
|
||||
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
export OUTPUT := $(CURDIR)/$(TARGET)
|
||||
export OUTPUT := $(CURDIR)/$(TARGET)
|
||||
|
||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
||||
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
|
||||
export VPATH := $(CURDIR)/$(subst /,,$(dir $(ICON)))\
|
||||
$(foreach dir,$(SOURCES),$(CURDIR)/$(dir))\
|
||||
$(foreach dir,$(DATA),$(CURDIR)/$(dir))\
|
||||
$(foreach dir,$(GRAPHICS),$(CURDIR)/$(dir))
|
||||
|
||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
||||
|
||||
export NITRO_FILES := $(CURDIR)/$(NITRODATA)
|
||||
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
||||
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
||||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
||||
PNGFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.png)))
|
||||
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
|
||||
|
||||
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
||||
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
||||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
||||
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
|
||||
# prepare NitroFS directory
|
||||
ifneq ($(strip $(NITRO)),)
|
||||
export NITRO_FILES := $(CURDIR)/$(NITRO)
|
||||
endif
|
||||
|
||||
# get audio list for maxmod
|
||||
ifneq ($(strip $(AUDIO)),)
|
||||
export MODFILES := $(foreach dir,$(notdir $(wildcard $(AUDIO)/*.*)),$(CURDIR)/$(AUDIO)/$(dir))
|
||||
|
||||
# place the soundbank file in NitroFS if using it
|
||||
ifneq ($(strip $(NITRO)),)
|
||||
export SOUNDBANK := $(NITRO_FILES)/soundbank.bin
|
||||
|
||||
# otherwise, needs to be loaded from memory
|
||||
else
|
||||
export SOUNDBANK := soundbank.bin
|
||||
BINFILES += $(SOUNDBANK)
|
||||
endif
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# use CXX for linking C++ projects, CC for standard C
|
||||
#---------------------------------------------------------------------------------
|
||||
ifeq ($(strip $(CPPFILES)),)
|
||||
#---------------------------------------------------------------------------------
|
||||
export LD := $(CC)
|
||||
export LD := $(CC)
|
||||
#---------------------------------------------------------------------------------
|
||||
else
|
||||
#---------------------------------------------------------------------------------
|
||||
export LD := $(CXX)
|
||||
export LD := $(CXX)
|
||||
#---------------------------------------------------------------------------------
|
||||
endif
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
export OFILES := $(addsuffix .o,$(BINFILES)) \
|
||||
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
|
||||
export OFILES_BIN := $(addsuffix .o,$(BINFILES))
|
||||
|
||||
export INCLUDE := $(foreach dir,$(INCLUDES),-iquote $(CURDIR)/$(dir)) \
|
||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
||||
-I$(CURDIR)/$(BUILD)
|
||||
export OFILES_SOURCES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
|
||||
|
||||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
|
||||
export OFILES := $(PNGFILES:.png=.o) $(OFILES_BIN) $(OFILES_SOURCES)
|
||||
|
||||
icons := $(wildcard *.bmp)
|
||||
export HFILES := $(PNGFILES:.png=.h) $(addsuffix .h,$(subst .,_,$(BINFILES)))
|
||||
|
||||
ifneq (,$(findstring $(TARGET).bmp,$(icons)))
|
||||
export GAME_ICON := $(CURDIR)/$(TARGET).bmp
|
||||
export INCLUDE := $(foreach dir,$(INCLUDES),-iquote $(CURDIR)/$(dir))\
|
||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include)\
|
||||
-I$(CURDIR)/$(BUILD)
|
||||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
|
||||
|
||||
ifeq ($(strip $(ICON)),)
|
||||
icons := $(wildcard *.bmp)
|
||||
|
||||
ifneq (,$(findstring $(TARGET).bmp,$(icons)))
|
||||
export GAME_ICON := $(CURDIR)/$(TARGET).bmp
|
||||
else
|
||||
ifneq (,$(findstring icon.bmp,$(icons)))
|
||||
export GAME_ICON := $(CURDIR)/icon.bmp
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifneq (,$(findstring icon.bmp,$(icons)))
|
||||
export GAME_ICON := $(CURDIR)/icon.bmp
|
||||
endif
|
||||
ifeq ($(suffix $(ICON)), .grf)
|
||||
export GAME_ICON := $(CURDIR)/$(ICON)
|
||||
else
|
||||
export GAME_ICON := $(CURDIR)/$(BUILD)/$(notdir $(basename $(ICON))).grf
|
||||
endif
|
||||
endif
|
||||
|
||||
.PHONY: $(BUILD) clean
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
$(BUILD):
|
||||
@[ -d $@ ] || mkdir -p $@
|
||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
||||
@mkdir -p $@
|
||||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
clean:
|
||||
@echo clean ...
|
||||
@rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).arm9
|
||||
@rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(SOUNDBANK)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
else
|
||||
@ -172,14 +175,47 @@ else
|
||||
#---------------------------------------------------------------------------------
|
||||
# main targets
|
||||
#---------------------------------------------------------------------------------
|
||||
$(OUTPUT).nds : $(OUTPUT).elf
|
||||
$(OUTPUT).elf : $(OFILES)
|
||||
$(OUTPUT).nds: $(OUTPUT).elf $(NITRO_FILES) $(GAME_ICON)
|
||||
$(OUTPUT).elf: $(OFILES)
|
||||
|
||||
# source files depend on generated headers
|
||||
$(OFILES_SOURCES) : $(HFILES)
|
||||
|
||||
# need to build soundbank first
|
||||
$(OFILES): $(SOUNDBANK)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.bin.o : %.bin
|
||||
# rule to build solution from music files
|
||||
#---------------------------------------------------------------------------------
|
||||
$(SOUNDBANK) : $(MODFILES)
|
||||
#---------------------------------------------------------------------------------
|
||||
mmutil $^ -d -o$@ -hsoundbank.h
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.bin.o %_bin.h : %.bin
|
||||
#---------------------------------------------------------------------------------
|
||||
@echo $(notdir $<)
|
||||
$(bin2o)
|
||||
@$(bin2o)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# This rule creates assembly source files using grit
|
||||
# grit takes an image file and a .grit describing how the file is to be processed
|
||||
# add additional rules like this for each image extension
|
||||
# you use in the graphics folders
|
||||
#---------------------------------------------------------------------------------
|
||||
%.s %.h: %.png %.grit
|
||||
#---------------------------------------------------------------------------------
|
||||
grit $< -fts -o$*
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# Convert non-GRF game icon to GRF if needed
|
||||
#---------------------------------------------------------------------------------
|
||||
$(GAME_ICON): $(notdir $(ICON))
|
||||
#---------------------------------------------------------------------------------
|
||||
@echo convert $(notdir $<)
|
||||
@grit $< -g -gt -gB4 -gT FF00FF -m! -p -pe 16 -fh! -ftr
|
||||
|
||||
-include $(DEPSDIR)/*.d
|
||||
|
||||
#---------------------------------------------------------------------------------------
|
||||
endif
|
||||
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
cls
|
||||
make clean
|
||||
pause
|
||||
exit
|
@ -1,5 +0,0 @@
|
||||
@echo off
|
||||
cls
|
||||
make
|
||||
pause
|
||||
exit
|
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB |
@ -1,131 +0,0 @@
|
||||
#ifndef __NF_2D_H__
|
||||
#define __NF_2D_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de funciones 2D comunes
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Set2D();
|
||||
void NF_Set2D(u8 screen, u8 mode);
|
||||
// Inicia el modo 2D seleccionado en la pantalla deseada
|
||||
|
||||
|
||||
|
||||
// Funcion NF_ShowBg();
|
||||
void NF_ShowBg(u8 screen, u8 layer);
|
||||
// Haz visible el fondo de la capa y pantalla dados
|
||||
|
||||
|
||||
|
||||
// Funcion NF_HideBg();
|
||||
void NF_HideBg(u8 screen, u8 layer);
|
||||
// Oculta el fondo de la capa y pantalla dados
|
||||
|
||||
|
||||
|
||||
// Funcion NF_ScrollBg();
|
||||
void NF_ScrollBg(u8 screen, u8 layer, s16 x, s16 y);
|
||||
// Mueve el fondo a las coordenadas especificadas.
|
||||
// Debes de indicar la pantalla, capa, y coordenadas X e Y
|
||||
// Si el mapa es mayor de 512 en alguna medida, debes de mantener el fondo en RAM
|
||||
|
||||
|
||||
|
||||
// Funcion NF_MoveSprite();
|
||||
void NF_MoveSprite(u8 screen, u8 id, s16 x, s16 y);
|
||||
// Mueve el Sprite a las coordenadas especificadas
|
||||
// Debes de indicar la pantalla, id de sprite y coordenadas
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SpriteLayer();
|
||||
void NF_SpriteLayer(u8 screen, u8 id, u8 layer);
|
||||
// Define la capa sobre la que el sprite sera dibujado
|
||||
// Debes de indicar la pantalla, id del sprite y capa
|
||||
|
||||
|
||||
|
||||
// Funcion NF_ShowSprite();
|
||||
void NF_ShowSprite(u8 screen, u8 id, bool show);
|
||||
// Muestra o oculta el sprite
|
||||
// Debes especificar la pantalla, id del sprite y el estado (true, false)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_HflipSprite();
|
||||
void NF_HflipSprite(u8 screen, u8 id, bool hflip);
|
||||
// Voltea el Sprite horizontalmente
|
||||
// Debes especificar la pantalla, id del sprite y el estado (true, false)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_GetSpriteHflip();
|
||||
extern bool NF_GetSpriteHflip(u8 screen, u8 id);
|
||||
// Devuelve el estado del volteado horizontal de un sprite
|
||||
// Debes especificar la pantalla y la id del sprite
|
||||
|
||||
|
||||
|
||||
// Funcion NF_VflipSprite();
|
||||
void NF_VflipSprite(u8 screen, u8 id, bool vflip);
|
||||
// Voltea el Sprite verticalmente
|
||||
// Debes especificar la pantalla, id del sprite y el estado (true, false)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_GetSpriteVflip();
|
||||
extern bool NF_GetSpriteVflip(u8 screen, u8 id);
|
||||
// Devuelve el estado del volteado vertical de un sprite
|
||||
// Debes especificar la pantalla y la id del sprite
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SpriteFrame();
|
||||
void NF_SpriteFrame(u8 screen, u8 id, u16 frame);
|
||||
// Cambia el frame de un Sprite
|
||||
// Debes especificar la pantalla, el Id del sprite y el frame
|
||||
|
||||
|
||||
|
||||
// Funcion NF_EnableSpriteRotScale();
|
||||
void NF_EnableSpriteRotScale(u8 screen, u8 sprite, u8 id, bool doublesize);
|
||||
// Habilita el sprite como rotable y escalable
|
||||
// Debes especificar la pantalla, nº de sprite, id de rotacion y si
|
||||
// tiene que activarse el doublesize (tamaño x2)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_DisableSpriteRotScale();
|
||||
void NF_DisableSpriteRotScale(u8 screen, u8 sprite);
|
||||
// Deshabilita un sprite como rotable y escalable
|
||||
// Debes especificar la pantalla y el nº de sprite
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SpriteRotScale();
|
||||
void NF_SpriteRotScale(u8 screen, u8 id, s16 angle, u16 sx, u16 sy);
|
||||
// Define el angulo de rotacion y escala de los Sprites asociados a la Id.
|
||||
// El rango del angulo es desde -512 a 512, siendo 0 el valor central
|
||||
// El rango de escalado va de 0 a 512, siendo 256 el valor normal (100%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,42 +0,0 @@
|
||||
#ifndef __NF_3D_H__
|
||||
#define __NF_3D_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de funciones 3D
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Set3D();
|
||||
void NF_Set3D(u8 screen, u8 mode);
|
||||
// Inicia el modo 3D seleccionado en la pantalla deseada
|
||||
|
||||
|
||||
// Funcion NF_InitOpenGL();
|
||||
void NF_InitOpenGL(void);
|
||||
// Inicializa el OpenGL para la libreria
|
||||
|
||||
|
||||
|
||||
// Funcion NF_GetTextureSize();
|
||||
extern u16 NF_GetTextureSize(u16 textel);
|
||||
// Devuelve el tamaño del textel
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,98 +0,0 @@
|
||||
#ifndef __NF_AFFINEBG_H__
|
||||
#define __NF_AFFINEBG_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Includes de Fondos Affine
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Estructura para almacenar los parametros de los fondos Affine
|
||||
typedef struct {
|
||||
s32 x; // Posicion X
|
||||
s32 y; // Posicion Y
|
||||
s32 x_center; // Centro X
|
||||
s32 y_center; // Centro Y
|
||||
s32 x_scale; // Valor Zoom X (PA)
|
||||
s32 y_scale; // Valor Zoom Y (PD)
|
||||
s32 x_tilt; // Valor Inclinacion X (PB)
|
||||
s32 y_tilt; // Valor Inclinacion Y (PC)
|
||||
s32 angle; // Valor de la rotacion
|
||||
} NF_TYPE_AFFINE_BG;
|
||||
extern NF_TYPE_AFFINE_BG NF_AFFINE_BG[2][4];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitTiledBgSys();
|
||||
void NF_InitAffineBgSys(u8 screen);
|
||||
// Inicializa el sistema de fondos Affine. Solo puede usarse en las capas 2 y 3, los fondos en
|
||||
// la misma pantalla deben de compartir la paleta y no pueden tener mas de 256 tiles.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadAffineBg();
|
||||
void NF_LoadAffineBg(const char* file, const char* name, u16 width, u16 height);
|
||||
// Carga un fondo tileado desde FAT
|
||||
// Debes de especificar el archivo que se cargara (sin extension) y el nombre
|
||||
// que le quieres dar y las medidas en pixeles
|
||||
// Los buffers para fondos tileados deben estar inicializados antes de usar esta funcion
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UnloadAffineBg();
|
||||
void NF_UnloadAffineBg(const char* name);
|
||||
// Borra de la RAM el fondo affine especificado. Es una simple llamada a la funcion NF_UnloadTiledBg();
|
||||
|
||||
|
||||
|
||||
// Funcion NF_CreateAffineBg();
|
||||
void NF_CreateAffineBg(u8 screen, u8 layer, const char* name, u8 wrap);
|
||||
// Crea un fondo con los parametros dados, indicale la pantalla, capa, nombre y si se activa la opcion
|
||||
// de WRAP arround (0 desactivado, 1 activado).
|
||||
|
||||
|
||||
|
||||
// Funcion NF_DeleteAffineBg();
|
||||
void NF_DeleteAffineBg(u8 screen, u8 layer);
|
||||
// Borra el fondo Affine especificado
|
||||
|
||||
|
||||
|
||||
// Funcion NF_AffineBgTransform();
|
||||
void NF_AffineBgTransform(u8 screen, u8 layer, s32 x_scale, s32 y_scale, s32 x_tilt, s32 y_tilt);
|
||||
// Modifica los parametros de la matriz de transformacion del fondo affine
|
||||
|
||||
|
||||
|
||||
// Funcion NF_AffineBgMove();
|
||||
void NF_AffineBgMove(u8 screen, u8 layer, s32 x, s32 y, s32 angle);
|
||||
// Desplaza el fondo affine y rotalo (-2048 a 2048)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_AffineBgCenter();
|
||||
void NF_AffineBgCenter(u8 screen, u8 layer, s32 x, s32 y);
|
||||
// Define el centro de rotacion de un fondo affine
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,81 +0,0 @@
|
||||
#ifndef __NF_BASIC_H__
|
||||
#define __NF_BASIC_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de funciones basicas
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Define la variable global NF_ROOTFOLDER
|
||||
extern char NF_ROOTFOLDER[32];
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Error();
|
||||
void NF_Error(u16 code, const char* text, u32 value);
|
||||
// Errores para debug. Detiene el sistema e informa del error
|
||||
// 101: Fichero no encontrado
|
||||
// 102: Memoria insuficiente
|
||||
// 103: No quedan Slots libres
|
||||
// 104: Fondo no encontrado
|
||||
// 105: Fondo no creado
|
||||
// 106: Fuera de rango
|
||||
// 107: Insuficientes bloques contiguos en VRAM (Tiles)
|
||||
// 108: Insuficientes bloques contiguos en VRAM (Maps)
|
||||
// 109: Id ocupada (ya esta en uso)
|
||||
// 110: Id no cargada (en RAM)
|
||||
// 111: Id no en VRAM
|
||||
// 112: Sprite no creado
|
||||
// 113: Memoria VRAM insuficiente
|
||||
// 114: La capa de Texto no existe
|
||||
// 115: Medidas del fondo no compatibles (no son multiplos de 256)
|
||||
// 116: Archivo demasiado grande
|
||||
// 117: Medidas del fondo affine incorrectas
|
||||
// 118: Capa de creacion del fondo affine incorrecta
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SetRootFolder();
|
||||
void NF_SetRootFolder(const char* folder);
|
||||
// Define el nombre de la carpeta que se usara como "root" si se usa la FAT
|
||||
|
||||
|
||||
|
||||
// Funcion NF_DmaMemCopy();
|
||||
void NF_DmaMemCopy(void* destination, const void* source, u32 size);
|
||||
// Copia un bloque de memoria usando DMA (canal 3, halfwords) y vaciando previamente
|
||||
// el cache. Con pruebas de bloques grandes (64kb o 128kb) he observado que memcpy();
|
||||
// sigue siendo mas rapida.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_GetLanguage();
|
||||
extern u8 NF_GetLanguage(void);
|
||||
// Devuelve el ID del idioma del usuario
|
||||
// 0 : Japanese
|
||||
// 1 : English
|
||||
// 2 : French
|
||||
// 3 : German
|
||||
// 4 : Italian
|
||||
// 5 : Spanish
|
||||
// 6 : Chinese
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,226 +0,0 @@
|
||||
#ifndef __NF_BITMAPBG_H__
|
||||
#define __NF_BITMAPBG_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de funciones de fondos en modo Bitmap
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
// Define los slots maximos para los fondos de 16 bits
|
||||
#define NF_SLOTS_BG16B 16
|
||||
|
||||
// Define los slots maximos para los fondos de 8 bits
|
||||
#define NF_SLOTS_BG8B 16
|
||||
|
||||
// Define los Buffers para almacenar datos de 16 bits
|
||||
typedef struct {
|
||||
u16* buffer; // Buffer de datos
|
||||
u32 size; // Tamaño del buffer
|
||||
u16 width; // Ancho de la imagen (256 max)
|
||||
u16 height; // Altura de la imagen (256 max)
|
||||
bool inuse; // Esta en uso el buffer?
|
||||
} NF_TYPE_BG16B_INFO;
|
||||
extern NF_TYPE_BG16B_INFO NF_BG16B[NF_SLOTS_BG16B]; // Fondos RAW de 16 bits
|
||||
|
||||
// BackBuffer de 16 bits de cada pantalla
|
||||
extern u16* NF_16BITS_BACKBUFFER[2];
|
||||
|
||||
// Define los Buffers para almacenar datos de 8 bits
|
||||
typedef struct {
|
||||
u8* data; // Buffer de datos
|
||||
u32 data_size; // Tamaño del buffer de datos
|
||||
u16* pal; // Buffer para la paleta
|
||||
u32 pal_size; // Tamaño de la paleta
|
||||
bool inuse; // Esta en uso el buffer?
|
||||
} NF_TYPE_BG8B_INFO;
|
||||
extern NF_TYPE_BG8B_INFO NF_BG8B[NF_SLOTS_BG8B]; // Fondos indexados de 8 bits
|
||||
|
||||
// BackBuffer de 8 bits de cada pantalla
|
||||
typedef struct {
|
||||
u8* data;
|
||||
u16* pal;
|
||||
} NF_TYPE_BB8B_INFO;
|
||||
extern NF_TYPE_BB8B_INFO NF_8BITS_BACKBUFFER[2];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Init16bitsBgBuffers();
|
||||
void NF_Init16bitsBgBuffers(void);
|
||||
// Inicia los buffers para almacenar fondos de BITMAP 16 bits
|
||||
// Usalo UNA SOLA VEZ antes de usar los buffers
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Reset16bitsBgBuffers();
|
||||
void NF_Reset16bitsBgBuffers(void);
|
||||
// Reinicia los buffers para almacenar fondos de BITMAP 16 bits,
|
||||
// borrado su contenido
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Init16bitsBackBuffer();
|
||||
void NF_Init16bitsBackBuffer(u8 screen);
|
||||
// Inicia el backbuffer de la pantalla dada.
|
||||
// Usalo UNA SOLA VEZ antes de usar el backbuffer
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Enable16bitsBackBuffer();
|
||||
void NF_Enable16bitsBackBuffer(u8 screen);
|
||||
// Habilita el backbuffer de la pantalla indicada.
|
||||
// Si el buffer ya existe, la funcion borrara el contenido del mismo,
|
||||
// poniendo a 0 todos los bytes del buffer.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Disble16bitsBackBuffer();
|
||||
void NF_Disble16bitsBackBuffer(u8 screen);
|
||||
// Deshabilita el backbuffer de la pantalla indicada, liberando de la
|
||||
// RAM el espacio usado.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Flip16bitsBackBuffer();
|
||||
void NF_Flip16bitsBackBuffer(u8 screen);
|
||||
// Copia el contenido del backbuffer a la VRAM de la pantalla indicada.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitBitmapBgSys();
|
||||
void NF_InitBitmapBgSys(u8 screen, u8 mode);
|
||||
// Inicia el modo BITMAP en la pantalla especificada, con la profundidad de color
|
||||
// especificada. (0 -> 256 colores, 1 -> 16 bits)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Load16bitsBg();
|
||||
void NF_Load16bitsBg(const char* file, u8 slot);
|
||||
// Carga un Fondo BITMAP (en formato RAW) en el slot indicado,
|
||||
// de un tamaño maximo de 256x256 pixeles.
|
||||
// Debes especificar el nombre de archivo sin extension.
|
||||
// El archivo debe ser un binario con extension .img
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Load16bitsImage();
|
||||
void NF_Load16bitsImage(const char* file, u8 slot, u16 size_x, u16 size_y);
|
||||
// Carga una imagen BITMAP (en formato RAW) en el slot indicado,
|
||||
// de un tamaño maximo de 256x256 pixeles.
|
||||
// Debes especificar el nombre de archivo sin extension.
|
||||
// El archivo debe ser un binario con extension .img
|
||||
// Todos los pixeles Magenta de la imagen (0xFF00FF) seran transparentes.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Load16bImgData();
|
||||
void NF_Load16bImgData(const char* file, u8 slot, u16 x, u16 y, u8 type);
|
||||
// Funcion de uso interno, no documentar ni usar.
|
||||
// Cargador generico de datos de imagen de 16 bits a la RAM.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Unload16bitsBg();
|
||||
void NF_Unload16bitsBg(u8 slot);
|
||||
// Borra de la RAM los datos del buffer especificado
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Copy16bitsBuffer();
|
||||
void NF_Copy16bitsBuffer(u8 screen, u8 destination, u8 slot);
|
||||
// Copia los datos cargados en un Buffer de Bitmap a la VRAM o al BackBuffer
|
||||
// destination: 0 -> VRAM, 1 -> BackBuffer
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Draw16bitsImage();
|
||||
void NF_Draw16bitsImage(u8 screen, u8 slot, s16 x, s16 y, bool alpha);
|
||||
// Copia la imagen cargada en un Buffer de Bitmap al Backbuffer de la pantalla especificada
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Init8bitsBgBuffers();
|
||||
void NF_Init8bitsBgBuffers(void);
|
||||
// Inicializa los buffers necesarios para la carda de fondos en modo BITMAP de 8 bits.
|
||||
// Debes usar esta funcion antes de poder usar ninguno de los buffers.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Reset8bitsBgBuffers();
|
||||
void NF_Reset8bitsBgBuffers(void);
|
||||
// Reinicia los buffers de fondos de 8 bits, borrando todo el contenido de los buffers.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Load8bitsBg();
|
||||
void NF_Load8bitsBg(const char* file, u8 slot);
|
||||
// Carga los archivos necesarios de un fondo de 8 bits en el Slot indicado.
|
||||
// Debes especificar el nombre de archivo sin extension.
|
||||
// El archivo debe ser un binario con extension .img
|
||||
// La paleta debe tener la extension .pal
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Unload8bitsBg();
|
||||
void NF_Unload8bitsBg(u8 slot);
|
||||
// Borra de la RAM el fondo del slot indicado.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Copy8bitsBuffer();
|
||||
void NF_Copy8bitsBuffer(u8 screen, u8 destination, u8 slot);
|
||||
// Transfiere la imagen del buffer seleccionado a la pantalla y capas indicado o
|
||||
// al backbuffer.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Init8bitsBackBuffer();
|
||||
void NF_Init8bitsBackBuffer(u8 screen);
|
||||
// Inicializa los buffers del backbuffer para la pantalla indicada.
|
||||
// Debes usar esta funcion una vez antes de usar el backbuffer
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Enable8bitsBackBuffer();
|
||||
void NF_Enable8bitsBackBuffer(u8 screen);
|
||||
// Habilita el backbuffer de la pantalla indicada.
|
||||
// Si el buffer ya existe, la funcion borrara el contenido del mismo,
|
||||
// poniendo a 0 todos los bytes del buffer.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Disble8bitsBackBuffer();
|
||||
void NF_Disble8bitsBackBuffer(u8 screen);
|
||||
// Deshabilita el backbuffer de la pantalla indicada, liberando de la
|
||||
// RAM el espacio usado.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Flip8bitsBackBuffer();
|
||||
void NF_Flip8bitsBackBuffer(u8 screen, u8 destination);
|
||||
// Copia el contenido del backbuffer a la VRAM de la pantalla indicada.
|
||||
// Debes especificar la capa de destino:
|
||||
// 0 -> Capa 2
|
||||
// 1 -> Capa 3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,102 +0,0 @@
|
||||
#ifndef __NF_COLISION_H__
|
||||
#define __NF_COLISION_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de Colisiones
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Define los slots maximos para los mapas de colisiones
|
||||
#define NF_SLOTS_CMAP 32
|
||||
|
||||
// Define la estructura de control de mapas de colisiones
|
||||
typedef struct {
|
||||
char* tiles; // Buffer para almacenar los tiles
|
||||
char* map; // Buffer para almacenar el mapa
|
||||
char* pal; // Buffer para almacenar la paleta
|
||||
u32 tiles_size; // Tamaño de los archivos
|
||||
u32 map_size;
|
||||
u32 pal_size;
|
||||
u16 width; // Ancho del mapa (en pixeles)
|
||||
u16 height; // Alto del mapa (en pixeles)
|
||||
bool inuse; // Esta en uso el slot?
|
||||
} NF_TYPE_CMAP_INFO;
|
||||
extern NF_TYPE_CMAP_INFO NF_CMAP[NF_SLOTS_CMAP]; // Datos de los mapas de colision
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitCmapBuffers();
|
||||
void NF_InitCmapBuffers(void);
|
||||
// Inicializa los buffers que almacenaran los mapas de colision
|
||||
// Debes usar esta funcion una unica vez antes de cargar ningun mapa de colision
|
||||
|
||||
|
||||
|
||||
// Funcion NF_ResetCmapBuffers();
|
||||
void NF_ResetCmapBuffers(void);
|
||||
// Reinicia los buffers y variables de los mapas de colisiones.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadColisionMap();
|
||||
void NF_LoadColisionMap(const char* file, u8 id, u16 width, u16 height);
|
||||
// Carga un mapa de colisiones en el slot indicado.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UnloadColisionMap();
|
||||
void NF_UnloadColisionMap(u8 id);
|
||||
// Borra de la RAM el mapa de colisiones con el nº de slot indicado.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_GetTile();
|
||||
extern u16 NF_GetTile(u8 slot, s32 x, s32 y);
|
||||
// Devuelve el numero de tile de la posicion especificada.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SetTile();
|
||||
void NF_SetTile(u8 slot, s32 x, s32 y, u16 value);
|
||||
// Cambia el valor del tile en la posicion especificada.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadColisionBg();
|
||||
void NF_LoadColisionBg(const char* file, u8 id, u16 width, u16 height);
|
||||
// Carga un fondo de colisiones para pixel perfect
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UnloadColisionBg();
|
||||
void NF_UnloadColisionBg(u8 id);
|
||||
// Descarga un fondo de colisiones para pixel perfect
|
||||
|
||||
|
||||
|
||||
// Funcion NF_GetPoint();
|
||||
extern u8 NF_GetPoint(u8 slot, s32 x, s32 y);
|
||||
// Obten el color del pixel de las coordenadas dadas
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,71 +0,0 @@
|
||||
#ifndef __NF_DEFINES_H__
|
||||
#define __NF_DEFINES_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Definiciones General
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Definicion de los datos del usuario
|
||||
// Informacion obtenida de PALIB source code
|
||||
// Referencias usadas de http://nds.metawiki.com/Firmware
|
||||
|
||||
/*
|
||||
|
||||
FW offset* RAM address Bytes Description
|
||||
0x000020 2 user settings offset / 8 (default 0x7FC0 => 0x3FE00)
|
||||
0x00002A 2 CRC16 (with initial value 0) of 0x2C with config length
|
||||
0x00002C 2 config length (0x138)
|
||||
0x000036 6 MAC address
|
||||
0x00003C 4 enabled channels
|
||||
0x000065 1 ?
|
||||
0x000082 1 ?
|
||||
0x000100 1 ?
|
||||
0x000146 14 ?
|
||||
0x000162 1 ?
|
||||
0x03Fx00 0x023FFC80 1 version (5)
|
||||
0x03Fx02 0x027FFC82 1 favorite color (0-15)
|
||||
0x03Fx03 0x027FFC83 1 birthday month (1-12)
|
||||
0x03Fx04 0x027FFC84 1 birthday day (1-31)
|
||||
0x03Fx06 0x027FFC86 20 name, UTF-16
|
||||
0x03Fx1A 0x027FFC9A 1/2 length of name in characters
|
||||
0x03Fx1C 0x027FFC9C 52 message, UTF-16
|
||||
0x03Fx50 0x027FFCD0 1/2 length of message in characters
|
||||
0x03Fx52 0x027FFCD2 1 alarm hour
|
||||
0x03Fx53 0x027FFCD3 1 alarm minute
|
||||
0x03Fx56 0x027FFCD6 1 0x80=enable alarm, bit 0..6=enable?
|
||||
0x027FFCD8 12 touch-screen calibration
|
||||
0x027FFCE4 bit 0..2 language
|
||||
0x027FFCE4 bit 3 GBA mode screen selection. 0=upper, 1=lower
|
||||
0x027FFCE4 bit 6 auto/manual mode. 0=manual, 1=auto
|
||||
WIFI power calibration
|
||||
0x03Fx70 1/2 update counter (used to check latest)
|
||||
0x03Fx72 CRC16 of 0x03FF00, 0x70 bytes
|
||||
|
||||
*/
|
||||
|
||||
#define NF_UDATA_COLOR *(u8*)(0x027FFC82)
|
||||
#define NF_UDATA_BDAY_MONTH *(u8*)(0x027FFC83)
|
||||
#define NF_UDATA_BDAY_DAY *(u8*)(0x027FFC84)
|
||||
#define NF_UDATA_ALARM_HOUR *(u8*)(0x027FFCD2)
|
||||
#define NF_UDATA_ALARM_MINUTE *(u8*)(0x027FFCD3)
|
||||
#define NF_UDATA_NAME *(u8*)(0x027FFC86)
|
||||
#define NF_UDATA_NAME_SIZE *(u8*)(0x027FFC9A)
|
||||
#define NF_UDATA_MSG *(u8*)(0x027FFC9C)
|
||||
#define NF_UDATA_MSG_SIZE *(u8*)(0x027FFCD0)
|
||||
#define NF_UDATA_LANG *(u8*)(0x027FFCE4)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,106 +0,0 @@
|
||||
#ifndef __NF_LIB_H__
|
||||
#define __NF_LIB_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include General
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Notas sobre BITSHIFT
|
||||
|
||||
(n >> x) Divide n / x
|
||||
(n << x) Multiplica n * x
|
||||
|
||||
Valores de X
|
||||
2 = 1
|
||||
4 = 2
|
||||
8 = 3
|
||||
16 = 4
|
||||
32 = 5
|
||||
64 = 6
|
||||
128 = 7
|
||||
256 = 8
|
||||
512 = 9
|
||||
1024 = 10
|
||||
2048 = 11
|
||||
4096 = 12
|
||||
8192 = 13
|
||||
16384 = 14
|
||||
32768 = 15
|
||||
65536 = 16
|
||||
|
||||
Dado que la DS no tiene unidad de coma flotante, siempre que dividas o
|
||||
multipliques por numeros de base 2, usa el bitshift
|
||||
Por ejemplo:
|
||||
a = (512 / 8);
|
||||
seria equivalente a
|
||||
a = (512 >> 3);
|
||||
Multiplicando
|
||||
b = (3 * 2048);
|
||||
seria con bitshift
|
||||
b = (3 << 11);
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
// Definiciones comunes
|
||||
#include "nf_defines.h"
|
||||
|
||||
// Libreria de funciones basicas y comunes
|
||||
#include "nf_basic.h"
|
||||
|
||||
// Libreria de funciones 2D comunes
|
||||
#include "nf_2d.h"
|
||||
|
||||
// Libreria de fondos con Tiles
|
||||
#include "nf_tiledbg.h"
|
||||
|
||||
// Libreria de fondos Affine
|
||||
#include "nf_affinebg.h"
|
||||
|
||||
// Libreria de fondos en modo Bitmap
|
||||
#include "nf_bitmapbg.h"
|
||||
|
||||
// Libreria de fondos en modo mixto (Tiled / Bitmap 8 bits)
|
||||
#include "nf_mixedbg.h"
|
||||
|
||||
// Libreria de sprites de 256 colores
|
||||
#include "nf_sprite256.h"
|
||||
|
||||
// Libreria de textos
|
||||
#include "nf_text.h"
|
||||
|
||||
// Libreria de textos de 16 pixeles
|
||||
#include "nf_text16.h"
|
||||
|
||||
// Libreria de colisiones
|
||||
#include "nf_colision.h"
|
||||
|
||||
// Libreria de sonido
|
||||
#include "nf_sound.h"
|
||||
|
||||
// Libreria de archivos multimedia
|
||||
#include "nf_media.h"
|
||||
|
||||
// Libreria 3D, funciones comunes
|
||||
#include "nf_3d.h"
|
||||
|
||||
// Libreria 3D, Sprites
|
||||
#include "nf_sprite3d.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,33 +0,0 @@
|
||||
#ifndef __NF_MEDIA_H__
|
||||
#define __NF_MEDIA_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de funciones de carga de archivos multimedia
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadBMP();
|
||||
void NF_LoadBMP(const char* file, u8 slot);
|
||||
// Carga un archivo BMP de 8, 16 o 24 bits en un slot de imagenes de 16 bits.
|
||||
// Debes inicializar el modo 16 bits, el backbuffer y usar la funcion NF_Draw16bitsImage();
|
||||
// para mostrarlo.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,33 +0,0 @@
|
||||
#ifndef __NF_MIXEDBG_H__
|
||||
#define __NF_MIXEDBG_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de Fondos mixtos (Tiled / Bitmap 8 bits)
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitMixedBgSys();
|
||||
void NF_InitMixedBgSys(u8 screen);
|
||||
// Inicializa el modo mixto para fondo (Tiled BG + Bitmap 8 bits)
|
||||
// Capas 0 a 2 - Tiled
|
||||
// Capa 3 - Bitmap 8 bits
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,88 +0,0 @@
|
||||
#ifndef __NF_SOUND_H__
|
||||
#define __NF_SOUND_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de funciones de sonido
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Define los Slots para archivos de audio
|
||||
#define NF_SLOTS_RAWSOUND 32
|
||||
|
||||
// Define los Buffers para almacenar los archivos de audio
|
||||
extern char* NF_BUFFER_RAWSOUND[NF_SLOTS_RAWSOUND];
|
||||
|
||||
// Define la estructura de datos de los buffers (Audio)
|
||||
typedef struct {
|
||||
bool available; // Disponibilidat del Slot
|
||||
u32 size; // Tamaño (en bytes) del sonido
|
||||
u16 freq; // Frecuencia del sample
|
||||
u8 format; // Formato del sample
|
||||
} NF_TYPE_RAWSOUND_INFO;
|
||||
extern NF_TYPE_RAWSOUND_INFO NF_RAWSOUND[NF_SLOTS_RAWSOUND]; // Datos de los sonidos cargado
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitRawSoundBuffers();
|
||||
void NF_InitRawSoundBuffers(void);
|
||||
// Iniciliaza los buffers y estructuras de datos para cargar sonidos en
|
||||
// formato RAW. Debes de ejecutar esta funcion una vez antes de cargar
|
||||
// ningun sonido en este formato
|
||||
|
||||
|
||||
|
||||
// Funcion NF_ResetRawSoundBuffers();
|
||||
void NF_ResetRawSoundBuffers(void);
|
||||
// Reinicia todos los buffers de sonido. Esta funcion es util para vaciar todos los datos
|
||||
// en un cambio de pantalla, etc.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadRawSound();
|
||||
void NF_LoadRawSound(const char* file, u16 id, u16 freq, u8 format);
|
||||
// Carga un archivo RAW a la RAM desde la FAT o EFS
|
||||
// Debes especificar el nombre del archivo sin extension, el slot
|
||||
// donde lo guardaras (0 - 31), la frecuencia del sample (en Hz,
|
||||
// por ejemplo 11050) y el formato de datos
|
||||
// (0 - > 8 bits, 1 - > 16 bits, 2 -> ADPCM)
|
||||
|
||||
|
||||
|
||||
// Funcion UnloadRawSound();
|
||||
void NF_UnloadRawSound(u8 id);
|
||||
// Borra de la RAM el archivo cargado en el slot indicado.
|
||||
// Debes especificar el slot a borrar (0 - 31)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_PlayRawSound();
|
||||
extern u8 NF_PlayRawSound(u8 id, u8 volume, u8 pan, bool loop, u16 loopfrom);
|
||||
// Reproduce un archivo de sonido cargado en RAM.
|
||||
// Debes especificar el slot donde se ha cargado el sonido, el volumen (0 - 127),
|
||||
// el balance (0 Izquierda, 64 Centro, 127 Derecha), si se reproducira en bucle y
|
||||
// de ser asi, a partir de que sample se producira este.
|
||||
// Esta funcion devuelve el canal asignado a esta reproduccion
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,258 +0,0 @@
|
||||
#ifndef __NF_SPRITE256_H__
|
||||
#define __NF_SPRITE256_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de Sprites a 256 colores
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Define los Slots para sprites
|
||||
#define NF_SLOTS_SPR256GFX 256 // Almacena los graficos
|
||||
#define NF_SLOTS_SPR256PAL 64 // Almacena las paletas
|
||||
|
||||
// Define los Buffers para almacenar los Sprites
|
||||
extern char* NF_BUFFER_SPR256GFX[NF_SLOTS_SPR256GFX];
|
||||
extern char* NF_BUFFER_SPR256PAL[NF_SLOTS_SPR256PAL];
|
||||
|
||||
// Define la estructura de datos de los buffers (GFX)
|
||||
typedef struct {
|
||||
u32 size; // Tamaño (en bytes) del grafico (GFX)
|
||||
u16 width; // Ancho del Gfx
|
||||
u16 height; // Altura del Gfx
|
||||
bool available; // Disponibilidat del Slot
|
||||
} NF_TYPE_SPR256GFX_INFO;
|
||||
extern NF_TYPE_SPR256GFX_INFO NF_SPR256GFX[NF_SLOTS_SPR256GFX]; // Buffers de Graficos
|
||||
|
||||
// Define la estructura de datos de los buffers (PAL)
|
||||
typedef struct {
|
||||
u32 size; // Tamaño (en bytes) de la paleta (PAL)
|
||||
bool available; // Disponibilidat del Slot
|
||||
} NF_TYPE_SPR256PAL_INFO;
|
||||
extern NF_TYPE_SPR256PAL_INFO NF_SPR256PAL[NF_SLOTS_SPR256PAL]; // Buffers de Paletas
|
||||
|
||||
// Define la estructura de Gfx en VRAM
|
||||
typedef struct {
|
||||
u32 size; // Tamaño (en bytes) del Gfx
|
||||
u16 width; // Ancho del Gfx
|
||||
u16 height; // Altura del Gfx
|
||||
u32 address; // Posicion en la VRAM
|
||||
u16 ramid; // Numero de Slot en RAM del que provienes
|
||||
u16 framesize; // Tamaño del frame (en bytes)
|
||||
u16 lastframe; // Ultimo frame
|
||||
bool keepframes; // Si es un Sprite animado, debes de mantener los frames en RAM ?
|
||||
bool inuse; // Disponibilidat del Slot
|
||||
} NF_TYPE_SPR256VRAM_INFO;
|
||||
extern NF_TYPE_SPR256VRAM_INFO NF_SPR256VRAM[2][128];
|
||||
|
||||
// Datos de paletas de Sprites en VRAM (en uso, slot en ram, etc)
|
||||
typedef struct {
|
||||
bool inuse; // Slot en uso
|
||||
u8 ramslot; // Paleta original en RAM
|
||||
} NF_TYPE_SPRPALSLOT_INFO;
|
||||
extern NF_TYPE_SPRPALSLOT_INFO NF_SPRPALSLOT[2][16];
|
||||
|
||||
// Define la estructura de datos del OAM (Sprites)
|
||||
typedef struct {
|
||||
u8 index; // Numero de Sprite
|
||||
s16 x; // Coordenada X del Sprite
|
||||
s16 y; // Coordenada Y del Sprite
|
||||
u8 layer; // Prioridad en las capas
|
||||
u8 pal; // Paleta que usaras
|
||||
u32 size; // Tamaño del Sprite (macro)
|
||||
u32 color; // Modo de color (macro)
|
||||
u32* gfx; // Puntero al grafico usado
|
||||
s8 rot; // Id de rotacion (-1 ninguno) (0 - 31 Id de rotacion)
|
||||
bool doublesize; // Usar el "double size" al rotar ?
|
||||
bool hide; // Ocultar el Sprite
|
||||
bool vflip; // Volteado Vertical
|
||||
bool hflip; // Volteado Horizontal
|
||||
bool mosaic; // Mosaico
|
||||
u16 gfxid; // Id de Gfx usado
|
||||
u16 frame; // Frame actual
|
||||
u16 framesize; // Tamaño del frame (en bytes)
|
||||
u16 lastframe; // Ultimo frame
|
||||
bool created; // Esta creado este sprite ?
|
||||
} NF_TYPE_SPRITEOAM_INFO;
|
||||
extern NF_TYPE_SPRITEOAM_INFO NF_SPRITEOAM[2][128]; // 2 pantallas, 128 sprites
|
||||
|
||||
// Define la esturctura de control de la VRAM para Sprites
|
||||
typedef struct {
|
||||
s32 free; // Memoria VRAM libre
|
||||
u32 next; // Siguiente posicion libre
|
||||
u32 last; // Ultima posicion usada
|
||||
u32 pos[128]; // Posicion en VRAM para reusar despues de un borrado
|
||||
u32 size[128]; // Tamaño del bloque libre para reusar
|
||||
u16 deleted; // Numero de bloques borrados
|
||||
s32 lost; // Memoria VRAM irrecuperable (perdidas por fragmentacion)
|
||||
s32 fragmented; // Memoria VRAM fragmentada
|
||||
s32 inarow; // Memoria VRAM contigua
|
||||
} NF_TYPE_SPRVRAM_INFO;
|
||||
extern NF_TYPE_SPRVRAM_INFO NF_SPRVRAM[2]; // Informacion VRAM de Sprites en ambas pantallas
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitSpriteBuffers()
|
||||
void NF_InitSpriteBuffers(void);
|
||||
// Inicializa los buffers y estructuras de datos de los Buffers para almacenar Sprites
|
||||
// Usala antes de cargar cualquier Sprites
|
||||
// No uses esta funcion mas de una vez en tu codigo
|
||||
|
||||
|
||||
|
||||
// Funcion NF_ResetSpriteBuffers()
|
||||
void NF_ResetSpriteBuffers(void);
|
||||
// Reinicia los buffers y datos para almacenar Sprites
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitSpriteSys();
|
||||
void NF_InitSpriteSys(u8 screen);
|
||||
// Inicializa las variables de control de Sprites y paletas
|
||||
// Asigna 128kb de RAM para Sprites
|
||||
// Activa el Soporte para Sprites
|
||||
// Se debe especificar la pantalla (0 o 1)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadSpriteGfx();
|
||||
void NF_LoadSpriteGfx(const char* file, u16 id, u16 width, u16 height);
|
||||
// Carga un grafico para usarlo despues en la creacion de Sprites
|
||||
// Especifica el archivo, ID exclusivo (0 - 255) y medidas del grafico
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UnloadSpriteGfx();
|
||||
void NF_UnloadSpriteGfx(u16 id);
|
||||
// Borra de la RAM un Gfx cargado previamente con NF_LoadSpriteGfx();
|
||||
// Especifica la Id exclusiva (0 - 255) de grafico a borrar.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadSpritePal();
|
||||
void NF_LoadSpritePal(const char* file, u8 id);
|
||||
// Carga una paleta para usarla despues en la creacion de Sprites
|
||||
// Especifica el archivo y ID exclusivo (0 - 63)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UnloadSpritePal();
|
||||
void NF_UnloadSpritePal(u8 id);
|
||||
// Borra de la RAM una Paleta cargada previamente con NF_LoadSpritePal();
|
||||
// Especifica la Id exclusiva (0 - 63) de la paleta a borrar.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_VramSpriteGfx();
|
||||
void NF_VramSpriteGfx(u8 screen, u16 ram, u16 vram, bool keepframes);
|
||||
// Transfiere un Grafico cargado para Sprites a la VRAM
|
||||
// Debes especificar la pantalla, el Id del Grafico en RAM (origen),
|
||||
// la Id del grafico en VRAM (destino) y si, en caso de estar animado,
|
||||
// debe de copiar a la VRAM todos los frames o solo el que este en uso
|
||||
|
||||
|
||||
|
||||
// Funcion NF_FreeSpriteGfx();
|
||||
void NF_FreeSpriteGfx(u8 screen, u16 id);
|
||||
// Borra de la VRAM el Grafico con la Id. especificada.
|
||||
// Cualquier Sprite que este usando ese Gfx, quedara corrupto.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_VramSpriteGfxDefrag();
|
||||
void NF_VramSpriteGfxDefrag(u8 screen);
|
||||
// Desfragmenta la VRAM de Sprites (Gfx) de la pantalla dada
|
||||
// Esta se realiza automaticamente al borrar un Gfx de la VRAM
|
||||
// si la memoria fragmentada es superior a la contigua libre.
|
||||
// Puedes consultar estos valores con las siguientes variables
|
||||
// NF_SPRVRAM[u8 screen].free <- Memoria VRAM de Sprites libre
|
||||
// NF_SPRVRAM[u8 screen].fragmented <- Memoria VRAM de sprites libre fragmentada
|
||||
// NF_SPRVRAM[u8 screen].inarow <- Memoria VRAM de sprites libre, ultimo bloque mas grande
|
||||
// NF_SPRVRAM[u8 screen].lost <- Memoria VRAM libre no usable por fragmentacion
|
||||
|
||||
|
||||
|
||||
// Funcion NF_VramSpritePal();
|
||||
void NF_VramSpritePal(u8 screen, u8 id, u8 slot);
|
||||
// Transfiere una Paleta cargada para Sprites a la VRAM
|
||||
// Debes especificar la pantalla, la Id de la Paleta a trasnferir
|
||||
// y el slot de destino (0 - 15)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_CreateSprite();
|
||||
void NF_CreateSprite(u8 screen, u8 id, u16 gfx, u8 pal, s16 x, s16 y);
|
||||
// Crea un sprite en la pantalla.
|
||||
// Debes especificar la pantalla, la ID del Sprite (0 - 127),
|
||||
// la ID del Grafico que usaras (0 - 255), el slot de paleta (0 - 15),
|
||||
// y las coordenadas donde lo crearas.
|
||||
|
||||
|
||||
|
||||
// Funcion NF_DeleteSprite();
|
||||
void NF_DeleteSprite(u8 screen, u8 id);
|
||||
// Borra un sprite de la pantalla
|
||||
// Debes especificar la pantalla y la Id del Sprite a borrar
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SpriteOamSet();
|
||||
void NF_SpriteOamSet(u8 screen);
|
||||
// Copia los datos del array propio de OAM al OAM real
|
||||
// Debes especificar la pantalla
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SpriteSetPalColor();
|
||||
void NF_SpriteSetPalColor(u8 screen, u8 pal, u8 number, u8 r, u8 g, u8 b);
|
||||
// Cambia el valor de un color de la paleta de sprites especificada.
|
||||
// Debes especificar la pantalla, slot de la paleta en VRAM, numero de color
|
||||
// a cambiar dentro de la paleta y el nuevo valor a darle en formato RGB
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SpriteEditPalColor();
|
||||
void NF_SpriteEditPalColor(u8 screen, u8 pal, u8 number, u8 r, u8 g, u8 b);
|
||||
// Modifica los valores de la paleta seleccionada. Las modificaciones se efectuan
|
||||
// sobre la copia en RAM, por lo que los cambios no seran visibles hasta que se
|
||||
// transfiera la paleta a la VRAM
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SpriteUpdatePalette();
|
||||
void NF_SpriteUpdatePalette(u8 screen, u8 pal);
|
||||
// Actualiza la paleta en VRAM con la copia que se encuentra en la RAM
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SpriteGetPalColor();
|
||||
void NF_SpriteGetPalColor(u8 screen, u8 pal, u8 number, u8* r, u8* g, u8* b);
|
||||
// Obtiene el valor de un color de la paleta que se encuentra en la RAM
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -1,236 +0,0 @@
|
||||
#ifndef __NF_SPRITE3D_H__
|
||||
#define __NF_SPRITE3D_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de funciones 3D
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////
|
||||
// Defines y variables globales //
|
||||
//////////////////////////////////
|
||||
|
||||
// Numero maximo de sprites en pantalla
|
||||
#define NF_3DSPRITES 256
|
||||
|
||||
// Estructura de control de los sprites 3d
|
||||
typedef struct {
|
||||
s16 x; // Coordenada X
|
||||
s16 y; // Coordenada Y
|
||||
s16 z; // Coordenada Z
|
||||
s16 rx; // Rotacion Eje X (-512/0/512) << 6
|
||||
s16 ry; // Rotacion Eje Y (-512/0/512) << 6
|
||||
s16 rz; // Rotacion Eje Z (-512/0/512) << 6
|
||||
bool rot; // Rotacion en uso
|
||||
u16 sx; // Escala X (0/64/512) << 6
|
||||
u16 sy; // Escala Y (0/64/512) << 6
|
||||
bool scale; // Escalado en uso
|
||||
s16 width; // Ancho del sprite
|
||||
s16 height; // Alto del sprite
|
||||
bool inuse; // Esta en uso?
|
||||
bool show; // Debe mostrarse el sprite?
|
||||
u32 gfx_tex_format; // Guarda el formato de la textura
|
||||
u32 gfx; // Direccion donde esta almacenado el grafico en VRAM
|
||||
u16 gfxid; // Id de Gfx usado
|
||||
u16 frame; // Frame actual
|
||||
u16 newframe; // Frame al que cambiar
|
||||
u16 framesize; // Tamaño del frame (en bytes)
|
||||
u16 lastframe; // Ultimo frame
|
||||
u32 gfx_pal_format; // Guarda el formato de la paleta
|
||||
u32 pal; // Direccion donde esta almacenada la paleta en VRAM
|
||||
u16 palid; // Id de la paleta usada
|
||||
u16 prio; // Prioridad de dibujado del sprite
|
||||
u8 poly_id; // Identificador unico para el Alpha (0 por defecto, 63 prohibido)
|
||||
u8 alpha; // Nivel de alpha (0 - 31) (31 por defecto)
|
||||
} NF_TYPE_3DSPRITE_INFO;
|
||||
extern NF_TYPE_3DSPRITE_INFO NF_3DSPRITE[NF_3DSPRITES];
|
||||
|
||||
// Estructura de control Texturas en VRAM
|
||||
typedef struct {
|
||||
u32 size; // Tamaño (en bytes) del Gfx
|
||||
u16 width; // Ancho del Gfx
|
||||
u16 height; // Altura del Gfx
|
||||
u32 address; // Posicion en la VRAM
|
||||
u16 ramid; // Numero de Slot en RAM del que provienes
|
||||
u16 framesize; // Tamaño del frame (en bytes)
|
||||
u16 lastframe; // Ultimo frame
|
||||
bool keepframes; // Si es un Sprite animado, debes de mantener los frames en RAM ?
|
||||
bool inuse; // Disponibilidat del Slot
|
||||
} NF_TYPE_TEX256VRAM_INFO;
|
||||
extern NF_TYPE_TEX256VRAM_INFO NF_TEX256VRAM[NF_3DSPRITES];
|
||||
|
||||
// Estructura de control de las paletas en VRAM
|
||||
typedef struct {
|
||||
bool inuse; // Slot en uso
|
||||
u8 ramslot; // Paleta original en RAM
|
||||
} NF_TYPE_3DSPRPALSLOT_INFO;
|
||||
extern NF_TYPE_3DSPRPALSLOT_INFO NF_TEXPALSLOT[32];
|
||||
|
||||
// Define la esturctura de control de la VRAM para Sprites 3d
|
||||
typedef struct {
|
||||
s32 free; // Memoria VRAM libre
|
||||
u32 next; // Siguiente posicion libre
|
||||
u32 last; // Ultima posicion usada
|
||||
u32 pos[NF_3DSPRITES]; // Posicion en VRAM para reusar despues de un borrado
|
||||
u32 size[NF_3DSPRITES]; // Tamaño del bloque libre para reusar
|
||||
u16 deleted; // Numero de bloques borrados
|
||||
s32 lost; // Memoria VRAM irrecuperable (perdidas por fragmentacion)
|
||||
s32 fragmented; // Memoria VRAM fragmentada
|
||||
s32 inarow; // Memoria VRAM contigua
|
||||
} NF_TYPE_TEXVRAM_INFO;
|
||||
extern NF_TYPE_TEXVRAM_INFO NF_TEXVRAM; // Informacion VRAM de texturas
|
||||
|
||||
|
||||
// Define la estructura de control de los sprites 3d creados
|
||||
typedef struct {
|
||||
s16 total; // Numero de sprites creados
|
||||
u16 id[NF_3DSPRITES]; // ID del Sprite
|
||||
u16 bck[NF_3DSPRITES]; // Backup del ID
|
||||
} NF_TYPE_CREATED_3DSPRITE_INFO;
|
||||
extern NF_TYPE_CREATED_3DSPRITE_INFO NF_CREATED_3DSPRITE;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_Init3dSpriteSys();
|
||||
void NF_Init3dSpriteSys(void);
|
||||
// Inicializa el sistema de Sprites en 3D
|
||||
|
||||
|
||||
// Funcion NF_Vram3dSpriteGfx();
|
||||
void NF_Vram3dSpriteGfx(u16 ram, u16 vram, bool keepframes);
|
||||
// Transfiere un grafico de la RAM a la VRAM
|
||||
|
||||
|
||||
// Funcion NF_Free3dSpriteGfx();
|
||||
void NF_Free3dSpriteGfx(u16 id);
|
||||
// Elimina de la VRAM un grafico de texturas y desfragmenta la VRAM si es necesario
|
||||
|
||||
|
||||
// Funcion NF_Vram3dSpriteGfxDefrag();
|
||||
void NF_Vram3dSpriteGfxDefrag(void);
|
||||
// Desfragmenta la VRAM usada para texturas
|
||||
|
||||
|
||||
// Funcion NF_Vram3dSpritePal();
|
||||
void NF_Vram3dSpritePal(u8 id, u8 slot);
|
||||
// Copia una paleta a la VRAM
|
||||
|
||||
|
||||
// Funcion NF_Create3dSprite();
|
||||
void NF_Create3dSprite(u16 id, u16 gfx, u16 pal, s16 x, s16 y);
|
||||
// Crea un Sprite 3D en las coordenadas indicadas
|
||||
|
||||
|
||||
// Funcion NF_Delete3dSprite();
|
||||
void NF_Delete3dSprite(u16 id);
|
||||
// Borra el Sprite con la ID indicada
|
||||
|
||||
|
||||
// Funcion NF_Sort3dSprites();
|
||||
void NF_Sort3dSprites(void);
|
||||
// Reordena la cola de Sprites 3D creados de menor a mayor segun su ID
|
||||
// Los Sprites con numeros mas bajos tienen prioridad.
|
||||
|
||||
|
||||
// Funcion NF_Set3dSpritePriority();
|
||||
void NF_Set3dSpritePriority(u16 id, u16 prio);
|
||||
// Cambia la prioridad del Sprite
|
||||
|
||||
|
||||
// Funcion NF_Swap3dSpritePriority();
|
||||
void NF_Swap3dSpritePriority(u16 id_a, u16 id_b);
|
||||
// Intercambia la prioridad de dos Sprites
|
||||
|
||||
|
||||
// Funcion NF_Move3dSprite();
|
||||
void NF_Move3dSprite(u16 id, s16 x, s16 y);
|
||||
// Mueve el Sprite seleccionado a las coordenadas dadas
|
||||
|
||||
|
||||
// Funcion NF_Show3dSprite();
|
||||
void NF_Show3dSprite(u16 id, bool show);
|
||||
// Muestra u oculta el sprite con la id indicada
|
||||
|
||||
|
||||
// Funcion NF_Set3dSpriteFrame();
|
||||
void NF_Set3dSpriteFrame(u16 id, u16 frame);
|
||||
// Cambia el frame visible del sprite indicado
|
||||
|
||||
|
||||
// Funcion NF_Draw3dSprites();
|
||||
void NF_Draw3dSprites(void);
|
||||
// Dibuja en pantalla todos los sprites creados
|
||||
|
||||
|
||||
// Funcion NF_Update3dSpritesGfx();
|
||||
void NF_Update3dSpritesGfx(void);
|
||||
// Actualiza si es necesario las texturas de los sprites animados
|
||||
|
||||
|
||||
// Funcion NF_Rotate3dSprite();
|
||||
void NF_Rotate3dSprite(u16 id, s16 x, s16 y, s16 z);
|
||||
// Rota el Sprite sobre los ejes indicados (-512/0/512)
|
||||
|
||||
|
||||
// Funcion NF_Scale3dSprite();
|
||||
void NF_Scale3dSprite(u16 id, u16 x, u16 y);
|
||||
// Escala el sprite al tamaño indicado (0/64/512)
|
||||
|
||||
|
||||
// Funcion NF_Blend3dSprite();
|
||||
void NF_Blend3dSprite(u8 sprite, u8 poly_id, u8 alpha);
|
||||
// Habilita y cambia el nivel de alpha de el sprite 3d indicado. Para que la transparencia
|
||||
// sea efectiva entre Sprites, debes especificar un poly_id diferente para cada sprite
|
||||
// (entre 1 y 62). El rango de alpha es de 0 a 31, siendo 31 opaco. Para eliminar la
|
||||
// transparencia, selecciona un valor para alpha de 31 o especifica como poly_id el nº 0.
|
||||
|
||||
|
||||
// Funcion NF_3dSpritesLayer();
|
||||
void NF_3dSpritesLayer(u8 layer);
|
||||
// Selecciona la capa en la que se dibujaran los Sprites 3D. (0 - 3)
|
||||
// En realidad los Sprites 3D siempre se dibujan sobre la CAPA 0, esta funcion solo cambia
|
||||
// la prioridad de esta capa sobre las demas.
|
||||
|
||||
|
||||
// Funcion NF_3dSpriteEditPalColor();
|
||||
void NF_3dSpriteEditPalColor(u8 pal, u8 number, u8 r, u8 g, u8 b);
|
||||
// Modifica los valores de la paleta seleccionada. Las modificaciones se efectuan
|
||||
// sobre la copia en RAM, por lo que los cambios no seran visibles hasta que se
|
||||
// transfiera la paleta a la VRAM
|
||||
|
||||
|
||||
// Funcion NF_3dSpriteUpdatePalette();
|
||||
void NF_3dSpriteUpdatePalette(u8 pal);
|
||||
// Actualiza la paleta en VRAM con la copia que se encuentra en la RAM
|
||||
|
||||
|
||||
// Funcion NF_3dSpriteGetPalColor();
|
||||
void NF_3dSpriteGetPalColor(u8 pal, u8 number, u8* r, u8* g, u8* b);
|
||||
// Obtiene el valor de un color de la paleta que se encuentra en la RAM
|
||||
|
||||
|
||||
// Funcion NF_3dSpriteSetDeep();
|
||||
void NF_3dSpriteSetDeep(u8 id, s16 z);
|
||||
// Cambia la profuncidad de dibujado (z) del sprite (-512/0/512),
|
||||
// siendo -512 el punto mas cercano, 0 el centro por defecto
|
||||
// y 512 el punto mas lejano.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,116 +0,0 @@
|
||||
#ifndef __NF_TEXT_H__
|
||||
#define __NF_TEXT_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de Textos
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
// Define el nº de caracteres que tiene la fuente
|
||||
#define NF_TEXT_FONT_CHARS 127
|
||||
#define NF_TEXT_FONT_LAST_VALID_CHAR 113
|
||||
|
||||
|
||||
// Define la estructura de control de textos
|
||||
typedef struct {
|
||||
u16 width; // Ultimo tile de la fila (0 - x) 32 tiles serian 0 - 31
|
||||
u16 height; // Ultimo tile de la columna (0 - y)
|
||||
u8 rotation; // Rotacion del texto
|
||||
u8 slot; // Slot donde esta cargado el tileset de esta capa de texto
|
||||
u8 pal; // Paleta que usara el texto (0 por defecto)
|
||||
bool exist; // Existe la capa de texto?
|
||||
bool update; // Tienes que actualizar la capa?
|
||||
} NF_TYPE_TEXT_INFO;
|
||||
extern NF_TYPE_TEXT_INFO NF_TEXT[2][4]; // Datos de las capas de texto
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitTextSys();
|
||||
void NF_InitTextSys(u8 screen);
|
||||
// Inicializa el sistema de Texto para la pantalla dada
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadTextFont();
|
||||
void NF_LoadTextFont(const char* file, const char* name, u16 width, u16 height, u8 rotation);
|
||||
// Carga una fuente para usar como texto
|
||||
// La fuente se cargara en un slot libre de fondos tileados
|
||||
// Debes especificar el archivos sin extension y un nombre para referenciarla
|
||||
// En caso de que la fuente tenga los sets de rotacion a izquierda y derecha,
|
||||
// especificar 1 o 2 en el parametro "rot". 0 carga la fuente sin rotacion
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UnloadTextFont();
|
||||
void NF_UnloadTextFont(const char* name);
|
||||
// Borra un fuente cargada en RAM
|
||||
// Esta funcion simplemente llama a NF_UnloadTiledBg(); para su borrado
|
||||
|
||||
|
||||
|
||||
// Funcion NF_CreateTextLayer();
|
||||
void NF_CreateTextLayer(u8 screen, u8 layer, u8 rotation, const char* name);
|
||||
// Crea un fondo tileado para usarlo con texto
|
||||
// Esta funcion simplemente llama a NF_CreateTiledBg(); para su creacion
|
||||
|
||||
|
||||
|
||||
// Funcion NF_DeleteTextLayer();
|
||||
void NF_DeleteTextLayer(u8 screen, u8 layer);
|
||||
// Borra un fondo usado como capa de texto y sus buffers y variables asociadas
|
||||
|
||||
|
||||
|
||||
// Funcion NF_WriteText();
|
||||
void NF_WriteText(u8 screen, u8 layer, u16 x, u16 y, const char* text);
|
||||
// Escribe un texto en el buffer de texto de la pantalla y capa seleccionada
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UpdateTextLayers();
|
||||
void NF_UpdateTextLayers(void);
|
||||
// Copia el buffer de texto a la VRAM en las capas que sea necesario
|
||||
// realizar una actualizacion
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_ClearTextLayer();
|
||||
void NF_ClearTextLayer(u8 screen, u8 layer);
|
||||
// Borra el contanido de la capa de texto seleccionada
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_DefineTextColor();
|
||||
void NF_DefineTextColor(u8 screen, u8 layer, u8 color, u8 r, u8 g, u8 b);
|
||||
// Define uno de los 16 colores disponibles para texto, en formato RGB
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Function NF_SetTextColor();
|
||||
void NF_SetTextColor(u8 screen, u8 layer, u8 color);
|
||||
// Selecciona con que color definido se escribira el texto (no cambia el color del texto ya escrito)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,56 +0,0 @@
|
||||
#ifndef __NF_TEXT16_H__
|
||||
#define __NF_TEXT16_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de Textos de 16 pixels
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
// Define el nº de caracteres que tiene la fuente
|
||||
#define NF_TEXT_FONT_CHARS_16 127
|
||||
#define NF_TEXT_FONT_LAST_VALID_CHAR_16 113
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadTextFont16();
|
||||
void NF_LoadTextFont16(const char* file, const char* name, u16 width, u16 height, u8 rotation);
|
||||
// Carga una fuente para texto de 16 pixeles de altura
|
||||
|
||||
|
||||
|
||||
// Funcion NF_CreateTextLayer16();
|
||||
void NF_CreateTextLayer16(u8 screen, u8 layer, u8 rotation, const char* name);
|
||||
// Crea una capa de texto para fuentes de 16 pixeles
|
||||
|
||||
|
||||
|
||||
// Funcion NF_WriteText16();
|
||||
void NF_WriteText16(u8 screen, u8 layer, u16 x, u16 y, const char* text);
|
||||
// Escribe un texto en la capa y pantalla especificados
|
||||
|
||||
|
||||
|
||||
// Funcion NF_ClearTextLayer16();
|
||||
void NF_ClearTextLayer16(u8 screen, u8 layer);
|
||||
// Limpia la capa de texto especificada
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,312 +0,0 @@
|
||||
#ifndef __NF_TILEDBG_H__
|
||||
#define __NF_TILEDBG_H__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// NightFox LIB - Include de Fondos con tiles
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Define los slots maximos para los fondos
|
||||
#define NF_SLOTS_TBG 32 // Datos de los fondos
|
||||
#define NF_SLOTS_EXBGPAL 128 // Paletas extendidas (maximo 16 paletas por fondo)
|
||||
|
||||
// Define el numero maximo de bancos para tiles y mapas
|
||||
#define NF_MAX_BANKS_TILES 8
|
||||
#define NF_MAX_BANKS_MAPS 16
|
||||
|
||||
// Define el numero de bancos de Mapas y Tiles
|
||||
extern u8 NF_BANKS_TILES[2]; // (1 banks = 16kb) Cada banco de tiles puede alvergar 8 bancos de Mapas
|
||||
extern u8 NF_BANKS_MAPS[2]; // (1 bank = 2kb) Usar multiplos de 8. Cada set de 8 bancos consume 1 banco de tiles
|
||||
|
||||
// Define los Buffers para almacenar los fondos
|
||||
extern char* NF_BUFFER_BGTILES[NF_SLOTS_TBG];
|
||||
extern char* NF_BUFFER_BGMAP[NF_SLOTS_TBG];
|
||||
extern char* NF_BUFFER_BGPAL[NF_SLOTS_TBG];
|
||||
|
||||
|
||||
// Define estructura para almacenar la info de los fondos
|
||||
typedef struct {
|
||||
char name[32]; // Nombre del fondo
|
||||
u32 tilesize; // Tamaño del Tileset
|
||||
u32 mapsize; // Tamaño del Map
|
||||
u32 palsize; // Tamaño de la Paleta
|
||||
u16 width; // Ancho del fondo
|
||||
u16 height; // Altura del fondo
|
||||
bool available; // Disponibilidat del Slot
|
||||
} NF_TYPE_TBG_INFO;
|
||||
extern NF_TYPE_TBG_INFO NF_TILEDBG[NF_SLOTS_TBG]; // Datos de los fondos
|
||||
|
||||
// Define la estructura para almacenar la info y datos de las paletas extendidas
|
||||
typedef struct {
|
||||
char* buffer; // Buffer para almacenar la paleta
|
||||
u32 palsize; // Tamaño de la paleta
|
||||
bool inuse; // Slot libre o en uso
|
||||
} NF_TYPE_EXBGPAL_INFO;
|
||||
extern NF_TYPE_EXBGPAL_INFO NF_EXBGPAL[NF_SLOTS_EXBGPAL]; // Datos de las paletas extendidas
|
||||
|
||||
// Define estructura para almacenar la info de los fondos en pantalla
|
||||
typedef struct {
|
||||
u8 tilebase; // Bloque de inicio en VRAM del Tileset
|
||||
u8 tileblocks; // Bloques usados por el Tileset
|
||||
u8 mapbase; // Bloque de inicio en VRAM del Map
|
||||
u8 mapblocks; // Bloques usados por el Map
|
||||
u16 bgwidth; // Ancho del fondo
|
||||
u16 bgheight; // Altura del fondo
|
||||
u16 mapwidth; // Ancho del mapa
|
||||
u16 mapheight; // Altura del mapa
|
||||
u8 bgtype; // Tipo de mapa
|
||||
u8 bgslot; // Buffer de graficos usado (NF_BUFFER_BGMAP)
|
||||
u8 blockx; // Bloque de mapa (horizontal)
|
||||
u8 blocky; // bloque de mapa (vertical)
|
||||
bool created; // Flag de si esta creado
|
||||
} NF_TYPE_TBGLAYERS_INFO;
|
||||
// El hardware de la DS no permite mapas mayores de 512x512
|
||||
// Asi que informaremos si nuestor mapa lo gestionara el hardware si es menor o
|
||||
// igual a 512x512, o usaremos nuestro motor de Tile Swaping
|
||||
// bgtype 0: Normal (maximo 512 x 512)
|
||||
// bgtype 1: >512 x 256
|
||||
// bgtype 2: 256 x >512
|
||||
// bgtype 3: >512 x >512
|
||||
extern NF_TYPE_TBGLAYERS_INFO NF_TILEDBG_LAYERS[2][4]; //[screen][layer]
|
||||
|
||||
|
||||
|
||||
// Define el array de bloques libres
|
||||
extern u8 NF_TILEBLOCKS[2][NF_MAX_BANKS_TILES];
|
||||
extern u8 NF_MAPBLOCKS[2][NF_MAX_BANKS_MAPS];
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitTiledBgBuffers();
|
||||
void NF_InitTiledBgBuffers(void);
|
||||
// Inicializa los buffers y estructuras de control para usar los fondos "tileados"
|
||||
// Se debe usar antes de cargar o usar cualquier fondo
|
||||
// No uses esta funcion mas de una vez en tu codigo
|
||||
|
||||
|
||||
|
||||
// Funcion NF_ResetTiledBgBuffers();
|
||||
void NF_ResetTiledBgBuffers(void);
|
||||
// Borra todos los buffers y reinicia las estructuras de fondos "tileados"
|
||||
// Usala para los cambios de nivel y similares
|
||||
|
||||
|
||||
|
||||
// Funcion NF_InitTiledBgSys();
|
||||
void NF_InitTiledBgSys(u8 screen);
|
||||
// Inicializa las variables de control de tiles, mapas y paletas
|
||||
// Asigna 128kb de RAM para fondos tileados
|
||||
// Se debe especificar la pantalla (0 o 1)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadTiledBg();
|
||||
void NF_LoadTiledBg(const char* file, const char* name, u16 width, u16 height);
|
||||
// Carga un fondo tileado desde FAT
|
||||
// Debes de especificar el archivo que se cargara (sin extension) y el nombre
|
||||
// que le quieres dar y las medidas en pixeles
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadTilesForBg();
|
||||
void NF_LoadTilesForBg(const char* file, const char* name, u16 width, u16 height, u16 tile_start, u16 tile_end);
|
||||
// Carga desde la FAT los tiles especificados y su paleta
|
||||
// Ademas, crea un mapa vacio de la medida especificada
|
||||
// Esta funcion es util para cargar varios tiles y despues generar fondos
|
||||
// modificando el MAP desde cogido (Generador de escenarios, animaciones, etc)
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UnloadTiledBg();
|
||||
void NF_UnloadTiledBg(const char* name);
|
||||
// Borra de la RAM un fondo cargado con NF_LoadTiledBg();
|
||||
// Debes especificar el nombre que le diste al fondo
|
||||
|
||||
|
||||
|
||||
// Funcion NF_CreateTiledBg();
|
||||
void NF_CreateTiledBg(u8 screen, u8 layer, const char* name);
|
||||
// Crea un fondo con los parametros dados, indicale la pantalla, capa y nombre
|
||||
|
||||
|
||||
|
||||
// Funcion NF_DeleteTiledBg();
|
||||
void NF_DeleteTiledBg(u8 screen, u8 layer);
|
||||
// Borra un fondo de la memoria VRAM
|
||||
// Debes especificar la pantalla y numero de capa
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_GetTileMapAdress();
|
||||
extern u32 NF_GetTileMapAdress(u8 screen, u8 layer, u16 tile_x, u16 tile_y);
|
||||
// Funcion de uso interno de la libreria
|
||||
// Devuelve la direccion en el buffer de un tile concreto
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_GetTileOfMap();
|
||||
extern u16 NF_GetTileOfMap(u8 screen, u8 layer, u16 tile_x, u16 tile_y);
|
||||
// Obten el valor del tile del mapa indicado en las coordenadas (en tiles) indicadas.
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SetTileOfMap();
|
||||
void NF_SetTileOfMap(u8 screen, u8 layer, u16 tile_x, u16 tile_y, u16 tile);
|
||||
// Cambia el valor del tile del mapa indicado en las coordenadas (en tiles) indicadas.
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UpdateVramMap();
|
||||
void NF_UpdateVramMap(u8 screen, u8 layer);
|
||||
// Actualiza en VRAM el contenido del mapa seleccionado.
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_BgSetPalColor();
|
||||
void NF_BgSetPalColor(u8 screen, u8 layer, u8 number, u8 r, u8 g, u8 b);
|
||||
// Cambia al momento el valor de un color de la paleta
|
||||
// Cuidado! Funcion Muy lenta, usar solo para 2 o 3 colores por ciclo
|
||||
// Cambia el color directamente en la VRAM
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_BgEditPalColor();
|
||||
void NF_BgEditPalColor(u8 screen, u8 layer, u8 number, u8 r, u8 g, u8 b);
|
||||
// Edita un color de la paleta seleccionada.
|
||||
// El color se edita en el buffer de RAM, para que sea efectivo,
|
||||
// mandala a la VRAM con NF_UpdatePalette();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_BgUpdatePalette();
|
||||
void NF_BgUpdatePalette(u8 screen, u8 layer);
|
||||
// Actualiza la paleta en VRAM con la que se encuentra en el buffer de RAM
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_BgGetPalColor();
|
||||
void NF_BgGetPalColor(u8 screen, u8 layer, u8 number, u8* r, u8* g, u8* b);
|
||||
// Obtiene el valor de un color de la paleta que se encuentra en la RAM
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_GetTilePal();
|
||||
extern u8 NF_GetTilePal(u8 screen, u8 layer, u16 tile_x, u16 tile_y);
|
||||
// Devuelve que numero de paleta (0 - 15) esta usando el tile del fondo especificado.
|
||||
// Por defecto, todos los tiles usan la paleta del Slot nº0
|
||||
// Los datos se obtienen de la compia en RAM del mapa del fondo.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SetTilePal();
|
||||
void NF_SetTilePal(u8 screen, u8 layer, u16 tile_x, u16 tile_y, u8 pal);
|
||||
// Cambia el numero de paleta (0 - 15) que usara el tile del fondo especificado.
|
||||
// Por defecto, todos los tiles usan la paleta del Slot nº0
|
||||
// Los datos se escriben de la compia en RAM del mapa del fondo, por lo que no seran
|
||||
// visibles hasta que ejecutes la funcion NF_UpdateVramMap();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_LoadExBgPal();
|
||||
void NF_LoadExBgPal(const char* file, u8 slot);
|
||||
// Carga en el buffer de RAM correspondiente una paleta de fondos, para poderla usar
|
||||
// mas tarde como paleta extendida.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_UnloadExBgPal();
|
||||
void NF_UnloadExBgPal(u8 slot);
|
||||
// Borra de la RAM la paleta del slot especificado.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_VramExBgPal();
|
||||
void NF_VramExBgPal(u8 screen, u8 layer, u8 id, u8 slot);
|
||||
// Transfiere a la VRAM una paleta extendida en el slot de la pantalla y
|
||||
// fondo especificados.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SetExBgPal();
|
||||
void NF_SetExBgPal(u8 screen, u8 layer, u8 pal);
|
||||
// Cambia la paleta extendida que usara un fondo.
|
||||
// La paleta debe de estar transferida en la VRAM previamente
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SetTileHflip();
|
||||
void NF_SetTileHflip(u8 screen, u8 layer, u16 tile_x, u16 tile_y);
|
||||
// Invierte horizontalmente el estado actual del tile seleccionado
|
||||
// Los cambios no seran visibles hasta que actualices el mapa
|
||||
// con la funcion NF_UpdateVramMap();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_SetTileVflip();
|
||||
void NF_SetTileVflip(u8 screen, u8 layer, u16 tile_x, u16 tile_y);
|
||||
// Invierte verticalmente el estado actual del tile seleccionado
|
||||
// Los cambios no seran visibles hasta que actualices el mapa
|
||||
// con la funcion NF_UpdateVramMap();
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_RotateTileGfx();
|
||||
void NF_RotateTileGfx(u8 slot, u16 tile, u8 rotation);
|
||||
// Rota el grafico de un tile especificado. Rota el tile almacenado en un buffer de fondos
|
||||
// que se encuentra en RAM. Debes especificar el SLOT del buffer, numero de tile en el buffer
|
||||
// y el angulo de la rotacion.
|
||||
// 1 - 90º a la derecha
|
||||
// 2 - 90º a la izquierda
|
||||
// 3 - 180º
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
Binary file not shown.
0
extras/wifi/examples/udptalk/nitrofiles/delete.me
Normal file
0
extras/wifi/examples/udptalk/nitrofiles/delete.me
Normal file
@ -37,7 +37,7 @@
|
||||
|
||||
// Includes propios
|
||||
#include <nf_lib.h>
|
||||
#include <nf_wifi.h>
|
||||
#include "nf_wifi.h"
|
||||
|
||||
|
||||
/*
|
||||
@ -129,7 +129,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
if (loop) {
|
||||
// Debes enviar datos...
|
||||
sprintf(temp, "%05d", contador);
|
||||
sprintf(temp, "%05lu", contador);
|
||||
} else {
|
||||
// o la señal de salida?
|
||||
sprintf(temp, "Exit");
|
||||
@ -325,7 +325,7 @@ s16 _LookForServer(void) {
|
||||
|
||||
// Variables locales
|
||||
char myip[18];
|
||||
char temp[18];
|
||||
char temp[64];
|
||||
char character[2];
|
||||
|
||||
u16 n = 0;
|
||||
|
228
extras/wifi/examples/udptalk/source/nf_wifi.c
Normal file
228
extras/wifi/examples/udptalk/source/nf_wifi.c
Normal file
@ -0,0 +1,228 @@
|
||||
|
||||
// NightFox LIB - Funciones de WI-FI
|
||||
// Requiere DevkitARM
|
||||
// Codigo por NightFox
|
||||
// http://www.nightfoxandco.com/
|
||||
// Version 20110502
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Includes devKitPro
|
||||
#include <nds.h>
|
||||
#include <dswifi9.h>
|
||||
|
||||
// Includes C
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
|
||||
// Includes propios
|
||||
#include "nf_wifi.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Parametros de la RED
|
||||
struct in_addr NF_IP, NF_GATEWAY, NF_MASK, NF_DNS1, NF_DNS2; // Datos de la LAN
|
||||
|
||||
// Estructura del socket
|
||||
s32 NF_SOCKET; // Id del socket (servidor)
|
||||
s32 NF_CONNECTED; // Resultado de la conexion
|
||||
s32 NF_SINSIZE; // Tamaño de la Struct .SIN
|
||||
s32 NF_BYTES_RECIEVED; // Bytes recibidos
|
||||
|
||||
struct sockaddr_in NF_SA_SERVER; // Estructura Socket Adress In (Servidor)
|
||||
struct sockaddr_in NF_SA_CLIENT; // Estructura Socket Adress In (Cliente)
|
||||
|
||||
char NF_SEND_BUFFER[NF_WIFI_BUFFER_SIZE]; // Buffer de envio
|
||||
char NF_RECV_BUFFER[NF_WIFI_BUFFER_SIZE]; // Buffer de recepcion
|
||||
|
||||
bool NF_WIFI_IS_SERVER; // Almacena si eres servidor o cliente
|
||||
|
||||
s32 NF_MAXFD; // Numero maximo de sockets a examinar por select();
|
||||
fd_set NF_READFDS; // Estructura donde se almacenaran los datos de los sockets para select();
|
||||
struct timeval NF_TIMEOUT; // Almacena el valor del time out
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Funcion NF_WiFiConnectDefaultAp();
|
||||
bool NF_WiFiConnectDefaultAp(void) {
|
||||
|
||||
// Variables locales
|
||||
bool connect = false;
|
||||
|
||||
// Intenta conectarte al punto de acceso por defecto
|
||||
if (Wifi_InitDefault(WFC_CONNECT)) {
|
||||
// Obten los datos de la conexion
|
||||
NF_IP = Wifi_GetIPInfo(&NF_GATEWAY, &NF_MASK, &NF_DNS1, &NF_DNS2);
|
||||
connect = true;
|
||||
}
|
||||
|
||||
// Devuelve el resultado
|
||||
return connect;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Funcion NF_WiFiDisconnectAp();
|
||||
void NF_WiFiDisconnectAp(void) {
|
||||
|
||||
// Desconectate del punto de acceso
|
||||
Wifi_DisconnectAP();
|
||||
// Y apagala WIFI
|
||||
Wifi_DisableWifi();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Function NF_WIFI_CreateUdpSender();
|
||||
bool NF_WIFI_CreateUdpSender(const char* address, u16 port) {
|
||||
|
||||
// Variables locales
|
||||
bool status = true;
|
||||
char ip[24];
|
||||
|
||||
// Obtiene la direccion de host
|
||||
sprintf(ip, "%s", address);
|
||||
|
||||
// Seguidamente, comunicale al Socket donde debe conectarse
|
||||
// *** Vacia la estructura antes que nada ***
|
||||
memset(&NF_SA_SERVER, 0, sizeof(NF_SA_SERVER));
|
||||
memset(&NF_SA_CLIENT, 0, sizeof(NF_SA_CLIENT));
|
||||
// *** Tipo de conexion *** " .sin_family = AF_INET" especifica que el tipo de socket IPv4 Internet.
|
||||
NF_SA_SERVER.sin_family = AF_INET;
|
||||
// *** Puerto de conexion *** "htons()" convierte el valor de u16 a "TCP/IP network byte order"
|
||||
NF_SA_SERVER.sin_port = htons(port);
|
||||
// *** Direccion IP de la conexion ***
|
||||
// "inet_addr()" convierte una direccion IPv4 en formato texto ("192.168.0.1") al formato IN_ADDR
|
||||
// "inet_ntoa()" convierte al formato texto la direccion almacenada en "struct sockaddr_in"
|
||||
NF_SA_SERVER.sin_addr.s_addr = inet_addr(ip);
|
||||
|
||||
// Crea el socket
|
||||
if ((NF_SOCKET = socket(AF_INET, SOCK_DGRAM, 0)) == -1) status = false;
|
||||
|
||||
// Marca esta DS como cliente (envia los datos a una IP conocida [SERVIDOR])
|
||||
NF_WIFI_IS_SERVER = false;
|
||||
|
||||
// Devuelve el estado de la funcion
|
||||
return status;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Function NF_WIFI_CreateUdpListener();
|
||||
bool NF_WIFI_CreateUdpListener(u16 port) {
|
||||
|
||||
// Variables locales
|
||||
bool status = true;
|
||||
|
||||
// *** Vacia la estructura antes que nada ***
|
||||
memset(&NF_SA_SERVER, 0, sizeof(NF_SA_SERVER));
|
||||
memset(&NF_SA_CLIENT, 0, sizeof(NF_SA_CLIENT));
|
||||
// *** Tipo de conexion *** " .sin_family = AF_INET" especifica que el tipo de socket IPv4 Internet.
|
||||
NF_SA_SERVER.sin_family = AF_INET;
|
||||
// *** Puerto de conexion *** "htons()" convierte el valor de u16 a "TCP/IP network byte order"
|
||||
NF_SA_SERVER.sin_port = htons(port);
|
||||
// *** Direccion IP de la conexion ***
|
||||
// "inet_addr()" convierte una direccion IPv4 en formato texto ("192.168.0.1") al formato IN_ADDR
|
||||
// "inet_ntoa()" convierte al formato texto la direccion almacenada en "struct sockaddr_in"
|
||||
// "INADDR_ANY" como servidor, acepta conexiones desde cualquier IP
|
||||
NF_SA_SERVER.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
|
||||
// Crea el socket
|
||||
if ((NF_SOCKET = socket(AF_INET, SOCK_DGRAM, 0)) == -1) status = false;
|
||||
|
||||
// Enlaza el socket a un puerto concreto
|
||||
if ((bind(NF_SOCKET, (struct sockaddr*) &NF_SA_SERVER, sizeof(NF_SA_SERVER))) == -1) status = false;
|
||||
|
||||
// Tamaño del struct sockaddr
|
||||
NF_SINSIZE = sizeof(struct sockaddr);
|
||||
|
||||
// Marca esta DS como servidor (recibe datos desde cualquier IP [CLIENTE])
|
||||
NF_WIFI_IS_SERVER = true;
|
||||
|
||||
return status;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Funcion NF_WIFI_UdpSend();
|
||||
bool NF_WIFI_UdpSend(const char* data) {
|
||||
|
||||
// Borra el buffer de envio
|
||||
memset(&NF_SEND_BUFFER, 0, sizeof(NF_SEND_BUFFER));
|
||||
|
||||
// Pon los datos en el buffer de envio
|
||||
sprintf(NF_SEND_BUFFER, "%s", data);
|
||||
|
||||
// Envia los datos a traves del puerto UDP abierto
|
||||
if (NF_WIFI_IS_SERVER) {
|
||||
// Envia los datos a la IP desde la cual has recibido datos (esta DS esta en modo LISTENER)
|
||||
sendto(NF_SOCKET, NF_SEND_BUFFER, strlen(NF_SEND_BUFFER), 0, (struct sockaddr *)&NF_SA_CLIENT, sizeof(struct sockaddr));
|
||||
} else {
|
||||
// Envia los datos a la IP del servidor (esta DS esta en modo SENDER)
|
||||
sendto(NF_SOCKET, NF_SEND_BUFFER, strlen(NF_SEND_BUFFER), 0, (struct sockaddr *)&NF_SA_SERVER, sizeof(struct sockaddr));
|
||||
}
|
||||
|
||||
// Devuelte el estado
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Funcion NF_WIFI_UdpListen();
|
||||
s32 NF_WIFI_UdpListen(u32 timeout) {
|
||||
|
||||
s32 status = 0;
|
||||
|
||||
// Borra el estado de select();
|
||||
FD_ZERO(&NF_READFDS);
|
||||
|
||||
// Asigna el socket a la escucha
|
||||
FD_SET(NF_SOCKET, &NF_READFDS);
|
||||
|
||||
// Calcula el valor maximo a escuchar
|
||||
NF_MAXFD = (NF_SOCKET + 1);
|
||||
|
||||
// Y ahora aplica el timeout
|
||||
NF_TIMEOUT.tv_sec = 0;
|
||||
NF_TIMEOUT.tv_usec = timeout;
|
||||
|
||||
// Ejecuta el comando select
|
||||
status = select(NF_MAXFD, &NF_READFDS, NULL, NULL, &NF_TIMEOUT);
|
||||
|
||||
// Si hay datos disponibles para ser leidos
|
||||
if ((status > 0) && FD_ISSET(NF_SOCKET, &NF_READFDS)) {
|
||||
|
||||
// Borra el buffer de recepcion
|
||||
memset(&NF_RECV_BUFFER, 0, sizeof(NF_RECV_BUFFER));
|
||||
|
||||
// Recive los datos y ponlos en el buffer
|
||||
NF_BYTES_RECIEVED = recvfrom(NF_SOCKET, NF_RECV_BUFFER, NF_WIFI_BUFFER_SIZE, 0, (struct sockaddr *)&NF_SA_CLIENT, &NF_SINSIZE);
|
||||
|
||||
// Marca el final del buffer de recepcion
|
||||
NF_RECV_BUFFER[NF_BYTES_RECIEVED] = '\0';
|
||||
|
||||
// Fuerza el vaciado de los buffers
|
||||
fflush(stdout);
|
||||
|
||||
}
|
||||
|
||||
// Devuelte el estado
|
||||
return status;
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user