diff --git a/gba/logosplash/Makefile b/gba/logosplash/Makefile new file mode 100644 index 0000000..cd8e28d --- /dev/null +++ b/gba/logosplash/Makefile @@ -0,0 +1,137 @@ +#--------------------------------------------------------------------------------- +# Clear the implicit built in rules +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- +ifeq ($(strip $(DEVKITARM)),) +$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM) +endif + +include $(DEVKITARM)/gba_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output, if this ends with _mb generates a multiboot image +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing extra header files +#--------------------------------------------------------------------------------- +TARGET := PCXView_mb +BUILD := build +SOURCES := src data +INCLUDES := + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +ARCH := -mthumb -mthumb-interwork + +CFLAGS := -g -Wall -O0\ + -mcpu=arm7tdmi -mtune=arm7tdmi\ + -fomit-frame-pointer\ + -ffast-math \ + $(ARCH) + +CFLAGS += $(INCLUDE) + +ASFLAGS := $(ARCH) +LDFLAGS = -g $(ARCH) -Wl,-Map,$(notdir $@).map + +#--------------------------------------------------------------------------------- +# path to tools - this can be deleted if you set the path in windows +#--------------------------------------------------------------------------------- +export PATH := $(DEVKITARM)/bin:$(PATH) + +#--------------------------------------------------------------------------------- +# any extra libraries we wish to link with the project +#--------------------------------------------------------------------------------- +LIBS := -lgba + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := $(LIBGBA) + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) +export PATH := $(DEVKITARM)/bin:$(PATH) +export DEPSDIR := $(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# automatically build a list of object files for our project +#--------------------------------------------------------------------------------- +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +PCXFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcx))) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) +#--------------------------------------------------------------------------------- + export LD := $(CC) +#--------------------------------------------------------------------------------- +else +#--------------------------------------------------------------------------------- + export LD := $(CXX) +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- + +export OFILES := $(PCXFILES:.pcx=.o) $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) + +#--------------------------------------------------------------------------------- +# build a list of include paths +#--------------------------------------------------------------------------------- +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# build a list of library paths +#--------------------------------------------------------------------------------- +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +.PHONY: $(BUILD) clean + +#--------------------------------------------------------------------------------- +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +all : $(BUILD) +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(TARGET).elf $(TARGET).gba + +#--------------------------------------------------------------------------------- +else + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).gba : $(OUTPUT).elf + +$(OUTPUT).elf : $(OFILES) + +%.o : %.pcx + @echo $(notdir $<) + @$(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- diff --git a/gba/logosplash/PCXView.dsp b/gba/logosplash/PCXView.dsp new file mode 100644 index 0000000..56d6232 --- /dev/null +++ b/gba/logosplash/PCXView.dsp @@ -0,0 +1,109 @@ +# Microsoft Developer Studio Project File - Name="PCXView" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) External Target" 0x0106 + +CFG=PCXView - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "PCXView.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "PCXView.mak" CFG="PCXView - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "PCXView - Win32 Release" (based on "Win32 (x86) External Target") +!MESSAGE "PCXView - Win32 Debug" (based on "Win32 (x86) External Target") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" + +!IF "$(CFG)" == "PCXView - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Cmd_Line "NMAKE /f PCXView.mak" +# PROP BASE Rebuild_Opt "/a" +# PROP BASE Target_File "PCXView.exe" +# PROP BASE Bsc_Name "PCXView.bsc" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Cmd_Line "make -r 2>&1 | sed -e 's/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/'" +# PROP Rebuild_Opt "" +# PROP Target_File "PCXView.gba" +# PROP Bsc_Name "" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "PCXView - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Cmd_Line "NMAKE /f PCXView.mak" +# PROP BASE Rebuild_Opt "/a" +# PROP BASE Target_File "PCXView.exe" +# PROP BASE Bsc_Name "PCXView.bsc" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Cmd_Line "make -r 2>&1 | sed -e 's/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/'" +# PROP Rebuild_Opt "" +# PROP Target_File "PCXView.gba" +# PROP Bsc_Name "" +# PROP Target_Dir "" + +!ENDIF + +# Begin Target + +# Name "PCXView - Win32 Release" +# Name "PCXView - Win32 Debug" + +!IF "$(CFG)" == "PCXView - Win32 Release" + +!ELSEIF "$(CFG)" == "PCXView - Win32 Debug" + +!ENDIF + +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\src\pcx_view.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\data\splash.pcx +# End Source File +# End Group +# Begin Source File + +SOURCE=.\Makefile +# End Source File +# End Target +# End Project diff --git a/gba/logosplash/PCXView.dsw b/gba/logosplash/PCXView.dsw new file mode 100644 index 0000000..b684e34 --- /dev/null +++ b/gba/logosplash/PCXView.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "PCXView"=.\PCXView.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/gba/logosplash/PCXView.pnproj b/gba/logosplash/PCXView.pnproj new file mode 100644 index 0000000..7080696 --- /dev/null +++ b/gba/logosplash/PCXView.pnproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gba/logosplash/PCXView.prj b/gba/logosplash/PCXView.prj new file mode 100644 index 0000000..c4372dc --- /dev/null +++ b/gba/logosplash/PCXView.prj @@ -0,0 +1,69 @@ +[Project ID] +Signature=UE Proj: v.1 +[Project Information] +Filter=*.* +Project Directory=C:\projects\gba\DevkitSamples\PCXView\ +Use Relative Directory=1 +Relative to Project File=1 +Project Wordfile= +Project Tagfile= +Create Tagfile=0 +Include Sub Directories=0 +[Open Files] +Open File0= +Open File Pos0=0 +Open File Line0=0 +Active File Index=2 +Open File Window Pos0=0,1,-1,-1,-4,-23,88,88,998,447 +Open File1=C:\projects\devkitPro\libnds\source\common\interrupts.c +Open File Pos1=1024 +Open File Line1=0 +Open File Window Pos1=0,1,-1,-1,-4,-23,110,110,1024,473 +Open File2=C:\projects\devkitPro\libnds\include\nds\interrupts.h +Active File Display Mode=-1 +Open File Pos2=2410 +Open File Line2=2658 +Open File Window Pos2=2,3,-1,-1,-4,-23,132,132,1046,495 +Open File3=C:\projects\devkitPro\libgba\include\gba_interrupt.h +Open File Pos3=2165 +Open File Line3=1256 +Open File Window Pos3=0,1,-1,-1,-4,-23,154,154,1068,517 +Open File4=C:\projects\devkitPro\libgba\src\interrupt.c +Open File Pos4=0 +Open File Line4=1076 +Open File Window Pos4=0,1,-1,-1,-4,-23,0,0,914,363 +Open File5= +Open File Pos5=32 +Open File Line5=0 +Open File Window Pos5=2,3,-1,-1,-4,-23,132,132,1009,576 +Open File6=C:\projects\devkitPro\buildscripts\dka-crtls\ds_cart_crt0.s +Open File Pos6=1793 +Open File Line6=1450 +Open File Window Pos6=0,1,-1,-1,-4,-23,154,154,1031,598 +Open File7=C:\projects\devkitPro\buildscripts\dka-crtls\ds_arm9_crt0.s +Open File Pos7=679 +Open File Line7=0 +Open File Window Pos7=0,1,-1,-1,-4,-23,176,176,1053,620 +Open File8=C:\projects\devkitPro\buildscripts\dka-crtls\ds_arm9.ld +Open File Pos8=2954 +Open File Line8=2479 +Open File Window Pos8=0,1,-1,-1,-4,-23,198,198,1075,642 +Open File9= +Open File Pos9=0 +Open File Line9=1839 +Open File Window Pos9=0,1,-1,-1,-4,-23,88,88,782,357 +Open File10=C:\projects\mingw\gcc\devkitbuild\newlib-1.12.0\libgloss\README +Open File Pos10=0 +Open File Line10=0 +Open File Window Pos10=2,3,-1,-1,-4,-23,110,110,804,379 +Open File11= +[File View] +Current Select=Project Files\source\src\pcx_view.c +Scroll Position=0 +[Group] +0=source +1= +[Files - source] +0=src\pcx_view.c +[Files] +0=Makefile diff --git a/gba/logosplash/PCXView.tws b/gba/logosplash/PCXView.tws new file mode 100644 index 0000000..882b3f0 Binary files /dev/null and b/gba/logosplash/PCXView.tws differ diff --git a/gba/logosplash/data/splash.pcx b/gba/logosplash/data/splash.pcx new file mode 100644 index 0000000..908f659 Binary files /dev/null and b/gba/logosplash/data/splash.pcx differ diff --git a/gba/logosplash/src/pcx_view.c b/gba/logosplash/src/pcx_view.c new file mode 100644 index 0000000..c35b61b --- /dev/null +++ b/gba/logosplash/src/pcx_view.c @@ -0,0 +1,63 @@ +//--------------------------------------------------------------------------------- +// GBA PCXView sample code for devkitARM - http://www.devkit.tk +// Suitable for a splash screen for a game +//--------------------------------------------------------------------------------- +#include "gba_video.h" +#include "gba_systemcalls.h" +#include "gba_input.h" +#include "gba_interrupt.h" +#include "pcx.h" +#include "fade.h" + +#include + +//--------------------------------------------------------------------------------- +// header for binary data generated by bin2o macro in makefile +//--------------------------------------------------------------------------------- +#include "splash_pcx.h" + +//--------------------------------------------------------------------------------- +// storage space for palette data +//--------------------------------------------------------------------------------- +u16 PaletteBuffer[256]; + +unsigned int frame; + +//--------------------------------------------------------------------------------- +void VblankInterrupt() +//--------------------------------------------------------------------------------- +{ + frame += 1; + ScanKeys(); +} + +//--------------------------------------------------------------------------------- +// Program entry point +//--------------------------------------------------------------------------------- +int main(void) +//--------------------------------------------------------------------------------- +{ + // Set up the interrupt handlers + InitInterrupt(); + + SetInterrupt( IE_VBL, VblankInterrupt); + + // Enable Vblank Interrupt to allow VblankIntrWait + EnableInterrupt(IE_VBL); + + // Allow Interrupts + REG_IME = 1; + + SetMode( MODE_4 | BG2_ON ); // screen mode & background to display + + DecodePCX(splash_pcx, (u16*)VRAM , PaletteBuffer); + + FadeToPalette( PaletteBuffer, 60); + + while (1) + { + VBlankIntrWait(); + } +} + +