1<!DOCTYPE html>
2<HTML>
3
4<HEAD>
5    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
6    <META http-equiv="Content-Style-Type" content="text/css">
7    <META http-equiv="X-UA-Compatible" content="IE=8" >
8
9    <TITLE>CTR-SDK Glossary</TITLE>
10
11    <STYLE>
12        h1.left
13        {
14            color: #46f;
15            font-size: 120%;
16        }
17        ul.left, ul.left ul
18        {
19            margin: 0;
20            padding: 0;
21        }
22        ul.left li
23        {
24            margin: 0;
25            padding: 0;
26            margin-left: 1em;
27        }
28        H1
29        {
30            font-weight         : bold;
31            font-size           : 250%;
32            text-align          : left;
33            color               : #46f;
34            margin-bottom       : 0px;
35        }
36
37        H2
38        {
39            font-weight         : normal;
40            font-size           : 180%;
41            margin              : 24pt 0pt 6pt 0pt;
42            border-bottom-style : solid;
43            border-bottom-width : 1px;
44        }
45
46        H3
47        {
48            font-weight         : bold;
49            font-size           : 120%;
50            border-bottom-style : solid;
51            border-bottom-width : 1px;
52            width: 75%;
53            margin              : 18pt 0pt 6pt 30pt;
54        }
55
56        H4
57        {
58            font-weight         : bold;
59            font-size           : 100%;
60            margin              : 12pt 0pt 6pt 30pt;
61        }
62
63        H5
64        {
65            font-weight         : bold;
66            margin              : 12pt 0pt 6pt 30pt;
67        }
68
69        H6
70        {
71            font-weight         : bold;
72            margin              : 12pt 0pt 6pt 30pt;
73        }
74
75        DIV.date
76        {
77            text-align          : right;
78            color               : #46f;
79            margin-bottom       : 30pt;
80            line-height         : 150%;
81        }
82
83        P
84        {
85            margin              : 0pt 0pt 12pt 30pt;
86            line-height         : 150%;
87        }
88
89        OL,UL,DL
90        {
91            margin              : 6pt 0pt 6pt 50pt;
92        }
93        OL OL, UL UL
94        {
95            margin-left: 3em;
96        }
97
98        DT
99        {
100            font-family         : "Courier New", monospace;
101            margin-top : 0.3em;
102            margin-bottom : 0.3em;
103        }
104        DD
105        {
106            margin-top : 0.3em;
107            margin-bottom : 0.6em;
108        }
109
110        PRE
111        {
112            font-family         : "Courier New", monospace;
113            font-weight         : normal;
114
115            margin              : 0pt 0pt 6pt 50pt;
116            padding             : 2pt 8pt 2pt 8pt;
117            background-color    : #eee;
118
119            border-style        : solid;
120            border-width        : 1px;
121        }
122        em
123        {
124            font-style: normal;
125            color: red;
126        }
127        TABLE
128        {
129            margin-left         : 40pt;
130            margin-bottom       : 20pt;
131            border-color        : #aaa;
132            border-width        : 1pt;
133            border-style        : solid;
134        }
135        TD
136        {
137            font-style          : normal;
138            padding             : 2pt 4pt 2pt 4pt;
139
140            border-color        : #aaa;
141            border-width        : 1pt;
142            border-style        : solid;
143        }
144        div.footer
145        {
146            border-color: black;
147            padding-top: 0.5em;
148            border-top-style    : solid;
149            border-top-width    : 1px;
150            width:              100%;
151            margin-top: 4em;;
152        }
153        div.footer span
154        {
155            color               : #46f;
156            float: right;
157        }
158        table.diff
159        {
160            border: none;
161        }
162        table.diff td
163        {
164            border: none;
165            border-bottom: solid 1px black;
166        }
167        table.diff div.wii,table.diff div.twl,table.diff div.card,table.diff div.nand
168        {
169            padding: 0.2em 0.3em;
170        }
171        table.diff div.card
172        {
173            background-color: #A88;
174            border: solid 1px #FFF;
175            color: #FFF;
176        }
177        table.diff div.wii
178        {
179            background-color: #88A;
180            border: solid 1px #FFF;
181            color: #FFF;
182        }
183        table.diff div.twl,table.diff div.nand
184        {
185            background-color: #FFE;
186            border: solid 1px #0D9;
187            color: #0D9;
188        }
189        div.popup
190        {
191            position: absolute;
192            background-color: #FFFEF9;
193            border: solid 1px #B5B200;
194            border-style: none solid solid none;
195            font-size: 0.8em;
196            padding: 1em;
197        }
198        dd
199        {
200            margin-bottom: 1em;
201        }
202    </STYLE>
203    <SCRIPT type="text/javascript">
204    <!--
205
206        var Global = {
207            root: document.documentElement,
208            popup: null,
209            popupMap: {},
210            popupIndex: 0
211        };
212
213        if( ! Event.stopPropagation )
214        {
215            Event.prototype.stopPropagation = function()
216            {
217                this.cancelBubble = true;
218            }
219        }
220        Event.prototype.GetTarget = function()
221        {
222            if( this.target )
223            {
224                return this.target;
225            }
226            else
227            {
228                return this.srcElement;
229            }
230        }
231        if( !  Element.prototype.addEventListener )
232        {
233            Element.prototype.addEventListener = function(type, listener, useCapture)
234            {
235                var helper = function()
236                    {
237                        if( listener.handleEvent )
238                        {
239                            return listener.handleEvent.apply(listener, arguments);
240                        }
241                        else
242                        {
243                            return listener.apply(null, arguments);
244                        }
245                    };
246
247                this.attachEvent("on" + type, helper);
248            }
249        }
250
251        function CallMethod(obj, method)
252        {
253            return new function()
254            {
255                return method.apply(obj, arguments)
256            };
257        }
258        function WordPopup(x, y, word)
259        {
260            function MakeHtml(word)
261            {
262                var dd = document.getElementById("word-" + word);
263                return dd.innerHTML;
264            }
265            this.CloseChild = function()
266            {
267                if( this.child != null )
268                {
269                    this.child.Close();
270                    this.child = null;
271                }
272            }
273            this.Close = function()
274            {
275                if( this.obj != null )
276                {
277                    this.CloseChild();
278
279                    document.body.removeChild(this.obj);
280                    delete Global.popupMap[this.id];
281                    this.obj = null;
282                }
283            }
284            this.SetChild = function(child)
285            {
286                this.CloseChild();
287                this.child = child;
288            }
289            this.OnMouseOver = function(e)
290            {
291                e.stopPropagation();
292
293                var target = e.GetTarget();
294
295                if( target.nodeType == 1 )
296                {
297                    if( target.tagName == "A" )
298                    {
299                        return;
300                    }
301                }
302
303                this.CloseChild();
304            }
305            this.handleEvent = function(e)
306            {
307                if( e.type == "mouseover" )
308                {
309                    this.OnMouseOver(e);
310                }
311            }
312
313            this.child = null;
314            this.word = word;
315            this.id = Global.popupIndex++;
316
317            this.obj = document.createElement("div");
318            this.obj.className = "popup";
319            this.obj.id = "popup-" + this.id;
320            this.obj.innerHTML = MakeHtml(word);
321            this.obj.style.left = x + "px";
322            this.obj.style.top  = y + "px";
323
324            Global.popupMap[this.id] = this;
325
326            this.obj.addEventListener("mouseover", this, false);
327
328            document.body.insertBefore(this.obj, null);
329        }
330        function DeleteRule(index)
331        {
332            var ss = document.styleSheets.item(0);
333
334            if( ss.removeRule )
335            {
336                ss.removeRule(index);
337            }
338            else
339            {
340                ss.deleteRule(index);
341            }
342        }
343        function OnClickAnchor(e, anchor)
344        {
345            window.parent.frames[1].location.hash = anchor;
346
347            if( e.preventDefault )
348            {
349                e.preventDefault();
350            }
351            else
352            {
353                e.returnValue = false;
354            }
355        }
356        function trav(obj)
357        {
358            var ary = new Array();
359
360            for( var i = 0; i < obj.childNodes.length; ++i )
361            {
362                var c = obj.childNodes.item(i);
363
364                if( c.nodeType == 1 )
365                {
366                    if( c.tagName == "H2" || c.tagName == "H3" )
367                    {
368                        var a = c.childNodes.item(0);
369                        var text  = "";
370                        var anchor = "";
371
372                        if( a && a.tagName == "A" )
373                        {
374                            text  = a.innerHTML;
375                            anchor = a.name;
376                        }
377                        else
378                        {
379                            text  = c.innerHTML;
380                        }
381
382                        ary.push([c.tagName.substr(1,1), "<a target=\"right\" href=\"?right#" + anchor + "\" onclick=\"OnClickAnchor(event, '" + anchor + "')\">" + text + "</a>"]);
383                    }
384                    else
385                    {
386                        ary = ary.concat(trav(c));
387                    }
388                }
389            }
390
391            return ary;
392        }
393        function GetNextTagIndex(obj, tagName, start)
394        {
395            for( var i = start; i  < obj.childNodes.length; ++i )
396            {
397                var c = obj.childNodes.item(i);
398
399                if( c.nodeType == 1 )
400                {
401                    if( c.nodeName == tagName )
402                    {
403                        return i;
404                    }
405                }
406            }
407
408            return -1;
409        }
410        function OnOverWord(e, word)
411        {
412            e.stopPropagation();
413            var ex = e.clientX + Global.root.scrollLeft;
414            var ey = e.clientY + Global.root.scrollTop;
415            var target = e.GetTarget();
416
417            if( target.nodeType == 1 )
418            {
419                if( target.tagName == "A" )
420                {
421                    if( target.parentNode.tagName == "DIV" )
422                    {
423                        var parentId = target.parentNode.id.match(/\d+/);
424                        var parent = Global.popupMap[parentId];
425                        parent.SetChild(new WordPopup(ex, ey, word));
426                    }
427                    else
428                    {
429                        if( Global.popup != null )
430                        {
431                            if( Global.popup.word == word )
432                            {
433                                return;
434                            }
435
436                            Global.popup.Close();
437                        }
438
439                        Global.popup = new WordPopup(ex, ey, word);;
440                    }
441                }
442            }
443        }
444        function CollectWords()
445        {
446            var dls = document.getElementsByTagName("dl");
447            var words = [];
448
449            for( var i = 0; i < dls.length; ++i )
450            {
451                var dl = dls[i];
452
453                for( var j = 0; j < dl.childNodes.length; )
454                {
455                    var dti = GetNextTagIndex(dl, "DT", j);
456                    if( dti < 0 )
457                    {
458                        break;
459                    }
460
461                    var ddi = GetNextTagIndex(dl, "DD", dti);
462                    if( ddi < 0 )
463                    {
464                        break;
465                    }
466
467                    var dt = dl.childNodes.item(dti);
468                    var dd = dl.childNodes.item(ddi);
469
470                    j = ddi + 1;
471
472                    var wordName = dt.innerHTML.replace(/^\s+|\s+$/, "");
473                    if( wordName )
474                    {
475                        words.push(wordName);
476                        dt.innerHTML = "<a name=\"" + wordName + "\">" + wordName + "</a>";
477                        dd.id = "word-" + wordName;
478                    }
479                }
480            }
481
482            return words.sort(function(a, b){ return b.length - a.length; });
483        }
484        function ReplaceWords(text, words)
485        {
486            for( var k = 0; k < words.length; ++k )
487            {
488                var word = words[k];
489                text = text.replace(word, "<a href=\"#" + word + "\">" + word + "</a>");
490            }
491
492            return text;
493        }
494        function LinkWords(words)
495        {
496            var dls = document.getElementsByTagName("dl");
497
498            var reText = words.join("|");
499            var re = new RegExp(reText);
500
501            for( var i = 0; i < dls.length; ++i )
502            {
503                var dl = dls[i];
504
505                for( var j = 0; j < dl.childNodes.length; )
506                {
507                    var ddi = GetNextTagIndex(dl, "DD", j);
508                    if( ddi < 0 )
509                    {
510                        break;
511                    }
512
513                    var dd = dl.childNodes.item(ddi);
514
515                    j = ddi + 1;
516
517                    var html = dd.innerHTML;
518                    var replaced = "";
519
520                    while( html.match(re) )
521                    {
522                        var word = RegExp.lastMatch;
523                        var offset = RegExp.leftContext.length;
524                        replaced += html.substr(0, offset);
525                        replaced += "<a href=\"#" + word + "\" onmouseover=\"OnOverWord(event, '" + word + "')\">" + word + "</a>";
526                        html = html.substr(offset + word.length);
527                    }
528
529                    dd.innerHTML = replaced + html;
530                }
531            }
532        }
533        function OnLoad_Left()
534        {
535            var test = trav(document.body);
536            var test2 = "";
537            var level = 2;
538
539            test2 += "<ul class='left'>";
540            for( var i in test )
541            {
542                while( test[i][0] > level )
543                {
544                    level++;
545                    test2 += "<ul>";
546                }
547                while( test[i][0] < level )
548                {
549                    level--;
550                    test2 += "</ul>";
551                }
552
553                test2 += "<li>" + test[i][1];
554            }
555            test2 += "</ul>";
556
557            document.body.innerHTML = test2;
558            DeleteRule(0);
559        }
560        function OnLoad_Frame()
561        {
562            var myname = location.pathname.substr(location.pathname.lastIndexOf("/") + 1);
563
564            var f = document.createElement("frameset");
565            var l = document.createElement("frame");
566            var r = document.createElement("frame");
567
568            f.appendChild(l);
569            f.appendChild(r);
570            f.cols = "150,*";
571
572            l.src  = myname + "?left";
573            r.src  = myname + "?right";
574            l.name = "left";
575            r.name = "right";
576
577            var h = document.documentElement;
578            var b = h.getElementsByTagName("body").item(0);
579
580            h.replaceChild(f, b);
581        }
582        function OnLoad_Right()
583        {
584            document.body.addEventListener("mouseover", OnMouseOver, false);
585
586            var words = CollectWords();
587            LinkWords(words);
588        }
589        function OnMouseOver(e)
590        {
591            var target = e.GetTarget();
592
593            if( Global.popup != null )
594            {
595                if( target.nodeType == 1 )
596                {
597                    if( target.tagName == "A" )
598                    {
599                        return;
600                    }
601                }
602
603                Global.popup.Close();
604                Global.popup = null;
605            }
606        }
607
608
609        if( ! window.opera )
610        {
611            var search = "?right";//location.search;
612
613            if( search == "?left" )
614            {
615                window.onload = OnLoad_Left;
616            }
617            else if( search == "" )
618            {
619                window.onload = OnLoad_Frame;
620            }
621            else if( search == "?right" )
622            {
623                window.onload = OnLoad_Right;
624            }
625
626            if( search != "?right" )
627            {
628                var ss = document.styleSheets.item(0);
629
630                if( ss.addRule )
631                {
632                    ss.addRule("body", "display: none", 0);
633                }
634                else
635                {
636                    ss.insertRule("body {display: none}", 0);
637                }
638            }
639        }
640    //-->
641    </SCRIPT>
642</HEAD>
643
644<BODY>
645
646
647
648
649
650<H1>CTR-SDK Glossary</H1>
651<DIV class="date">(2012.02.23)</DIV>
652
653
654
655
656
657<H2><a name="intro">Introduction</a></H2>
658<P>
659This document explains the special terminology used by the CTR-SDK.
660</P>
661<P>
662The meanings and usage of terms used in this document and the CTR-SDK may differ from their general meanings and usage.
663</P>
664
665
666<H2><a name="body">Terminology</a></H2>
667
668
669
670
671
672<H3><a name="basic">Basics</a></H3>
673
674<dl>
675    <dt>CTR
676    <dd>
677    The development code name for the Nintendo 3DS. This is the primary abbreviation used through the CTR-SDK for the Nintendo 3DS.
678
679
680    <dt>Card
681    <dd>
682    Media used to distribute applications for the Nintendo 3DS.
683
684
685    <dt>3D depth slider
686    <dd>
687    An input interface used to adjust the stereoscopic display on the upper screen to suit individual preference.
688
689
690</dl>
691
692
693
694<H3><a name="program">Programs</a></H3>
695
696<dl>
697    <dt>Programs
698    <dd>
699    Software that can be run on a CTR system.
700
701
702    <dt>Application
703    <dd>
704    Of a set of programs, this is the main one that is executed.
705
706
707    <dt>Card-based applications
708    <dd>Applications that are intended to be distributed on cards.
709
710
711    <dt>Downloadable applications
712    <dd>
713    Applications that are intended to be distributed from the Nintendo eShop over the Internet.
714
715
716    <dt>Imported applications
717    <dd>
718    Applications that are intended to be imported to SD Cards, System Memory, or other locations before they are run.
719
720
721    <dt>SD applications
722    <dd>
723    Applications that are intended to be imported onto SD Cards. These represent one type of imported application.
724
725
726    <dt>Applets
727    <dd>
728    Programs that can be run without closing the application.
729
730
731    <dt>Library Applets
732    <dd>
733    Applets that are launched from other programs and are handled as a part of said programs.
734
735
736    <dt>System Settings
737    <dd>
738    The application that handles the various CTR settings.
739
740
741    <dt>HOME Menu
742    <dd>
743    A launcher program that starts applications and is displayed immediately after a CTR system is turned on.
744
745
746    <dt>Download Play child
747    <dd>
748    An application that is distributed from a parent application and run on another CTR system during Download Play.
749
750
751    <dt>Nintendo eShop
752    <dd>
753    The application from which the user purchases licenses for downloadable applications and downloads such applications over the Internet.
754
755
756    <dt>Test Menu
757    <dd>
758    A simple launcher used in place of the HOME Menu for application debugging.
759
760
761</dl>
762
763
764
765<H3><a name="format">File Format</a></H3>
766
767<dl>
768    <dt>CCI
769    <dd>
770    The format of the final ROM image for CTR card-based software. Also the extension of said file. This file format includes a CXI file and a CFA file.
771
772
773    <dt>CCL
774    <dd>
775    A file including information used to load the elements of a ROM image for CTR card-based software in a debugger. This can only be used for debugging in a debugger. This format is intended to speed up load times by only reading the updated parts of an image after it has been loaded once.
776
777
778    <dt>CIA
779    <dd>
780    The format of the final ROM image for CTR import applications. Also the extension of said file. This file format includes a CXI file and a CFA file.
781
782
783    <dt>CFA
784    <dd>
785    A binary format handled as a data container on CTR systems. Also the extension of said file.
786
787
788    <dt>CXI
789    <dd>
790    An executable image format for CTR systems. Also the extension of said file.
791
792
793    <dt>ROM Image
794    <dd>
795    A single unit of software components to be distributed.
796
797
798    <dt>RSF
799    <dd>
800    A text file describing parameters used to create a CXI file. Also the extension of said file. One of these must be created per each program.
801
802
803    <dt>DESC
804    <dd>
805    A file describing parameters used to create a CXI file. Also the extension of said file. You must use the file(s) provided with the SDK.
806
807
808    <dt>BSF
809    <dd>
810    A text file describing parameters used to create a banner. Also the extension of said file.
811
812
813    <dt>AXF
814    <dd>
815    The executable code for an ELF program generated by a linker. Also the extension of said file.
816
817
818    <dt>LR file
819    <dd>
820    A ROM image file that mainly consists of the ROM-FS portion. This is accessed by CCL files. This does not need to be updated or reloaded when only the AXF changes.
821
822
823    <dt>LE file
824    <dd>
825    A ROM image file that mainly consists of data other than the ROM-FS portion. This is accessed by CCL files. When only the AXF changes, only this file needs updating.
826
827
828    <dt>ELF
829    <dd>
830    A general file format for storing debugging information and executable code generated by a compiler.
831
832
833    <dt>Static library
834    <dd>
835    A single file that combines multiple object files. This is linked with object files to create the final AXF file.
836
837
838    <dt>Object file
839    <dd>
840    A file generated when source code is compiled. It uses the ELF format and contains executable code and debugging information. <br>
841
842
843</dl>
844
845
846
847<H3><a name="feature">Features</a></H3>
848
849<dl>
850    <dt>UDS Communication
851    <dd>
852    A wireless communication protocol between CTR systems. This corresponds to MP communication in the TWL-SDK.
853
854
855    <dt>BOSS
856    <dd>
857    SpotPass. This is also the name of the SpotPass API.
858
859
860    <dt>CEC
861    <dd>
862    StreetPass. This is also the name of the StreetPass API.
863
864
865    <dt>HostIO
866    <dd>
867    A feature for communication between a CTR system and a connected Windows PC.
868
869
870    <dt>ULCD
871    <dd>
872    The name used for a group of functions that apply input from the 3D depth slider to the stereoscopic display.
873
874
875    <dt>Download Play
876    <dd>
877    A feature for distributing an application's Download Play child to other CTR systems wirelessly and then executing it. This can also refer to client applications that are distributed in this manner.
878
879
880    <dt>SpotPass
881    <dd>
882    A feature for receiving data that is automatically or explicitly communicated via an access point connected to the Internet.
883
884
885    <dt>StreetPass
886    <dd>
887    A feature for automatically exchanging data with other nearby CTR systems.
888
889
890</dl>
891
892
893
894<H3><a name="misc">Other</a></H3>
895
896<dl>
897    <dt>Banners
898    <dd>
899    The 3D model that is displayed on the upper screen and the sound that is played back when an application's icon is selected on the HOME Menu.
900
901
902    <dt>Icons
903    <dd>
904    Images that are displayed on the lower screen at the HOME Menu and in other locations to identify applications.
905
906
907    <dt>Import
908    <dd>
909    The act of placing a program on an SD Card, in System Memory, or elsewhere.
910
911
912    <dt>Title code
913    <dd>
914    A 32-bit number used to identify a program. This includes a 20-bit unique ID. Each program must use a unique title code.
915
916
917    <dt>Unique ID
918    <dd>
919    A 20-bit number issued for each title. Programs belonging to the same title must use the same unique ID.
920
921
922    <dt>Title
923    <dd>
924    A single product. Alternately, the programs that comprise or are related to that product. If an application provides Download Play, the combination of the application itself plus its Download Play child represent a single complete title.
925
926
927<dt>Remaster version
928    <dd>
929Numerical value for identifying the version of the program.<br> Set in RSF.
930
931
932<dt>E-manual
933    <dd>
934    A manual that can be accessed from a CTR system's screens. Alternately, the data contained therein. This can be included in CCI or CIA files. When you select a title with an e-manual on the HOME Menu, the <B>Manual</B> button is displayed.
935
936
937    <dt>Executable code
938    <dd>
939    Both the machine language generated by a compiler and the data that it directly accesses.
940
941
942    <dt>Heap
943    <dd>
944    One kind of memory region allocated to an application. Data accessed by system processes can be placed in this region.
945
946
947    <dt>Device Memory
948    <dd>
949    One kind of memory region allocated to an application. Data accessed by the graphics processor, DSP, and other non-CPU devices is placed in this region.
950
951
952</dl>
953
954
955
956
957<div class="footer"><span>CTR-SDK Glossary</span></div>
958
959  <hr><p>CTR-06-0199-002-F<br>CONFIDENTIAL</p></body>
960</HTML>