Jump to content

[PMD2] Need help figuring out why certain Pokémon sprites cause the game to crash when starting the Chapter 12 cutscene after defeating Mesprit


Recommended Posts

So as a preface - I've been playing though a modded version of Explorers of Sky with a custom pokemon. It's worked all fine up until the mentioned cutscene, where the game just stops working and remains on a black screen after the "Chapter 12" image disappears. 

I originally searched if anyone had encountered anything similar and a person had encountered the same issue playing as a Palkia - 
https://gamefaqs.gamespot.com/ds/955859-pokemon-mystery-dungeon-explorers-of-sky/answers/578081-the-game-crash-after-mesprit-battle-whats-causing-this

I did have a few AR codes enabled so thought it was that, but decided to do a little more digging - debugging in SkyTemple. Using a completely untouched EoS ROM, I encountered the same crash without any AR tampering when using both Palkia and Dialga. It also occured when I imported my custom sprites to replace bulbasaur's sprites so I assume it must be something to do with sprites. All other pokemon I've tried worked just fine(Gallade, Giratina(both forms), steelix, darkrai, diglett).

For the script itself:

It's Scene G01P04A with script m14a0901. Debugging that exact script has it no longer step through the code after supervision_Actors(3) is called at the beginning.

I'm not too familiar yet with the debugging of Skytemple or if there's any way to validate the sprites in some way to know what exactly is causing the problem. The fact that it exists in the base game is useful as it means it's easy to replicate, but if anyone has any idea why the scene crashes if a player or companion actor in that scene is dialga or palkia then I'd like to know. Not knowing how to fix my custom sprites is annoying.

EDIT/UPDATE:

I found that removing one of the supervision_Actor calls lets the scene run properly. Would it be due to too many sprites or something?
Looking at the debug log output after the supervision_Acting starts to get called:

Spoiler

> GENERIC(0): supervision_Acting @2120194
script locate set   3   0
GroundLives Locate id   0  kind   1  index 34242556
GroundLive Add id   0  kind   1  type 34242556  hanger 34784042  sector   0
GroundLives Locate kind   1  px   119808  py 34242556
GroundLives Locate id   1  kind  13  index 34242700
GroundLive Add id   1  kind  13  type 34242700  hanger 34784042  sector   1
GroundLives Locate kind  13  px   119808  py 34242700
GroundPerformer Add id   0  kind   0  type 36833368  hanger 34656484  sector   0
GroundLives ScriptExecute hanger   3  sector   0  type ACTING
    [  0]  kind   1
    [  1]  kind  13
GroundObject ScriptExecute hanger   3  sector   0  type ACTING
GroundPerformer ScriptExecute hanger   3  sector   0  type ACTING
    [  0]  kind   0
> GENERIC(0): supervision_Acting @2120198
script locate set   3   1
GroundLives Locate id  -1  kind 109  index 34243852
GroundLive Add id   3  kind 109  type 34243852  hanger 34784062  sector  -1
GroundLives Locate kind 109  px   105472  py 34243852
GroundLives Locate id  -1  kind 124  index 34244032
GroundLive Add id   4  kind 124  type 34244032  hanger 34784062  sector  -1
GroundLives Locate kind 124  px   105472  py 34244032
GroundLives Locate id  -1  kind 119  index 34243972
GroundLive Add id   5  kind 119  type 34243972  hanger 34784062  sector  -1
GroundLives Locate kind 119  px    98304  py 34243972
GroundLives Locate id  -1  kind 115  index 34243924
GroundLive Add id   6  kind 115  type 34243924  hanger 34784062  sector  -1
GroundLives Locate kind 115  px    98304  py 34243924
GroundLives Locate id  -1  kind 101  index 34243756
GroundLive Add id   7  kind 101  type 34243756  hanger 34784062  sector  -1
GroundLives Locate kind 101  px   112640  py 34243756
GroundLives Locate id  -1  kind  81  index 34243516
GroundLive Add id   8  kind  81  type 34243516  hanger 34784062  sector  -1
GroundLives Locate kind  81  px   112640  py 34243516
GroundLives Locate id  -1  kind  82  index 34243528
GroundLive Add id   9  kind  82  type 34243528  hanger 34784062  sector  -1
GroundLives Locate kind  82  px    90112  py 34243528
GroundLives Locate id  -1  kind 133  index 34244140
GroundLive Add id  10  kind 133  type 34244140  hanger 34784062  sector  -1
GroundLives Locate kind 133  px    90112  py 34244140
GroundLives Locate id  -1  kind 136  index 34244176
GroundLive Add id  11  kind 136  type 34244176  hanger 34784062  sector  -1
GroundLives Locate kind 136  px    91136  py 34244176
GroundLives ScriptExecute hanger   3  sector   1  type ACTING
    [  3]  kind 109
    [  4]  kind 124
    [  5]  kind 119
    [  6]  kind 115
    [  7]  kind 101
    [  8]  kind  81
    [  9]  kind  82
    [ 10]  kind 133
    [ 11]  kind 136
