Mod Ren'Py Bad Memories [v0.8.5] Multi-Mod [Sancho1969]

5.00 star(s) 2 Votes

indio68

Engaged Member
Sep 26, 2020
3,252
2,613
The "SaveFixer" is simply for loading saves that were known to be made previously with the mod installed inside a new VN install that is unmodded. That's all it does, nothing else.

Otherwise the dev made a massive variable change to the MC's name and the result is many hundreds of lines of code changes (compared to pre-v0.8.0) that are the result. The current mod will solve around 80-90% of the loading issues but there's no way to solve all of them, it's just impossible due the the VN's changes. These issues are regardless of if the player used the mod or not... in other words it's affecting folks that have never played modded ans still don't.

With that said I have no idea if you used the mod before or not if it's a "rollback" error. You can attach the traceback file (not copy/paste into a post but physically attach the file) via the button:
View attachment 2575353
this is what i got..i think i used the mod but not 100% sure sry...passed so much time with this VN that is hard to recall...thanks
Code:
[code]
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00action_file.rpy", line 463, in __call__
    renpy.load(fn)
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

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

Full traceback:
  File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
    python hide:
  File "renpy/ast.py", line 1131, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "renpy/python.py", line 1061, 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 299, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "renpy/display/core.py", line 3377, 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 4258, in interact_core
    rv = root_widget.event(ev, x, y, 0)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/transition.py", line 53, in event
    return self.new_widget.event(ev, x, y, st) # E1101
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/screen.py", line 743, in event
    rv = self.child.event(ev, x, y, st)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1399, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1399, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/behavior.py", line 1073, in event
    return handle_click(self.clicked)
  File "renpy/display/behavior.py", line 1008, in handle_click
    rv = run(action)
  File "renpy/display/behavior.py", line 329, in run
    return action(*args, **kwargs)
  File "renpy/common/00action_file.rpy", line 463, in __call__
    renpy.load(fn)
  File "renpy/loadsave.py", line 769, in load
    log.unfreeze(roots, label="_after_load")
  File "renpy/rollback.py", line 1078, in unfreeze
    self.rollback(0, force=True, label=label, greedy=greedy, on_load=True)
  File "renpy/rollback.py", line 889, in rollback
    self.load_failed()
  File "renpy/rollback.py", line 807, in load_failed
    raise Exception("Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?")
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

Windows-10-10.0.19041 AMD64
Ren'Py 7.5.3.22090809
Bad Memories 0.8.1
Wed Apr 26 21:52:22 2023
[/CODE]
thanks for your kindness and for your mods anyway..
 

Sancho1969

Message Maven
Modder
Donor
Jan 19, 2020
12,382
47,859
this is what i got..i think i used the mod but not 100% sure sry...passed so much time with this VN that is hard to recall...thanks
Code:
[code]
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00action_file.rpy", line 463, in __call__
    renpy.load(fn)
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

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

Full traceback:
  File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
    python hide:
  File "renpy/ast.py", line 1131, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "renpy/python.py", line 1061, 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 299, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "renpy/display/core.py", line 3377, 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 4258, in interact_core
    rv = root_widget.event(ev, x, y, 0)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/transition.py", line 53, in event
    return self.new_widget.event(ev, x, y, st) # E1101
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/screen.py", line 743, in event
    rv = self.child.event(ev, x, y, st)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1399, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 1399, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/layout.py", line 1175, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "renpy/display/layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "renpy/display/behavior.py", line 1073, in event
    return handle_click(self.clicked)
  File "renpy/display/behavior.py", line 1008, in handle_click
    rv = run(action)
  File "renpy/display/behavior.py", line 329, in run
    return action(*args, **kwargs)
  File "renpy/common/00action_file.rpy", line 463, in __call__
    renpy.load(fn)
  File "renpy/loadsave.py", line 769, in load
    log.unfreeze(roots, label="_after_load")
  File "renpy/rollback.py", line 1078, in unfreeze
    self.rollback(0, force=True, label=label, greedy=greedy, on_load=True)
  File "renpy/rollback.py", line 889, in rollback
    self.load_failed()
  File "renpy/rollback.py", line 807, in load_failed
    raise Exception("Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?")
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

Windows-10-10.0.19041 AMD64
Ren'Py 7.5.3.22090809
Bad Memories 0.8.1
Wed Apr 26 21:52:22 2023
[/CODE]
for your kindness and for your mods anyway..
LMAO, well you copy/pasted but nevermind... the failure is a "rollback" issue:
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

