Tool Ren'Py UnRenGUI, UnRen-forall(v9.4), UnRen-Powershell-forall(v9.4), UnRen-old

5.00 star(s) 3 Votes

Twistty

The Happy Beaver
Donor
Respected User
Former Staff
Sep 9, 2016
4,389
39,286
There are a bunch, Midnight Paradise for example use it.

I use this nowadays.

Thanks SonsOfLiberty (y)
Always nice to have new tools.
Does it decompile .rpyc files also, on renpy 8.2.x versions?

Edit:
Seems like it is a "file exploer" for RPA files only - not an extractor, or decompiler.
Unless I missed somethin?
 

SonsOfLiberty

Post Pro
Compressor
Sep 3, 2022
23,126
193,011
Thanks SonsOfLiberty (y)
Always nice to have new tools.
Does it decompile .rpyc files also, on renpy 8.2.x versions?

Edit:
Seems like it is a "file exploer" for RPA files only - not an extractor, or decompiler.
Unless I missed something?
There is a guide here on how to set it up. It does have rpyc support.

He is even using Midnight Paradise as an example in the guide.

You can extract files with it.
 

FaceCrap

Well-Known Member
Oct 1, 2020
1,047
722
VepsrP

Game: Between Humanity 2.2.1
Ren'Py Version: 8.2.0
Decompiling: "game\scripts\functions\thirdParty\Better-EMR-Phone-3.2.2\phone\apps\contacts\contacts.rpy"
Error: # <<< COULD NOT DECOMPILE: Unknown AST node: <class 'renpy.sl2.slast.SLBreak'> >>> ~Line 29 in RPY file.
 

Twistty

The Happy Beaver
Donor
Respected User
Former Staff
Sep 9, 2016
4,389
39,286
VepsrP

Game: Between Humanity 2.2.1
Ren'Py Version: 8.2.0
Decompiling: "game\scripts\functions\thirdParty\Better-EMR-Phone-3.2.2\phone\apps\contacts\contacts.rpy"
Error: # <<< COULD NOT DECOMPILE: Unknown AST node: <class 'renpy.sl2.slast.SLBreak'> >>> ~Line 29 in RPY file.
1) To fix it - use UnRen-forall.bat v9.4 and choose choice 1 (To extract the rpa files) only - and when asked to delete the .rpa files choose Y (yes).
2) Now start the game up once and the close it. (Just to test that the first action went well).
3) Download the un.rpy file that I posted below and copy it into the game folder - start the game again - and it will decompile the .rpyc files.

You might have to download the game again and start fresh - at least I did.

Cheers

Log added as proof....
 

FaceCrap

Well-Known Member
Oct 1, 2020
1,047
722
1) To fix it - use UnRen-forall.bat v9.4 and choose choice 1 (To extract the rpa files) only - and when asked to delete the .rpa files choose Y (yes).
Thanks, already did use your method. Point was so VepsrP would be aware and possibly update his unrpyc so the batchfile/powershell scripts would also be able to do this.
 
  • Like
Reactions: Twistty

Du_dudulu

New Member
Nov 16, 2019
3
0
After decompiling Summertime Saga [v21.0.0 wip.5003] using the latest version of , an error occurred when running renpy-8.2.3:

I'm sorry, but an uncaught exception occurred.

While loading the script.
File "game/src/+config.rpy", line 1, in <module>
init python early hide:
File "game/src/+config.rpy", line 2, in _execute_python_hide
from saga import __version__
ModuleNotFoundError: No module named 'saga'


Anybody know what's going on? Ty
 

master861

