Skip to content

Instantly share code, notes, and snippets.

@shinyquagsire23
Last active September 22, 2022 07:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save shinyquagsire23/d4977e0ad9ea2cd2e9840641ba53fb7a to your computer and use it in GitHub Desktop.
Save shinyquagsire23/d4977e0ad9ea2cd2e9840641ba53fb7a to your computer and use it in GitHub Desktop.
NDS IPC Reverse Engineering
FIFO Message Header:
--------------------
dddddddddddddddddddddddddd f ttttt
Tag (lower 5 bits, mask 0x1F)
Error (bit5, mask 0x20)
Data (Upper 26 bits, mask 0xFFFFFFC0)
FIFO Data Packing (26 bits):
--------------------
Command (mask 0x7F00, >> 8)
TODO
Tag IDs:
--------
0x00 - Unimplemented (hachihachi) TODO
0x01 - Unimplemented (hachihachi) TODO
0x02 - Unimplemented (hachihachi) TODO
0x03 - Unimplemented (hachihachi) TODO
0x04 - NVRAM
0x05 - RTC (Real Time Clock)
0x06 - TouchPanel
0x07 - Sound
0x08 - PM (Power Management)
0x09 - Microphone
0x0A - WM (Wireless Manager)
0x0B - FS (FileSystem)
0x0C - OS
0x0D - Cartridge
0x0E - Unimplemented (hachihachi) TODO
0x0F - WirelessVR
0x10 - Cartridge Unk10
0x11 - Cartridge Unk11
0x12 - WRAM Bank Control (TWL)
0x13 - AES (TWL)
0x14 - FATFS (TWL)
0x15 - Camera (TWL)
0x16 - NWM (TWL)
0x17 - SCFG (TWL)
0x18 - DSi Sound (TWL)
0x1F - Unk (TWL, only in Launcher?)
TouchPanel PXI:
---------------
Data & 0x2000000 - Resets idk
Data & 0x1000000 - SPI idk
Data & 0x000F0000 - Some index
WM PXI:
-------
Data - Address
hachihachi only allows cmds 0x00 (Initialize), 0x01 (Reset), 0x02 (End), 0x0A (StartScan), 0x0B (EndScan), 0x26 (StartScanEx)
u16 [Data+0] - Cmd
___________________________
| Cmd | Name |
|-----|---------------------|
|0x00 | Initialize |
|0x01 | Reset |
|0x02 | End |
|0x03 | Enable |
|0x04 | Disable |
|0x05 | PowerOn |
|0x06 | PowerOff |
|0x07 | SetParentParam |
|0x08 | StartParent |
|0x09 | EndParent |
|0x0A | StartScan |
|0x0B | EndScan |
|0x0C | Unk0C |
|0x0D | Unk0D |
|0x0E | StartMP |
|0x0F | Unk0F |
|0x10 | EndMP |
|0x11 | Unk11 |
|0x12 | Unk12 |
|0x13 | Unk13 |
|0x14 | Unk14 |
|-----|---------------------|
|0x18 | SetGameInfo |
|0x19 | SetBeaconTxRxInd |
|0x1A | Unk1A |
|0x1B | Unk1B |
|0x1C | Unk1C |
|0x1D | SetLifeTime |
|0x1E | MeasureChannel |
|0x1F | InitWirelessCounter |
|0x20 | Unk20 |
|0x21 | SetEntry |
|0x22 | Unk22 |
|0x23 | Unk23 |
|0x24 | Unk24 |
|0x25 | Unk25 |
|0x26 | StartScanEx |
|0x27 | Unk27 |
|0x28 | Unk28 |
|0x29 | Unk29 |
|0x2A | Unk2A |
|0x2B | Unk2B |
|0x2C | Unk2C |
|0x2D | Unk2D |
|_____|_____________________|
OS PXI:
-------
_____________
|Cmd | Name |
|-----|-------|
|0x10 | Reset |
|_____|_______|
FATFS PXI:
----------
___________________________
| Cmd | Name |
|-----|---------------------|
|0x00 | Mount |
|0x01 | Unmount |
|0x02 | Unk02 |
|0x03 | Unk03 |
|0x04 | Unk04 |
|0x05 | Unk05 |
|0x06 | Unk06 |
|0x07 | Unk07 |
|0x08 | Unk08 |
|0x09 | Unk09 |
|0x0A | Unk0A |
|0x0B | Unk0B |
|0x0C | Unk0C |
|0x0D | Unk0D |
|0x0E | Unk0E |
|0x0F | Unk0F |
|0x10 | Unk10 |
|0x11 | Unk11 |
|0x12 | Unk12 |
|0x13 | Unk13 |
|0x14 | Unk14 |
|0x15 | Unk15 |
|0x16 | Unk16 |
|0x17 | Unk17 |
|0x18 | Unk18 |
|0x19 | Unk19 |
|0x1A | Unk1A |
|0x1B | Unk1B |
|0x1C | Unk1C |
|0x1D | Unk1D |
|0x1E | Unk1E |
|0x1F | Unk1F |
|0x20 | Unk20 |
|_____|_____________________|
NWM PXI:
--------
Data - Address
u16 [Data+0] - Cmd
___________________________
| Cmd | Name |
|-----|---------------------|
|0x00 | nullsub |
|0x01 | Reset |
|0x02 | nullsub |
|0x03 | Open? |
|0x04 | Close? |
|0x05 | Scan |
|0x06 | Unk06 |
|0x07 | Unk07 |
|0x08 | Unk08 |
|0x09 | Unk09 |
|0x0A | Unk0A |
|0x0B | Unk0B |
|0x0C | Unk0C |
|0x0D | Unk0D |
|0x0E | Unk0E |
|0x0F | Unk0F |
|0x10 | Unk10 |
|0x11 | Unk11 |
|0x12 | Unk12 |
|0x13 | LoadFirmware? |
|0x14 | Unk14 |
|0x15 | Unk15 |
|0x16 | Unk16 |
|0x17 | Unk17 |
|0x18 | Unk18 |
|0x19 | Unk19 |
|0x1A | Unk1A |
|0x1B | Unk1B |
|0x1C | Unk1C |
|0x1D | Unk1D |
|0x1E | Unk1E |
|_____|_____________________|
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment