The PokéCommunity Forums Fan Games ROM Hacking Research & Development
Quick Research & Development Thread

Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!


Reply
 
Thread Tools
  #726    
Old August 18th, 2015 (10:03 AM).
Le pug's Avatar
Le pug Le pug is offline
Creator of Pokémon: Discovery / Fat Kid
 
Join Date: Aug 2013
Location: Le bed
Age: 25
Gender: Male
Nature: Bold
Posts: 809
Quote:
Originally Posted by PurpleOrange View Post
some useful RAM stuff

emerald RAM offsets for map bank, map number, and x and y coordinates
0x02025A0C stores the current player map bank
0x02025A0D stores the current player map number
0x02025A08 stores the player's x coordinate
0x02025A0A stores the player's y coordinate

roaming legendary RAM offsets for their current location
RS: 0x02079303
FRLG: 0x0203F3AE
E: 0x0207BC86
good find on the legendary ram offsets but the previous map offsets have already been found and go hand in hand with the intro enhancement patch made by diegoisawesome found here: click
__________________




/// Pokémon: Discovery
/// Pokémon: Fat Kid
/// Tile Insertion Tutorial For AdvanceMap
/// Pokémon Emerald Specials Resource Thread
/// Pokémon Emerald Decapitalization Patch
/// Emerald Titlescreen Cloud Removal Tutorial
/// Tutorial For Fixing Any ROM-related Bug
Reply With Quote

Relevant Advertising!

  #727    
