retroarch的JAVA核心怎样_Makefile.ctr.salamander

本文介绍如何使用 devkitPro 工具链编译 RetroArch 3DS 模拟器的不同版本,包括 .3dsx、.3ds 和 .cia 文件格式。涵盖配置环境变量、设置编译参数及使用 makerom 和 bannertool 等工具。

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

TARGET := retroarch_3ds_salamander

LIBRETRO =

DEBUG = 0

BUILD_3DSX = 1

BUILD_3DS = 0

BUILD_CIA = 1

APP_TITLE = RetroArch 3DS

APP_DESCRIPTION = RetroArch 3DS

APP_AUTHOR = Team Libretro

APP_PRODUCT_CODE = RETROARCH-3DS

APP_UNIQUE_ID = 0xBAC00

APP_ICON = pkg/ctr/assets/default.png

APP_BANNER = pkg/ctr/assets/libretro_banner.png

APP_AUDIO = pkg/ctr/assets/silent.wav

APP_RSF = pkg/ctr/tools/template.rsf

APP_SYSTEM_MODE = 64MB

APP_SYSTEM_MODE_EXT = 124MB

OBJ := ctr/ctr_system.o \

ctr/ctr_memory.o \

ctr/ctr_linear.o \

frontend/frontend_salamander.o \

frontend/frontend_driver.o \

frontend/drivers/platform_ctr.o \

frontend/drivers/platform_null.o \

libretro-common/encodings/encoding_utf.o \

libretro-common/compat/compat_strcasestr.o \

libretro-common/compat/fopen_utf8.o \

libretro-common/file/file_path.o \

libretro-common/string/stdstring.o \

libretro-common/lists/string_list.o \

libretro-common/lists/dir_list.o \

libretro-common/file/retro_dirent.o \

libretro-common/compat/compat_strl.o \

libretro-common/file/config_file.o \

libretro-common/streams/file_stream.o \

libretro-common/vfs/vfs_implementation.o \

libretro-common/hash/rhash.o \

file_path_str.o \

verbosity.o

OBJ += ctr/exec-3dsx/exec_cia.o \

ctr/exec-3dsx/exec_3dsx.o \

ctr/exec-3dsx/mini-hb-menu/launch.o \

ctr/exec-3dsx/mini-hb-menu/loaders/rosalina.o \

ctr/exec-3dsx/mini-hb-menu/loaders/hax2.o \

ctr/exec-3dsx/mini-hb-menu/loaders/ninjhax1.o

ifeq ($(strip $(DEVKITPRO)),)

$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=devkitpro")

endif

ifeq ($(strip $(CTRULIB)),)

CTRULIB = $(DEVKITPRO)/libctru

endif

APP_TITLE := $(shell echo "$(APP_TITLE)" | cut -c1-128)

APP_DESCRIPTION := $(shell echo "$(APP_DESCRIPTION)" | cut -c1-256)

APP_AUTHOR := $(shell echo "$(APP_AUTHOR)" | cut -c1-128)

APP_PRODUCT_CODE := $(shell echo $(APP_PRODUCT_CODE) | cut -c1-16)

APP_UNIQUE_ID := $(shell echo $(APP_UNIQUE_ID) | cut -c1-7)

MAKEROM_ARGS_COMMON = -rsf $(APP_RSF) -exefslogo -elf $(TARGET).elf -icon $(TARGET).icn -banner $(TARGET).bnr -DAPP_TITLE="$(APP_TITLE)" -DAPP_PRODUCT_CODE="$(APP_PRODUCT_CODE)" -DAPP_UNIQUE_ID=$(APP_UNIQUE_ID) -DAPP_SYSTEM_MODE=$(APP_SYSTEM_MODE) -DAPP_SYSTEM_MODE_EXT=$(APP_SYSTEM_MODE_EXT)

INCDIRS := -I$(CTRULIB)/include

LIBDIRS := -L. -L$(CTRULIB)/lib

ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft

CFLAGS+=-mword-relocations \

-fomit-frame-pointer -ffast-math \

-Werror=implicit-function-declaration \

$(ARCH)

#CFLAGS+= -Wall

CFLAGS+=-DARM11 -D_3DS

ifeq ($(DEBUG), 1)

CFLAGS+= -O0 -g

else

CFLAGS+= -O3

endif

CFLAGS += -I. -Ideps/libz -Ideps/7zip -Ideps/stb -Ilibretro-common/include

#CFLAGS += -DRARCH_INTERNAL

CFLAGS += -DRARCH_CONSOLE -DIS_SALAMANDER

CXXFLAGS:= $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11

ASFLAGS:=-g $(ARCH) -O3

LDFLAGS +=-specs=ctr/3dsx_custom.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)

CFLAGS += -std=gnu99 -ffast-math

LIBS:= -lctru -lm

ifeq ($(BUILD_3DSX), 1)

