• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

SoulSilver hack: Pokémon MindCrystal

7
Posts
12
Years
    • Seen Aug 20, 2021
    Sorry i'm new to Hex Editing so excuse me if i don't know exactly how to find it lol

    i used this
    pS3IBts.png
    , then searched 25 63 (yes like that, with spaces and anything) until it found D20 something like here
    fFefyb6.png
     
    41
    Posts
    9
    Years
    • Seen Mar 3, 2021
    i used this
    pS3IBts.png
    , then searched 25 63 (yes like that, with spaces and anything) until it found D20 something like here
    fFefyb6.png

    i got it dude. thanks so much for your help :) i got the 60 fps on platinum and sacred gold.
     
    50
    Posts
    8
    Years
    • Seen Mar 3, 2019
    Is there anywhere I can find a full list of the changes made to pokemon? Also, is there a location guide for pokemon?
     
    53
    Posts
    9
    Years
    • Seen Aug 26, 2022
    Since nowadays everyone and their brother's hack seems to feature the Items chaining, as well as Repels chaining by default, those are going to be implemented in the next revision:

    Script:
    Code:
    ===scr_65
    Fanfare 0x5dc
    Lockall
    Message 0x75
    0031
    Closemsgonkeypress
    Releaseall
    End
    
    ===scr_66
    Fanfare 0x5dc
    Lockall
    Message 0x76
    0031
    Closemsgonkeypress
    Releaseall
    End
    
    ===scr_67
    Fanfare 0x5dc
    Lockall
    Message 0x77
    0031
    Closemsgonkeypress
    Releaseall
    End
    
    ===scr_68
    Fanfare 0x5dc
    Lockall
    Message 0x78
    OpenLowScreen
    OpenLowYesNoBox 0x800c
    CloseLowScreen
    If 0x800c 0x1
    COMPARELASTRESULT 0x1 func_153
    Setvar 0x8004 0x4f
    Setvar 0x8005 0x1
    TakeItem 0x8004 0x8005 0x800c
    SetvarHero 0x0
    Message 0x7b
    Fanfare 0x5ff
    0031
    Closemsgonkeypress
    Releaseall
    End
    
    ===scr_69
    Fanfare 0x5dc
    Lockall
    Message 0x79
    OpenLowScreen
    OpenLowYesNoBox 0x800c
    CloseLowScreen
    If 0x800c 0x1
    COMPARELASTRESULT 0x1 func_153
    Setvar 0x8004 0x4c
    Setvar 0x8005 0x1
    TakeItem 0x8004 0x8005 0x800c
    SetvarHero 0x0
    Message 0x7c
    Fanfare 0x5ff
    0031
    Closemsgonkeypress
    Releaseall
    End
    
    ===scr_70
    Fanfare 0x5dc
    Lockall
    Message 0x7a
    OpenLowScreen
    OpenLowYesNoBox 0x800c
    CloseLowScreen
    If 0x800c 0x1
    COMPARELASTRESULT 0x1 func_153
    Setvar 0x8004 0x4d
    Setvar 0x8005 0x1
    TakeItem 0x8004 0x8005 0x800c
    SetvarHero 0x0
    Message 0x7d
    Fanfare 0x5ff
    0031
    Closemsgonkeypress
    Releaseall
    End
    
    ==func_153
    Closemsgonkeypress
    Releaseall
    End
    ASM:
    Code:
    @Use selected item:
    xrpl_02078456:
        NOP
        LDR     R0, =ItemQuantity
        STRH    R1, [R0]
        CMP     R1, #0
        MOVNE   R1, #1
        STRH    R1, [R0, #2]
        MOV     R1, #0
        STR     R1, [R0, #4]
        LDR     R1, [SP, #8]
        LDRH    R0, [R1, #2]
        BX      LR
    
    
    @Chain items:
    xrpl_0207903C:
        NOP
        LDR     R5, =ItemQuantity
        LDRH    R1, [R5, #4]
        CMP     R1, #0
        LDR     R1, [R4]
        BNE     .Return
        LDRH    R1, [R5, #6]
        CMP     R1, #0
        LDR     R1, [R4]
        BNE     .Return
        CMP     R1, #5              @Use item
        CMPNE   R1, #0x18           @Use move-related items
        BEQ     .Check
        CMP     R1, #0x20
        BNE     .Return
        LDRH    R1, [R5, #2]
        CMP     R1, #5
        CMPNE   R1, #0x18
        MOV     R1, #0
        STR     R1, [R5]
        LDR     R1, [R4]
        MOVEQ   R1, #4
        CMP     R1, #0x20
        BEQ     .Return
        STRH    R1, [R5, #2]
        MOV     R5, R0
        ADD     LR, LR, #0xBC
        STMFD   SP!, {R4, LR}
        LDR     LR, =0x207C6BF
        BX      LR
    .Check:
        MOV     R1, #1
        STRH    R1, [R5, #8]
        LDRH    R1, [R5, #2]
        CMP     R1, #1
        LDR     R1, [R4]
        STREQH  R1, [R5, #2]
    .Return:
        MOV     R5, R0
        BX      LR
        
    xrpl_0207C8BA:
        NOP
        LDR     R1, [R4, R0]
        LDR     R0, =ItemQuantity
        LDRH    R0, [R0, #2]
        CMP     R0, #0
        BEQ     .End
        LDR     R0, =ItemQuantity
        LDRH    R0, [R0]
        CMP     R0, #0
        MOVEQ   R0, #0xA
        STREQB  R0, [R1, #0x24]
    .End:
        MOV     R0, R1
        BX      LR
        
    xrpl_0207C8D4:
        NOP
        MOV     R1, #0x1D
        LDR     R2, =ItemQuantity
        LDRH    R0, [R2, #2]
        CMP     R0, #0
        BEQ     .End2
        LDRH    R0, [R2]
        CMP     R0, #0
        MOVEQ   R1, #0x21
    .End2:
        MOV     R0, R4
        MOV     R2, #1
        BX      LR
        
    xrpl_0207C8F0:
        NOP
        LDR     R4, =ItemQuantity
        LDRH    R1, [R4, #8]
        CMP     R1, #1
        MOVEQ   R1, #5
        STREQB  R1, [R0]
        MOV     R1, #0
        STR     R1, [R4, #8]
        MOV     R0, #1
        LDRH    R1, [R4, #2]
        CMP     R1, #0
        BEQ     .End3
        LDRH    R1, [R4]
        CMP     R1, #0
        LDREQH  R0, [R4, #2]
        STREQ   R1, [R4]
    .End3:
        LDMFD   SP!, {R4, LR}
        BX      LR
    
    @Teach level-up moves properly:
    xrpl_02081F90:
        NOP
        MOV     R1, #1
        B       .FadeScreen
        
    @Teach TM/HM moves properly:
    xrpl_020823F8:
        NOP
        MOV     R1, #2
    .FadeScreen:
        LDR     R0, =ItemQuantity
        STRH    R1, [R0, #4]
        B       .ResetScreen
        
    @Move was not taught:
    xrpl_0208203C:
    xrpl_020824A4:
    @Move was taught:
    xrpl_02081E0E:
    xrpl_020821AA:
    xrpl_02082392:
        NOP
        LDR     R0, =ItemQuantity
        LDRH    R1, [R0, #4]
        CMP     R1, #2
        MOV     R1, #0
        STREQ   R1, [R0]
    .ResetScreen:
        MOV     R0, #0x1F
        MOV     R0, R0, LSL #6
        BX      LR
        
    @Check for Evolution:
    xrpl_02071236:
        NOP
        MOV     R0, R6
        LDR     R6, =ItemQuantity
        STRH    R0, [R6, #6]
        ADD     SP, SP, #0x44
        BX      LR
    
    
    @Chain repels:
    xrpl_021F9968_ov_0F:
        NOP
        STRB    R4, [R0]
        LDR     R1, =0xC08
        ADD     R1, R2, R1
        STRH    R5, [R1]            @Store Repel type into the .SAV
        LDMFD   SP!, {R4, LR}
        BX      LR
    
    xrpl_0224BB10_ov_02:
        NOP
        LDR     R1, =PseudoStack
        STR     R0, [R1, #8]
        LDRB    R1, [R0]
        CMP     R1, #0
        BX      LR
    
    xrpl_0224BB20_ov_02:
        NOP
        LDR     R1, =0xC08
        LDRH    R0, [R2, R1]
        CMP     R0, #0x4F           @Check for Repel
        CMPNE   R0, #0x4C           @Else check for Super Repel
        CMPNE   R0, #0x4D           @Else check for Max Repel
        BEQ     .Repel
        MOV     R0, #0
        STR     R0, [R2, R1]
        LDR     R1, =0x818          @Default Script
        B       .Return2
    .Repel:
        LDR     R1, =PseudoStack
        STR     R3, [R1]
        STR     R4, [R1, #4]
        LDR     R1, =0x644
        MOV     R3, #0
        ADD     R4, R2, R1
    .LoopRepel:
        LDRH    R1, [R4]
        CMP     R1, #0
        BEQ     .NoMatch
        CMP     R1, R0
        BEQ     .Script
        ADD     R3, R3, #1
        ADD     R4, R4, #4
        CMP     R3, #0x50           @Number of item slots in the Items Pocket
        BCC     .LoopRepel
    .NoMatch:
        LDR     R1, =0x818          @No Repel Script
        LDR     R3, =0xC08
        CMP     R0, #0x4F
        MOVEQ   R0, #0x4B
        SUB     R0, R0, #0x4B
        ADD     R1, R0, R1          @Final no Repel Script
        MOV     R0, #0
        STR     R0, [R2, R3]
        B       .ResetStack
    .Script:
        LDR     R1, =0x81B          @Repel Script
        CMP     R0, #0x4F
        MOVEQ   R0, #0x4B
        SUB     R0, R0, #0x4B
        ADD     R1, R0, R1          @Final Repel Script
    .ResetStack:
        MOV     R0, #0
        LDR     R2, =PseudoStack
        LDR     R4, [R2, #4]
        LDR     R3, [R2]
        STR     R0, [R2]
        STR     R0, [R2, #4]
    .Return2:
        MOV     R0, R4
        BX      LR
        
    lrpl_0203FE32:
        NOP
        LDRB    R2, [R1]
        ADD     R1, R3, #1
        STR     R1, [R0, #8]
        CMP     R2, #0x4F           @Check for Repel
        CMPNE   R2, #0x4C           @Else check for Super Repel
        CMPNE   R2, #0x4D           @Else check for Max Repel
        BEQ     .RepelUse
        B       .Return3
    .RepelUse:
        SUB     R1, R1, #6
        LDRB    R0, [R1]            @Check if it is script instruction SetVar 0x8004 "Repel type"
        CMP     R0, #0x29
        BNE     .RepelUsed
        LDRB    R0, [R1, #1]
        CMP     R0, #0
        BNE     .RepelUsed
        LDRB    R0, [R1, #2]
        CMP     R0, #4
        BNE     .RepelUsed
        LDRB    R0, [R1, #3]
        CMP     R0, #0x80
        BNE     .RepelUsed
        LDR     R1, =PseudoStack
        LDR     R0, [R1, #8]
        CMP     R0, #0
        BEQ     .RepelUsed
        CMP     R2, #0x4F           @If Repel
        MOVEQ   R1, #0x64           @Store 100 steps
        CMP     R2, #0x4C           @If Super Repel
        MOVEQ   R1, #0xC8           @Store 200 steps
        CMP     R2, #0x4D           @If Max Repel
        MOVEQ   R1, #0xFA           @Store 250 steps
        STRB    R1, [R0]            @Store number of steps for Repel
    .RepelUsed:
        ADD     R1, R3, #1
    .Return3:
        MOV     R0, LR
        LDMFD   SP!, {LR}
        BX      R0
    
    
    .data
    .balign 2
    ItemQuantity:
        .hword  0x0
        .hword  0x0
        .hword  0x0
        .hword  0x0
        .hword  0x0
        .hword  0x0
        
    .balign 4
    PseudoStack:
        .word   0x0
        .word   0x0
        .word   0x0
    Is there anywhere I can find a full list of the changes made to pokemon? Also, is there a location guide for pokemon?
    https://www.pokecommunity.com/showpost.php?p=9662501&postcount=23
    As said in my post, I'm working on a far more detailed documentation.
     
    50
    Posts
    8
    Years
    • Seen Mar 3, 2019
    I think I may have found a game-breaking bug: when I enter the room with the electrodes, in Rocket's hideout, and I walk back to fight the Admin and Rocket Grunt with Lance, the game crashes as the battle starts...
     
    53
    Posts
    9
    Years
    • Seen Aug 26, 2022
    I think I may have found a game-breaking bug: when I enter the room with the electrodes, in Rocket's hideout, and I walk back to fight the Admin and Rocket Grunt with Lance, the game crashes as the battle starts...
    1°) Emulator and/or flashcard?
    2°) Do you have any cheat code enabled, regardless of the medium you're using?

    And, well, this is kind of surprising because I didn't change that map nor the event file associated to it.
    But I remember playtesting v2.0 on flashcard and that part of the storyline was fine, this might something to do with an ASM hack then.
     
    50
    Posts
    8
    Years
    • Seen Mar 3, 2019
    1°) Emulator and/or flashcard?
    2°) Do you have any cheat code enabled, regardless of the medium you're using?

    And, well, this is kind of surprising because I didn't change that map nor the event file associated to it.
    But I remember playtesting v2.0 on flashcard and that part of the storyline was fine, this might something to do with an ASM hack then.

    Emulator (Drastic). I don't have any cheats enabled (I'm not actually sure how to add them to be honest which is probably an issue for another day).

    I also tried taking off the fast foward option and taking my phone off of power saver in case it was because my phone wasn't able to handle the game (in case this is a thing? Is this a thing?) but it didn't help either

    EDIT: I transfered my save to my computer and used Desmume. I got a little futher into the battle, but then it froze just as my pokemon and Lance's pokemon are released.

    EDIT 2: I tried using an old version of the game and it worked (but its giving me issues when I try to change back to the intitial rom)
     
    Last edited:
    53
    Posts
    9
    Years
    • Seen Aug 26, 2022
    Emulator (Drastic). I don't have any cheats enabled (I'm not actually sure how to add them to be honest which is probably an issue for another day).

    I also tried taking off the fast foward option and taking my phone off of power saver in case it was because my phone wasn't able to handle the game (in case this is a thing? Is this a thing?) but it didn't help either

    EDIT: I transfered my save to my computer and used Desmume. I got a little futher into the battle, but then it froze just as my pokemon and Lance's pokemon are released.

    EDIT 2: I tried using an old version of the game and it worked (but its giving me issues when I try to change back to the intitial rom)

    Sorry for the late reply.

    The source of the problem is narc a/0/0/8, which contains most of the battle HUD including the battle HP templates.
    Something went wrong as I modified this narc since restoring the unmodified narc fixes the issue.

    I'll edit this post once I find something new.

    EDIT: The problem has been fixed, it was because the new HP templates were 8230 bytes uncompressed when they should cap at 4144 bytes, causing the graphics to overflow and subsequently causing the crash.
    I'll update the OP with an emergency update ASAP.
     
    Last edited:
    50
    Posts
    8
    Years
    • Seen Mar 3, 2019
    Sorry for the late reply.

    The source of the problem is narc a/0/0/8, which contains most of the battle HUD including the battle HP templates.
    Something went wrong as I modified this narc since restoring the unmodified narc fixes the issue.

    I'll edit this post once I find something new.

    EDIT: The problem has been fixed, it was because the new HP templates were 8230 bytes uncompressed when they should cap at 4144 bytes, causing the graphics to overflow and subsequently causing the crash.
    I'll update the OP with an emergency update ASAP.

    Thanks so much! You're the best. I just found an adamant absol so I'm hoping not to have to start a new game.
     
    53
    Posts
    9
    Years
    • Seen Aug 26, 2022
    OP updated with a link to v3.0.1.

    Thanks so much! You're the best. I just found an adamant absol so I'm hoping not to have to start a new game.
    You won't have to, no worries.
    Also since you're already at Mahogany Town, it means that you already defeated 6 Gym Leaders.
    Out of curiosity which one did you find the hardest to fight against?
     
    50
    Posts
    8
    Years
    • Seen Mar 3, 2019
    OP updated with a link to v3.0.1.


    You won't have to, no worries.
    Also since you're already at Mahogany Town, it means that you already defeated 6 Gym Leaders.
    Out of curiosity which one did you find the hardest to fight against?

    I'm trying to build a team with the new abilities, with the exception of togetic who I've included for the fairy type. So basically, I have beaten every gym leader with just togetic which, given the moves it learns, meant that Morty has given me the most trouble so far. That sableye with willo-wisp (and the ability that allows non-attacking moves to go first) gave me some trouble.
     
    53
    Posts
    9
    Years
    • Seen Aug 26, 2022
    I am playing the updated rom and the bug is still persisting: the game still crashes after the intro to the battle with the admin and the rocket grunt...
    Weird…

    I patched a ROM from the download link just to make sure that I did upload the right patch, and here are the results:
    _DeSmuMe: works
    _No$GBA Debugger: works
    _NDS* via R4i: works
    I'm not able to test for DraStic, however.

    *The ability to work on a NDS is by far the most important criterion for me because of its ability to act as a deal-breaker should the hack fail that test.
     
    50
    Posts
    8
    Years
    • Seen Mar 3, 2019
    Weird…

    I patched a ROM from the download link just to make sure that I did upload the right patch, and here are the results:
    _DeSmuMe: works
    _No$GBA Debugger: works
    _NDS* via R4i: works
    I'm not able to test for DraStic, however.

    *The ability to work on a NDS is by far the most important criterion for me because of its ability to act as a deal-breaker should the hack fail that test.

    I moved my save to Desmume, got passed the admin then moved my save back to Drastic. Everything is working again now. Thank you for the help!
     
    53
    Posts
    9
    Years
    • Seen Aug 26, 2022
    Its now telling me that my bag is full when I try to pick up a TM (TM 54)
    If you already have the TM54 in your bag, then it's normal, since it's part of the re-usable TMs feature.
    I take it you're in the Dark Cave, right? If that's the case then it's just that I didn't update the item yet.
    I do have a list of TMs that appear multiple times, those were relocated accordingly but somehow TM54 escaped my notice.
     
    50
    Posts
    8
    Years
    • Seen Mar 3, 2019
    If you already have the TM54 in your bag, then it's normal, since it's part of the re-usable TMs feature.
    I take it you're in the Dark Cave, right? If that's the case then it's just that I didn't update the item yet.
    I do have a list of TMs that appear multiple times, those were relocated accordingly but somehow TM54 escaped my notice.

    Yup, this was in the dark cave. Ok, perfect!
     
    66
    Posts
    7
    Years
    • Seen Oct 18, 2023
    Morty has given me the most trouble so far. That sableye with willo-wisp (and the ability that allows non-attacking moves to go first) gave me some trouble.

    Morty has a Prankster Sableye? I'm not looking forward to that. ;-;
     
    53
    Posts
    9
    Years
    • Seen Aug 26, 2022
    Morty has a Prankster Sableye? I'm not looking forward to that. ;-;
    Morty's Sableye in detail for the first match:
    Code:
    Level: 24
    Gender: ♂
    Ball: Poké Ball
    Item: Focus Sash
    Ability: Prankster
    Nature: Careful
    Move 1: Will-O-Wisp
    Move 2: Sucker Punch
    Move 3: Metal Burst
    Move 4: Recover
    There are ways to completely shut him down or at the very least put him at a disadvantage:
    _a Pokémon with the Ability Magic Bounce will severely cripple him as he burns himself with Will-O-Wisp (Espeon evolved from a Adaptability Eevee if you grind like crazy, most likely Natu* or Xatu at this stage of the story)
    _a Fire-type Pokémon will do well,
    _so does a Pokémon with the Ability Water Veil or Magic Guard**,
    _a Pokémon with the Ability Flash Fire works too (Cyndaquil's line, for example)

    *some Headbutt Trees in the Ruins of Alph hide Natu; since you can get Headbutt as soon as you catch a Ponyta on Route 46 you can try your luck and wait for a Magic Bounce Natu to appear.
    While Natu is part Psychic, it fares really well against Sableye (as long as you can play around Sucker Punch), even more so as a Xatu since it gets Air Slash as soon as it evolves plus you can buy the TM04 Calm Mind at Celadon Game Corner to teach Natu/Xatu the move.

    **The Odd Egg may hatch into a Magic Guard Cleffa (who has a 49.9904% at being shiny), you can soft-reset as many times as you want since the species and the PID is determined the moment you take the Odd Egg.
     
    Back
    Top