Editing Hardware Registers

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 500: Line 500:
| 0xBC100068 || 4 || RW || Bits 0-7: PLL frequency
| 0xBC100068 || 4 || RW || Bits 0-7: PLL frequency


Bits 16-31: unknown, checked against by the iplloader, possibly related to jigkick
Bits 16-31: unknown, checked against by the PRE-IPL, possibly related to jigkick
|-
|-
| 0xBC100070 || 4 || RW || Set Avc power
| 0xBC100070 || 4 || RW || Set Avc power
Line 873: Line 873:
|-
|-
|}
|}
= 0xBC700000: ? =


= 0xBC800000: DMACPlus =
= 0xBC800000: DMACPlus =
Line 1,497: Line 1,499:
| 0xBD700007 || 1 || RW || Command
| 0xBD700007 || 1 || RW || Command


Cmd 0x00 = nop
Cmd 0x08 = reset
 
Cmd 0x08 = device reset
 
Cmd 0x70 = seek
 
Cmd 0x90 = exec device diagnostic


Cmd 0xA0 = packet
Cmd 0xA0 = packet
Cmd 0xA1 = identify packet device
Cmd 0xC6 = set multiplue


Cmd 0xC8 = read
Cmd 0xC8 = read
Line 1,515: Line 1,507:
Cmd 0xCA = write
Cmd 0xCA = write


Cmd 0xDE = media lock
Cmd 0xE0 = standby now 1
 
Cmd 0xDF = media unlock
 
Cmd 0xE0 = standby
 
Cmd 0xE2 = standby immediate
 
Cmd 0xE3 = idle
 
Cmd 0xE5 = check power mode


Cmd 0xE6 = sleep
Cmd 0xE6 = sleep
Line 1,532: Line 1,514:


Cmd 0xEC = ID ATA
Cmd 0xEC = ID ATA
Cmd 0xED = media eject


Cmd 0xEF = set features
Cmd 0xEF = set features
Cmd 0xF0 = psp reset


|-
|-
Line 1,800: Line 1,778:
|}
|}


= 0xBDF00000: SPOCK =
= 0xBDF00000: UMD =


{| class="wikitable"
{| class="wikitable"
|-
|-
! Address !! Size !! R/W !! Description
! Address !! Size !! R/W !! Description
|-
| 0xBDF00000 || 4 || R || Spock signature 'SPOK'
|-
| 0xBDF00004 || 4 || R || Spock version '0050'
|-
|-
| 0xBC900008 || 4 || RW || Reset
| 0xBC900008 || 4 || RW || Reset
Line 1,814: Line 1,788:
Bit 0 = reset
Bit 0 = reset
|-
|-
| 0xBDF00010 || 4 || RW || Set command
| 0xBC900010 || 4 || RW || Set command


Value 0x01 = ?
Value 0x01 = ?


Value 0x02 = Authentication
Value 0x02 = ?


Value 0x03 = ?
Value 0x03 = ?
Line 1,826: Line 1,800:
Value 0x05 = write QTGP3 () at the first transfer address
Value 0x05 = write QTGP3 () at the first transfer address


Value 0x08 = Decrypt MKI
Value 0x08 = find region


Value 0x09 = Decrypt key from IDStorage
Value 0x09 = ?


Value 0x0A = Decrypt read data sector (not used/skipped, it decrypts sectors on the fly)
Value 0x0A = read data


Value 0x0B = ?
Value 0x0B = ?
Value 0x0C = ?
|-
|-
| 0xBD900014 || 4 || R? || Unknown
| 0xBD900014 || 4 || R? || Unknown
|-
|-
| 0xBDF00018 || 4 || RW || Drive mode flags, value == 0x111 for DVD mode, otherwice UMD mode.
| 0xBD900018 || 4 || R? || Unknown flags
|-
|-
| 0xBD90001C || 4 || R? || Unknown
| 0xBD90001C || 4 || R? || Unknown
Line 1,846: Line 1,818:
| 0xBD900024 || 4 || RW || Clear interrupt?
| 0xBD900024 || 4 || RW || Clear interrupt?
|-
|-
| 0xBDF00028 || 4 || RW || Enable interrupt
| 0xBD900028 || 4 || RW || Enable interrupt?
|-
|-
| 0xBD90002C || 4 || RW || Disable interrupt?
| 0xBD90002C || 4 || RW || Disable interrupt?
|-
|-
| 0xBDF00030 || 4 || R || Error Status
| 0xBD900030 || 4 || RW || Unknown, set to 4
|-
|-
| 0xBD900038 || 4 || RW || Unknown, set to 4
| 0xBD900038 || 4 || RW || Unknown, set to 4
Line 1,958: Line 1,930:
|-
|-
| 0xBE0000D0 || 4 || ? || ??
| 0xBE0000D0 || 4 || ? || ??
|-
|}
|}


= 0xBE100000: MagicGate Type-R =
= 0xBE100000: MagicGate hardware for memory stick? =
 
{| class="wikitable"
|-
! Address
! Size
! Read/write
! Description
|-
| 0xBE100000 || ? || ? || Unknown
|-
| 0xBE100010 || ? || ? || ?Key size (in bits)?. ex: 0x100 (hardcoded)
|-
| 0xBE100020 || ? || ? || Unknown
|-
| 0xBE100038 || ? || ? || Hardware version 1
|-
| 0xBE100040 || 0x10 || ? || Key
|-
| 0xBE100050 || 8 || ? || Unknown
|-
| 0xBE100060 || 0x10 || ? || IV
|-
| 0xBE100080 || ? || ? || Control
|-
| 0xBE100084 || ? || ? || Status
|-
| 0xBE100088 || ? || ? || Algorithm
|-
| 0xBE100090 || ? || ? || Unknown. Value at bit 8 is used.
|-
| 0xBE100094 || ? || ? || Size
|-
| 0xBE100098 || ? || ? || Hardware version 2
|-
| 0xBE1000A0 || ?0x800? || ? || Input buffer
|}


= 0xBE140000: LCDC =
= 0xBE140000: LCDC =
Line 2,280: Line 2,217:
|-
|-
|}
|}
= 0xBE600000: ? =


= 0xBE740000: Display =
= 0xBE740000: Display =
Line 2,322: Line 2,261:
|}
|}


= 0xBFC00000 & 0xBFD00000 & 0xBFE00000: MIPS Reset Vector and RAM =
= 0xBFC00000: MIPS Reset Vector =


Note this is not a hardware register *per se*.
The PSP [[PRE-IPL|iplloader]] is copied to 0xBFC00000 then executed.


At boot time, the PSP [[iplloader]] is mapped to read-only 0xBFC00000 then executed. An additional 4096-byte scratchpad-like RAM is accessible at 0xBFD00000 and used as a temporary space to decrypt the IPL blocks.
bloadp is copied to 0xBFE00000 then executed.
Then, once the CPU is reset (0xBC10004C |= 2), the iplloader is unmapped, and the memory which was then at 0xBFD00000 is now mapped at 0xBFC00000 and execution restarts at 0xBFC00000.


On devkit, bloadp is copied to 0xBFE00000 then executed. IPL blocks are usually copied to 0xBFE01000, decrypted in place then executed.
IPL blocks are usually copied to 0xBFE01000, decrypted in place then executed.


= 0xBFF00000: NAND DMA buffer =
= 0xBFF00000: NAND DMA buffer =
Please note that all contributions to PSP Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PSP Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)