Old August 18th, 2015 (12:16 PM). Edited August 19th, 2015 by FamiliaWerneck.
FamiliaWerneck's Avatar
FamiliaWerneck FamiliaWerneck is offline
     
    Join Date: May 2015
    Location: São Paulo, Brasil
    Gender: Male
    Posts: 274
    I know it's nothing hard, nothing WOOOOW, but that's something and my first alone-research-area collaboration. This is for Fire Red:

    INFINITE SAFARI TIME


    Simply go to 0xA0F1A and replace the 01 38 there, for 00 38.

    The game will still give you 600 steps, but it won't decrease, so you will be there until you retire or run out of Safari Balls.
    When I figure out how to hide the step count in the start menu, I'll edit this post.
    __________________
    My Main Team:


    Reply With Quote
      #728    
    Old August 19th, 2015 (9:33 AM). Edited September 12th, 2017 by FamiliaWerneck.
    FamiliaWerneck's Avatar
    FamiliaWerneck FamiliaWerneck is offline
       
      Join Date: May 2015
      Location: São Paulo, Brasil
      Gender: Male
      Posts: 274
      Well, this is what I did, while learning how to do stuff like debugging and doing new mechanics changes in the game.
      Thanks to Touched-sensei, who helped me through the entire process. Thanks to daniilS and kleenexfeu, who also helped in the very end. This is for Fire Red:

      REUSABLE POKÉBALLS


      - First, go to 0xA1E30. Change 01 21 to 00 21 (with this, Pokéballs won't be deleted when you select them in your bag);
      - Now, find some free space and insert this routine there:
      Spoiler:
      Code:
      .text
      .align 2
      .thumb
      
      main:
      	bl deleteball
      	mov r9, r4
      	pop {r4-r7}
      	pop {r0}
      	bx r0
      
      deleteball:
      	ldr r0, var_800E
      	ldrh r0, [r0]
      	cmp r0, #0xC
      	bls pokeball
      
      notpokeball:
      	mov r1, #0
      	bl bagremoval	
      
      pokeball:
      	mov r1, #1
      
      bagremoval:
      	ldr r2, =(0x809A1D9)
      	bx r2
      	
      .align 2
      var_800E: .word 0x0203AD30

      Here's a compiled version:
      Spoiler:
      00 F0 04 F8 A1 46 F0 BC 01 BC 00 47 04 48 00 88 0C 28 02 D9 00 21 00 F0 01 F8 01 21 01 4A 10 47 30 AD 03 02 D9 A1 09 08

      This is the code that deletes the Pokéball;
      - Finally, go to 0x2D924 and paste write this "00 48 00 47 XX XX XX 08" there. It's a hook to the routine you just inserted. Change the XX XX XX for the pointer to the offset you placed the above routine. Remember to +1 the offset before changing it to a pointer.

      With this hack, you won't spend Pokéballs if you don't capture a wild Pokémon. I wanted to do it inspired in the anime.
      Again, simple, some people will think it's a broken functionality, but it will do well for that time when you encounter a shiny Pokémon with that one single Pokéball in your bag. =P
      Thanks again, everybody. Hope it's helpful.

      EDIT:
      Thanks to mbcn10ww, I fixed this hack.
      Unfortunately, I couldn't test it on the Safari area, as it's saying other saves are not compatible (but I don't know why, since I might have tried to use saves of games with other different hacks. It's been more than a semester I don't even see my games).
      Nevertheless, I tested it on regular places and areas, and it is still working. From the previous hack, I set a new condition before removing item from the bag.
      I call the removing routine anyway. The difference is that I pass on a 0 value as the number of items to be deleted if it's not a pokeball.
      The "cmp r0, #0xC" compares the last item used with the last pokeball index (Premier Ball). If it is lower or equal to that, it is a pokeball. Else, r1 receives 0 and no item should be deleted.
      Thanks for the heads up, mbcn10ww!
      If anyone can test the Safari part, jumping straight there, or anything, I would appreciate!
      __________________
      My Main Team:


      Reply With Quote
        #729    
      Old August 25th, 2015 (12:24 AM).
      chrunch chrunch is offline
       
      Join Date: Oct 2009
      Gender: Male
      Posts: 1,350

      Player Names in Firered


      At 0x46308C, there is a table which lists all the generated player names for when you leave the name entry screen blank. There are 19 entries for each gender, and the table is simply made up of pointers to strings for each possible name.

      Spoiler:
      Code:
      Offset	Name	Gender
      46308C	RED	(Male)
      463090	FIRE	(Male)
      463094	ASH	(Male)
      463098	KENE	(Male)
      46309C	GEKI	(Male)
      4630A0	JAK	(Male)
      4630A4	JANNE	(Male)
      4630A8	JONN	(Male)
      4630AC	KAMON	(Male)
      4630B0	KARL	(Male)
      4630B4	TAYLOR	(Male)
      4630B8	OSCAR	(Male)
      4630BC	HIRO	(Male)
      4630C0	MAX	(Male)
      4630C4	JON	(Male)
      4630C8	RALPH	(Male)
      4630CC	KAY	(Male)
      4630D0	TOSH	(Male)
      4630D4	ROAK	(Male)
      4630D8	RED	(Female)
      4630DC	FIRE	(Female)
      4630E0	OMI	(Female)
      4630E4	JODI	(Female)
      4630E8	AMANDA	(Female)
      4630EC	HILLARY (Female)
      4630F0	MAKEY	(Female)
      4630F4	MICHI	(Female)
      4630F8	PAULA	(Female)
      4630FC	JUNE	(Female)
      463100	CASSIE	(Female)
      463104	REY	(Female)
      463108	SEDA	(Female)
      46310C	KIKO 	(Female)
      463110	MINA 	(Female)
      463114	NORIE 	(Female)
      463118	SAI 	(Female)
      46311C	MIMI 	(Female)
      463120	SUYI 	(Female)
      463124	GREEN 	(Rival)
      463128	GARY 	(Rival)
      46312C	KAZ 	(Rival)
      463130	TORU 	(Rival)


      The name strings are all located at 0x1C574F if you wish to edit them without repointing. Note that there is also a string for LEAF which is not used in Firered.
      __________________
      Reply With Quote
        #730    
      Old August 29th, 2015 (1:57 PM).
      DoesntKnowHowToPlay's Avatar
      DoesntKnowHowToPlay DoesntKnowHowToPlay is offline
      Tiny Umbrella with Lots and Lots of Good
         
        Join Date: Jan 2012
        Posts: 258
        The roamer in FR is released into the world by special 0x129, at x141D9C.

        Its species is chosen from the bytes at x141caa, x141cb4, or x141cb8 (xF3, xF4, xF5 respectively) based on your starter choice (var x4013).

        Its level is dependent on the bytes at x141cc8 and x141cdc. I advise changing both to the same value; if only the former is changed it gets generated as a level 50 mon with incorrect HP.

        The ability to track the roamer in the dex is specific to Raikou, Entei, and Suicune. There is a table at x4642F4 that maps values of var x4013 to dex entries that should instead check the roamer. To make the dex acknowledge one roamer and disregard starter choice, change the first value in the table to your roamer's ID, and put four 00s at x13cb80.
        __________________

        Yet Another Fire Red Hack

        Physical/Special Split
        Reply With Quote
          #731    
        Old September 1st, 2015 (11:47 AM). Edited September 12th, 2015 by Dionen.
        Dionen's Avatar
        Dionen Dionen is offline
        hmmmm
           
          Join Date: Jun 2011
          Location: Brazil
          Gender: Male
          Nature: Quirky
          Posts: 277
          Quote:
          Originally Posted by Jaizu View Post
          Hi! If you are using a 32x32px overworld for the PALYER(NDS style) you will notice that it will look weird when you choose your name.



          To fix it just go to the direction 083A3BC0 and put 18 instead 10
          It makes the PLAYER and Gary overworld look like a 32x32px.



          Thanks and merits to daniilS, he literally made everything!
          Doing this will also fix the player's male reflection! :)
          __________________
          Reply With Quote
            #732    
          Old September 1st, 2015 (10:39 PM).
          Artemis64 Artemis64 is offline
             
            Join Date: Mar 2014
            Location: Singapore
            Gender: Male
            Nature: Hasty
            Posts: 86
            Quote:
            Originally Posted by Touched View Post
            Cap individual EVs to 252 instead of 255 Like in Gen VI
            Set 080439FC and 08043A02 to 0xFC (FireRed)
            To do the same in Emerald, place 0xFC at 0x6DC48 and 0x6DC4E.
            To elaborate for the people who don't understand what this is about, it is setting the limiters for the maximum number of EVs a Pokémon can have per stat. Because only four EVs translate into a single stat point, having 255 EVs per stat is pointless, as the last three EVs do not make any difference.
            Reply With Quote
              #733    
            Old September 9th, 2015 (12:30 PM). Edited February 13th, 2016 by C me.
            C me's Avatar
            C me C me is offline
            Creator of Pokemon League Of Legends
               
              Join Date: Jan 2014
              Age: 21
              Gender: Male
              Posts: 681
              Emerald move effects command table 0x31BD10.
              __________________
              Check out my hack: Pokemon League of Legends.
              Join the subreddit: https://www.reddit.com/r/PokemonLoL/
              If you would like to give me money for no reason you can do so here
              Reply With Quote
                #734    
              Old September 9th, 2015 (12:58 PM). Edited December 7th, 2015 by kleenexfeu.
              kleenexfeu kleenexfeu is offline
                 
                Join Date: Aug 2013
                Gender: Male
                Posts: 216
                We (almost) all know how BSP is useful, though it can't decompile every battlescript in the game because all the commands haven't been implemented.

                To change that, I documented on what kind of argument each commands take, I don't know yet what they all do, but we can at least decompile every script. There's still few command undocumented, I'll update the post as I find what argument they take, and what the other commands do.

                UPDATE: Now we know the arguments taken by every single command. The only issue is that BSP doesn't prevent infinite loop.
                Other than that, you can decompile every single Battlescript in the game.

                The commands :
                Spoiler:

                #command cmd1B 0x1B 0x1 "Byte or Bank" 0x1
                #command cmd23 0x23 0x1 "Byte or Bank" 0x1
                #command gotoandsomething 0x24 0x1 "ROM Address" 0x4
                #command cmd26 0x26 0x1 "Byte or Bank" 0x1
                #command cmd32 0x32 0x4 "AddresW" 0x4 "AdresW" 0x4 "AddresW" 0x4 "Byte" 0x1
                #command somethinghealcmd3B 0x3B 0x1 "Bank" 0x1
                #command cmd40 0x40 0x1 "Address" 0x4
                #command cmd44 0x44
                #command cmd54 0x54 0x1 "Hword" 0x2
                #command cmd55 0x55 0x1 "Word Value" 0x4
                #command cmd56 0x56 0x1 "Byte or Bank" 0x1
                #command cmd57 0x57
                #command checkiflearnmoveinbattle 0x59 0x3 "AddresW" 0x4 "AddresW" 0x4 "Bank or byte" 0x1
                #command cmd5A 0x5A 0x1 "Address" 0x4
                #command cmd5B 0x5B 0x1 "Address" 0x4
                #command cmd5E 0x5E 0x1 "Byte or Bank" 0x1
                #command cmd5F 0x5F
                #command cmd61 0x61 0x1 "Bank probably" 0x1
                #command cmd62 0x62 0x1 "Bank probably" 0x1
                #command cmd65 0x65 0x2 "Bank or byte or compare" 0x1 "Word Value" 0x4
                #command cmd66 0x66 0x3 "Byte, bank or compare" 0x1 "Byte bank cmp" 0x1 "Word" 0x4
                #command cmd67 0x67
                #command cmd68 0x68
                #command cmd69 0x69
                #command removeitem 0x6A 0x1 "Bank" 0x1
                #command cmd6B 0x6B
                #command cmd6C 0x6C
                #command cmd6D 0x6D
                #command cmd6E 0x6E
                #command cmd6F 0x6F 0x1 "Bank" 0x1
                #command cmd70 0x70 0x1 "Bank" 0x1
                #command cmd71 0x71
                #command somethingwithhelditem 0x72 0x1 "ROM Address" 0x4
                #command cmd74 0x74 0x1 "Bank" 0x1
                #command cmd75 0x75
                #command nop3 0x83
                #command koplussomethings 0x93 0x1 "AddresW" 0x4
                #command cmd98 0x98 0x1 "Byte" 0x1
                #command cmdAB 0xAB
                #command cmdBA 0xBA 0x1 "Address" 0x4
                #command beatupcalculation 0xC4 0x2 "ROM Address" 0x4 "ROM Address" 0x4
                #command cmdD4 0xD4 0x2 "Bank maybe" 0x1 "ROM Address" 0x4
                #command cmdE1 0xE1 0x1 "ROM Address" 0x4
                #command naturepowereffect 0xE1
                #command actualcastformswitch 0xE6
                #command castformswitch 0xE7
                #command pursuitwhenswitched 0xEC 0x1 "ROM Address" 0x4
                #command snatchmove 0xED
                #command catchpoke 0xF0
                #command capturesomethingF1 0xF1 0x1 "Address" 0x4
                #command capturesomethingF2 0xF2
                #command capturesomethingF3 0xF3 0x1 "Address" 0x4
                #command removehp 0xF4
                #command curestatutfirstword 0xF5
                #command cmdF6 0xF6
                #command activesidesomething 0xF7
                #command cmdF8 0xF8 0x1 "Bank" 0x1 // Emerald only
                #command callasm 0xF9 0x1 "Offset of routine" 0x4 // Custom command
                #command setword 0xFA 0x2 "Offset of address" 0x4 "Word Value" 0x4 // Custom command

                __________________
                Links for my work:
                Dynamic Emerald Attack ROMbase
                Arceus and Giratina Forms

                Touched's Emerald IDB + Battle stuff (probably outdated)
                Touched's Emerald IDB 6.8 + Battle stuff (probably outdated)
                Reply With Quote
                  #735    
                Old September 11th, 2015 (8:53 AM).
                FBI's Avatar
                FBI FBI is offline
                Free supporter
                 
                Join Date: Jan 2013
                Location: Unknown Island
                Gender: Male
                Posts: 1,848
                Quote:
                Originally Posted by FBI agent View Post
                Hey guys, I just wanted to post a warning about a PKSV bug which occurs quite commonly when testing out routines with callasm (perhaps it happens in XSE too, I haven't tried).

                Steps to produce bug:
                Write a routine and insert it into ROM
                Write Script with callasm which uses said routine, compile it
                Close PKSV

                - Normally around here, I give my routines a game test -

                Open a new PKSV and decompile the script
                Make modifications to the routine
                Make modification to the script and compile

                Result:
                Modification to the routine are undone. To avoid the bug you need to always reinsert the routine after compiling a script which uses the routine.
                Something more to add to this. PKSV can't compile money commands, except for showmoney. The coins seem to work, as well as decompiling scripts with these money commands work. However, DO NOT recompile scripts which have money commands. They will most likely break.

                In my eyes, with this bug and the ASM bug, PKSV has stopped becoming a viable script editor. XSE is bad too, but PKSV is currently worse. I recommend Red Alien atm. Of course, if you use PKSV for non-ASM projects and for non-money scripts it's still usable.
                __________________
                ...
                Reply With Quote
                  #736    
                Old September 11th, 2015 (7:47 PM).
                AkameTheBulbasaur's Avatar
                AkameTheBulbasaur AkameTheBulbasaur is offline
                Akame Marukawa of Iyotono
                   
                  Join Date: May 2013
                  Location: A place :D
                  Age: 20
                  Gender: Male
                  Nature: Gentle
                  Posts: 341
                  Quote:
                  Originally Posted by FBI agent View Post
                  Something more to add to this. PKSV can't compile money commands, except for showmoney. The coins seem to work, as well as decompiling scripts with these money commands work. However, DO NOT recompile scripts which have money commands. They will most likely break.
                  Adding on to the add-on, money commands CAN work, but you have to use the #raw format instead of the word format for them. I've gotten almost all of them to work using #raw 0x[number] except for "checkmoney" which I haven't gotten to work.
                  __________________
                  "The human sacrificed himself, to save the Pokemon. I pitted them against each other, but not until they set aside their differences did I see the true power they all share deep inside. I see now that the circumstances of one's birth are irrelevant; it is what you do with the gift of life that determines who you are." -Mewtwo
                  Reply With Quote
                    #737    
                  Old September 14th, 2015 (7:55 AM).
                  Crizzle's Avatar
                  Crizzle Crizzle is offline
                  Legend
                     
                    Join Date: Apr 2015
                    Location: USA
                    Age: 23
                    Gender: Male
                    Posts: 938
                    This post- http://www.pokecommunity.com/showpost.php?p=7209316&postcount=251
                    I know it works for FireRed, but can it be applied to Emerald as well?
                    __________________
                    Pokemon Savage Silver
                    Check out the crappy hacks that I made:

                    Credit to Corazon(or whatever he calls himself now) for banner.
                    Pokemon CAWPS
                    Pokemon Outlaw
                    Reply With Quote
                      #738    
                    Old September 21st, 2015 (8:30 AM). Edited September 21st, 2015 by FBI.
                    FBI's Avatar
                    FBI FBI is offline
                    Free supporter
                     
                    Join Date: Jan 2013
                    Location: Unknown Island
                    Gender: Male
                    Posts: 1,848
                    Quote:
                    Originally Posted by DoesntKnowHowToPlay View Post


                    XY added a feature that gives experience points when you catch pokemon. To duplicate this in FR, do the following:

                    Repoint the battle script at x1d9a42 to point to this:

                    2A 00 68 3D 02 02 05 00 50 9A 1D 08 60 0B 10 0B 01 F1 XX XX XX XX 2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 10 0F 01 3A 2E 82 3E 02 02 00 F2 10 0D 01 3A 2E 82 3E 02 02 00 F3 80 9A 1D 08 F0 13 54 E6 3F 08 12 40 00 28 81 9A 1D 08

                    where XX XX XX XX is a pointer to:

                    2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 10 0D 01 3A 2E 82 3E 02 02 00 F3 80 9A 1D 08 F0 13 54 E6 3F 08 12 40 00 28 81 9A 1D 08

                    To let the player's mons evolve from this experience, replace the bytes at x15A68 with A1 5A 01 08.

                    Edit: Changed the scripts, I assumed they cut off earlier than they actually did. Should work with full party+no nickname now.
                    Quote:
                    Originally Posted by lsmash View Post
                    I combined my work with the one from Doesnt. As a result, there are less bytes to write into freespace.
                    So, here's what to do to give exp points when you catch a pokemon:
                    1-The bytes to put into freespace: 2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 F1 63 9A 1D 08 28 58 9A 1D 08

                    2-The bytes to replace at 1D9A53: 41 XX XX XX 08 (XX = pointer to the code above).

                    3-Just like Doesnt wrote earlier, replace the bytes at 15A68 with A1 5A 01 08.

                    It should work without problems, as I tested it before posting.

                    Thanks to Doesnt for telling me how to fix a music issue.
                    Hi, I think both of these solutions ONLY work if the Pokemon is not in the Pokedex already. Was that the intention? If not can someone confirm they've made it work for a Pokemon they've already caught and are in the dex?


                    EDIT:
                    Well, even if it is just me (which it isn't going to be looking at this code), it's pretty big of an issue in my eyes. I did a little bit of digging around, and figured out the source. I thought I'd post the fix here.

                    Replace the bytes at 0x2D990 with:
                    00 49 08 47 C7 D9 02 08
                    __________________
                    ...
                    Reply With Quote
                      #739    
                    Old September 21st, 2015 (11:53 AM).
                    AkameTheBulbasaur's Avatar
                    AkameTheBulbasaur AkameTheBulbasaur is offline
                    Akame Marukawa of Iyotono
                       
                      Join Date: May 2013
                      Location: A place :D
                      Age: 20
                      Gender: Male
                      Nature: Gentle
                      Posts: 341
                      Quote:
                      Originally Posted by FBI View Post
                      Hi, I think both of these solutions ONLY work if the Pokemon is not in the Pokedex already. Was that the intention? If not can someone confirm they've made it work for a Pokemon they've already caught and are in the dex?
                      It works just fine for me when I catch Pokemon I already caught before. I don't know if other people have had the same problem. I'd keep the fix up just in case other people had the same problem as you. Maybe I just got lucky.
                      __________________
                      "The human sacrificed himself, to save the Pokemon. I pitted them against each other, but not until they set aside their differences did I see the true power they all share deep inside. I see now that the circumstances of one's birth are irrelevant; it is what you do with the gift of life that determines who you are." -Mewtwo
                      Reply With Quote
                        #740    
                      Old September 21st, 2015 (2:43 PM). Edited September 21st, 2015 by FBI.
                      FBI's Avatar
                      FBI FBI is offline
                      Free supporter
                       
                      Join Date: Jan 2013
                      Location: Unknown Island
                      Gender: Male
                      Posts: 1,848
                      Quote:
                      Originally Posted by AkameTheBulbasaur View Post
                      It works just fine for me when I catch Pokemon I already caught before. I don't know if other people have had the same problem. I'd keep the fix up just in case other people had the same problem as you. Maybe I just got lucky.
                      I doubt it's luck. I'm using MrDS's ROM base and I'm not using the national dex. I don't think it has anything to do with my ASM edits or the DS ROM base. I'm thinking it might be a problem with the normal ROM base. If it's just me, then w/e :P

                      EDIT: Boys and girls. I did a +1 by accident and caused the bug. If you're having the same issue, don't +1 any of the offsets. This never happened btw <3
                      __________________
                      ...
                      Reply With Quote
                        #741    
                      Old September 25th, 2015 (1:14 AM).
                      tkim tkim is offline
                         
                        Join Date: May 2011
                        Posts: 188
                        Quote:
                        Originally Posted by Tlachtli View Post
                        I believe I've found an interesting bug with this. Under normal circumstances it works fine: you battle, catch, gain xp, display Pokedex entry:


                        However if you level up from that xp, it causes the Pokedex to go wonky:


                        EDIT: Found another small graphical bug, too. Learning a move on level-up after successfully catching a Pokemon will cause the wild Poke's sprite to re-appear after exiting the move learning screen. Unimportant in the long run, as the battle ends right after.
                        Does anybody know how to not make the captured wild Pokemon's sprite reappear after exiting the move-learning screen? Perhaps if one were to remove the wild pokemon's HUD from the battle screen after catching it? HUD of an enemy Pokemon gets removed when it is defeated..
                        Reply With Quote
                          #742    
                        Old September 30th, 2015 (6:29 PM). Edited October 1st, 2015 by Deokishisu.
                        Deokishisu's Avatar
                        Deokishisu Deokishisu is offline
                        Mr. Magius
                           
                          Join Date: Feb 2006
                          Location: If I'm online, it's a safe bet I'm at a computer.
                          Gender: Male
                          Nature: Relaxed
                          Posts: 859
                          This post is to make public some research I did trying to auto-decrypt the things that are encrypted with the security key and disable the DMA in Emerald based on the information in this post on doing the same to Firered. I believe I've also found where to disable the Pokemon Substructure Permutations as well, so that they will always be in the right order instead of shuffled around.

                          Before anything, I'd like to thank FBI, Touched, GoGo, and kleenexfeu for showing me how to find what I was looking for (FBI), actually finding the security key routine (GoGo), showing me how to verify what I did was working (Touched), and just talking me through some stuff and letting me bounce things off of them (basically everyone, but mostly kleenexfeu). Thanks guys! And of course, thanks to Sagiri for the original research.

                          To Automatically Decrypt Anything Encrypted with the Security Key in Emerald:
                          Head to 076CD6 in your hex editor. Change the 24 08 that is there to 00 24. Upon the next map refresh, everything encrypted by the security key will be decrypted and remain that way. Your money, for example, will now sit unencrypted at 02025E90.

                          To Disable the DMA in Emerald:
                          Head to 076BEE in your hex editor. Change the 04 40 that is there to 00 24. Upon the next map refresh, your DMA protected information will be moved to a static location and remain there permanently.

                          To Disable the Pokemon Substructure Permutations in Emerald:
                          Head to 076BEC in your hex editor. Change the 7C that is there to 00.

                          Incidentally, to disable the substructure permutations in Firered, head to 04C062 and change that 7C to 00 as well. Credits to Knizz's Firered.idb for that one, I'm posting it here because I haven't seen it anywhere other than the idb.

                          The New Static Locations in RAM:
                          All of these can be edited easily through the memory viewer now, none are encrypted or dynamically moved.
                          Spoiler:

                          You may also want to refer to this post on Bulbapedia.
                          Code:
                          [0x02024A54]    8b    Character name including terminator, padded to end with 0xFFs
                          [0x02024A5C]    1b    Gender (00/01 m/f)
                          [0x02024A5D]    1b    Unknown
                          [0x02024A5E]    2b    Trainer ID
                          [0x02024A60]    2b    Secret ID (halfword)
                          [0x02024A62]    2b    Playtime (hours)
                          [0x02024A64]    1b    Playtime (minutes)
                          [0x02024A65]    1b    Playtime (seconds)
                          [0x02024A66]    1b    Playtime (frames)
                          [0x02024A67]    1b    Unknown
                          [0x02024A68]    2b    Options
                          [0x02024B00]    4b    Security Key (Always 00 00 00 00 with the above changes)
                          
                          -------------------------------------------------------------------------
                          
                          [0x02025E90]    4b    Player's current money.
                          [0x02025E98]    200b  Player's PC Items (Structured as item index and quantity. As an example of what it should look like: 0D 01 03 02 0A 01 22 01 is 515 Devon Goods in slot one and 290 Contest Pass in slot two. This format goes on for the PC's 50 slots.)
                          [0x02025F60]    120b  Player's Item Pocket (Same structure as PC items. This format goes on for the Item Pocket's 30 slots.)
                          [0x02025FD8]    120b  Player's Key Items Pocket (Same structure as PC items, though you should leave the quantity at 1. This format goes on for the Key Items Pocket's 30 slots.)
                          [0x02026050]    64b   Player's Ball Pocket (Same structure as PC items. This format goes on for the Ball Pocket's 16 slots.)
                          [0x02026090]    256b  Player's TM/HM Pocket (Same structure as PC items. This format goes on for the TM/HM Pocket's 64 slots. An invalid TM/HM in this pocket, such as a Master Ball in the TM/HM Pocket, shows the move it teaches as a Normal-type move with --- Power and Accuracy and 0 PP. Trying to use it does nothing.)
                          [0x02026190]    184b  Player's Berry Pocket (Same structure as PC items. This format goes on for the Berry Pocket's 43 slots. Clicking "Show Tag" on an invalid berry, such as a Master Ball in the Berry Pocket, defaults to Cheri Berry's tag.)
                          Reply With Quote
                            #743    
                          Old October 4th, 2015 (9:31 PM). Edited October 4th, 2015 by Aruaruu.
                          Aruaruu Aruaruu is offline
                             
                            Join Date: Sep 2011
                            Gender: Male
                            Posts: 199
                            Been digging into the "easy-chat system" for Emerald and noting down what bytes make what word(s) and stuff like that. List is nowhere near done. Nor are they in any order.

                            They are mostly used in the Battle Frontier/Tents and Trainers Hill too so if you look up a trainers name from those places in a hex editor you could find the intro/win/lose quotes (12 bytes each, should be just after trainer name) and edit them if you really wanted to.
                            Not really useful but whatever.

                            Spoiler:
                            Code:
                            04 0C = ...
                            05 0A = YOUR
                            35 1A = LOOK
                            09 16 = SAYS
                            06 0A = YOU'RE
                            07 0A = YOU'VE
                            08 0A = MOTHER
                            09 0A = GRANDFATHER
                            0A 0A = UNCLE
                            0B 0A = FATHER
                            0C 0A = BOY
                            0D 0A = ADULT
                            0E 0A = BROTHER
                            0F 0A = SISTER
                            10 0A = GRANDMOTHER
                            11 0A = AUNT
                            12 0A = PARENT
                            13 0A = MAN
                            14 0A = ME
                            15 0A = GIRL
                            16 0A = BABE
                            17 0A = FAMILY
                            18 0A = HER
                            19 0A = HIM
                            1A 0A = HE
                            1B 0A = PLACE
                            1C 0A = DAUGHTER
                            1D 0A = HIS
                            30 1A = COMICS
                            2F 1A = FESTIVAL
                            08 02 = EGG
                            08 04 = COLOR
                            08 06 = IF
                            08 08 = HOW
                            00 02 = I CHOOSE
                            00 04 = DARK
                            00 06 = MATCH UP
                            00 08 = THANKS
                            01 08 = YES
                            02 08 = HERE GOES
                            03 08 = HERE I COME
                            04 08 = HERE IT IS
                            05 08 = YEAH
                            06 08 = WELCOME
                            07 08 = OI
                            08 08 = HOW DO
                            09 08 = CONGRATS
                            0A 08 = GIVE ME
                            0B 08 = SORRY
                            0C 08 = APOLOGIZE
                            0D 08 = FORGIVE
                            0E 08 = HEY, THERE
                            0F 08 = HELLO
                            10 08 = GOOD-BYE
                            11 08 = THANK YOU
                            12 08 = I'VE ARRIVED
                            13 08 = PARDON
                            14 08 = EXCUSE
                            15 08 = SEE YA
                            16 08 = EXCUSE ME
                            17 08 = WELL, THEN
                            18 08 = GO AHEAD
                            19 08 = APPRECIATE
                            1A 08 = HEY?
                            1B 08 = WHAT'S UP?
                            1C 08 = HUH?
                            1D 08 = NO
                            1E 08 = HI
                            1F 08 = YEAH, YEAH
                            20 08 = BYE-BYE
                            21 08 = MEET YOU
                            22 08 = HEY
                            23 08 = SMELL
                            24 08 = LISTENING
                            25 08 = HOO-HAH
                            26 08 = YAHOO
                            27 08 = YO
                            28 08 = COME OVER
                            29 08 = COUNT ON
                            29 0A = I AM
                            29 0C = AIYEEH
                            29 0E = ALSO
                            29 12 = DISASTER
                            29 14 = DIFFERENT
                            29 16 = EATS
                            29 18 = LIFE
                            29 1A = HEROINE
                            29 1C = THURSDAY
                            29 1E = RIGHT
                            2A 00 = GOLBAT
                            2A 01 = SEEDOT
                            2B 00 = ODDISH
                            2B 01 = NUZLEAF
                            2C 00 = GLOOM
                            2C 01 = SHIFTRY
                            2D 00 = VILEPLUME
                            2D 01 = NINCADA
                            2E 01 = NINJASK
                            2F 01 = SHEDINJA
                            30 01 = TAILLOW
                            31 01 = SWELLOW
                            31 04 = STATIC
                            32 01 = SHROOMISH
                            33 01 = BRELOOM
                            16 01 = GROVYLE
                            60 01 = GRUMPIG
                            90 01 = METAGROSS
                            99 01 = JIRACHI
                            9B 01 = CHIMECHO
                            03 02 = SAPPHIRE
                            02 02 = TRADE
                            01 02 = GOTCHA
                            09 02 = LINK
                            19 02 = SILVER
                            1A 02 = EMERALD
                            1C 00 = SANDSLASH
                            12 1A = COMPLETE
                            12 1C = ANOTHER
                            15 1C = WEDNESDAY
                            0F 1C = MONDAY
                            0E 1C = FRIDAY
                            05 1C = SOMETIME
                            07 0C = -
                            09 0C = UH-OH
                            19 0C = CRY
                            39 0C = LALALA
                            12 0C = WOW
                            13 0C = GIGGLE
                            01 0A = I
                            20 16 = KNOW
                            25 24 = THRASH
                            19 26 = MEGA KICK
                            00 27 = SWALLOW
                            66 26 = MIMIC
                            8C 26 = BARRAGE
                            42 24 = SUBMISSION
                            26 24 = DOUBLE-EDGE
                            27 24 = TAIL WHIP
                            00 28 = KTHX, BYE.
                            00 20 = WANDERING
                            2C 12 = EAT
                            0E 28 = LOSING
                            16 10 = WIN
                            18 26 = DOUBLE KICK
                            AF 24 = FLAIL
                            FB 26 = BEAT UP
                            01 27 = HEAT WAVE
                            07 26 = FIRE PUNCH
                            07 25 = FACADE
                            C8 24 = OUTRAGE
                            A4 26 = SUBSTITUTE
                            E7 24 = IRON TAIL
                            D5 26 = ATTRACT
                            B4 24 = SPITE
                            Reply With Quote
                              #744    
                            Old October 5th, 2015 (12:45 AM).
                            chrunch chrunch is offline
                             
                            Join Date: Oct 2009
                            Gender: Male
                            Posts: 1,350
                            If you've ever inserted a new map in Advance map, you might have noticed that you are unable to use fly on this map. The fix for this is simple: in the map header, swap to professional editing view using CTRL+H. Locate the byte in the image below, and if it is 00 change it to 01.



                            Note that the other bytes in your map header will likely be different to mine, this is the only one you have to be concerned about.
                            __________________
                            Reply With Quote
                              #745    
                            Old October 9th, 2015 (12:42 PM). Edited October 10th, 2015 by DoesntKnowHowToPlay.
                            DoesntKnowHowToPlay's Avatar
                            DoesntKnowHowToPlay DoesntKnowHowToPlay is offline
                            Tiny Umbrella with Lots and Lots of Good
                               
                              Join Date: Jan 2012
                              Posts: 258
                              Quote:
                              Originally Posted by Deokishisu View Post
                              To Disable the Pokemon Substructure Permutations in Emerald:
                              Head to 076BEC in your hex editor. Change the 7C that is there to 00.

                              Incidentally, to disable the substructure permutations in Firered, head to 04C062 and change that 7C to 00 as well. Credits to Knizz's Firered.idb for that one, I'm posting it here because I haven't seen it anywhere other than the idb.]
                              I have no idea what this is supposed to do but it appears to be something related to DMA, not Pokemon substructures.

                              At any rate, this inspired me to work out how to get rid of the encryption surrounding them (all offsets for FR):

                              To unscramble the order, write 00 20 00 00 00 00 at x3F94C. This will always put them in order 0, (growth, attacks, EVs, misc.).

                              To remove the XOR encryption used for them, put 00 00 at x3F92A, x3F930, x3F906, x3F90C.

                              To remove the checksum reads, allowing for easy memory editor usage to tweak values, put 0B E0 at x3FDA8 and 0E E0 at x40530.

                              To remove the checksum writes, effectively adding two more bytes to the Pokemon structure to be used for whatever you feel like, put 00 00 at x40AE6.

                              For obvious reasons, this will ruin existing saves, but makes memory editing and Pokemon hacking simpler in addition to adding two more bytes to the Pokemon struct.
                              __________________

                              Yet Another Fire Red Hack

                              Physical/Special Split
                              Reply With Quote
                                #746    
                              Old October 12th, 2015 (11:30 AM). Edited December 1st, 2015 by kleenexfeu.
                              kleenexfeu kleenexfeu is offline
                                 
                                Join Date: Aug 2013
                                Gender: Male
                                Posts: 216
                                Quote:
                                Originally Posted by DoesntKnowHowToPlay View Post
                                I have no idea what this is supposed to do but it appears to be something related to DMA, not Pokemon substructures.

                                At any rate, this inspired me to work out how to get rid of the encryption surrounding them (all offsets for FR):

                                To unscramble the order, write 00 20 00 00 00 00 at x3F94C. This will always put them in order 0, (growth, attacks, EVs, misc.).

                                To remove the XOR encryption used for them, put 00 00 at x3F92A, x3F930, x3F906, x3F90C.

                                To remove the checksum reads, allowing for easy memory editor usage to tweak values, put 0B E0 at x3FDA8 and 0E E0 at x40530.

                                To remove the checksum writes, effectively adding two more bytes to the Pokemon structure to be used for whatever you feel like, put 00 00 at x40AE6.

                                For obvious reasons, this will ruin existing saves, but makes memory editing and Pokemon hacking simpler in addition to adding two more bytes to the Pokemon struct.

                                Theorically, this should do the same for Emerald :

                                put 00 00 at 0x806A236, 0x806A23C, 0x806A25A and 0x806A260

                                put 00 20 00 00 00 00 at 0806A27C

                                0B E0 at 0x806A6D8, 0E E0 at 0x806ADFC

                                and 00 00 at 0x806B3E4


                                Thanks Doesnt

                                EDIT : I can confirm it works, edit the data of the pokemon is easier than ever!
                                __________________
                                Links for my work:
                                Dynamic Emerald Attack ROMbase
                                Arceus and Giratina Forms

                                Touched's Emerald IDB + Battle stuff (probably outdated)
                                Touched's Emerald IDB 6.8 + Battle stuff (probably outdated)
                                Reply With Quote
                                  #747    
                                Old October 17th, 2015 (4:00 AM). Edited October 21st, 2015 by jirachiwishmaker.
                                jirachiwishmaker's Avatar
                                jirachiwishmaker jirachiwishmaker is offline
                                   
                                  Join Date: Jul 2007
                                  Location: Forina
                                  Gender: Male
                                  Nature: Lonely
                                  Posts: 79
                                  Quote:
                                  Originally Posted by Turtl3Skulll View Post
                                  Increasing Max Money Amount
                                  Spoiler:
                                  You can now hold up to 999 999 999 money! That's nearly 1000 times more money!
                                  This was never added to the manual, but JPAN talked about adding this in a future release, i dunno if it was added as of version 1.1, but here it is anyways:
                                  This replaces 7 bytes, and here's how to do it:

                                  Spoiler:
                                  In a Hexeditor goto:
                                  0809fdd4 replace |3f 42 0f 00| with |ff c9 9a 3b|------------------' (999999 for 999999999)
                                  In the following offsets replace that one byte from |06| to |09| ----'(6 digit display for 9 digit display)
                                  0808a006
                                  0809fe52
                                  0809fe62

                                  Done, you should be able to have that much money now.
                                  For Emerald to Increase Max Money Amount to match BW version:
                                  Spoiler:
                                  You can now hold up to 9999999 money!

                                  In a Hexeditor do the following changes:
                                  At 0xE5188 replace 3F 42 0F 00 with 7F 96 98 00 (999999 for 9999999).
                                  At 0xC36EE, 0xE0C50, 0xE0E48, 0xE5238, 0xE5248, 0x1AD6AA and 0x1AD884 replace 06 with 07 (6 digit display for 7 digit display).
                                  At 0xE1118, 0xE5204 and 0x1ABD06 replace 26 with 20 (fix the 7 digit display problem).


                                  Credits:
                                  JPAN for the original research
                                  Turtl3skulll for writing the Fire Red's dummies tutorial
                                  jiangzhengwenjzw for helping me to fix the 7 digit display problem
                                  Reply With Quote
                                    #748    
                                  Old October 17th, 2015 (4:50 AM).
                                  PurpleOrange's Avatar
                                  PurpleOrange PurpleOrange is offline
                                  still don't know what I'm doing
                                     
                                    Join Date: Sep 2013
                                    Location: Littleroot Town (UK)
                                    Age: 20
                                    Gender: Male
                                    Posts: 363
                                    Quote:
                                    Originally Posted by jirachiwishmaker View Post
                                    For Emerald to Increase Max Money Amount to match BW version:
                                    Spoiler:
                                    You can now hold up to 9999999 money!
                                    This replaces 7 bytes, and here's how to do it:

                                    In a Hexeditor goto:
                                    080E5188 replace 3F 42 0F 00 with 7F 96 98 00 (999999 for 9999999)
                                    In the following offsets replace that one byte from 06 to 07 (6 digit display for 7 digit display)
                                    080C36EE
                                    080E5238
                                    080E5248

                                    Done, you should be able to have that much money now.


                                    Credits:
                                    JPAN for the original research
                                    Turtl3skulll for writing the Fire Red's dummies tutorial first
                                    i tried this but the pokemart still displays 6 figures, this makes items not sell for the right price etc.
                                    __________________

                                    Reply With Quote
                                      #749    
                                    Old October 17th, 2015 (5:49 AM).
                                    jirachiwishmaker's Avatar
                                    jirachiwishmaker jirachiwishmaker is offline
                                       
                                      Join Date: Jul 2007
                                      Location: Forina
                                      Gender: Male
                                      Nature: Lonely
                                      Posts: 79
                                      Quote:
                                      Originally Posted by PurpleOrange View Post
                                      i tried this but the pokemart still displays 6 figures, this makes items not sell for the right price etc.
                                      No, this increasement of max money amount actually means that to increase the player's holding money amount. And the max of the price amount of the items is at only 65535.
                                      Reply With Quote
                                        #750    
                                      Old October 17th, 2015 (6:36 AM).
                                      PurpleOrange's Avatar
                                      PurpleOrange PurpleOrange is offline
                                      still don't know what I'm doing
                                         
                                        Join Date: Sep 2013
                                        Location: Littleroot Town (UK)
                                        Age: 20
                                        Gender: Male
                                        Posts: 363
                                        Quote:
                                        Originally Posted by jirachiwishmaker View Post
                                        No, this increasement of max money amount actually means that to increase the player's holding money amount. And the max of the price amount of the items is at only 65535.
                                        sorry, i mean, when you're buying and selling an item, it will show the player's money in the top left, so it shows an the incorrect amount for the player's money
                                        __________________

                                        Reply With Quote
                                        Reply

                                        Quick Reply

                                        Join the conversation!

                                        Create an account to post a reply in this thread, participate in other discussions, and more!

                                        Create a PokéCommunity Account

                                        Sponsored Links
                                        Thread Tools

                                        Posting Rules
                                        You may not post new threads
                                        You may not post replies
                                        You may not post attachments
                                        You may not edit your posts

                                        BB code is On
                                        Smilies are On
                                        [IMG] code is On
                                        HTML code is Off

                                        Forum Jump


                                        All times are GMT -8. The time now is 11:21 PM.