This is common due to what I described in my previous post so I won't rehash that. Question is now (we still don't know if the save is modded or unmodded but let's move past that for now) can you load any other save? Have you tried loading that save in the VN that's not modded?
 

Night Hacker

Forum Fanatic
Jul 3, 2021
4,416
21,834
I'll keep this as concise as I can to prevent wall of text. First, let me point out that on the next release these rollback issues might be a problem again... the dev will likely use the rpyc's from the current v0.8.1 to build from (makes sense in his point of view) and not the v0.8.0 rpyc's (which the mod is using to increase the success of old saves loading). But that's a problem for another day.

Regarding rpy/rpyc/rpa... I guess the simplest way I can explain it is this: when using the SDK to build a RenPy project, one usually ends up with rpa... which contain the rpyc OR rpyc and rpy. The rpy's are NOT needed at all TBH, it's the rpyc that's everything. The save/load system uses raw data from the rpyc, not any rpy (as do a few other processes). Here's a scenario that fucks up some new devs.... they'll build via the SDK with only the rpy files which the SDK will create fresh rpyc's to use. If that dev on the next update does that exact same thing (only uses the rpy for the build) then the SDK doesn't have the old raw data to go off of and creates new rpyc's due to no choice. Now if the Player tries to load an old save, RenPy works it's ass off rollingback to find a stable pointer... with high odds of failure.

I could go deep into the weeds but that perspective will hopefully make sense to you bud.
Thanks, that definitely clarified things. I guess I was looking at RPYCs more as being like C Object files. But they have a bit more to them. Interesting.
 

indio68

Engaged Member
Sep 26, 2020
3,252
2,613
LMAO, well you copy/pasted but nevermind... the failure is a "rollback" issue:
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

This is common due to what I described in my previous post so I won't rehash that. Question is now (we still don't know if the save is modded or unmodded but let's move past that for now) can you load any other save? Have you tried loading that save in the VN that's not modded?
no didn't tried w\out your mod.. i'll give it a try noiw and try other save before uninstall mod
 
  • Like
Reactions: Sancho1969

Sancho1969

Message Maven
Modder
Donor
Jan 19, 2020
12,382
47,859
Thanks, that definitely clarified things. I guess I was looking at RPYCs more as being like C Object files. But they have a bit more to them. Interesting.
Yes, they contain the compiled RPY plus other raw data that the RenPy engine uses. RenPy has the ability to read rpy (obviously) but it does NOT write necessary raw engine data to them... that's all inside the rpyc which is basically compiled rpy data plus the engines raw data for several processes including the save/load system. Failure of a dev to maintain generational rpyc's is the number one failure of old save loading issues in every single RenPy VN ever.... ever. If they stop the generational code and issue a new generation (which is EXACTLY what this dev did going from v0.8.0 to v0.8.1) then things get really fucked up really quick.

This is why the specific instructions I wrote for you to try worked for you... your old save was based on the newer v0.8.1 rpyc's and not the generational rpyc's (v0.8.0 and all older versions) like most players currently. He should have built v0.8.1 with the old generational rpyc's in place, but he didn't somewhere in the process and new rpyc's were created either by the SDK or RenPy directly. Now there will be a mix of folks on one of the two generations of rpyc's. See how much of a mess this becomes? Yeah, it's kinda fucked up tbh.

Edit: I call them generational since as the recompile of old rpyc's is done, RenPy keeps the raw pointer data the same as the previous generation. This old generation raw code is transferred over and over again during new builds. This is an imperative process for the save/load system to always be able to load at the exact point of a previous save.
 
Last edited:

indio68

Engaged Member
Sep 26, 2020
3,252
2,613
LMAO, well you copy/pasted but nevermind... the failure is a "rollback" issue:
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

This is common due to what I described in my previous post so I won't rehash that. Question is now (we still don't know if the save is modded or unmodded but let's move past that for now) can you load any other save? Have you tried loading that save in the VN that's not modded?
damn ...it works without the mod....:( so i must play it w\out the mod.?..uff..
 

Sancho1969

Message Maven
Modder
Donor
Jan 19, 2020
12,382
47,859
damn ...it works without the mod....:( so i must play it w\out the mod.?..uff..
No, that's not a bad thing... normally the mod could care less if the save is from previous modded or unmodded... but it give us a clue to work off of. (remember, the dev made a shit-ton of changes so let's see if we can salvage your save)

Try this for me please since you have both an unmodded VN and a modded VN to work with.
  1. Load that save in the unmodded VN like you just said you could.
  2. Play until the next choice menu available to you.
  3. Click the "back" button in the QuickMenu or use your middle mouse wheel to scroll back a scene image or two (before the menu choice).
  4. Make a new save here.
  5. Now close the VN and start the modded VN.
  6. Try loading that save you just made before the new choice.
  7. Report back please.
 
  • Like
Reactions: Night Hacker

indio68

Engaged Member
Sep 26, 2020
3,252
2,613
No, that's not a bad thing... normally the mod could care less if the save is from previous modded or unmodded... but it give us a clue to work off of. (remember, the dev made a shit-ton of changes so let's see if we can salvage your save)