Well-Known Member
Nov 4, 2022
1,147
1,489
I know why UnRen-forall.bat v9.4 is not working correct because its the same bug as with sam's tool.
the error comes from this lines.
Bash:
if "%option%" == "2" (
        echo    + Searching for rpyc files in %gamedir%
        "%pythondir%python.exe" -O "%unrpycpy%" --init-offset "%gamedir%
    )
    if "%option%" == "9" (
        echo    + Searching for rpyc files in %gamedir%
        "%pythondir%python.exe" -O "%unrpycpy%" --init-offset "%gamedir%
    )
    if "%option%" == "8" (
        echo    + Searching for rpyc files in %gamedir%
        "%pythondir%python.exe" -O "%unrpycpy%" --init-offset "%gamedir%
    )
    if "%option%" == "7" (
        echo    + Searching for rpyc files in %gamedir%
        "%pythondir%python.exe" -O "%unrpycpy%" --init-offset --try-harder "%gamedir%
    )
) else (
    if "%option%" == "2" (
        echo    + Searching for rpyc files in %gamedir%
        "%pythondir%python.exe" "%unrpycpy%" --init-offset "%gamedir%
    )
    if "%option%" == "9" (
        echo    + Searching for rpyc files in %gamedir%
        "%pythondir%python.exe" "%unrpycpy%" --init-offset "%gamedir%
    )
    if "%option%" == "8" (
        echo    + Searching for rpyc files in %gamedir%
        "%pythondir%python.exe" "%unrpycpy%" --init-offset "%gamedir%
    )
    if "%option%" == "7" (
        echo    + Searching for rpyc files in %gamedir%
        "%pythondir%python.exe" "%unrpycpy%" --init-offset --try-harder "%gamedir%
    )
ther is no switch --init-offset in the new unrypc version the switch is called --no-init-offset but that switch is only for lower renpy versions 8 to 6.xx means all versions that are lower then 8 should us that switch if you on renpy 8 dont us that switch.
Remove that switch if you know its are renpy version higher as 8
 
Last edited:
  • Like
Reactions: joelurmel

Pantisocrat

Well-Known Member
Jul 3, 2017
1,043
1,493
You don't have permission to view the spoiler content. Log in or register now.

This is Thief of Hearts, but I'm getting similar from more or less everything the last few days. UnRen-forall.bat 9.4.
 

Wills747

Engaged Member
Dec 14, 2018
2,446
5,137
After decompiling Summertime Saga [v21.0.0 wip.5003] using the latest version of , an error occurred when running renpy-8.2.3:

I'm sorry, but an uncaught exception occurred.

While loading the script.
File "game/src/+config.rpy", line 1, in <module>
init python early hide:
File "game/src/+config.rpy", line 2, in _execute_python_hide
from saga import __version__
ModuleNotFoundError: No module named 'saga'


Anybody know what's going on? Ty
Try copy the "saga" folder into your SDK/lib/python39 folder if you're running from your SDK.
 

Madeddy

Active Member
Dec 17, 2017
838
487
Sorry for the late answers folks:

I thing i know what you looking for yes ther is another key used for that game because the line looks like this :
RPA-3.0 00000000009d0b28 42424242 that is 100% not the commen rpa3 key
Ah no, you're mistaken. There is everything right with your line.
  1. The first group is the RPA generation.
  2. The second group is the data offset and always different.
  3. The third is actually the key and always this value (42...).
You don't have permission to view the spoiler content. Log in or register now.

This is Thief of Hearts, but I'm getting similar from more or less everything the last few days. UnRen-forall.bat 9.4.
Sure.
As explained before, use a recent unrpyc for decompiling .rpyc files, if the the game has a newer variant of RenPy (7.5+). The ones in the different UnRen variants which float around are hopeless outdated.

That said, the available UnRen variants are half useless this days for newer games, because they are unmaintained. Simple starting some of the UnRen versions will error sometimes already. Unpacking works, decompiling only with luck.

Greets
 
Last edited:

master861

Well-Known Member
Nov 4, 2022
1,147
1,489
Sorry for the late answers folks:

Ah no, you're mistaken. There is everything right with your line.
  1. The first group is the RPA generation.
  2. The second group is the data offset and always different.
  3. The third is actually the key and always this value (42...).

Sure.
As explained before, use a recent unrpyc for decompiling .rpyc files, if the the game has a newer variant of RenPy (7.5+). The ones in the different UnRen variants which float around are hopeless outdated.

That said, the available UnRen variants are half useless this days for newer games, because they are unmaintained. Simple starting some of the UnRen versions will error sometimes already. Unpacking works, decompiling only with luck.

Greets
Ah ok then its my mistake. my unren version i postet works only with newer renpy games its only 1 switch that needs to be changed that my version works with all renpy games but not sure how to check if its renpy 8 or lower. The new unrpyc.py uses --no-init-offset for old renpy versions.
 

Madeddy

Active Member
Dec 17, 2017
838
487
not sure how to check if its renpy 8 or lower.
Everyone can always check for the version of a Ren'Py app by looking in the file ".../YOUR_APP/game/script_version.txt". Or in the directory above(APP base dir) in the "log.txt" or if you have the file in the "traceback.txt".
 

master861

Well-Known Member
Nov 4, 2022
1,147
1,489
Everyone can always check for the version of a Ren'Py app by looking in the file ".../YOUR_APP/game/script_version.txt". Or in the directory above(APP base dir) in the "log.txt" or if you have the file in the "traceback.txt".
No not that i dit mean in the batch script coding
 

RuruPP

New Member
Oct 9, 2017
2
0
It's 'normal' for an outdated version that's been around for years to malfunction. First, clasp your hands together in front of the monitor and pray. Then, proceed to dismantle the files. 90% of the time, you'll encounter errors, but if you're lucky, the remaining 10% might just work correctly.
 

S A Z

Well-Known Member
Modder
Jun 29, 2017
1,469
11,327
I am running into an issue trying to decompile the latest version of The Tyrant 0.95. I was able to unpack it with UnRen1.0.11d and UnRenGUI, but keep running into the AttributeError: 'Signature' object has no attribute 'extrapos' and only get partial .rpy files.

I was able to get what seemed like full .rpy files with UnRen-forall and the game will run, but when I try to load or save a game, I get an error.

Any help or point in the right direction would be greatly appreciated.

traceback said:
I'm sorry, but an uncaught exception occurred.

While running game code:
File "game/screens.rpy", line 595, in execute
screen load():
File "game/screens.rpy", line 595, in execute
screen load():
File "game/screens.rpy", line 599, in execute
use file_slots(_("Load"))
File "game/screens.rpy", line 602, in execute
screen file_slots(title):
File "game/screens.rpy", line 602, in execute
screen file_slots(title):
File "game/screens.rpy", line 606, in execute
use game_menu(title):
File "game/screens.rpy", line 417, in execute
screen game_menu(title, scroll):
File "game/screens.rpy", line 417, in execute
screen game_menu(title, scroll):
File "game/screens.rpy", line 426, in execute
frame:
File "game/screens.rpy", line 429, in execute
has hbox
File "game/screens.rpy", line 435, in execute
frame:
File "game/screens.rpy", line 438, in execute
if scroll == "viewport":
File "game/screens.rpy", line 438, in <module>
if scroll == "viewport":
NameError: name 'scroll' is not defined

-- Full Traceback ------------------------------------------------------------

Full traceback:
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
python hide:
File "renpy/ast.py", line 823, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "renpy/python.py", line 1178, in py_exec_bytecode
exec(bytecode, globals, locals)
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in <module>
python hide:
File "renpy/common/_layout/screen_main_menu.rpym", line 35, in _execute_python_hide
ui.interact()
File "renpy/ui.py", line 301, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "renpy/display/core.py", line 2165, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
File "renpy/display/core.py", line 2687, in interact_core
root_widget.visit_all(lambda d : d.per_interact())
File "renpy/display/displayable.py", line 431, in visit_all
d.visit_all(callback, seen)
File "renpy/display/displayable.py", line 431, in visit_all
d.visit_all(callback, seen)
File "renpy/display/displayable.py", line 431, in visit_all
d.visit_all(callback, seen)
File "renpy/display/screen.py", line 480, in visit_all
callback(self)
File "renpy/display/core.py", line 2687, in <lambda>
root_widget.visit_all(lambda d : d.per_interact())
File "renpy/display/screen.py", line 491, in per_interact
self.update()
File "renpy/display/screen.py", line 697, in update
self.screen.function(**self.scope)
File "game/screens.rpy", line 595, in execute
screen load():
File "game/screens.rpy", line 595, in execute
screen load():
File "game/screens.rpy", line 599, in execute
use file_slots(_("Load"))
File "game/screens.rpy", line 602, in execute
screen file_slots(title):
File "game/screens.rpy", line 602, in execute
screen file_slots(title):
File "game/screens.rpy", line 606, in execute
use game_menu(title):
File "game/screens.rpy", line 417, in execute
screen game_menu(title, scroll):
File "game/screens.rpy", line 417, in execute
screen game_menu(title, scroll):
File "game/screens.rpy", line 426, in execute
frame:
File "game/screens.rpy", line 429, in execute
has hbox
File "game/screens.rpy", line 435, in execute
frame:
File "game/screens.rpy", line 438, in execute
if scroll == "viewport":
File "game/screens.rpy", line 438, in <module>
if scroll == "viewport":
NameError: name 'scroll' is not defined

Windows-10-10.0.19041 AMD64
Ren'Py 7.7.1.24030407
The Tyrant 0.95
Sat Sep 28 16:37:09 2024
 
5.00 star(s) 3 Votes