红白机 编译6502汇编生成NES文件的通用Makefile

本文档介绍了如何使用6502汇编和C语言通过Makefile编译生成NES格式的游戏,涵盖了依赖管理、Makefile中符号含义、文件操作及构建流程,适合游戏开发者和复古编程爱好者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6502汇编生成NES的通用Makefile

#依赖sudo apt install cc65
#DIR_INC = ./include
DIR_SRC = .
DIR_OBJ = .
DIR_BIN = .

#(1)Makefile中的 符号 $@, $^, $< 的意思:
#  $@  表示目标文件
#  $^  表示所有的依赖文件
#  $<  表示第一个依赖文件
#  $?  表示比目标还要新的依赖文件列表
#
#(2)wildcard、notdir、patsubst的意思:
#
#  wildcard : 扩展通配符
#  notdir : 去除路径
#  patsubst :替换通配符
#  basename: 仅主文件名(不含扩展名)

SRC = $(wildcard ${DIR_SRC}/*.a65)
OBJ = $(patsubst %.a65,${DIR_OBJ}/%.o,$(notdir ${SRC}))
#主文件名
TARGET = $(basename $(OBJ)).nes 

#BIN_TARGET = ${DIR_BIN}/${TARGET}
BIN_TARGET = ${TARGET}

CA = ca65
CL = cl65
#CFLAGS = -g -Wall -I${DIR_INC}
CFLAGS = -g
CONFIG = --target nes

run:${BIN_TARGET}
	mono /home/yanxiang/Mesen-master/bin/x64/Release/Mesen.exe ${BIN_TARGET}

${BIN_TARGET}:${OBJ}
	$(CL) $(CFLAGS) $(CONFIG) $(OBJ) -o $@

${DIR_OBJ}/%.o:${DIR_SRC}/%.a65
	$(CA) $(CFLAGS) $< -o $@

.PHONY:clean

clean:
	-rm -rf $(OBJ)

6502 C生成NES的通用Makefile

#依赖sudo apt install cc65
#依赖 如下文件 (https://happysoul.github.io/nes/nesdoug/)
# crt0.s nrom_32k_vert.cfg
#LIB/newlib.h 
#LIB/neslib.s 
#LIB/nesdoug.h 
#LIB/nesdoug.s

DIR_INC = ./LIB
DIR_SRC = .
DIR_OBJ = .
DIR_BIN = .

#(1)Makefile中的 符号 $@, $^, $< 的意思:
#  $@  表示目标文件
#  $^  表示所有的依赖文件
#  $<  表示第一个依赖文件
#  $?  表示比目标还要新的依赖文件列表
#
#(2)wildcard、notdir、patsubst的意思:
#
#  wildcard : 扩展通配符
#  notdir : 去除路径
#  patsubst :替换通配符
#  basename: 仅主文件名(不含扩展名)

#代表全部的C文件(包含相对路径)
SRC = $(wildcard ${DIR_SRC}/*.c)
#把$(notdir ${SRC})中的.c代换为.s
ASM = $(patsubst %.c,%.s,$(notdir ${SRC}))
#把$(notdir ${SRC})中的.c代换为.o
OBJ = $(patsubst %.c,%.o,$(notdir ${SRC}))

#主文件名
TARGET = $(basename $(OBJ)).nes 

#BIN_TARGET = ${DIR_BIN}/${TARGET}
BIN_TARGET = ${TARGET}

CC = cc65
CA = ca65
CL = cl65
#CFLAGS = -g -Wall -I${DIR_INC}
CFLAGS = -g  -I $(DIR_INC)
CONFIG = -t nes 
LIBS = nes.lib
CFG= -C nrom_32k_vert.cfg


run:${BIN_TARGET}
	mono /home/yanxiang/Mesen/Mesen.exe ${BIN_TARGET}

${BIN_TARGET}:${OBJ}
	$(CL) $(CFG) $(CFLAGS) $(CONFIG) crt0.o $< $(LIBS) -o $@

${OBJ}:${ASM}
	$(CA) $(CFLAGS) $< -o $@
	$(CA) $(CFLAGS) crt0.s -o crt0.o

${ASM}:${SRC}
	$(CC) $(CFLAGS) $(CONFIG) $< -o $@

.PHONY:clean

clean:
	-rm -rf $(OBJ) $(BIN_TARGET) $(ASM)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值