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