Skip to content
open-eadPublic
forked from curl/curl

About

A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

19,388 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

curl

This is a decompilation of curl, in the variant used in Nintendo's first party games.

The objective is to recreate this library as close as possible to the version present in various games, which includes custom changes and additional functions introduced by Nintendo.

For working on this project, it is recommended to obtain a game that ships with debugging symbols or even DWARF information. The following games are currently covered by this repository:

File names, function names and the file organization come from debugging symbols, assertions and information in all of the aforementioned and additional titles.

Note that many names (especially for inlined, templated functions) are just plain guesses.

Fork-off point

When comparing the upstream versions of curl with the functions included in SDK 3.5.1 (SMO 1.0), it seems like version 7.42.1 was used.

When comparing with 7.42.0, the following commits are missing (all others have no effect on the functions in SMO): fd9d3a1, 85c45d1

Version 7.42.1 matches best.

When comparing with 7.43.0, way more functions are mismatching.

However, an additional commit has been cherry-picked on top of the 7.42.1 release: 20ac345 There are multiple breaking commits in-between that indicate that only this individual commit has been picked for Nintendo's release.

Comparison between SDK versions and games

This repo currently just contains the version from SDK 3.5.1, as included in SMO 1.0. Other games and versions listed here are just from a quick survey and no in-depth matching or checks. As far as we can tell, all SDK versions use the same version of curl as base, and only change Nintendo's custom functions in the build.

SDK Version Game same/different?
0.12.14 BotW 1.0 same as 3.5.1
3.5.1 SMO 1.0 base version covered here at the moment
4.4.0 BotW 1.5 different: for example different buffer sizes, different OS specific structs and use of newer sdk function calls not present in older firmware.
7.3.2 SMO 1.3 same as 4.4.0
12.3.1 Doom 1.0 same as 4.4.0

Matching hacks

This project may use small hacks to force particular code to be generated by the compiler. Those have no semantic effects but can help with matching assembly code especially when the hacks are used for functions that are inlined.

  • MATCHING_HACK_NX_CLANG: Hacks for Switch curl, when compiling with Clang.

About

A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages