-
Notifications
You must be signed in to change notification settings - Fork 5
/
devnotes.txt
90 lines (85 loc) · 5.52 KB
/
devnotes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
flashcarts that can be directly built:
- All DSTT-based clones
- All R4iTT 3DS based clones
- in flashcard-bootstrap, we use r4ids.cn BL, since DLDI is the same, and R4iTT has no restructions. We don't need more than one :D
- GBA Movie Player (Compact Flash) (NDS MP flashed)
- iSmart Premium, EZ-Flash Vi, r4i.cn
- EZ-Flash V (SDHC is not tested. Some outdated sources suggest that EZV SDHC does not have SD card init, and thus cannot be booted from DLDI alone.)
- Datel Games 'n' Music and Action Replay DSi
- Interestingly the ARDSi can run homebrew...
flashcarts that have some protection built in
- Original R4
- encrypt using r4denc with 0x484a
- Ace3DS+
- encrypt using r4denc with 0x4002
- must use regular ds_arm9.ld and ds_arm7.ld to build (default one used in most DS projects)
- R4 i.L.S., all r4isdhc.com.cn carts, r4isdhc.hk carts dated 2020 or newer
- build with ndstool with args `-g "####" "##" "R4XX"`
- encrypt using r4denc with 0x4002
- must use regular ds_arm9.ld and ds_arm7.ld to build (default one used in most DS projects)
- Gateway Blue (possibly R4infinity 2?)
- build with ndstool with args `-g "####" "##" "R4IT"`
- encrypt using r4denc with 0x4002
- must use regular ds_arm9.ld and ds_arm7.ld to build (default one used in most DS projects)
- R4i-SDHC, r4isdhc.com 2014+ carts
- has a hash checking watermark at every 0x200 bytes
- Taiju Yamada has an arm9 patcher for this. EWRAM entry (e9 entry address) must be 0x02000450 for this patcher
- Extract compiled arm9, patch arm9, rebuild NDS with ndstool and set RAM address (r9 address) to 0x02000000
- SuperCard DSONE (non-SDHC)
- build with ndstool with args `-g "ENG0"`
flashcarts with a particular load address:
- all r4ids.cn carts, R4 Ultra and R4i Ultra
- EWRAM entry (e9 entry address) must be 0x02000800
- For some reason if you try to change this by setting CRT0 address in LDFLAGS this doesn't work. So a specs file is provided.
- R4i Ultra can just be converted to an Acekard 2i. One should do that instead and get the benefits of a true Acekard 2i instead.
- Acekard 2, 2.1, 2i
- EWRAM entry (e9 entry address) must be 0x02000450
- Amaze3DS / Wood r4igold.cc upgrade
- Appears to be related to the Galaxy Eagle line?
- EWRAM entry (e9 entry address) must be 0x02000000
- R4iDSN
- EWRAM entry (e9 entry address) must be 0x02000000
flashcarts that require extra files or tools
- M3 DS Real, R4RTS, iTouchDS, iTouch2, R4 SDHC RTS black
- Any of these will launch /_system_/_sys_data/r4i.sys which is just a normal NDS file
- all boot files are derived from the R4RTS loader, with different encryption keys
- All thanks goes to Taiju Yamada, Rudolph and NDS Laboratory for tools and/or tips on getting this correct
- R4RTS:
- launches 'loader.eng', which launches /_system_/_sys_data/r4i.sys
- R4 SDHC RTS black
- launches /_DS_MENU.sys.
- otherwise identical to R4RTS. No effort was put in here. Thanks r4isdhc.com team
- M3 DS Real:
- checks /SYSTEM/g6dsload.1, and launches /SYSTEM/g6dsloader.eng.
- g6dsload.1 is a very specific stub for now, not sure what its use is but it needs to be there, so for now I just used whatever the converter spewed out
- iTouchDS, iTouch2
- launches `boot.*` depending on region of cart. No easy way to identify, but they are all different encryption keys.
- just check which one it is manually, it's 3 files anyway
- M3i Zero (GMP-Z003)
- a tool by Taiju Yamada (Xenon++) named dsbize is required. dsbize source is in /resources/dsbize
- Compile it for PC then run `dsbize <rom name here> g003menu.eng 0x12`
- `_M3_MENU.dat` is the bootloader, but it is encrypted to hell and back
- But this combined with a prebuilt `MuliLang.bin` makes it load `g003menu.eng`, which is what we build
- Any standard NDS homebrew can replace `g003menu.eng` as long as e9==r9 and e7==r7.
- The latter is done already by devkitPro
- The former can be done using `arm9_crt0set`
- N5
- An `_AX_MENU.dat` is required. No one knows what it's for.
- Seems to need to be valid, an empty `_AX_MENU.dat` doesn't do anything.
- Otherwise the actual boot file, `_DS_MENU.dat` can be anything.
- SuperCard DSONE SDHC / SuperCard DSOnei
- For some reason if you try to directly create the DSONE SDHC bootloader you don't get access to entire hardware. This breaks YSMenu.
- Thus some extra binaries are included
- All thanks goes to Bliss for the initial bootloader files
- MSFORSC.nds is for the older SuperCard DSONE SDHC models
- SCFW.SC is presumably the newer one.
- Both files are exactly the same and behave exactly the same. But for sanity check just have both.
- This is meant to be a triple loader, but I don't actually remember which files it boots other than TTMenu.dat.
- We are going to use TTMenu.dat for simplicity's sake.
- EZ-Flash Parallel
- The Parallel's bootloader uses devkitPro's bootloader; this means the bootloader will DLDI patch the boot file (`ezds.dat`).
- To replace it with our custom DLDI, we need to run a script that will trick the patcher into leaving our file alone
- `dldinoap.py` in this repo should do the trick
random notes:
- MSHL2 writes 32KB of data, regardless of what your DLDI size is. This breaks a bunch of homebrew. You need to recompile libnds with 32KB DLDI size to fix.
- This is done here.