TARGET_3DSX := $(TARGET).3dsx $(TARGET).smdh

endif

ifeq ($(BUILD_3DS), 1)

TARGET_3DS := $(TARGET).3ds

endif

ifeq ($(BUILD_CIA), 1)

TARGET_CIA := $(TARGET).cia

endif

.PHONY: $(BUILD) clean all

all: $(TARGET)

$(TARGET): $(TARGET_3DSX) $(TARGET_3DS) $(TARGET_CIA)

$(TARGET).3dsx: $(TARGET).elf

$(TARGET).elf: $(OBJ)

PREFIX:=$(DEVKITARM)/bin/arm-none-eabi-

CC := $(PREFIX)gcc

CXX := $(PREFIX)g++

AS := $(PREFIX)as

AR := $(PREFIX)ar

OBJCOPY := $(PREFIX)objcopy

STRIP := $(PREFIX)strip

NM := $(PREFIX)nm

LD := $(CXX)

ifeq ($(strip $(CTRBANNERTOOL)),)

ifneq ($(findstring Linux,$(shell uname)),)

BANNERTOOL = pkg/ctr/tools/bannertool-linux

else ifneq ($(findstring Darwin,$(shell uname)),)

BANNERTOOL = pkg/ctr/tools/bannertool-mac

else

BANNERTOOL = pkg/ctr/tools/bannertool.exe

endif

else

BANNERTOOL = $(CTRBANNERTOOL)

endif

ifeq ($(strip $(CTRMAKEROM)),)

ifneq ($(findstring Linux,$(shell uname)),)

MAKEROM = pkg/ctr/tools/makerom-linux

else ifneq ($(findstring Darwin,$(shell uname)),)

MAKEROM = pkg/ctr/tools/makerom-mac

else

MAKEROM = pkg/ctr/tools/makerom.exe

endif

else

MAKEROM = $(CTRMAKEROM)

endif

%.o: %.vsh %.gsh

$(DEVKITARM)/bin/picasso $^ -o $*.shbin

$(DEVKITARM)/bin/bin2s $*.shbin | $(PREFIX)as -o $@

rm $*.shbin

%.o: %.vsh

$(DEVKITARM)/bin/picasso $^ -o $*.shbin

$(DEVKITARM)/bin/bin2s $*.shbin | $(PREFIX)as -o $@

rm $*.shbin

%.o: %.cpp

$(CXX) -c -o $@ $< $(CXXFLAGS) $(INCDIRS)

%.o: %.c

$(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS)

%.o: %.s

$(CC) -c -o $@ $< $(ASFLAGS)

%.o: %.S

$(CC) -c -o $@ $< $(ASFLAGS)

%.a:

$(AR) -rc $@ $^

%.vsh:

$(TARGET).smdh: $(APP_ICON)

$(DEVKITARM)/bin/smdhtool --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) $@

$(TARGET).3dsx: $(TARGET).elf

ifeq ($(APP_BIG_TEXT_SECTION), 1)

cp pkg/ctr/big_text_section.xml $(TARGET).xml

else

rm -f $(TARGET).xml

endif

$(DEVKITARM)/bin/3dsxtool $< $@ $(_3DSXFLAGS)

$(TARGET).elf: ctr/3dsx_custom_crt0.o

$(LD) $(LDFLAGS) $(OBJ) $(LIBDIRS) $(LIBS) -o $@

$(NM) -CSn $@ > $(notdir $*.lst)

$(TARGET).bnr: $(APP_BANNER) $(APP_AUDIO)

$(BANNERTOOL) makebanner -i "$(APP_BANNER)" -a "$(APP_AUDIO)" -o $@

$(TARGET).icn: $(APP_ICON)

$(BANNERTOOL) makesmdh -s "$(APP_TITLE)" -l "$(APP_TITLE)" -p "$(APP_AUTHOR)" -i $(APP_ICON) -o $@

$(TARGET).3ds: $(TARGET).elf $(TARGET).bnr $(TARGET).icn $(APP_RSF)

$(MAKEROM) -f cci -o $@ $(MAKEROM_ARGS_COMMON) -DAPP_ENCRYPTED=true

$(TARGET).cia: $(TARGET).elf $(TARGET).bnr $(TARGET).icn $(APP_RSF)

$(MAKEROM) -f cia -o $@ $(MAKEROM_ARGS_COMMON) -DAPP_ENCRYPTED=false

clean:

rm -f $(OBJ)

rm -f $(TARGET).3dsx

rm -f $(TARGET).elf

rm -f $(TARGET).3ds

rm -f $(TARGET).cia

rm -f $(TARGET).smdh

rm -f $(TARGET).bnr

rm -f $(TARGET).icn

rm -f ctr/ctr_config_*.o

rm -f ctr/3dsx_custom_crt0.o

.PHONY: clean

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值