From 3dbrew
Jump to: navigation, search

The 8.0.0-18 system update was released on July 7, 2014.


Official change-log:

  • Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.

System Titles[edit]

eShop, NVer, CVer, and the NZone hotspots list were updated. The "masterkey.bin" file in the CVer RomFS was updated(different u32 value at offset 0x0 and different random data). The "cup_list" file was removed from the CVer RomFS as well.

The 0004009B00012302 USA title(and the equivalent titleIDs for the other regions) was updated. "romfs:/300000.bin" was added, "romfs:/<Region>_<Language>/300000_msbt_LZ.bin" was added for all of the directories in the RomFS too(the msbt files contain messages involving eShop).

All non-SAFE_MODE system modules were updated. The CTRSDK crt0 code was updated: code was added for using svcGetProcessInfo with type=20, the output value is written to a state field. Due to this change, any titles using this additional new code will not work on pre-v8.0 NATIVE_FIRM: this triggers a fatal-error, when ErrDisp was launched successfully to begin with. The CTRSDK LINEAR-memory vaddr->physaddr conversion code was basically replaced with code which uses the above field, however when the vaddr is within the memory for the NS SharedFont the conversion code can use either of the mappings(0x14000000/0x30000000).

Certain modules had the actual module code updated as well, such as GSP and IR, and likely others. GSP and CSND modules were updated to support LINEAR addresses in the range 0x30000000-0x40000000.

Note that unlike past CTRSDK versions(specifically CTRSDK v7.* for system-version v7.x), the CTRSDK version for system-version v8.x is v9.*.

ErrDisp, eShop mint applet(used for accessing eShop outside of the eShop application, like DLC), and SNOTE_AP were updated, these now use the v7.0 NCCH encryption. None of the other updated titles use the v7.0 NCCH encryption(besides the ones which use it already). Due to ErrDisp being updated, this breaks booting 8.0.0-18 on physical <=v4.x systems where the key-data for the v7.0 NCCH crypto wasn't initialized correctly.


NATIVE_FIRM was updated. The ARM9-kernel, Process9, the ARM11-kernel, and all of the ARM11 FIRM-modules were updated.

Process9 had minor / various other changes, including gamecard-related code changes. Support for new exheader/accessdesc fields were implemented. FSPXI:GetSpecialContentIndex was updated to add support for a new value(unknown where the field for that originates). Process9 now uses VRAM size 0x600000 instead of 0x400000 for FIRM(during FIRM launch) section address+size verification, and for the memory-clear code for the FIRM-launch panic function.

The LINEAR memory region has been moved to virtual address 0x30000000, however in certain cases the 0x14000000 mapping is used instead for backwards-compatibility(see here and here). When the v8.0 NATIVE_FIRM is running, any process which uses the new 0x30000000 LINEAR-memory mapping will not work with <v8.0 system-modules for LINEAR memory(such as GSP/CSND module).

Most of the ARM11 FIRM-modules changes are likely minor. Certain code in pm-module was updated to clear bitmask 0xF0000000 in programID-lows(other code in pm-module was changed too). When handling the exheader dependency list, pm-module now skips handling titles in this list which have any bits in programID-low bitmask 0xF0000000 set(this is currently hard-coded). The exheader dependency list handling change is for the New 3DS system-module(s), which do not exist on 8.0.0-18.

ARM11 kernel changes(besides various other (minor) changes):

  • Multiple SVCs were stubbed(that is, these only return an error now).
  • The code for svcControlMemory was updated.
  • The code for svcGetProcessInfo was updated: previously a total of 9 type values were handled, this now handles a total of 24 type values.
  • The code for svcStartInterProcessDma was updated. When the DmaConfig userland->kernelmode data-copy fails(like when the DmaConfig address is not readable from userland), this SVC now returns an error. Certain fields in the DmaConfig structure are now validated.
  • The end-address for process memory has been changed from virtual-address 0x20000000, to 0x40000000. Therefore, the L1 MMU table size for each process is now 0x1000-bytes, previously it was 0x800-bytes.
  • The KProcess structure was changed.
  • The privileged-mode memory layout was changed, see here.

See Also[edit]