CONFIG9 Registers: Difference between revisions

No edit summary
Line 26: Line 26:
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| CFG_DEBUGUNIT
| CFG_DEBUGCTL
| 0x10000004
| 0x10000004
| 4
| 4
Line 35: Line 35:
| 0x10000008
| 0x10000008
| 1
| 1
| TwlProcess9
| Boot9, Process9, TwlProcess9
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| [[#CFG_CARDCONF|CFG_CARDCONF]]
| [[#CFG_CARDCTL|CFG_CARDCTL]]
| 0x1000000C
| 0x1000000C
| 2
| 2
|
| Process9
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
|  
| [[#CFG_CARDSTATUS|CFG_CARDSTATUS]]
| 0x10000010
| 0x10000010
| 1
| 1
|
| Process9
|-
| style="background: green" | Yes
| ?
| 0x10000011
| 1
|
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| ?
| CFG_CARDCYCLES0
| 0x10000012
| 0x10000012
| 2
| 2
|
| Boot9, Process9
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| ?
| CFG_CARDCYCLES1
| 0x10000014
| 0x10000014
| 2
| 2
|
| Boot9, Process9
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
Line 134: Line 128:


On New 3DS, the above is instead done by the [[FIRM#New_3DS_FIRM|Kernel9 loader]].  In addition to using the OTP data for initializing the TWL console-unique keys, the Kernel9 loader will generate the decryption key for NATIVE_FIRM.  The final keyslot for NATIVE_FIRM is preserved, so that at a non-reset FIRM launch, the keyslot can be reused, since the OTP would then be inaccessible.
On New 3DS, the above is instead done by the [[FIRM#New_3DS_FIRM|Kernel9 loader]].  In addition to using the OTP data for initializing the TWL console-unique keys, the Kernel9 loader will generate the decryption key for NATIVE_FIRM.  The final keyslot for NATIVE_FIRM is preserved, so that at a non-reset FIRM launch, the keyslot can be reused, since the OTP would then be inaccessible.
It is not possible to set any other bits.


== CFG_SYSPROT11 ==  
== CFG_SYSPROT11 ==  
Line 169: Line 161:
|}
|}


== CFG_CARDCONF ==
== 0x10000008 ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Bit
!  Bit
!  Description
!  Description
!  Used by
|-
|-
| 1-0
| 1-0
| Gamecard active controller select (0=NTRCARD, 1=?, 2=CTRCARD1, 3=CTRCARD2)
| ?
|
|-
| 3-2
| AES related? Value 3 written after write to AES_CTL.
| Boot9, Process9, TwlProcess9
|-
| 31-4
| Reserved
|
|}
 
== CFG_CARDCTL ==
{| class="wikitable" border="1"
!  Bit
!  Description
!  Used by
|-
| 1-0
| Gamecard active controller select (0=NTRCARD, 1=?, 2=CTRCARD0, 3=CTRCARD1)
| Process9
|-
|-
| 8
| 8
| ?
| Enable gamecard eject IRQ, maybe?
| Process9
|}
|}


Depending on the gamecard controller that has been selected, one of the following gamecard registers will become active:
Depending on the gamecard controller that has been selected, one of the following gamecard registers will become active:
* Selecting NTRCARD will activate the register space at [[NTRCARD|0x10164000]].
* Selecting NTRCARD will activate the register space at [[NTRCARD|0x10164000]].
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10004000]].
* Selecting CTRCARD0 will activate the register space at [[CTRCARD|0x10004000]].
* Selecting CTRCARD2 will activate the register space at [[CTRCARD|0x10005000]].
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10005000]].


== 0x10000010 ==
== CFG_CARDSTATUS ==
When a gamecard isn't inserted, this register value is 0x01.
{| class="wikitable" border="1"
!  Bit
!  Description
!  Used by
|-
| 0
| Cartridge-slot empty (0=inserted, 1=empty)
| Process9
|-
| 3-2
| ?
| Process9
|}


== CFG_EXTMEMCNT9 ==
== CFG_EXTMEMCNT9 ==
This register is New3DS-only. Only bit0 is writable: 0 = disable New3DS ARM9 memory at 0x08100000 size 0x80000, 1 = enable.
This register is New3DS-only.


This bit is set by New3DS ARM9-kernel crt0.
{| class="wikitable" border="1"
 
!  Bit
The data in this extended memory doesn't change when disabling the memory, then re-enabling the memory. Reading this extended memory while disabled results in zeros.
!  Description
!  Used by
|-
| 0
| Hide extended ARM9 memory (0=hidden, 1=shown)
| Kernel9 (New3DS)
|-
| 31-1
| Reserved
|
|}


== CFG_MPCORECFG ==
== CFG_MPCORECFG ==