Try this for me please since you have both an unmodded VN and a modded VN to work with.
  1. Load that save in the unmodded VN like you just said you could.
  2. Play until the next choice menu available to you.
  3. Click the "back" button in the QuickMenu or use your middle mouse wheel to scroll back a scene image or two (before the menu choice).
  4. Make a new save here.
  5. Now close the VN and start the modded VN.
  6. Try loading that save you just made before the new choice.
  7. Report back please.
damn elly escaped and there is no coice for now.,...lol
 

Sancho1969

Message Maven
Modder
Donor
Jan 19, 2020
12,382
47,859
damn elly escaped and there is no coice for now.,...lol
No problem. You can make a new save with the unmodded VN at some later point than when you loaded it, that's what is important. So, during the next scene layup simply make a new save (step 4) and continue with step 5 above. You can make a couple new saves at various points just to have more of them to try once you close the unmodded and try to load them inside modded.
 

indio68

Engaged Member
Sep 26, 2020
3,252
2,613
No, that's not a bad thing... normally the mod could care less if the save is from previous modded or unmodded... but it give us a clue to work off of. (remember, the dev made a shit-ton of changes so let's see if we can salvage your save)

Try this for me please since you have both an unmodded VN and a modded VN to work with.
  1. Load that save in the unmodded VN like you just said you could.
  2. Play until the next choice menu available to you.
  3. Click the "back" button in the QuickMenu or use your middle mouse wheel to scroll back a scene image or two (before the menu choice).
  4. Make a new save here.
  5. Now close the VN and start the modded VN.
  6. Try loading that save you just made before the new choice.
  7. Report back please.
ok...this is strange...i saved when jade and mc went to find ellie , just before jade nearly confess her love to MC. when mc had the 2 choice: - wait her to say it or -say u love here...installed the mod, loaded that save , and it worked...but now i'am not in the fields but again into ellie roos asking jade where she could be...game gfoes back in time lol...but hey it loaded... strange uh?
 

Sancho1969

Message Maven
Modder
Donor
Jan 19, 2020
12,382
47,859
ok...this is strange...i saved when jade and mc went to find ellie , just before jade nearly confess her love to MC. when mc had the 2 cvhoice wait her to say it or say u love here...installed the mod, loaded that save , and it worked...but now i'am not in the fields but again into ellie roos asking jade where she could be...game gfoes back in time lol...but hey it loaded... strange uh?
Well, no not so strange. What we've done with this issue is to give RenPy an opportunity to rollback to where it can find a safe landing. The mod currently has the script generations from v0.8.0 and all previous. The dev did something very odd in the new v0.8.1 build and the new scripts started a new save/load pointer generation. This is the discussion you may have seen between ours that I've been having with Night Hacker. It's exactly this issue that's going to be a problem from this point forward. There will be folks than have the first generation save/load pointers and there will be folks with the new generation save/load pointers. This is the dev's doing and there's only so much I can do about it now and into the future... but this will come up again. Of that I am absolutely certain.

We've not seen the last of "save/load" issues after this VN update.
 

indio68

Engaged Member
Sep 26, 2020
3,252
2,613
what is the eye icon that pop up when i kiss jada on up right of the screen? it's clikable and turn form blue tyo red if cliked... but apert of that nothing happen...
 

indio68

Engaged Member
Sep 26, 2020
3,252
2,613
Well, no not so strange. What we've done with this issue is to give RenPy an opportunity to rollback to where it can find a safe landing. The mod currently has the script generations from v0.8.0 and all previous. The dev did something very odd in the new v0.8.1 build and the new scripts started a new save/load pointer generation. This is the discussion you may have seen between ours that I've been having with Night Hacker. It's exactly this issue that's going to be a problem from this point forward. There will be folks than have the first generation save/load pointers and there will be folks with the new generation save/load pointers. This is the dev's doing and there's only so much I can do about it now and into the future... but this will come up again. Of that I am absolutely certain.

