readme-RVL_RSO_SDK-061219.txt
1--------------------------------------------------------------------------
2-- RSO Library --
3-- December 19, 2006 --
4-- Revolution SDK Version 2.2 or later supported --
5--------------------------------------------------------------------------
6
7Table of Contents
8(1) Introduction
9(2) Installation
10(3) Samples
11(4) Documents
12(5) Differences from REL
13(6) Currently Known Bugs
14(7) Revision History
15(8) File List
16
17
18===========================================================================
19(1) Introduction
20===========================================================================
21The RSO Library is a dynamic module system.
22It consists of various PC tools (makersi.exe, makelcf.exe, makeinc) and the Wii RSO library (rso.a).
23
24It can use main memory efficiently by dynamically reading and deallocating program modules in the game application.
25In this library, unlike the dynamic link library of other operating systems, the game application is responsible for main memory allocation/deallocation and loading modules from the disk.
26
27
28===========================================================================
29(2) Installation
30===========================================================================
31To install this package, copy and overwrite the package files into the directory in which the SDK is installed.
32
33This package is not a patch. It will continue to be provided as a separate package in the future.
34
35
36===========================================================================
37(3) Samples
38===========================================================================
39Sample programs are provided in directory build/demos/rsodemo.
40
41LinkList/
42This is a demo program for learning how to use the RSO functions.
43This program links module A and module B, using a link list.
44
45LinkListFixed0/
46This is a demo program showing an example of relocatable module partial memory deallocation.
47This demo is similar to LinkList, but it deallocates part of the module information as a bss area.
48
49LinkMem2/
50This is a demo program that uses pragma to place the dynamic modules in external main memory.
51This program places module E in external main memory and module F in internal main memory.
52
53LinkFar/
54This is a demo program that uses RsoLinkFar to place the dynamic modules in external main memory.
55This program places module E in external main memory and module F in internal main memory.
56
57MakeInc/
58This is a demo program using makeinc.exe.
59Module D functions and variables are accessed from a static module, using d.inc. The d.inc is generated by makeinc.exe from the d.h header file.
60
61Manually/
62This is a demo program showing how to specify links without using a link list.
63Modules A, B, and C are linked using minimal link operations.
64
65
66===========================================================================
67(4) Documents
68===========================================================================
69The function reference for the library functions and tools is located in man/en_US/rso/index.html.
70
71
72===========================================================================
73(5) Differences from REL
74===========================================================================
75Advantages:
76- The dynamic module functions and variables can be accessed from the static module by specifying symbol names.
77- As long as there are .rso files, the library can run, even if all the dynamic module .plf files have not been prepared first. (You can run .rso files that are already placed in NAND memory, etc. In addition, you can upgrade the version by downloading specific dynamic modules.)
78- You can specify links.
79
80Disadvantages:
81- Because the module includes symbol information, it is larger than REL (by approximately the same number of bytes as the character count).
82- You must manage the access to dynamic modules from static modules.
83- Since dynamic modules can be accessed from static modules, it is harder to delete code by optimizing compilation.
84- Since resolution is done using symbol names, more processing is required for linking than with REL.
85
86Differences:
87- The static module information (the .sel file) is required for initializing the link list.
88
89
90===========================================================================
91(6) Currently Known Bugs
92===========================================================================
93- Warning while running the make demo
94While running the make demo, the following warning is displayed with the creation of each plf:
95
96
97
98### mwldeppc.exe Linker Warning:
99# linker command file 'b.o' is missing from project.
100
101The warning is output because an unrelated object file is specified in partial.lcf. It has not yet been decided how or when this problem will be corrected, but the warning has no effect on operation.
102
103
104===========================================================================
105(7) Revision History
106===========================================================================
10712/19/2006
108- Added LinkJump function.
10912/18/2006
110- Added size to be used for LinkFar (RSO_FAR_JUMP_SIZE).
11112/14/2006
112- Corrected LinkFar register corruption.
11312/07/2006
114- Added support for accessing sbss and sbss2 section of makerso static side.
11511/29/2006
116- Revised Makefile and the readme for the demos.
11711/01/2006
118- Added support for a makerso makelcf return value.
11910/27/2006
120- Changed from multiple file specification to reference file specification.
12110/26/2006
122- Revised reference.
12310/25/2006
124- Added support for @[file list name] specification of makeinc, makelcf, and makerso.
125- Fixed a bug that caused extra output when multiple files were specified in makerso.
12610/24/2006
127- Revised the RSONotify* relationship.
12810/13/2006
129- Revised the code so that the -a option is temporarily added for the demo makerso conversion.
13010/11/2006
131- Changed the makerso file name to output to a relative path by default, and optionally to an absolute path.
13209/26/2006
133- Added the RSOLinkFar function
13409/19/2006
135- Fixed a bug in makerso symbol evaluation
13608/31/2006
137- Fixed a bug in the LinkMem2 demo.
13808/21/2006
139- Added conditions to the check of the RSOLink.c relative jump command
14008/18/2006
141- Added MEM1 and MEM2 spanning check for the RSOLink.c relative jump command.
14208/08/2006
143- Added support in makerso for 32-byte padding.
14407/25/2006
145- Revised the following sections of the readme: "Function Reference" and "Currently Known Bugs."
14607/20/2006
147- Added a "Currently Known Bugs" section to the readme file
148
149
150===========================================================================
151(8) File List
152===========================================================================
153=================== FILE LIST 1.00 ====================
154./readme-RVL_RSO_SDK-061101.txt
155
156------------- Libraries -----------------
157./RVL/lib/rso.a
158./RVL/lib/rsoD.a
159------------- Library Headers -----------------
160./include/revolution/RSOLink.h
161./include/revolution/rso.h
162
163------------- Tools -----------------
164./X86/bin/makeinc.exe
165./X86/bin/makelcf.exe
166./X86/bin/makerso.exe
167
168
169------------- Demos -----------------
170./build/demos/rsodemo/Makefile
171
172./build/demos/rsodemo/LinkFar/Makefile
173./build/demos/rsodemo/LinkFar/src/static.c
174./build/demos/rsodemo/LinkFar/src/g.c
175./build/demos/rsodemo/LinkFar/src/h.c
176./build/demos/rsodemo/LinkFar/include/g.h
177./build/demos/rsodemo/LinkFar/include/h.h
178
179./build/demos/rsodemo/LinkList/Makefile
180./build/demos/rsodemo/LinkList/src/static.c
181./build/demos/rsodemo/LinkList/src/a.c
182./build/demos/rsodemo/LinkList/src/b.c
183./build/demos/rsodemo/LinkList/include/a.h
184./build/demos/rsodemo/LinkList/include/b.h
185
186./build/demos/rsodemo/LinkListFixed0/Makefile
187./build/demos/rsodemo/LinkListFixed0/src/static.c
188./build/demos/rsodemo/LinkListFixed0/src/a.c
189./build/demos/rsodemo/LinkListFixed0/src/b.c
190./build/demos/rsodemo/LinkListFixed0/include/a.h
191./build/demos/rsodemo/LinkListFixed0/include/b.h
192
193./build/demos/rsodemo/LinkMem2/Makefile
194./build/demos/rsodemo/LinkMem2/src/static.c
195./build/demos/rsodemo/LinkMem2/src/e.c
196./build/demos/rsodemo/LinkMem2/src/f.c
197./build/demos/rsodemo/LinkMem2/include/e.h
198./build/demos/rsodemo/LinkMem2/include/f.h
199
200./build/demos/rsodemo/MakeInc/Makefile
201./build/demos/rsodemo/MakeInc/src/static.c
202./build/demos/rsodemo/MakeInc/src/d.c
203./build/demos/rsodemo/MakeInc/src/sub.c
204./build/demos/rsodemo/MakeInc/include/d.h
205./build/demos/rsodemo/MakeInc/include/d.inc
206
207./build/demos/rsodemo/Manually/Makefile
208./build/demos/rsodemo/Manually/src/static.c
209./build/demos/rsodemo/Manually/src/a.c
210./build/demos/rsodemo/Manually/src/b.c
211./build/demos/rsodemo/Manually/src/c.c
212./build/demos/rsodemo/Manually/include/a.h
213./build/demos/rsodemo/Manually/include/b.h
214./build/demos/rsodemo/Manually/include/c.h
215
216------------- Function Reference -----------------
217./man/en_US/rso/RSOFindExportSymbolAddr.html
218./man/en_US/rso/RSOFixedLevel.html
219./man/en_US/rso/RSOGetFarCodeSize.html
220./man/en_US/rso/RSOGetFixedSize.html
221./man/en_US/rso/RSOIsImportSymbolResolvedAll.html
222./man/en_US/rso/RSOLink.html
223./man/en_US/rso/RSOLinkFar.html
224./man/en_US/rso/RSOLinkList.html
225./man/en_US/rso/RSOListInit.html
226./man/en_US/rso/RSOLocateObject.html
227./man/en_US/rso/RSOStaticlocateObject.html
228./man/en_US/rso/RSOUnLink.html
229./man/en_US/rso/RSOUnLinkList.html
230./man/en_US/rso/RSOUnLocateObject.html
231./man/en_US/rso/index.html
232./man/en_US/rso/intro.html
233./man/en_US/rso/list.html
234./man/en_US/rso/toc.html
235
236./man/en_US/rso/tools/makeinc.html
237./man/en_US/rso/tools/makelcf.html
238./man/en_US/rso/tools/makerso.html
239./man/en_US/rso/tools/tools.html
240
241./man/en_US/rso/sampledemos/LinkList.html
242./man/en_US/rso/sampledemos/LinkListFixed0.html
243./man/en_US/rso/sampledemos/LinkMem2.html
244./man/en_US/rso/sampledemos/LinkFar.html
245./man/en_US/rso/sampledemos/Manually.html
246./man/en_US/rso/sampledemos/demos.html
247./man/en_US/rso/sampledemos/xxxmakeinc.html
248
249