How does downloaded code differ from code that might be in a cart?
Downloaded code by MultiBoot is nearly identical to ROM code. They both must have a ROM header at the beginning followed by code/data. (Currently, the rom header, by default, is replaced with a known good header containing the standard logo. This default replacement can be disabled with a command line option.) To compile your code you need to specify a Text section of 0x2000000 instead of 0x8000000. There is one other difference. In multiboot images, the area from 0x20000c4 to 0x20000df is reserved and should be set to zeros in your crt0.s (for GCC) or start.asm (for SDT). If you use the following code, then stick it right after the ROM header: b SkipReservedStuff .byte 0 @ Boot method (0 = ROM boot, 3 = Multiplay boot) .byte 0 @ Slave # (1 = slave #1, 2 = slave #2, 3 = slave #3) .byte 0 @ reserved .byte 0 @ reserved .word 0 @ reserved .word 0 @ reserved .word 0 @ reserved .word 0 @ reserved .word 0 @ reserved .word 0 @ reserved SkipReservedStuff: (For SDT, replace .byte with dcb, .wor