Hello there. Name's weetabix, as in "the cereal weetabix". I've been assisting a member of the iichan Eroge Team in developing the Visual Novel Engine clone that we all know as RenPSP. Since it's 'reanimation', many have been puzzled over its use on the PSP platform. I'm writing this guide to settle things once and for all.
PART 1. FAQ
Q: What is RenPSP?
A: It is an unofficial clone of the famous open-source Visual Novel Engine Ren'Py, made specially for the Lua Player Euphoria v8 and Lua Player 0.20
Q: Who exactly made RenPSP?
A: RenPSP is originally an independent proof-of-concept project by lolbot of iichan Eroge Team. He and other members of iichan Eroge developed games like iichan Eroge Project and Uvao Project.
Q: Can I copy game data directly to RenPSP? (Semi-common example: Four Leaf Studios' Katawa Shoujo)
Q: What are the limitations of RenPSP?
A: Firstly, it cannot open .rpyc files (present in most Ren'Py titles). Secondly, Ren'Py commands are limited, at least for now.
Q: What is the latest STABLE version?
A: RenPSP 0.2 is the most stable. 0.3 still has a few bugs that needs to be resolved.
Q: Where can I find other VNs for RenPSP?
A: You can correspond to my releases page at http: //rghost .net/ users/ weetabix/ releases/ Eroge-and-Visual-Novels-for-RenPSP (Note: Remove spaces in the hyperlink). Other than that, Google is a friend.
Q: I don't have a PSP and I want to port for the RenPSP platform. How can I test my VN?
A: Every RenPSP Release comes with the PC version of LuaPlayer 0.20. Although it lacks sound and the PSP's RAM limitations, you can test if your scripts actually run on RenPSP.
PART 2. Installation
RenPSP Download links (Note: Remove spaces in the hyperlink).:
RenPSP 0.1 (old): http: //rghost .net/ 2000476
RenPSP 0.2 (current, stable): http: //rghost .net/ 39398754
RenPSP 0.3 (current, unstable): http: //rghost .net/ 38742354
The installation process is pretty straightforward. Drag the [RenPSP] folder to ms0: \ PSP \ GAME (wherein ms0 is your PSP's drive).
To install a VN, drag the folder to ms0: \ PSP \ GAME \ RenPSP \ games.
+ Added LuaPlayer Plus r163 EBOOT with the release
+ Images loaded when used, not upon initialization
+ Full paths used for most files
+ Use of RenPSP logfile
+ 8 New Character Positions (by yours truly)
+ Included VNs: Test Script, 9th of May, The Question, Ripples, One Lazy Saturday, The Most Offensive Game Ever, Watashi wa Onigiri!, A Midsummer Day's Resonance, & OMGWTFOTL
+ Skip function stops correctly
+ Settings, Help File, Test script, and Dropdown menu changed from Russian to English
+ Fixed If-Else Test in Test script
+ UI Changes (Black dialog and answer boxes, SD Character Icons for the dropdown menu)
+ Included VNs: Test Script, 9th of May, The Question, & Katawa Shoujo pre-alpha port (scenes up to Act 1 - Monday)
+ Initial Release
+ Included VNs: Test Script, 9th of May, & The Question
PART 3. Usage
Usage instructions can also be found in the Help section of the dropdown menu. You can access it by pressing the START button upon starting a VN in RenPSP.
During the game:
Square — toggle displaying text
Cross — go to the next dialogue line
L/R — see game history
Start — toggle falling menu
At any moment:
Arrows — change active menu item
Cross — select a menu item
Triangle — make a PNG screenshot
At the Help menu:
Arrows, L/R — change help page
Select — return to the game
PART 4. Porting a Visual Novel
Creating/Porting a VN for the RenPSP platform is a bit different than that to Ren'Py. Although some Ren'Py semantics like jump and label work the same in RenPSP, some functions like with and pass are ignored. Other than that, RenPSP supports characters from the Cyrillic 1251 encoding format and characters like «, », —, and ©.
+ define: Compared to Ren'Py, RenPSP uses the old 'define' format and is limited to defining characters.Example: Your initial code contains define rin = Character('Rin'). When used in the script like this:Code:define CHAR_ID = Character('CHAR_NAME')then the output in the dialog box will look like this: Attachment 10302Code:rin "The problem must be in your pants!"
+ image: Similar to Ren'Py image function. Defines image data. Supports JPEG and PNG formats up to maximum height and width of 480x272. Can be grouped with a single sprite ID and multiple sprite sub-IDs.+ scene: Similar to Ren'Py scene function. Loads image as background.Code:image SPRITE_ID [SPRITE_SUBID] = "path/to/file"Note 1: Colors can be used instead of images. Supported colors are red, green, blue, black, white, and gray.Code:scene SPRITE_ID [SPRITE_SUBID]Note 2: Changing backgrounds hide characters.Code:scene COLOR
+ show: Similar to Ren'Py show function. Loads image as sprite at a certain position. Default is center. Other positions include left and rightNote 1: As of RenPSP 0.3, new positions have been added. These include twoleft, tworight, offscreenleft, offscreenright, 1four, 2four, 3four, and 4four.Code:show SPRITE_ID [SPRITE_SUBID] [at POSITION]
Note 2: When a sprite from a certain SPRITE_ID loaded with another sprite of the same SPRITE_ID, the first sprite will be replaced with the second, placed at default position. Remember to always define sprite positions.
+ hide: Similar to Ren'Py hide function. Hides sprite of a specific SPRITE_ID.+ label: Similar to Ren'Py label function. Labels succeeding text for use in jumping and game initialization.Code:hide SPRITE_IDNote: RenPSP will always look for a "start" label (label start:). Lack of a start label will result to an error.Code:label LABEL_ID:
+ jump: Similar to Ren'Py jump function. Jumps to specific LABEL_ID.+ play/stop: Similar to Ren'Py play and stop function, but is limited to 'music' and 'sound' at a specific channel depending on file format. Only plays BGM (music) or SFX (music) ingame. Supports WAV, AT3, and OGG. Although supported, MP3 causes LuaPlayer Euphoria to crash.Code:jump LABEL_ID
To play/stop musicTo play/stop soundCode:play music "path/to/file" stop musicNote: Sound files must be in 44100MhZ frequency. Any frequency higher or lower will cause the sound file to be played at a different speed. This bug affects the following released VNs: A Midsummer Day's Resonance, OMGWTFOTL, and RipplesCode:play sound "path/to/file" stop sound
+ menu: Similar to Ren'Py menu function. Displays a menu with choices. Acts as a 'switch' statement.+ return: Unlike in Ren'Py, the 'return' command ends the game.Code:menu: "Choice 1": [RenPSP command] "Choice 2": [RenPSP command]+ $: Similar to Ren'Py $ function, but utilizes Lua code instead of Python. Utilize Lua code inside script.Code:return+ if-else-elif/elseif: Similar to Ren'Py, but utilizes Lua code. Standard If-Else/ElseIf function.Code:$ LuaCode = 1+ $renpy .pause(): Pauses for a set amount of seconds.Code:if LuaCode > 1: if LuaCode == 2: [RenPSP command] elif LuaCode > 2: [RenPSP command] else: [RenPSP command]Remove space between 'renpy' and '.'Code:$renpy .pause(sec)
+ $renpy .block_rollback: Blocks rollback and destroys history.Remove space between 'renpy' and '.'Code:$renpy .block_rollback()
+ $renpy .has_label: Checks script if label exists. Presumably a Boolean value.Remove space between 'renpy' and '.'Code:$renpy .has_label(LABEL_ID)
That's all for now. Guide will be updated upon the next RenPSP release.