System Font: Difference between revisions
Created page with "During system boot, the system-font is loaded by NS to LINEAR-memory(in the original 0x14000000 vmem region) which always gets allocated at SYSTEM_memregion+0. Due to it bein..." |
m →Unicode Private Use characters: grammar fix |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
During system boot, the system-font is loaded by [[NS]] to LINEAR-memory(in the original 0x14000000 vmem region) which always gets allocated at SYSTEM_memregion+0. Due to it being located there, all of this is GPU accessible. The [[BCFNT]] is loaded from the font title for the system region into that memory. During loading, the font-data is modified: the magic-num at fontdata+0 is changed from "CFNT" to "CFNU", and all file offsets are converted to addresses in this allocated linearmem. Processes can get the sharedmem_handle+vaddr for mapping the sharedmem for this via [[NS and APT Services|APT:GetSharedFont]]. | During system boot, the system-font is loaded by [[NS]] to LINEAR-memory(in the original 0x14000000 vmem region) which always gets allocated at SYSTEM_memregion+0. Due to it being located there, all of this is GPU accessible. The [[BCFNT]] is loaded from the font title for the system region into that memory. During loading, the font-data is modified: the magic-num at fontdata+0 is changed from "CFNT" to "CFNU", and all file offsets are converted to addresses in this allocated linearmem. Processes can get the sharedmem_handle+vaddr for mapping the sharedmem for this via [[NS and APT Services|APT:GetSharedFont]]. | ||
With font-data title-version v0 for USA/EUR/JPN, the size of this entire sharedmem is 0x332000-bytes. | |||
Shared mem structure: | Shared mem structure: | ||
Line 14: | Line 16: | ||
| 0x80 | | 0x80 | ||
| Font data size | | Font data size | ||
| The actual font data. | | The actual font data. | ||
|- | |||
| 0x80 + Font data size | |||
| 0x332000 - 0x80 - Font data size | |||
| This is leftover data from decompression operation. During the font loading process, compressed data is loaded to <code>sharedmem + 0x332000 - compressed_size_aligned_to_4</code>, and then is decompressed to <code>sharedmem + 0x80</code>. Compressed data at the end that doesn't get overwritten by decompressed data remains in the shared memory | |||
|} | |} | ||
Line 26: | Line 32: | ||
| 0x0 | | 0x0 | ||
| 0x4 | | 0x4 | ||
| | | Status. | ||
1: loading system font | |||
2: system font loaded | |||
3: failed to load system font | |||
|- | |- | ||
| 0x4 | | 0x4 | ||
| 0x4 | | 0x4 | ||
| | | Region. Indicates which [[Title_list#0004009B_-_Shared_Data_Archives|system font archive]] is loaded | ||
1: region JPN/EUR/USA (archive 0004009B00014002) | |||
2: region CHN (archive 0004009B00014102) | |||
3: region KOR (archive 0004009B00014202) | |||
4: region TWN (archive 0004009B00014302) | |||
|- | |- | ||
| 0x8 | | 0x8 | ||
Line 37: | Line 55: | ||
|- | |- | ||
| 0xC | | 0xC | ||
| | | 0x74 | ||
| Normally all-zero? | | Normally all-zero? | ||
|} | |} | ||
==Unicode Private Use characters== | |||
Some of these characters are used for tutorial message boxes and notifications; they can also be generally used in [[Mii]] names, [[SMDH|application titles]], etc. | |||
Most of these originated in the "icons" tab of the DS's standard software keyboard, and were extensively used in its firmware UI. | |||
{|border="1" cellpadding="2" cellspacing="0" style="border-collapse:collapse;" | |||
|- | |||
| colspan="17" style="background:#F8F8F8;text-align:center" | ''Private Use Area'' | |||
|----- style="background:#ccf" | |||
!width="4%"|U+!!width="6%"|0!!width="6%"|1!!width="6%"|2!!width="6%"|3!!width="6%"|4!!width="6%"|5!!width="6%"|6!!width="6%"|7!!width="6%"|8!!width="6%"|9!!width="6%"|A!!width="6%"|B!!width="6%"|C!!width="6%"|D!!width="6%"|E!!width="6%"|F | |||
|----- align="center" | |||
!E00x | |||
|A button||B button||X button||Y button||L button||R button||D-pad (unmarked)||DS alarm clock||Boxed emoticon :)||Boxed emoticon >(||Boxed emoticon :O||Boxed emoticon -_-||Sun||Cloud||Umbrella||Snowman | |||
|----- align="center" | |||
!E01x | |||
|Negative boxed exclamation mark||Negative boxed question mark||Envelope||Cell phone||Thickly-boxed + (touch calibration mark)||Spades||Diamonds||Hearts||Flowers||Right arrow||Left arrow||Up arrow||Down arrow||Circled dot (like "your position" in smartphone maps)||Camera||Crossed-out square | |||
|----- align="center" | |||
!E02x | |||
|Spinner up-left||Spinner up||Spinner up-right||Spinner right||Spinner down-right||Spinner down||Spinner down-left||Spinner left||Large cross||Boxed A (Pictochat room)||Boxed B (Pictochat room)||Boxed C (Pictochat room)||Boxed D (Pictochat room)||Negative boxed A (Automatic DS boot)||Negative boxed M (Manual DS boot)||Crossed-out square | |||
|----- align="center" | |||
!E03x | |||
|"P" (Pictochat logo)||"I" (Pictochat logo)||"C" (Pictochat logo)||"T" (Pictochat logo)||"H" (Pictochat logo)||"A" (Pictochat logo)||Crossed-out square||Crossed-out square||Crossed-out square||Crossed-out square||Crossed-out square||Crossed-out square||Crossed-out square||Crossed-out square||Boxed negative X (small letter)||Boxed negative X (big bold letter) | |||
|----- align="center" | |||
!E04x | |||
|Power button (Wiimote)||D-pad (Wiimote)||A button (Wiimote)||B button (Wiimote)||Home button (Wiimote)||Start button (Wiimote)||Select button (Wiimote)||1 button (Wiimote)||2 button (Wiimote)||Analog stick (Nunchuck)||C button (Nunchuck)||Z button (Nunchuck)||a button (Classic)||b button (Classic)||x button (Classic)||y button (Classic) | |||
|----- align="center" | |||
!E05x | |||
|Left analog stick (Classic)||Right analog stick (Classic)||L button (Classic)||R button (Classic)||ZL button (Classic)||ZR button (Classic)||Return (keyboard symbol)||Space (keyboard symbol)||Wii pointer||Wii pointer "1"||Wii pointer "2"||Wii pointer "3"||Wii pointer "4"||Wii pointer dragging||Wii pointer dragging "1"||Wii pointer dragging "2" | |||
|----- align="center" | |||
!E06x | |||
|Wii pointer dragging "3"||Wii pointer dragging "4"||Wii pointer panning||Wii pointer panning "1!||Wii pointer panning "2"||Wii pointer panning "3"||Wii pointer panning "4"||Wii logo||Superscripr "er"||Superscript "re"||Superscript "e"||Negative boxed question mark||nothing||nothing||nothing||nothing | |||
|----- align="center" | |||
!E07x | |||
|Boxed X||Boxed negative X (Close button)||Back||Home||Steps||Play coin||Video camera||Analog stick (3DS)||Power button (O3DS)||D-pad up||D-pad down||D-pad left||D-pad right||D-pad vertical||D-pad horizontal||nothing | |||
|} | |||
Table courtesy [https://en.wikibooks.org/wiki/Unicode/Character_reference/E000-EFFF Wikibooks] |