TWiLight Menu++ 是 Nintendo DSi、Nintendo 3DS 和 Nintendo DS 闪存卡的开源 DSi 菜单升级/替代品。它可以启动Nintendo DS(i)、SNES、NES、GameBoy (Color)、GameBoy Advance、Sega GameGear/Master System、SG-1000/SC-3000 & Mega Drive/Genesis、Atari 2600/5200/7800/XEGS、MSX 、Intellivision、Neo Geo Pocket、Sord M5、PC Engine/TurboGrafx-16、WonderSwan 和 ColecoVision ROM,以及 DSTWO 插件(如果您使用 DSTWO)。
编译此应用程序需要 devkitPro 的 devkitARM、libnds、grit 和 mmutil。可以使用 devkitPro pacman 通过以下命令安装它们:
sudo dkp-pacman -S nds-dev
(注意:命令会因操作系统而异,可能不需要 sudo,可能只是pacman
。)
存储库包含子模块,因此您需要递归克隆:
git clone --recursive https://github.com/DS-Homebrew/TWiLightMenu.git
如果您在没有拉取子模块的情况下进行了克隆,则可以在之后更新它们:
git submodule update --init --recursive
一旦安装了 devkitPro 的工具链,您只需在存储库的根目录中运行make package
即可构建整个 TWiLight Menu++。如果您只想构建 TWiLight Menu++ 的特定部分,您可以cd
到该文件夹并运行make dist
。
构建完成后,输出文件将位于7zfile
文件夹中,其目录结构与官方TWiLightMenu.7z
构建的目录结构相同。
使用附带的 Docker 映像,您可以轻松编译 TWiLight Menu++,而无需使用提供的 PowerShell ( .ps1
) 脚本手动设置所需版本的 devkitARM。
该脚本也接受make
参数。例如, .compile_docker.ps1 clean
将清除所有已编译代码的目录。如果您想构建所有工件,请运行.compile_docker.ps1 package
。
请注意,Docker 编译与 Windows 上的本机编译不兼容。在尝试使用 Docker 构建之前,您应该运行.compile_docker.ps1 clean
来清理工件。如果出现通知要求您共享驱动器,您必须选择启用驱动器共享,以便 Docker 在 Windows 上运行。
手册页存储在单独的存储库中,并在构建 TWiLight Menu++ 时从版本下载。有关更多信息,请参阅 twilight-manual 存储库。
TWiLight Menu++ 由多个“子项目”组成,它们共同创建 DSi 菜单替代品。存储库中的大多数子文件夹都包含自己的代码,这些代码将编译xxx.nds
文件,该文件通常复制到7z
文件(或7zfile
文件夹)内的/_nds/TWiLightMenu/xxx.srldr
。
3dssplash :打开 3ds 和 cia 文件(?)
编译为/_nds/TWiLightMenu/3dssplash.srldr
booter : 主入口点,如果使用 SD 卡或 CFW,则控制台加载的第一个文件
创建/BOOT.nds
和/title/00030004/53524c41/content/00000000.app
(同一文件)。
booter_fc :抽认卡的主要入口点
创建_DS_MENU.dat
、 dsedgei.dat
、 akmenu4.nds
、 _DSMENU.nds
、 SCFW.SC
等。
巴巴彻
imageview :类似于 DSi 相机的图像查看器(gif、png、bmp)
/_nds/TWiLightMenu/imageview.srldr
手册: TWiLight Menu++ 使用手册
创建/_nds/TWiLightMenu/manual.srldr
Quickmenu :DS Lite 菜单,旧的经典 ui
创建/_nds/TWiLightMenu/mainmenu.srldr
resources : 将反盗版和宽屏补丁合并到一个包文件中
/_nds/TWiLightMenu/extras/apfix.pck
和/_nds/TWiLightMenu/extras/widescreen.pck
romsel_aktheme :Wood UI 主题的菜单
创建/_nds/TWiLightMenu/akmenu.srldr
romsel_dsimenutheme :“Nintendo DSi”、“Nintendo 3DS”、“SEGA Saturn”和“Homebrew Launcher”使用的 DSi 主题菜单
创建/_nds/TWiLightMenu/dsimenu.srldr
romsel_r4theme :“R4 Original”和“Gameboy Color”使用的 R4 主题菜单
创建/_nds/TWiLightMenu/r4menu.srldr
设置:设置菜单
创建/_nds/TWiLightMenu/settings.srldr
slot1启动:
创建/_nds/TWiLightMenu/slot1launch.srldr
title : 开机启动画面(默认为任天堂标志)
创建/_nds/TWiLightMenu/main.srldr
您可以帮助翻译 Crowdin 项目上的 TWiLight Menu++。如果您想请求添加新语言,请在 Discord 服务器上询问。
Rocket Robz:首席开发人员
chyyran:将 akMenu/Wood UI 移植到 TWiLight Menu++ 并添加从 DSi/3DS 主题的 SD 卡加载子主题的功能
Pk11:为 R4 主题添加从 SD 卡加载皮肤的功能,实现排序并使用 PNG 制作手册,改进字体渲染,为 Unlaunch 提供自定义背景,管理翻译和各种错误修复
DieGo:添加对自定义 ROM/文件夹图标的支持以及对自定义皮肤的改进
lifehackerhansol:改进对闪存卡自动引导和内核加载的支持,以及用于 32KB DLDI 驱动程序支持的 libnds32 分支
NightScript:代码清理、定义代码标准、为 Wood UI 主题添加抽认卡功能、手册页
ahezard、shutterbug2000 和 Rocket Robz:nds-bootstrap(用于从 SD 卡启动 Nintendo DS(i) ROM)
Alekmaul:AmeDS(用于启动 Amstrad CPC ROM)
Alekmaul & wavemotion:StellaDS、A5200DS、A7800DS、A8DS(用于启动 Atari 2600/5200/7800/XEGS ROM)和 ColecoDS(用于启动 ColecoVision、MSX、Sord M5 和 Sega SG-1000/SC-3000 ROM)
archiede:SNEmulDS(用于启动 SNES ROM)
Coto:SNEmulDS 复兴
chishm:tuna-viDS(用于播放 Xvid 视频)
Drenn:GameYob(用于启动 Gameboy ROM)
FluBBaOfWard:S8DS(用于启动 Sega Master System、Game Gear、SG-1000/SG-3000 和 ColecoVision ROM)、NitroGrafx(用于启动 PC Engine/TurboGrafx-16 ROM)、NitroSwan(用于启动 WonderSwan ROM)、和 NGPDS(用于启动 Neo Geo Pocket ROM)
FluBBaOfWard、Coto 和 Loopy:nesDS(用于启动 NES ROM)
Apache Thunder:nesDS TWL 版
Gericom:FastVideoDSPlayer(用于启动 FastVideoDS 视频)和 GBARunner2(用于在 DS Phat/Lite 的 GBA 模式之外启动 GameBoy Advance ROM)
therealteamplayer:Hicode+DSP 合并的 GBARunner2 版本包含在 DSi/3DS 中
unresolvedsymbol:ROM3M + master“DSL-Enhanced”版本的 GBARunner2 包含用于在抽认卡上玩Pokémon:Emerald 版本
Lordus:jEnesisDS(用于启动 Sega Mega Drive/Genesis ROM)
xonn83:jEnesisDS 的 GBMacro 版本
redbug26:CrocoDS(用于启动 Amstrad CPC ROM)
Ryan FB、Rocket Robz 和 xonn83:PicoDriveTWL(用于启动大型 Sega Mega Drive/Genesis ROM)
wavemotion:Nintellivision/NINTV-DS(用于启动 Intellivision ROM)
缺席的现实:Intellivision 图标
davi:GBC 主题的边框(最初用于 GameYob)
fail0verflow、Fluto 和 Arkhandar:Homebrew 频道/启动器图形
FlameKat53:DSi 主题的SELECT
菜单的手动图标
开始先生:超级任天堂 DS 启动画面
PW5190:星之卡比主题TWLMenu++启动画面
Spindle_cord:DSi4DS 和 DSision2 图形
StarvingArtist:游戏控制台图标
BlastoiseVeteran:任天堂 DSi 商店音乐的重制版
IkaMusumeYiyaRoxie:通用 N64 MIDI Soundfont,用于旧版本的标题启动
dbry:来自 adpcm-xq 的 Xtreme 质量 IMA-ADPCM 解码器代码。
Firexploit:3DS UI 声音适用于 3DS 主题,其中一些也用于 DSi 主题。
ahezard:来自 nds-bootstrap 的 NDMA 代码
另一个世界和黄木妖精:原始的 akMenu/Wood UI
Arisotura:来自 melonDS 的 ROM 列表,以及来自 dsbiosdumper 的 BIOS 转储器代码
Dartz150:为Iridion II和Top Gun: Combat Zones GBA 游戏提供修复
devkitPro:nds-hb-menu 中使用的代码,以及 bootloader、devkitARM、libnds 和 libfat 的使用
edo9300:DS Phat 校验码
Gericom、TrolleyDave 和 FAST6191:GBA SRAM 修补代码,用于 gbapatcher(GBAtemp 的 SRAM 修补线程)
Gericom & profi200:GBA色彩校正代码,用于GBARunner3
Nikokaro:找到了WarioWare:Twisted 的无倾斜补丁! ,和耀西颠倒。 (GBAtemp 线程)
profi200:改进了 fastboot3DS 的 SD 代码
RadDude McCoolguy、fintogive、KazoWAR、Vague Rant、gamemasterplc、Rocket Robz、ChampionLeake、DeadSkullzJr、spellboundtriangle、LedyBacer:宽屏秘籍
Retrogamefan & Rudolph:包含 nds-bootstrap 的 AP 补丁
enler:修复 Pokemon Black 2(日本)的 AP 补丁,以实现 DS⁽ⁱ⁾ 模式兼容性
Rocket Robz:修复了一些 DS⁽ⁱ⁾ 增强型游戏 AP 补丁,以实现 DS⁽ⁱ⁾ 模式兼容性
SNBeast:解除补丁
Taiju Yamada:用于绕过 R4i-SDHC 启动文件保护的代码
阿拉伯语:肯·布朗,SLG3
保加利亚语:Peter0x44、Tescu
加泰罗尼亚语:
简体中文: cai_miao, Chris, Forbidden, James-Makoto, R-YaTian, Yukino Song, 曾国立, 天天地人人, 百地希留耶
繁体中文:cai_miao、ccccchoho、James-Makoto、Rintim、奇诺比奥
捷克语:Štěpán Dolský
丹麦:乔纳塔、迈克尔·米勒、纳迪亚·佩德森
荷兰语:Arthur、guusbuk、Mikosu、Minionguyjpro、Xtremegamer007
法语:Arky、cooolgamer、Dhalian、maximesharp、Ghost0159、Léo、LinuxCat、Martinez、NightScript、SLG3、SombrAbsol、TM-47、Yolopix
德语:ariebe9115、Blurry Knight、Christian Schuhmann、Dubsenbert Reachs、Fırat Tay、hehe、Ilke Hür Eyiol、Julian、Kazuto、malekairmaroc7、Michael Brey、Oleh Hatsenko、SkillLP、SuperSaiyajinStackZ、Tcm0、TheDude、TM-47、Urik
希腊语:Anestis1403
希伯来语:Barawer,亚尼夫·莱文
匈牙利语:Viktor Varga,ハトヴィngu -- hatto
印度尼西亚语:Cyruz Wings、Farid Irwan、heydootdoot、Shiori
意大利语:亚历山德罗·塔沃列里、莱昂纳多·莱达、马蒂亚、TM-47、Vendicatorealato、xavimel
日语:Chromaryu、inucat、Pk11、kuragehime、rinrinrin2002、Rintim、Ronny Chan、Uriki
韩语:DDinghoya、lifehackerhansol、我不哭、Myebyeol_NOTE、Oleh Hatsenko、그그기그
挪威语:无效区块
波兰语:Avginike、gierkowiec tv、Kipi000、Konrad Borowski、MaksCROWDIN0、Mateusz Tobiasz、Michał Słonina、RedstonekPL、TheCasachii
葡萄牙语(巴西):César Memère、Jeff Sousa、themasterf、Victor Coronado
葡萄牙语(葡萄牙):bruwyvn、Christopher Rodrigues、Gabz Almeida、jim、joyrv、leteka 1234、Rodrigo Tavares、Tiago Silva、Wodson de Andrade、Wodson de Andrade、Zak
罗马尼亚语: Tescu
俄语:Alexey Barsukov、Ckau、manwithnoface、mbhz、MMR Marler、Nikita、Молодая Кукуруза
琉球:仓姬姬
西班牙语:Adrin Ramen、Adrian Rodriguez、Allinxter、beta215、ccccmark、dimateos、Kaede159、KplyAsteroid、mschifino、Nicolás Herrera Concha、Nintendo R、nuxa17、Radriant、SofyUchiha、TM-47、Urik、XxPhoenix1996xX
瑞典语:Max Hambraeus、Nullified Block、TM-47、Victor Ahlin、Walter Lindell
土耳其语:Alp、Egehan.TWL、Emir、GlideGuy06、Grandmaquil、imbeegboi22、Ilke Hür Eyiol、rewix32、rewold20、Yağmur Celep
乌克兰语:Oleh Hatsenko、Mykola Pukhalskyi、TM-47、вухаста гітара
巴伦西亚语:tsolo
越南语:Chử Tiến Bình、daicahuyoi Đỗ Minh Hiếu、hotungkhanh、Trương Hồng Sơn