add makefile, cfg and chr files
This commit is contained in:
parent
76f100b8cb
commit
29114cbd2a
|
@ -0,0 +1,25 @@
|
||||||
|
MEMORY {
|
||||||
|
ZP: start = $0000, size = $0100, type = rw, define = yes;
|
||||||
|
OAM: start = $0200, size = $0100, type = rw, define = yes;
|
||||||
|
RAM: start = $0300, size = $0500, type = rw, define = yes;
|
||||||
|
HEADER: start = $0000, size = $0010, type = ro, file = %O, fill = yes, fillval = $00;
|
||||||
|
PRG: start = $8000, size = $8000, type = ro, file = %O, fill = yes, fillval = $00, define = yes;
|
||||||
|
CHR: start = $0000, size = $2000, type = ro, file = %O, fill = yes, fillval = $00;
|
||||||
|
}
|
||||||
|
|
||||||
|
SEGMENTS {
|
||||||
|
HEADER: load = HEADER, type = ro;
|
||||||
|
STARTUP: load = PRG, type = ro, define = yes;
|
||||||
|
LOWCODE: load = PRG, type = ro, optional = yes;
|
||||||
|
INIT: load = PRG, type = ro, define = yes, optional = yes;
|
||||||
|
CODE: load = PRG, type = ro, define = yes;
|
||||||
|
RODATA: load = PRG, type = ro, define = yes;
|
||||||
|
DATA: load = PRG, run = RAM, type = rw, define = yes;
|
||||||
|
ONCE: load = PRG, type = ro, define = yes, optional = yes;
|
||||||
|
VECTORS: load = PRG, type = ro, start = $FFFA;
|
||||||
|
OAM: load = OAM, type = rw;
|
||||||
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
|
HEAP: load = RAM, type = bss, optional = yes;
|
||||||
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
|
CHARS: load = CHR, type = ro;
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,135 @@
|
||||||
|
# - - - - - - - - - - - - - #
|
||||||
|
# Variables to change #
|
||||||
|
# - - - - - - - - - - - - - #
|
||||||
|
|
||||||
|
# CC65 executable locations
|
||||||
|
CC65 = ../../cc65/bin/cc65.exe
|
||||||
|
|
||||||
|
# CA65 executable locations
|
||||||
|
CA65 = ../../cc65/bin/ca65.exe
|
||||||
|
|
||||||
|
# LD65 executable locations
|
||||||
|
LD65 = ../../cc65/bin/ld65.exe
|
||||||
|
|
||||||
|
# NES lib locations
|
||||||
|
NESLIB = ../../cc65/lib/nes.lib
|
||||||
|
|
||||||
|
# asminc folder locations
|
||||||
|
ASMINC = ../../cc65/asminc
|
||||||
|
|
||||||
|
# Emulator executable location
|
||||||
|
EMULATOR = ../../Mesen/Mesen.exe
|
||||||
|
|
||||||
|
# Hexdump executable location
|
||||||
|
HEXDUMP = ..\..\hexdump.exe
|
||||||
|
|
||||||
|
# Game name
|
||||||
|
GAME_NAME = Boilerplate
|
||||||
|
|
||||||
|
# Folder with h files to include
|
||||||
|
INC = include
|
||||||
|
|
||||||
|
# Folder with c sources files
|
||||||
|
SRC = src
|
||||||
|
|
||||||
|
# Bin folder for binary output
|
||||||
|
BIN = bin
|
||||||
|
|
||||||
|
# Folder with assembler sources files
|
||||||
|
ASM = asm
|
||||||
|
|
||||||
|
# Change this to 0 if you don't want FamiStudio
|
||||||
|
FAMISTUDIO = 1
|
||||||
|
|
||||||
|
|
||||||
|
# ! - - - - - - - - - - - - - - - - ! #
|
||||||
|
# DO NOT CHANGE ANYTHING AFTER THIS #
|
||||||
|
# ! - - - - - - - - - - - - - - - - ! #
|
||||||
|
|
||||||
|
|
||||||
|
# get all c files
|
||||||
|
SRCFILE = $(call rwildcard,$(SRC),*.c)
|
||||||
|
|
||||||
|
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
|
||||||
|
|
||||||
|
|
||||||
|
# make the nes game from assembler files and from c files
|
||||||
|
all:
|
||||||
|
make asm
|
||||||
|
make c
|
||||||
|
|
||||||
|
|
||||||
|
# make the nes game from c files
|
||||||
|
c: $(GAME_NAME)_c.nes
|
||||||
|
make clean
|
||||||
|
|
||||||
|
|
||||||
|
# make the nes game from assembler files
|
||||||
|
asm: $(GAME_NAME)_a.nes
|
||||||
|
make clean
|
||||||
|
|
||||||
|
|
||||||
|
# create the nes file from assembler sources
|
||||||
|
$(GAME_NAME)_a.nes:
|
||||||
|
# create folder if it does not exist
|
||||||
|
@-if not exist "$(BIN)" ( mkdir "$(BIN)" )
|
||||||
|
# assemble main file
|
||||||
|
.\$(CA65) asm/crt0.asm -o $(BIN)/$(GAME_NAME).o --debug-info -DFAMISTUDIO=$(FAMISTUDIO)
|
||||||
|
# link files
|
||||||
|
.\$(LD65) $(BIN)/$(GAME_NAME).o -C $(GAME_NAME).cfg -o $(GAME_NAME)_a.nes --dbgfile $(GAME_NAME)_a.DBG
|
||||||
|
|
||||||
|
|
||||||
|
# create the nes file from c sources
|
||||||
|
$(GAME_NAME)_c.nes: $(addprefix $(BIN)/,$(SRCFILE:.c=.o))
|
||||||
|
# assemble main file
|
||||||
|
$(CA65) $(ASM)/crt0.asm -g -o $(BIN)/$(GAME_NAME).o -I$(ASMINC) -DC_CODE -DFAMISTUDIO=$(FAMISTUDIO)
|
||||||
|
# link files
|
||||||
|
$(LD65) $(BIN)/$(GAME_NAME).o $^ -C $(GAME_NAME).cfg -o $@ $(NESLIB) --dbgfile $(GAME_NAME)_c.DBG
|
||||||
|
|
||||||
|
|
||||||
|
# assemble object files
|
||||||
|
$(BIN)/%.o: $(BIN)/%.asm
|
||||||
|
# create folder if it does not exist
|
||||||
|
@-if not exist "$(@D)" ( mkdir "$(@D)" )
|
||||||
|
# assemble a file
|
||||||
|
$(CA65) -g -I$(INC) -I$(ASMINC) -o $@ $^ -DC_CODE -DFAMISTUDIO=$(FAMISTUDIO)
|
||||||
|
|
||||||
|
|
||||||
|
# compile c files
|
||||||
|
$(BIN)/%.asm: %.c
|
||||||
|
# create folder if it does not exist
|
||||||
|
@-if not exist "$(@D)" ( mkdir "$(@D)" )
|
||||||
|
# compile a file
|
||||||
|
$(CC65) -O -g -I$(INC) -I$(ASM) -o $@ $^ $(NESLIB) --add-source
|
||||||
|
|
||||||
|
|
||||||
|
# clean object files
|
||||||
|
clean:
|
||||||
|
@-if exist "$(BIN)" ( rmdir /Q /S "$(BIN)" )
|
||||||
|
|
||||||
|
|
||||||
|
# clean all generated files
|
||||||
|
clean_all:
|
||||||
|
make clean
|
||||||
|
del $(GAME_NAME)_a.nes
|
||||||
|
del $(GAME_NAME)_a.DBG
|
||||||
|
del $(GAME_NAME)_c.nes
|
||||||
|
del $(GAME_NAME)_c.DBG
|
||||||
|
del dump_$(GAME_NAME)_a.txt
|
||||||
|
del dump_$(GAME_NAME)_c.txt
|
||||||
|
|
||||||
|
|
||||||
|
# run the nes game generated with c sources
|
||||||
|
run_c:
|
||||||
|
$(EMULATOR) $(GAME_NAME)_c.nes
|
||||||
|
|
||||||
|
|
||||||
|
# run the nes game generated with assembler sources
|
||||||
|
run_a:
|
||||||
|
$(EMULATOR) $(GAME_NAME)_a.nes
|
||||||
|
|
||||||
|
|
||||||
|
# dump the nes files binary into hexa text
|
||||||
|
hex:
|
||||||
|
$(HEXDUMP) $(GAME_NAME)_a.nes > dump_$(GAME_NAME)_a.txt
|
||||||
|
$(HEXDUMP) $(GAME_NAME)_c.nes > dump_$(GAME_NAME)_c.txt
|
Loading…
Reference in New Issue