Difference between revisions of "Cameras"

From DSiBrew
Jump to navigation Jump to search
m
Line 45: Line 45:
 
|  0x04004200
 
|  0x04004200
 
|  2
 
|  2
REG_CAMUNK
+
REG_CAMRST
 
|-
 
|-
 
|  0x04004202
 
|  0x04004202
Line 56: Line 56:
 
|}
 
|}
  
=== REG_CAMUNK ===
+
=== REG_CAMRST ===
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 65: Line 65:
 
| ?
 
| ?
 
|}
 
|}
 +
 +
Used for resetting cameras/DSP?
  
 
=== REG_CAMCNT ===
 
=== REG_CAMCNT ===
Line 72: Line 74:
 
!  DESCRIPTION
 
!  DESCRIPTION
 
|-
 
|-
| 13-0
+
| 3-4
 +
| ?
 +
|-
 +
| 5
 +
| This is set for resetting cameras/DSP?
 +
|-
 +
| 7-6
 +
| ?
 +
|-
 +
| 9-8
 +
| Poked for resetting cameras/DSP?
 +
|-
 +
| 12-10
 
| ?
 
| ?
 +
|-
 +
| 13
 +
| Set during initialization?
 
|-
 
|-
 
| 14
 
| 14
| ?
+
| Cleared during initialization?
 
|-
 
|-
 
| 15
 
| 15
| Frame transfer enable
+
| Enable
 
|}
 
|}
  
Line 89: Line 106:
 
|-
 
|-
 
| 31-0
 
| 31-0
| Video data
+
| RGB555 video data converted by DSP
 
|}
 
|}
  
For retrieving camera video data, [[NDMA]] with arm9 startup mode 11(camera) is used with this src register. Transferred length varies per resolution. In the video data, each pixel is 2 bytes.
+
For retrieving camera video data, [[NDMA]] with arm9 startup mode 11(camera) is used with this src register. Transfer lengths used are 0x18000 and 0x96000. The former is 256x192(actual camera resolution to final video data resolution conversion is handled by DSP) and the latter is 640x480.
 +
 
 +
The DSP fw binary still seems to be loaded after cameras were used in the exploited title, as reading this register(with cameras reinitialized prior to that) results in changing data rather than fixed data. The DSP is a proprietary CEVA DSP, since this ISA is proprietary fw binaries can't be compiled for it. Thus homebrew could potentially only use cameras when the exploited title can use cameras and cameras were used in the title prior to running hax.
  
 
== See also ==
 
== See also ==

Revision as of 22:35, 6 August 2011

The Nintendo DSi contains two cameras. The cameras can be used in the Nintendo DSi Camera application or DSi games that are compatible.

Specifications

A picture taken with the DSi's camera.
  • 0.3 Megapixel
  • 640*480 VGA
  • No zoom and no flash.
  • Photos saved in JPG format (saved in DCIM/ folder on the SD/SDHC or in the internal memory)

Applications/Games compatible

Applications

Games

  • Asphalt 4 : Elite Racing (DSiWare)
  • Brain Challenge (DSiWare)
  • Classic Word Games
  • Cooking Coach
  • Pop SuperStar : Road To Celebrity (DSiWare)
  • Real Football 2009 (DSiWare)
  • WarioWare : Snapped! (DSiWare)
  • iCarly
  • Pokemon Black,White (2010,JP)
  • Castle of Magic (DSiWare)
  • Photo Dojo (DSiWare)

Camera registers

The cameras are controlled and initialized with I2C. The below registers are accessed by the arm9.

ADDRESS WIDTH NAME
0x04004200 2 REG_CAMRST
0x04004202 2 REG_CAMCNT
0x04004204 4 REG_CAMDATA

REG_CAMRST

BIT DESCRIPTION
15-0 ?

Used for resetting cameras/DSP?

REG_CAMCNT

BIT DESCRIPTION
3-4 ?
5 This is set for resetting cameras/DSP?
7-6 ?
9-8 Poked for resetting cameras/DSP?
12-10 ?
13 Set during initialization?
14 Cleared during initialization?
15 Enable

REG_CAMDATA

BIT DESCRIPTION
31-0 RGB555 video data converted by DSP

For retrieving camera video data, NDMA with arm9 startup mode 11(camera) is used with this src register. Transfer lengths used are 0x18000 and 0x96000. The former is 256x192(actual camera resolution to final video data resolution conversion is handled by DSP) and the latter is 640x480.

The DSP fw binary still seems to be loaded after cameras were used in the exploited title, as reading this register(with cameras reinitialized prior to that) results in changing data rather than fixed data. The DSP is a proprietary CEVA DSP, since this ISA is proprietary fw binaries can't be compiled for it. Thus homebrew could potentially only use cameras when the exploited title can use cameras and cameras were used in the title prior to running hax.

See also