GroundObject ScriptExecute hanger   3  sector   1  type ACTING
GroundPerformer ScriptExecute hanger   3  sector   1  type ACTING
> GENERIC(0): supervision_Acting @212019c
script locate set   3   2
GroundLives Locate id  -1  kind  79  index 34243492
GroundLive Add id  12  kind  79  type 34243492  hanger 34784082  sector  -1
GroundLives Locate kind  79  px   119808  py 34243492
GroundLives Locate id  -1  kind 131  index 34244116
GroundLive Add id  13  kind 131  type 34244116  hanger 34784082  sector  -1
GroundLives Locate kind 131  px   114688  py 34244116
GroundLives ScriptExecute hanger   3  sector   2  type ACTING
    [ 12]  kind  79
    [ 13]  kind 131
GroundObject ScriptExecute hanger   3  sector   2  type ACTING
GroundPerformer ScriptExecute hanger   3  sector   2  type ACTING
> GENERIC(0): supervision_Acting @21201a0
script locate set   3   3
GroundLives Locate id  -1  kind 134  index 34244152
GroundLive Add id  14  kind 134  type 34244152  hanger 34784102  sector  -1

Below is the whole process, when it works correctly. Nothing seems different with the logs outputted at the very least
 

Spoiler

> GENERIC(0): supervision_Acting @2120194
script locate set   3   0
GroundLives Locate id   0  kind   1  index 34242556
GroundLive Add id   0  kind   1  type 34242556  hanger 34784042  sector   0
GroundLives Locate kind   1  px   119808  py 34242556
GroundLives Locate id   1  kind  13  index 34242700
GroundLive Add id   1  kind  13  type 34242700  hanger 34784042  sector   1
GroundLives Locate kind  13  px   119808  py 34242700
GroundPerformer Add id   0  kind   0  type 36833368  hanger 34656484  sector   0
GroundLives ScriptExecute hanger   3  sector   0  type ACTING
    [  0]  kind   1
    [  1]  kind  13
GroundObject ScriptExecute hanger   3  sector   0  type ACTING
GroundPerformer ScriptExecute hanger   3  sector   0  type ACTING
    [  0]  kind   0
