Skip to content

Commit

Permalink
A truly awful pacman clone. Was playing with building levels entirely…
Browse files Browse the repository at this point in the history
… from img back in 2008
  • Loading branch information
James Danielson committed Apr 16, 2022
0 parents commit 333dae8
Show file tree
Hide file tree
Showing 97 changed files with 1,445 additions and 0 deletions.
Binary file added Pac1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pacman3.nds
Binary file not shown.
Binary file added c.wav
Binary file not shown.
Binary file added code/Pacman.zip
Binary file not shown.
3 changes: 3 additions & 0 deletions code/Pacman/LoadOntoR4.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
cp Pacman.nds "F:\games\mine\pacman.nds"
@echo Transfered! You can now remove the disk.
pause
299 changes: 299 additions & 0 deletions code/Pacman/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,299 @@
PROGNAME = PAlib
OFILES +=
ADD_LIBS +=

PATH := $(DEVKITARM)/bin:$(PATH)

ARM7BIN := -7 $(PAPATH)/lib/arm7/arm7.bin
TEXT1 := Pacman DS
TEXT2 := Gekinzuku
TEXT3 := nintendo-revolutionized.com
ICON := -b $(CURDIR)/../logo.bmp
LOGO := -o $(CURDIR)/../logo_wifi.bmp

#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM)
endif


include $(DEVKITARM)/ds_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 := $(shell basename $(CURDIR))
BUILD := build
SOURCES := gfx source data
INCLUDES := include build data

EXPORT_DIR := /c/ndsexamples/
#---------------------------------------------------------------------------------
# ARM7BIN is the path to an arm7 binary other than the default
# usage: ARM7BIN := -7 binaryName.bin
#
# ICON is the path to an icon to be used int the header plus text
# usage: ICON := -t iconName.bmp "text line one; text line 2; text line 3"
#
#---------------------------------------------------------------------------------



#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH := -mthumb-interwork

# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
# *insists* it has a FPU or VFP, and it won't take no for an answer!
CFLAGS := -g -Wformat=2 -Winline -Wall -O2\

-mcpu=arm946e-s -mtune=arm946e-s -fomit-frame-pointer\
-ffast-math \
$(ARCH)

CFLAGS += $(INCLUDE) -DARM9 -I$(DEVKITPRO)/PAlib/include/nds

ASFLAGS := -g $(ARCH)
LDFLAGS := -g $(ARCH) -mno-fpu -L$(DEVKITPRO)/PAlib/lib


#---------------------------------------------------------------------------------
# path to tools - this can be deleted if you set the path in windows
#---------------------------------------------------------------------------------
# export PATH := /d/dev/ds/devkitARM_r11/bin:/bin

#---------------------------------------------------------------------------------
# PATH to ndslib - just make a system variable called NDSLIBPATH and be done with it
#---------------------------------------------------------------------------------
# NDSLIBPATH := /d/dev/ds/ndslib/

#---------------------------------------------------------------------------------
# the prefix on the compiler executables
#---------------------------------------------------------------------------------
PREFIX := arm-eabi-
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS := -lfat -lnds9 -ldswifi9
LIBSPA := -lpa9


#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(DEVKITPRO)/libnds
LIBDIRPA := $(PAPATH)


#---------------------------------------------------------------------------------
# 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 CC := $(PREFIX)gcc
export CXX := $(PREFIX)g++
export AR := $(PREFIX)ar
export OBJCOPY := $(PREFIX)objcopy
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
export LD := $(CXX)
#export LD := $(CC)

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)))
BINFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.bin)))
PALFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pal)))
RAWFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.raw)))
MAPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.map)))
JPEGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.jpg)))
MODFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.mod)))
GIFFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.gif)))
BMPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.bmp)))

export OFILES := $(MAPFILES:.map=.o) $(RAWFILES:.raw=.o) $(PALFILES:.pal=.o) $(BINFILES:.bin=.o) $(PCXFILES:.pcx=.o) $(JPEGFILES:.jpg=.o) $(MODFILES:.mod=.o) $(GIFFILES:.gif=.o) $(BMPFILES:.bmp=.o)\
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)

export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include/nds) \
-I$(PAPATH)/include/nds\
-I$(CURDIR)/$(BUILD)

export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
export LIBPATHPA := $(foreach dir,$(LIBDIRPA),-L$(dir)/lib)

.PHONY: $(BUILD) clean export

#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile

#---------------------------------------------------------------------------------
clean:
@echo clean ...$(TARGET)
@rm -fr $(BUILD) *.elf *.*ds*

export:
@echo exporting ...$(TARGET)
@cp *.nds $(EXPORT_DIR)/$(TARGET).nds

#---------------------------------------------------------------------------------
else

DEPENDS := $(OFILES:.o=.d)

#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).ds.gba : $(OUTPUT).nds

$(OUTPUT).nds : $(OUTPUT).bin

$(OUTPUT).bin : $(OUTPUT).elf

$(OUTPUT).elf : $(OFILES)

#---------------------------------------------------------------------------------
%.ds.gba: %.nds
@echo built ... $(notdir $@)
@dsbuild $<
@cp $(CURDIR)/../$(notdir $@) ../$(notdir $(OUTPUT)).sc.nds

#---------------------------------------------------------------------------------
%.nds: %.bin

@ndstool -c $@ -9 $(TARGET).bin $(ARM7BIN) $(LOGO) $(ICON) "$(TEXT1);$(TEXT2);$(TEXT3)"


