httpexec

From GameBrew
httpexec
Httpexec2.png
General
AuthorFling (Gered King)
TypeOther Apps
Version1.1
LicenseMixed
Last Updated2007/05/06
Links
Download
Website
Source

httpexec extends the work of GrizzlyAdams and EyeballKid to provide a simple bootloader for the Nintendo DS which grabs the ROM images to be executed off of a webserver via HTTP.

It's meant to be used as a development tool to decrease the time spent between when you recompile your project to the time you see it running on your DS with no card swapping in between.

Note: The link is for v1.1 only (latest release is v1.2).

Installation

What is required:

  • Web server containing NDS binaries.
  • DLDI-compatible device to save the downloaded binary to.
  • Wireless network compatible with a Nintendo DS.

Four files are needed which are included in the download:

  • httpexec.nds
  • httpexec.conf
  • exec_stub.arm9
  • exec_stub.arm7

First, patch httpexec.nds AND exec_stub.arm9 for your cart with dlditool.

httpexec.conf essentially provides the program with the URL to download the desired .nds binary from, and also specifies what to save it as on your DLDI-compatible device. This file will look something like this:

URL=http://your-webserver-here/remotefile.nds
OUT=/downloadedfile.nds
WAITFORKEY=1
EXECDEBUG=1
EXECPATH=/

In this case, when httpexec.nds is run, it will download remotefile.nds from the URL http://your-webserver-here/remotefile.nds and save it to your cart as the file /downloadedfile.nds. Once this is complete, it will then boot /downloadedfile.nds.

Editing httpexec.conf:

  • URL
    • The URL option is the only option that is required to be present in httpexec.conf.
    • This must be set to the very same URL you would use in a web browser to download the NDS binary.
    • This means you must include the "http://" at the beginning, a valid host or IP address, and the path to the NDS binary including the filename itself.

The following are all optional, and may be left out of httpexec.conf entirely:

  • OUT
    • The OUT option specifies the path and filename to write the downloaded NDS binary to.
    • The default is "/bootme.nds".
  • WAITFORKEY
    • This option can be a 1 or a 0.
    • It controls whether or not httpexec will wait for any button to be pressed after downloading the NDS binary, but before executing it so you can see what happened during download (probably little to no reason for having this option, but maybe someone will want it).
    • The default for WAITFORKEY is 0.
  • EXECDEBUG
    • This option also can be either a 1 or a 0.
    • It controls whether or not any output is displayed during the bootloading process. This includes messages displayed by the exec_stub. The default for EXECDEBUG is 0.
  • EXECPATH
    • The last option is where you can specify an alternate location for the exec_stub.arm9 and exec_stub.arm7 binaries.
    • You only specify a path here, not a filename. The default is "/", which means the binaries should be located on the root of your card.

Known Issues

Not really httpexec-specific, but there is a bit of a delay in the DSChannels exec_stub just before it finishes booting the downloaded binary. This is caused by a call to FAT_FreeFiles(). If you experience this delay, you can get rid of it by removing the function call.

Changelog

1.2

  • Added EyeballKid's CrackURL() function contributed via the gbadev.org forums. As a result, URL parsing is a lot more flexible then it was previously.
  • More meaningful error messages will now be displayed if any problems occur during the HTTP download.

v1.1 2007/05/06

  • Added error checking for required values in httpexec.conf.
  • Added support for extra options to httpexec.conf.
  • Should be generally more robust now.
  • Now bootable via _boot_sc.nds autoboot on a Supercard in full working order (v1.0 wasn't on my Supercard MiniSD at least, some problem in the ARM7 binary prevented wifi from initializing properly).
  • Changed downloading process to download directly to RAM, then write the entire NDS binary to the cart after the download is complete. This was done because of problems encountered with my Supercard MiniSD with the old method (writing many times in small chunks... this would cause httpexec to freeze... still investigating the cause of this). As a result the NDS binary must fit into the 4MB of RAM on the DS.
  • Switched from Chishm's exec_stub to GrizzlyAdams exec_stub (from DSChannels). This solved some problems with booting certain NDS binaries which used custom ARM7 code (still not sure why Chishm's exec_stub had some problems with that).

v1.0 2007/04/04

  • Initial release.

Credits

Portions of code from GrizzlyAdams DSChannels (exec_stub related code) plus unmodified copies of exec_stub.arm9 and exec_stub.arm7:

EyeballKid's HappyHTTP library:

httpexec v1.0 used Chishm's exec stub (however v1.1 was switched to using GrizzlyAdams exec_stub from DSChannels):

External links

Advertising: