-------------------------------------------------------------------------- -- RSO Library -- -- December 19, 2006 -- -- Revolution SDK Version 2.2 or later supported -- -------------------------------------------------------------------------- Table of Contents (1) Introduction (2) Installation (3) Samples (4) Documents (5) Differences from REL (6) Currently Known Bugs (7) Revision History (8) File List =========================================================================== (1) Introduction =========================================================================== The RSO Library is a dynamic module system. It consists of various PC tools (makersi.exe, makelcf.exe, makeinc) and the Wii RSO library (rso.a). It can use main memory efficiently by dynamically reading and deallocating program modules in the game application. In 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. =========================================================================== (2) Installation =========================================================================== To install this package, copy and overwrite the package files into the directory in which the SDK is installed. This package is not a patch. It will continue to be provided as a separate package in the future. =========================================================================== (3) Samples =========================================================================== Sample programs are provided in directory build/demos/rsodemo. LinkList/ This is a demo program for learning how to use the RSO functions. This program links module A and module B, using a link list. LinkListFixed0/ This is a demo program showing an example of relocatable module partial memory deallocation. This demo is similar to LinkList, but it deallocates part of the module information as a bss area. LinkMem2/ This is a demo program that uses pragma to place the dynamic modules in external main memory. This program places module E in external main memory and module F in internal main memory. LinkFar/ This is a demo program that uses RsoLinkFar to place the dynamic modules in external main memory. This program places module E in external main memory and module F in internal main memory. MakeInc/ This is a demo program using makeinc.exe. Module 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. Manually/ This is a demo program showing how to specify links without using a link list. Modules A, B, and C are linked using minimal link operations. =========================================================================== (4) Documents =========================================================================== The function reference for the library functions and tools is located in man/en_US/rso/index.html. =========================================================================== (5) Differences from REL =========================================================================== Advantages: - The dynamic module functions and variables can be accessed from the static module by specifying symbol names. - 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.) - You can specify links. Disadvantages: - Because the module includes symbol information, it is larger than REL (by approximately the same number of bytes as the character count). - You must manage the access to dynamic modules from static modules. - Since dynamic modules can be accessed from static modules, it is harder to delete code by optimizing compilation. - Since resolution is done using symbol names, more processing is required for linking than with REL. Differences: - The static module information (the .sel file) is required for initializing the link list. =========================================================================== (6) Currently Known Bugs =========================================================================== - Warning while running the make demo While running the make demo, the following warning is displayed with the creation of each plf: ### mwldeppc.exe Linker Warning: # linker command file 'b.o' is missing from project. The 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. =========================================================================== (7) Revision History =========================================================================== 12/19/2006 - Added LinkJump function. 12/18/2006 - Added size to be used for LinkFar (RSO_FAR_JUMP_SIZE). 12/14/2006 - Corrected LinkFar register corruption. 12/07/2006 - Added support for accessing sbss and sbss2 section of makerso static side. 11/29/2006 - Revised Makefile and the readme for the demos. 11/01/2006 - Added support for a makerso makelcf return value. 10/27/2006 - Changed from multiple file specification to reference file specification. 10/26/2006 - Revised reference. 10/25/2006 - Added support for @[file list name] specification of makeinc, makelcf, and makerso. - Fixed a bug that caused extra output when multiple files were specified in makerso. 10/24/2006 - Revised the RSONotify* relationship. 10/13/2006 - Revised the code so that the -a option is temporarily added for the demo makerso conversion. 10/11/2006 - Changed the makerso file name to output to a relative path by default, and optionally to an absolute path. 09/26/2006 - Added the RSOLinkFar function 09/19/2006 - Fixed a bug in makerso symbol evaluation 08/31/2006 - Fixed a bug in the LinkMem2 demo. 08/21/2006 - Added conditions to the check of the RSOLink.c relative jump command 08/18/2006 - Added MEM1 and MEM2 spanning check for the RSOLink.c relative jump command. 08/08/2006 - Added support in makerso for 32-byte padding. 07/25/2006 - Revised the following sections of the readme: "Function Reference" and "Currently Known Bugs." 07/20/2006 - Added a "Currently Known Bugs" section to the readme file =========================================================================== (8) File List =========================================================================== =================== FILE LIST 1.00 ==================== ./readme-RVL_RSO_SDK-061101.txt ------------- Libraries ----------------- ./RVL/lib/rso.a ./RVL/lib/rsoD.a ------------- Library Headers ----------------- ./include/revolution/RSOLink.h ./include/revolution/rso.h ------------- Tools ----------------- ./X86/bin/makeinc.exe ./X86/bin/makelcf.exe ./X86/bin/makerso.exe ------------- Demos ----------------- ./build/demos/rsodemo/Makefile ./build/demos/rsodemo/LinkFar/Makefile ./build/demos/rsodemo/LinkFar/src/static.c ./build/demos/rsodemo/LinkFar/src/g.c ./build/demos/rsodemo/LinkFar/src/h.c ./build/demos/rsodemo/LinkFar/include/g.h ./build/demos/rsodemo/LinkFar/include/h.h ./build/demos/rsodemo/LinkList/Makefile ./build/demos/rsodemo/LinkList/src/static.c ./build/demos/rsodemo/LinkList/src/a.c ./build/demos/rsodemo/LinkList/src/b.c ./build/demos/rsodemo/LinkList/include/a.h ./build/demos/rsodemo/LinkList/include/b.h ./build/demos/rsodemo/LinkListFixed0/Makefile ./build/demos/rsodemo/LinkListFixed0/src/static.c ./build/demos/rsodemo/LinkListFixed0/src/a.c ./build/demos/rsodemo/LinkListFixed0/src/b.c ./build/demos/rsodemo/LinkListFixed0/include/a.h ./build/demos/rsodemo/LinkListFixed0/include/b.h ./build/demos/rsodemo/LinkMem2/Makefile ./build/demos/rsodemo/LinkMem2/src/static.c ./build/demos/rsodemo/LinkMem2/src/e.c ./build/demos/rsodemo/LinkMem2/src/f.c ./build/demos/rsodemo/LinkMem2/include/e.h ./build/demos/rsodemo/LinkMem2/include/f.h ./build/demos/rsodemo/MakeInc/Makefile ./build/demos/rsodemo/MakeInc/src/static.c ./build/demos/rsodemo/MakeInc/src/d.c ./build/demos/rsodemo/MakeInc/src/sub.c ./build/demos/rsodemo/MakeInc/include/d.h ./build/demos/rsodemo/MakeInc/include/d.inc ./build/demos/rsodemo/Manually/Makefile ./build/demos/rsodemo/Manually/src/static.c ./build/demos/rsodemo/Manually/src/a.c ./build/demos/rsodemo/Manually/src/b.c ./build/demos/rsodemo/Manually/src/c.c ./build/demos/rsodemo/Manually/include/a.h ./build/demos/rsodemo/Manually/include/b.h ./build/demos/rsodemo/Manually/include/c.h ------------- Function Reference ----------------- ./man/en_US/rso/RSOFindExportSymbolAddr.html ./man/en_US/rso/RSOFixedLevel.html ./man/en_US/rso/RSOGetFarCodeSize.html ./man/en_US/rso/RSOGetFixedSize.html ./man/en_US/rso/RSOIsImportSymbolResolvedAll.html ./man/en_US/rso/RSOLink.html ./man/en_US/rso/RSOLinkFar.html ./man/en_US/rso/RSOLinkList.html ./man/en_US/rso/RSOListInit.html ./man/en_US/rso/RSOLocateObject.html ./man/en_US/rso/RSOStaticlocateObject.html ./man/en_US/rso/RSOUnLink.html ./man/en_US/rso/RSOUnLinkList.html ./man/en_US/rso/RSOUnLocateObject.html ./man/en_US/rso/index.html ./man/en_US/rso/intro.html ./man/en_US/rso/list.html ./man/en_US/rso/toc.html ./man/en_US/rso/tools/makeinc.html ./man/en_US/rso/tools/makelcf.html ./man/en_US/rso/tools/makerso.html ./man/en_US/rso/tools/tools.html ./man/en_US/rso/sampledemos/LinkList.html ./man/en_US/rso/sampledemos/LinkListFixed0.html ./man/en_US/rso/sampledemos/LinkMem2.html ./man/en_US/rso/sampledemos/LinkFar.html ./man/en_US/rso/sampledemos/Manually.html ./man/en_US/rso/sampledemos/demos.html ./man/en_US/rso/sampledemos/xxxmakeinc.html