We've not seen the last of "save/load" issues after this VN update.
lol....anyway i'mm good to go now it seems... i never say it enopugh you are very kind and i thank u very much for your help and work.
 

Sancho1969

Message Maven
Modder
Donor
Jan 19, 2020
12,382
47,859
what is the eye icon that pop up when i kiss jada on up right of the screen? it's clikable and turn form blue tyo red if cliked... but apert of that nothing happen...
That's available at various points in the VN. It's the dev's way of switching images (perspective points of view) of a lewd or semi-lewd scene. In that particular case if you don't see an image perspective change then he borked it somehow. That's not the mod but a base VN feature. You'll notice that "eye" in many of the lewd scenes which changes the animation perspective.
 

indio68

Engaged Member
Sep 26, 2020
3,252
2,613
That's available at various points in the VN. It's the dev's way of switching images (perspective points of view) of a lewd or semi-lewd scene. In that particular case if you don't see an image perspective change then he borked it somehow. That's not the mod but a base VN feature. You'll notice that "eye" in many of the lewd scenes which changes the animation perspective.
thanks again..-yes i figured it out later in a scene with jade..that changed POV, not the first time during the kiss when first appeared...damn was a really short update as usual...so many months for \10 minuts gameplay...this will take forever uff. a pity cuz i like the story and char, but man this is so slow moving with these short updates ..:(
 

Sancho1969

Message Maven
Modder
Donor
Jan 19, 2020
12,382
47,859
Update:

I've updated links for the mod to have the save/load pointer issue resolved so it's yet again 1:1 with the VN unmodded.

If anyone is trying to load a save made while running the previous v0.8.0 then see post here for resolution. If your save is pre-v0.8.0 (v0.7.5 and prior) then we'll sort that separately.

Again, to be very clear, if you are attempting to load a save made in v0.7.5 and prior without success then you no longer have to jump through the hoops Night Hacker and indio68 did above, I done it for you in the latest build.

Edit: The post for v0.8.0 save fix removed to eliminate confusion.
 
Last edited:

Night Hacker

Forum Fanatic
Jul 3, 2021
4,416
21,834
Update:

I've updated links for the mod to have the save/load pointer issue resolved so it's yet again 1:1 with the VN unmodded.

If anyone is trying to load a save made while running the previous v0.8.0 then see post here for resolution. If your save is pre-v0.8.0 (v0.7.5 and prior) then we'll sort that separately.

Again, to be very clear, if you are attempting to load a save made in v0.7.5 and prior without success then you no longer have to jump through the hoops Night Hacker and indio68 did above, I done it for you in the latest build.

Edit: The post for v0.8.0 save fix removed to eliminate confusion.
Nice work, thanks for your efforts. (y)
 

Sancho1969

Message Maven
Modder
Donor
Jan 19, 2020
12,382
47,859
Still surprised by that ending, but got caught up with the Dev, no problems from the mod I could find, and thank you so very much for your work on this!!!
Jen, if you have some downtime in the coming weeks DL the latest mod (from the OP) and insure you can load your saves. I don't want anyone's saves fucked but if I'm being honest it'd turn me completely inside out if yours are borked. There was a snafu by the dev in v0.8.0 that carried over to my initial v0.8.1 but I've sorted it after he did as well.

To test install a fresh copy of the VN in a new directory/folder (differently named) just to isolate the test installation and install the newest mod version into that. Then try to load both and old (pre v0.8.0) save and one or two of your v0.8.1 saves... just to make sure you're solid going forward.

Regards.
 
  • Red Heart
Reactions: JenMistress

JenMistress

Engaged Member
Oct 1, 2019
2,603
2,948
Jen, if you have some downtime in the coming weeks DL the latest mod (from the OP) and insure you can load your saves. I don't want anyone's saves fucked but if I'm being honest it'd turn me completely inside out if yours are borked. There was a snafu by the dev in v0.8.0 that carried over to my initial v0.8.1 but I've sorted it after he did as well.

To test install a fresh copy of the VN in a new directory/folder (differently named) just to isolate the test installation and install the newest mod version into that. Then try to load both and old (pre v0.8.0) save and one or two of your v0.8.1 saves... just to make sure you're solid going forward.

Regards.
Well, I loaded up 0.8.1 and went to the last save, and it took me back to where the dream sequence started, so I my guess is the saves still work just fine on my end. Granted, I also used the hotfix they listed on the homepage of the game, so maybe that helped too, not sure.
 
5.00 star(s) 2 Votes