Jump to content

Olxinos

Veterans
  • Posts

    38
  • Joined

  • Last visited

 Content Type 

Profiles

Forums

Events

Reborn Development Blog

Rejuvenation Development Blog

Starlight Divide Devblog

Desolation Dev Blog

Posts posted by Olxinos

  1. Is it an e18 save imported in e19? If yes, that's normal. Talk to the npcs behind the counter (the third or fourth from the left iirc).
    If you've just started a fresh new e19 save, you also want to talk to that npc for the repeatable trainer(s) to appear.

  2. Go to ~/Library/Application Support/Pokemon Reborn (you can hit shift+command+G in the finder and type copy/paste that path in the pop up).
    That folder should contain a lot of rxdata files, one which is named Game.rxdata (not to be confused with Game.dat that only stores some preferences). That Game.rxdata is your save file, and all the other rxdata files are older versions that were renamed when you saved. To return to an old save, you need to replace Game.rxdata by one of these older files (e.g. removing Game.rxdata and renaming one of those into Game.rxdata).

    If you have multiple saves, you'll also have files named Game_[number].rxdata. They behave like Game.rxdata for the [number]th save slot instead of the first. So if you're playing on the second save slot for instance, you'll have to replace Game_2.rxdata instead.

  3. Could you try continuing from the attached save? I made sure it was possible to get to the next room from it (I had to edit your save, otherwise the puzzle seemed impossible indeed).
    I also took the liberty of removing a few key items that seemed to crash your game when opening your key items pocket (they were nil anyways so I doubt they would have been useful for anything).

    Game.rxdata

  4. It's a known bug, the same as that one:

    The good news is that, you posted that 8 hours ago, and this bug should disappear after 8 hours have passed (even if the game isn't open). So you should now be able to play again without having to do anything. Plus, you probably won't re-encounter that bug until the next patch (in which it will be fixed).
    If you somehow do though, you have a few possible solutions:
    - replace Game_Screen.rb by the attached file (written by BlueTowel)
    - wait 8 hours
    - wait for 19.06
    - use the unrealtime password to skip 8 hours ahead

    Game_Screen.rb

  5. I'm not sure. You can always try it of course, it never hurts to check whether a fresh install works. Still, if you can load other save files (some in locations that were introduced in e19), you probably have a recent enough installation that can load at least some save files.
    But I really can't figure out why this save file is special. Somehow, calling `Marshall.load` twice on this file has different results on your machine and mine (on my machine, the second loaded object is an integer, but on yours, somehow, it's something else), but that function is part of a core Ruby module. It should have the same behaviour on all machines, and it would be pretty surprising for a core library function to be broken (that code is way more mature that Pokémon Reborn's, and mature code is a lot less likely to contain bugs).

    You could try to bypass that issue by replacing:

          Graphics.frame_count = Marshal.load(f)

    with
     

          nframes = Marshal.load(f)
          Graphics.frame_count = nframes.is_a?(Numeric) ? nframes : 0

    in PokemonLoad.rb line 661, but I'm not sure another problem will pop up afterwards (perhaps now, loading frame_count is "fixed" but now game_switches' loading will fail). I guess you can still try though, it should be harmless enough.

    Perhaps I'll try to inspect your save file in a hex editor later, but that's pretty long and tedious, and I'm not sure I'll find anything. So I can't make any guarantee.

  6. Your error happens when loading the marshalled ruby data inside your save file, one of the marshalled objects doesn't have the expected type which crashes the game. At first glance, this looks like a corrupted save, but weirdly enough I can load your save file just fine and can't reproduce your issue. I'm not sure where this discrepancy comes from unless your game files are vastly different from mine (which shouldn't be the case if you're using version 19 of the game)


    In any case, this doesn't look like the jukebox issue or the Game.dat issue: the crash happens elsewhere, and the only possible explanations I can think of so far are:
    - your game installation is corrupted or you're using outdated mods that mess with loading your save (possible? perhaps?)
    - you sent me the wrong save (pretty unlikely)
    - the ruby marshalling module is broken (extremely unlikely)

    Did you ever play with version 19 before? Can you load other save files? Are you using any mods? If yes, which ones? Did you try redownloading episode 19?


    Just in case, I'll also attach the re-saved file in case opening and re-saving miraculously solves your problem, but I'm not optimistic (and pretty stumped).

    Game.rxdata

  7. A couple users in the #e19-troubleshooting channel have encountered a bug where exiting buildings crashed their game in 19.05. The stack trace is the following:
    unknown.png
    This bug doesnt appear in 19.04 and can be reproduced reliably (patch 19.05) by creating a new save with the unrealtime password, skipping 112 hours ahead as soon as the pokegear becomes available, then exiting the opal ward pokecenter.

    Due to the bug disappearing by itself after enough time has passed (up to 8 hours), a save file is not included (but you can reproduce it using the previous procedure)

    It's likely caused by introducing the next weather display in the pokegear in version 19.05:

    `weatherVector[49]` doesn't seem to be initialized inside `createArchetype` or `regionArchetype` (rather, every weatherVector[k] where k is congruent to 0...14 modulo 17 is initialized) so in the following code (Game_Screen.rb:278-301), during the last 8 hours of every 120 hour weather cycle, weatherVector[101] is equal to 14, regionOffset is equal to 34 (inside Reborn city), and therefore nextWeather is equal to 49. Finally, accessing weatherVector[nextWeather] crashes the game.

          #unix time: 1 hr = 3600; 8hr = 28800; 5 days = 432000
          currentDate  = Time.now.to_i
          @weatherVector[16] = currentDate if @weatherVector[16] == nil
          prevTime = @weatherVector[16]
          timeDifference1 = currentDate - prevTime
          $game_variables[790] = Time.at(Time.now.to_i + 28800 - timeDifference1)
          timeDifference2 = 0
          timeDifference2 = currentDate - @previousDate.to_i if @previousDate
          if (!@previousDate || timeDifference2 > 432000 || @weatherVector[101] == -1) 
            createArchetype(regionOffset)
            regionArchetype(region, regionOffset)
            @previousDate = currentDate
            @weatherVector[101] = 0
            @weatherVector[16] = Time.now.to_i
            $game_variables[318] = 0
          elsif timeDifference1 > 28800
            blockCount = (timeDifference1 / 28800).to_i
            @weatherVector[101] = @weatherVector[101] + blockCount
            @weatherVector[16] = Time.now.to_i
            $game_variables[318] = blockCount
          end
          currentWeather = @weatherVector[101] + regionOffset
          nextWeather = @weatherVector[101] + regionOffset + 1
          $game_variables[789] = @weatherVector[nextWeather][0]


     

    • Documented 1
  8. It's likely that you saved in that area and that the old 19.04 map data is still in your save file. If you can't load another area, fixing the save file with an hex editor is easy enough.
    I can do it for you if you share your save, but here's the fix and the steps to do it yourself just in case.

    The crash happens because two function calls are incorrectly split across multiple lines. For instance one of these is

    pokemon=PokeBattle_Pokemon.new
    (:DARKRAI, 120)


    Which happens to be illegal. Fortunately, we can correct it very easily by moving a parenthesis to the previous line:

    pokemon=PokeBattle_Pokemon.new(
    :DARKRAI, 120)


    (this is not the exact fix in 19.05, but it's easy to do and it should be enough to unstuck you)
    The same problem happens a bit further with another function call:

    $game_variables[782] = pbNickname
    (pokemon)

     

    In the following, I prefix every hexadecimal number by 0x (mostly an habit picked up from the C language syntax, and it helps distinguishing hexadecimal numbers from decimal ones; you usually won't see that 0x in the hex editor however, or only at some specific places)

    So, we want to move two parentheses across a line each, which involves modifying 4 marshalled ruby strings. We can do that with a hex editor and a little knowledge about how ruby marshalls its strings. With the Marshal module version 4.8, strings are encoded as the byte 0x22 for the double quote character ", then a byte encoding the length of the string +5 (the +5 is due to some integer encoding details of ruby), then the actual bytes of the string.

    For instance the string (:DARKRAI,120) is encoded as 0x2213283A4441524B524149:

    - 0x22 is ascii for "
    - 0x13 interpreted as an integer number is 19, subtracting 5, we get the length of (:DARKRAI,120) : 14
    - 0x283A4441524B524149 is ascii for (:DARKRAI,120)
    Changing the text of a ruby string with a hex editor is a simple as replacing that third part with the text we want and readjusting the second byte to the new length of the string.

    All in all, you need to:
    - back up your Game.rxdata so that you can revert it if you did something wrong
    - open your Game.rxdata in a hex editor
    - find the bytes corresponding to the string "(:DARKRAI, 120)" in the file

    image.thumb.png.e406bf51f4fc624cafa89b6bf31f1988.png
    (on that screen, each pair of numbers/letters on the left corresponds to one byte; the right part is the left part interpreted as ascii; the highlighted bytes on the left and the highlighted text on the right are actually the same although read differently)
    - Remove the left parenthesis (delete the first highlighted byte 0x28), then replace the byte before (0x13) by 0x12 (we removed a character so we need to adjust the size)
    - A bit above in the file, there's "pokemon=PokeBattle_Pokemon.new", we'll add a parenthesis to that by inserting a left parenthesis (0x28) after that, and adjusting the size from 0x23 to 0x24:
    image.thumb.png.2d6a2143d3c245b0da5e15439e2a3dfa.png
    Now we do the same thing with `(pokemon)` and `$game_variables[782] = pbNickname` below (they're visible on the last screenshot):
    - insert a `(` (0x28) after `$game_variables[782] = pbNickname`
    - adjust the size byte after the `"` (0x22) and before `$game_variables[782] = pbNickname` (0x2467616D655F7661...) from 0x26 to 0x27 (33 characters to 34 characters)
    - delete the first byte of `(pokemon)` (0x28)
    - adjust the size byte after the `"` (0x22) and before `pokemon)` (0x706F6B656D6F6E29) from 0x0E to 0x0D (9 characters to 8 characters)

  9. Did you save in that area before upgrading to 19.05? If yes, the old map data from 19.04 is probably still present in your save file. You should be able to refresh it by going to another area, saving there, reloading your save, and coming back (actually saving and reloading might not even be necessary, but might as well for good measure).

  10. I actually bred a bunch of eevees a couple hours ago and got a shiny female one with curse/stored power/wish/yawn as egg moves and almost perfect IVs (31/0/31/30/31/31) I haven't any use for. My handle is OlxinosE if you're interested.
    (edit: I don't really care about what I get in exchange, mostly felt it was a waste not to use it, but I've had a technically better one)

  11. Are you trying to open a save from episode 18? and were you in Yureyu power plant in that save? It looks like your save has old map data inside that uses to obsolete names. You can try loading your save with version 18.4, saving somewhere else (for instance somewhere inside Opal Ward), then load that save with episode 19.

  12. Hi, could you share the error you're getting? (like a screenshot or the error log in your save directory) I had no problem loading that save so the problem probably lies elsewhere. I saw you posting in other topics saying you got the same error as the OP, but those were different errors (one was related to the jukebox and a non-existing mp3 file, another was related to a corrupted game.dat file)

  13. If you know how to open your save files directory, it's the same one (the save files are the .rxdata files in that directory). Otherwise, open a Finder window, then hit shift+command+G. A pop up should appear asking your for a path. Type "~/Library/Application Support/Pokemon Reborn/" (without the quotes) and hit enter, this should change the directory you were browsing in the Finder window to the Reborn saves directory.
    Game.dat should be inside (don't mistake it for Game.rxdata, that one *is* your save file); if you have trouble finding it, display the files as a list and order them by type.

    Alternatively, you can also open a terminal (it's in /Applications/Utilities/Terminal.app), type the following***, and hit enter:

    mv ~/Library/Application\ Support/Pokemon\ Reborn/Game.dat ~/Library/Application\ Support/Pokemon\ Reborn/Game.dat.bak

    You could also go there by browsing files in Finder, the same way you usually access directories but iirc ~/Library is hidden by default so you'd have to do something to show hidden directories.

    ***: `mv` is the command for moving/renaming files, that specific command renames Game.dat into Game.dat.bak (don't forget the reverse slashes before the whitespaces in the paths, otherwise the whitespace would be understood as the end of the character string)
    you can also use the command "open [path_to_file_or_directory]" in the terminal which will open the directory at the specified location in the Finder (or open the file with the default application for that file type)
    If you're wondering what "~" means in the paths, it's a shortcut for the user directory (i.e. /Users/[your_name])

    • Like 1
  14. This looks like a common issue, although usually the game reports about a wrong ruby marshalling version (that one reports an unexpectedly short file instead). Anyways, go to /Users/[your_username]/Library/Application Support/Pokemon Reborn/. There should be a "Game.dat" file inside (it's not your save, just metadata). Rename it Game.dat.bak (or something else, the point is that the game doesn't try to open this file as it's most likely corrupted) and try again (if it works, delete it).

    • Like 1
  15. It will likely be fixed in an incoming patch. If you don't want to wait however:

    - go to the "/Applications/Pokémon Reborn.app/Contents/Game/Scripts" folder
    For that, you can either:

    ..+ hit shift+command+G in the Finder (the mac file explorer) and type that path in the pop-up that appears (without the quotes)
    ..+ or go to your Applications folder, right click Pokémon Reborn.app, "show package content" and continue from there (Contents->Game->Scripts)
    ..+ or open a Terminal (Terminal.app is in /Applications/Utilities), type (with the quotes)

    open "/Applications/Pokémon Reborn.app/Contents/Game/Scripts"
    in it then hit enter

    - Inside that folder, there should be a lot of .rb files. Look for PokemonLoad.rb, make a backup of that file (e.g. duplicate it with command+D) then open the original (it's a text file, so any text editor will work -even TextEdit-)

    - Inside that file, look for the code I posted above (line 522 if you have line numbers in your text editor, otherwise, you can use command+F to search for that snippet), and replace it with the fix

    - Try to open Pokémon Reborn and select Other Save Files. If anything goes wrong, close it, and undo your changes by restoring PokemonLoad.rb with your backup.

    • Like 1
  16. Are you perhaps playing on Mac? If yes, this is probably the same bug as:

    If you absolutely can't wait, I've posted a couple workarounds in that thread (I suggest you back up PokemonLoad.rb then fix it as described in my second message, you can find it in /Applications/Pokémon\ Reborn.app/Contents/Game/Scripts/ ).

  17. (Double posting because I think the messages' contents are different enough)

    I looked into it, this seems to be a fairly simple bug, but one that could be a bit pervasive. The problematic code is the following, in PokemonLoad.rb:522-538:
     

            begin
              d.children.each do |file|
                next if !/^Game_[0-9]+.rxdata$/.match(file) && !/^Game.rxdata$/.match(file)
                next if !safeExists?(d.path + file)
                t=File.mtime(d.path + file) rescue pbGetTimeNow
                savetime = t.strftime("%c")
                info = saveinfo(d.path + file)
                savenumber = file.scan(/\d+/)[0].to_i
                savenumber = 1 if savenumber == 0
                slotname = "Save Slot #{savenumber}" + info
                saveslots.push([savenumber,slotname,false,true,savetime,file])
              end
            rescue
              pbPrintException($!)
            ensure
              d.close
            end

    Here, the game enumerates the files in the save directory (located at `d.path`), checks that their name looks like Game_[some number].rxdata or Game.rxdata, makes sure the file can be safely opened for reading and writing, and if yes, appends it to a list of saves (later, in PokemonLoad.rb:562-565, the length of that list is checked and if it is empty the OP's error message is displayed).

    The issue lies in `d.path + file`. `d.path` is the save directory's path (usually "/Users/[username]/Library/Application Support/Pokemon Reborn") but it seems that on Mac, that path isn't terminated with a '/'. So, the game tries to open "[...]/Pokemon RebornGame.rxdata" instead of "[...]/Pokemon Reborn/Game.rxdata".

     

    Merely adding a '/' (for instance, like in the following code) fixes that specific issue for Mac users.

            begin
              d.children.each do |file|
                next if !/^Game_[0-9]+.rxdata$/.match(file) && !/^Game.rxdata$/.match(file)
                absolute_path = d.path + "/" + file
                next if !safeExists?(absolute_path)
                t=File.mtime(absolute_path) rescue pbGetTimeNow
                savetime = t.strftime("%c")
                info = saveinfo(absolute_path)
                savenumber = file.scan(/\d+/)[0].to_i
                savenumber = 1 if savenumber == 0
                slotname = "Save Slot #{savenumber}" + info
                saveslots.push([savenumber,slotname,false,true,savetime,file])
              end
            rescue
              pbPrintException($!)
            ensure
              d.close
            end

     

    However, I don't know how that codes behaves on windows (it could break if these paths use antislash delimiters rather than slashes for instance). Moreover, this might not be the only place in the code where a path is built by appending the filename to a directory path that might not end with a / (there's another one a few lines beneath in PokemonLoad.rb:548-549 for instance, I don't know if there are others). So it's possible that some files can't be opened due to a similar bug but this hasn't been noticed yet because the issue is less noticeable / happens less frequently.

    (btw, there are two safeExists with different definitions, one in Audio.rb and one in SpriteWindow.rb, I don't know ruby enough to know whether this is a code smell or not)

    • Like 1
    • Fixed 1
  18. I don't know why that happens (haven't investigated it although it also happens on my machine), but as a temporary workaround, you can choose which save file to load by manually editing ~/Library/Application\ Support/Pokemon\ Reborn/game.dat with an hex editor (such as hex fiend):

    49442118_Capturedecran2022-04-25a05_29_53.thumb.png.57b6261627b80a82dcd61aa2f5e569fd.png
    The highlighted byte (0x07 here, after "savesloti"/0x73617665736C6F7469) is the byte that needs changing. It seems to correspond to your save number (but since it's a marshalled ruby long, you need to subtract 5 to get the actual number, for instance, 0x07 is 7, subtract 5 and you got the 2nd save slot, for the fourth save slot, you'd want 0x09 and for the twelfth, 0x11 = 17).

    If you aren't sure of what you're doing though, remember to back up game.dat before editing it.

×
×
  • Create New...