#---------------------------------------------------------------------------------
%.bin: %.elf

@$(OBJCOPY) -O binary $(TARGET).elf $(TARGET).bin

#---------------------------------------------------------------------------------
%.elf:
@echo $(LD) $(LDFLAGS) -specs=ds_arm9.specs $(OFILES) $(LIBPATHPA) $(LIBSPA) $(LIBPATHS) $(LIBS) -o $(TARGET).elf
@$(LD) $(LDFLAGS) -specs=ds_arm9.specs $(OFILES) $(LIBPATHPA) $(LIBSPA) $(LIBPATHS) $(LIBS) -o $(TARGET).elf



#---------------------------------------------------------------------------------
# Compile Targets for C/C++
#---------------------------------------------------------------------------------

#---------------------------------------------------------------------------------
%.o : %.cpp
@echo $(notdir $<)
@$(CXX) -MM $(CFLAGS) -o $*.d $<
@$(CXX) $(CFLAGS) -c $< -o$@

#---------------------------------------------------------------------------------
%.o : %.c
@echo $(notdir $<)
@$(CC) -MM $(CFLAGS) -o $*.d $<
@$(CC) $(CFLAGS) -c $< -o$@

#---------------------------------------------------------------------------------
%.o : %.s
@echo $(notdir $<)
@$(CC) -MM $(CFLAGS) -o $*.d $<
@$(CC) $(ASFLAGS) -c $< -o$@


define bin2o
cp $(<) $(*).tmp
echo -n $$(( `cat $(*).tmp | wc -c` & 3 )) | sed -e 's/0//g' | sed -e 's/1/000/g' | sed -e 's/2/00/g' | sed -e 's/3/0/g' >> $(*).tmp
$(OBJCOPY) -I binary -O elf32-littlearm -B arm \
--rename-section .data=.rodata \
--redefine-sym _binary_$*_tmp_start=$*\
--redefine-sym _binary_$*_tmp_end=$*_end\
--redefine-sym _binary_$*_tmp_size=$*_size\
$(*).tmp $(@)
echo "extern const u8" $(*)"[];" > $(*).h
echo "extern const u32" $(*)_size[]";" >> $(*).h
rm $(*).tmp
endef

#---------------------------------------------------------------------------------
%.o : %.pcx
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)

#---------------------------------------------------------------------------------
%.o : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)

#---------------------------------------------------------------------------------
%.o : %.raw
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)

#---------------------------------------------------------------------------------
%.o : %.pal
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)

#---------------------------------------------------------------------------------
%.o : %.map
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)

#---------------------------------------------------------------------------------
%.o : %.mdl
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)

#---------------------------------------------------------------------------------
%.o : %.jpg
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)

#---------------------------------------------------------------------------------
%.o : %.mod
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)

#---------------------------------------------------------------------------------
%.o : %.gif
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)

#---------------------------------------------------------------------------------
%.o : %.bmp
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)


-include $(DEPENDS)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------
1 change: 1 addition & 0 deletions code/Pacman/Template.pnproj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<Project name="Template"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="Template" path=""><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="source" path="source\"><File path="main.c"></File></MagicFolder><File path="build.bat"></File><File path="clean.bat"></File><File path="logo.bmp"></File><File path="logo_wifi.bmp"></File><File path="Template.pnproj"></File><File path="Template.pnps"></File></MagicFolder></Project>
1 change: 1 addition & 0 deletions code/Pacman/Template.pnps
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<pd><ViewState><e p="Template" x="true"></e><e p="Template\Template" x="true"></e><e p="Template\Template\source" x="true"></e></ViewState></pd>
Binary file added code/Pacman/Thumbs.db
Binary file not shown.
6 changes: 6 additions & 0 deletions code/Pacman/build.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
make clean
make
pause
cp Pacman.ds.gba "c:\Users\Jamie\Desktop\programming\emu\SLOT\pacman.ds.gba"
cd c:\Users\Jamie\Desktop\programming\emu
NOGBA c:\Users\Jamie\Desktop\programming\emu\SLOT\pacman.ds.gba
1 change: 1 addition & 0 deletions code/Pacman/clean.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
make clean
Binary file added code/Pacman/data/start.raw
Binary file not shown.
Binary file added code/Pacman/logo.bmp
Binary file not shown.
Binary file added code/Pacman/logo_wifi.bmp
Binary file not shown.
2 changes: 2 additions & 0 deletions code/Pacman/project.vho
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[VisualHamOFileListV1]
source/main.c
Binary file added code/Pacman/project.vhw
Binary file not shown.
6 changes: 6 additions & 0 deletions code/Pacman/project.vhw.bak
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[VisualHAMTreeContentV1]
HAM Workspace=
HAM Workspace\Source Files=
HAM Workspace\Source Files=source/main.c
HAM Workspace\Header Files=
HAM Workspace=makefile
Binary file added code/Pacman/source/gfx/PAGfx.exe
Binary file not shown.
11 changes: 11 additions & 0 deletions code/Pacman/source/gfx/PAGfx.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#TranspColor Magenta

#Sprites :
C:\devkitPro\projects\Pacman\source\gfx\pacman.bmp 256colors pacman
shot.png 16colors

#Backgrounds :
C:\devkitPro\projects\Pacman\source\gfx\Pac1.png EasyBg Pac1
C:\devkitPro\projects\Pacman\source\gfx\Pac2.png EasyBg Pac2

#Textures :
Empty file.
Loading

0 comments on commit 333dae8

Please sign in to comment.