> GENERIC(0): supervision_Acting @2120198
script locate set   3   1
GroundLives Locate id  -1  kind 109  index 34243852
GroundLive Add id   3  kind 109  type 34243852  hanger 34784062  sector  -1
GroundLives Locate kind 109  px   105472  py 34243852
GroundLives Locate id  -1  kind 124  index 34244032
GroundLive Add id   4  kind 124  type 34244032  hanger 34784062  sector  -1
GroundLives Locate kind 124  px   105472  py 34244032
GroundLives Locate id  -1  kind 119  index 34243972
GroundLive Add id   5  kind 119  type 34243972  hanger 34784062  sector  -1
GroundLives Locate kind 119  px    98304  py 34243972
GroundLives Locate id  -1  kind 115  index 34243924
GroundLive Add id   6  kind 115  type 34243924  hanger 34784062  sector  -1
GroundLives Locate kind 115  px    98304  py 34243924
GroundLives Locate id  -1  kind 101  index 34243756
GroundLive Add id   7  kind 101  type 34243756  hanger 34784062  sector  -1
GroundLives Locate kind 101  px   112640  py 34243756
GroundLives Locate id  -1  kind  81  index 34243516
GroundLive Add id   8  kind  81  type 34243516  hanger 34784062  sector  -1
GroundLives Locate kind  81  px   112640  py 34243516
GroundLives Locate id  -1  kind  82  index 34243528
GroundLive Add id   9  kind  82  type 34243528  hanger 34784062  sector  -1
GroundLives Locate kind  82  px    90112  py 34243528
GroundLives Locate id  -1  kind 133  index 34244140
GroundLive Add id  10  kind 133  type 34244140  hanger 34784062  sector  -1
GroundLives Locate kind 133  px    90112  py 34244140
GroundLives Locate id  -1  kind 136  index 34244176
GroundLive Add id  11  kind 136  type 34244176  hanger 34784062  sector  -1
GroundLives Locate kind 136  px    91136  py 34244176
GroundLives ScriptExecute hanger   3  sector   1  type ACTING
    [  3]  kind 109
    [  4]  kind 124
    [  5]  kind 119
    [  6]  kind 115
    [  7]  kind 101
    [  8]  kind  81
    [  9]  kind  82
    [ 10]  kind 133
    [ 11]  kind 136
GroundObject ScriptExecute hanger   3  sector   1  type ACTING
GroundPerformer ScriptExecute hanger   3  sector   1  type ACTING
> GENERIC(0): supervision_Acting @212019c
script locate set   3   2
GroundLives Locate id  -1  kind  79  index 34243492
GroundLive Add id  12  kind  79  type 34243492  hanger 34784082  sector  -1
GroundLives Locate kind  79  px   119808  py 34243492
GroundLives Locate id  -1  kind 131  index 34244116
GroundLive Add id  13  kind 131  type 34244116  hanger 34784082  sector  -1
GroundLives Locate kind 131  px   114688  py 34244116
GroundLives ScriptExecute hanger   3  sector   2  type ACTING
    [ 12]  kind  79
    [ 13]  kind 131
GroundObject ScriptExecute hanger   3  sector   2  type ACTING
GroundPerformer ScriptExecute hanger   3  sector   2  type ACTING
> GENERIC(0): supervision_Acting @21201a0
script locate set   3   3
GroundLives Locate id  -1  kind 134  index 34244152
GroundLive Add id  14  kind 134  type 34244152  hanger 34784102  sector  -1
GroundLives Locate kind 134  px   105472  py 34244152
GroundLives Locate id  -1  kind  85  index 34243564
GroundLive Add id  15  kind  85  type 34243564  hanger 34784102  sector  -1
GroundLives Locate kind  85  px   100352  py 34243564
GroundLives Locate id  -1  kind 157  index 34244428
GroundLive Add id  16  kind 157  type 34244428  hanger 34784102  sector  -1
GroundLives Locate kind 157  px   110592  py 34244428
GroundLives ScriptExecute hanger   3  sector   3  type ACTING
    [ 14]  kind 134
    [ 15]  kind  85
    [ 16]  kind 157
GroundObject ScriptExecute hanger   3  sector   3  type ACTING
GroundPerformer ScriptExecute hanger   3  sector   3  type ACTING

 

Edited by Etrian
More data aquired
Link to comment
Share on other sites

  • Etrian changed the title to [PMD2] Need help figuring out why certain Pokémon sprites cause the game to crash when starting the Chapter 12 cutscene after defeating Mesprit

After more research, I believe it's just a memory issue related to the actors/sprites. Palkia and Dialga both have large sprites, and multiple unique animations that bumps their overall size up. Same with my custom pokemon - I made unique animations for most optional animations etc. Will try some optimising and see if this can be 100% confirmed

Link to comment
Share on other sites

  • 4 months later...
On 8/12/2022 at 9:15 AM, Vixeethehybrid said:

My own game keeps crashing after Mesprit with my characters being the A Vulpix and shinx. With no cheats it’s also on an actual cartridge I downloaded too.. how can it be fixed? 

From what I could gather with my own tests I think it's most likely that the game ran out of available memory. If it's happening with a base game or cartridge it might be a hardware/emulator problem. It might be the cartridge itself if it's a third party one but I'm not too familiar with that stuff

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...