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
  #601    
Old November 28th, 2014 (6:47 PM).
Lance32497's Avatar
Lance32497 Lance32497 is offline
LanceKoijer of Pokemon_Addicts
     
    Join Date: Aug 2014
    Location: Criscanto town-Ginoa Region xD
    Gender: Male
    Nature: Adamant
    Posts: 793
    Quote:
    Originally Posted by MrDollSteak View Post
    I've just got some very quick offsets for Pokedex hacking.

    I'm not sure whether it's already been posted, I don't think so, as I had to discover these on my own.

    I've found 2 limiters for the Kantodex that are quite useful, which when combined with Jambo51's already posted offsets, can allow for the Kantodex to act as a national dex.

    Even though Jambo already found the limiter for the Kantodex itself, it would still not display the correct seen/caught numbers as they were still limited to 150 as were the habitats.

    By changing the number 96 at the offset: 104BF2
    You can extend the limit to the seen/caught text. Eg. changing 96 to FA will allow for a max of 250 seen/caught Pokemon.

    By changing the number 97 at the offset: 106828
    You can extend the number of Pokemon that will be correctly featured in the habitat pages. Eg. changing 97 to FA will allow for the first 250 Pokemon in your pokedex to be displayed in the habitat pages before receiving the national dex.

    This can be helpful as it stops people from having to give the national dex at the start of the game.

    I'll just repost Jambo's limiters from his thread here

    0x10352C - mov r1, #0x97
    0x1035F6 - cmp r0, #0x96

    Just change those 2 bytes at that offset to the number of Pokemon you want in.
    how about if I want it 300 or 12C in hex...
    What would I change?
    Reply With Quote
      #602    
    Old November 28th, 2014 (11:00 PM).
    HidoranBlaze's Avatar
    HidoranBlaze HidoranBlaze is offline
       
      Join Date: Apr 2013
      Age: 22
      Gender: Male
      Posts: 253
      Quote:
      Originally Posted by Lance32497 View Post
      how about if I want it 300 or 12C in hex...
      What would I change?
      cmp rX, #0xYY will only work if YY is a byte. You're limited to 255 Pokemon in that sense. If you want more, you'll have to modify the routine so that it loads a halfword and compares against that.
      Reply With Quote
        #603    
      Old December 7th, 2014 (7:53 AM). Edited December 9th, 2014 by Danny0317.
      Danny0317's Avatar
      Danny0317 Danny0317 is offline
      Fluorite's back, brah
       
      Join Date: Jun 2013
      Location: Miami, FL
      Age: 18
      Gender: Male
      Nature: Hasty
      Posts: 1,070
      So, I was messing around with spriteface2, which doesn't seem to be very documented (at least not in Spherical Ice's online thing), and I got this (tested in EM, btw):

      Spriteface 2 documentation
      0 - face down
      1 - face down
      2 - face up
      3 - face left
      4 - face right
      5 - face down
      6 - face down
      7 - face up
      8 - face up
      9 - run nonstop facing down
      10- run nonstop facing down
      11- run nonstop facing up
      12- run nonstop facing left
      13- run nonstop facing right
      14- run nonstop facing down
      15- run nonstop facing down
      16- run nonstop facing up
      17- run nonstop facing up
      18- run nonstop facing down faster
      19- run nonstop facing down faster
      20- run nonstop facing up faster
      21- run nonstop facing left faster
      22- run nonstop facing right faster
      23- run nonstop facing down faster
      28- run nonstop facing down very fast
      29- run nonstop facing up very fast
      30- run nonstop facing left very fast
      30- run nonstop facing right very fast
      46- (only works on creatsprite of player) runs in place facing down
      47- (only works on creatsprite of player) runs in place facing up
      48- (only works on creatsprite of player) runs in place facing left
      49- (only works on creatsprite of player) runs in place facing right

      To use it, first you must use createsprite then spriteface2.
      __________________
      Reply With Quote
        #604    
      Old December 10th, 2014 (4:57 PM).
      DoesntKnowHowToPlay's Avatar
      DoesntKnowHowToPlay DoesntKnowHowToPlay is offline
      Tiny Umbrella with Lots and Lots of Good
         
        Join Date: Jan 2012
        Posts: 258
        In-game trades in FR are at 0x26CF8C. The scripts relating to them store very little information, and just index into this table. Each entry is 0x3C bytes, used as such:

        0x0 - Nickname, limited to ten characters + 0xFF.
        0xC - Half-word, ID of the NPC's pokemon.
        0xE - IVs, stored in HP/Atk/Def/Speed/SAtk/SDef order. One byte each.
        0x14 - An entire word dedicated to the ability bit.
        0x18 - NPC's trainer ID. Only the low bits are visible on the status screen.
        0x1C - Five bytes; four of them are 5 and one is 0x1E. Not sure what they do if anything.
        0x24 - Personality value; influences nature, gender, etc; more info here: http://bulbapedia.bulbagarden.net/wiki/Personality_value
        0x28 - Hold item.
        0x2A - 0x00 if the mon carries mail (only ZYNX has mail in FR), 0xFF otherwise.
        0x2B - Original trainer's name. Limited to seven characters + 0xFF.
        0x36 - 0x00 if original trainer is male, 0x01 if original trainer is female. Only visible in RSE.
        0x37 - Always 0xA. Not sure what it controls if anything.
        0x38 - Half-word, ID of the species the NPC is looking for.
        0x3A - Half-word, seems unused.
        __________________

        Yet Another Fire Red Hack

        Physical/Special Split
        Reply With Quote
          #605    
        Old December 12th, 2014 (8:36 PM).
        RichterSnipes's Avatar
        RichterSnipes RichterSnipes is offline
        *pew pew pew*
           
          Join Date: Oct 2011
          Location: USA
          Age: 25
          Gender: Male
          Nature: Modest
          Posts: 371
          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...
          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...
          I'm aware I'm kind of late to catch this, but I've caught a bug with this code. Everything works correctly, but if a Pokémon can learn a move on level up while it already knows four moves and you enter the move information screen, the captured Pokémon will reappear on screen after exiting the move information screen. It doesn't affect any functionality, but it is a notable occurrence.
          __________________
          My hack:
          Reply With Quote
            #606    
          Old December 13th, 2014 (8:11 PM).
          Shiny Quagsire's Avatar
          Shiny Quagsire Shiny Quagsire is offline
          I'm Still Alive, Elsewhere
             
            Join Date: May 2009
            Location: Hoenn Safari Zone
            Age: 20
            Gender: Male
            Nature: Jolly
            Posts: 700
            Quote:
            Originally Posted by Team Fail View Post
            Hate to basically draw this from the dead, but I've been looking at the routines for loading this, and I can't seem to find it. Has anyone been able to also adjust the trainer's name to small text as well as the rest of the menu? It's almost pointless to apply this if not all the text is uniform haha.
            My guess with the trainer's name is that it uses one of the text attributes which changes the font, since the text renderer applies all those attributes/colors/etc regardless of where it is. I might edit this post if I happen to find it but that's probably the issue here.
            __________________



            Reply With Quote
              #607    
            Old December 14th, 2014 (1:33 PM).
            Karjam's Avatar
            Karjam Karjam is offline
            AKA KarjamP
               
              Join Date: Dec 2006
              Location: Cape Town, South Africa
              Age: 23
              Gender: Male
              Posts: 25
              Someone on YouTube who goes under the username of "Pokechu22" had discovered a hidden debug function within Pokémon FireRed just by fiddling around with a glitch Pokémon.



              When he shared his discovery on Bulbapedia, someone pointed out that the "backup save memory" mentioned within this hidden debug function was also mentioned in a couple of places within the leaked debug copy of the German version of Pokémon Ruby, leading me realize that this is indeed a function related to debugging the game.

              Who knows? Perhaps there's more hidden debug features within the ROM that we don't know about.
              Reply With Quote
                #608    
              Old December 20th, 2014 (9:08 AM). Edited December 21st, 2014 by Spherical Ice.
              Spherical Ice's Avatar
              Spherical Ice Spherical Ice is online now
               
              Join Date: Nov 2007
              Location: Bristol, UK
              Age: 20
              Posts: 5,226
              Quote:
              Originally Posted by Chaos Rush View Post
              Here are some offsets for the Pokedex HUD:
              0x451F55 = X position of text list
              0x451F56 = Y position of text list
              0x451F5D = X position of Habitat picture
              0x451F5E = Y position of Habitat picture
              0x451F65 = X position of "Seen:__ Owned:__" box
              0x451F66 = Y position of "Seen:__ Owned:__" box
              0x451F61 = BG Palette number that habitat picture uses
              0x4520C8 = # of list entries on main pokedex page (National Pokedex enabled only)

              Mess around with the bytes at those offsets, allowing you to do stuff like this:
              Expanding on from this, I've found out some more about this area of the ROM (again, for FireRed):

              00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

              00451F50
              00451F60

              00 00 00 00 01 01 02 14 10 00 08 00 01 15 0B 08
              06
              01 48 01 01 15 02 09 09 00 78 01 FB 5E 41 08

              The above controls the size and positioning of various aspects of the Pokédex page, regardless of whether the National Pokédex has been activated or not.

              00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

              00451F60
              00451F70
              00451F80
              00451F90
              00451FA0
              00451FB0
              00451FC0
              00451FD0
              00451FE0
              00451FF0
              00452000
              00452010

              06 01 48 01 01 15 02 09 09 00 7B 01 FB 5E 41 08
              FD FF FF FF
              95 5E 41 08 09 00 00 00 E0 5D 41 08
              FD FF FF FF
              F7 5D 41 08 00 00 00 00 09 5E 41 08
              01 00 00 00
              18 5E 41 08 02 00 00 00 2D 5E 41 08
              03 00 00 00
              39 5E 41 08 04 00 00 00 46 5E 41 08
              05 00 00 00
              57 5E 41 08 06 00 00 00 6D 5E 41 08
              07 00 00 00
              7B 5E 41 08 08 00 00 00 88 5E 41 08
              FD FF FF FF
              A4 5E 41 08 0A 00 00 00 D5 5E 41 08
              0B 00 00 00
              DF 5E 41 08 0C 00 00 00 ED 5E 41 08
              0D 00 00 00
              B0 5E 41 08 FD FF FF FF C7 5E 41 08
              FE FF FF FF
              6C 1F 45 08 C1 2E 10 08 49 2F 10 08
              13 00 09 00 00 00 0C 04 12 30 01 02 FB 5E 41 08

              The above controls the Pokédex prior to the National Pokédex being activated.

              00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

              00452010
              00452020
              00452030
              00452040
              00452050
              00452060
              00452070
              00452080
              00452090
              004520A0
              004520B0
              004520C0
              004520D0

              13 00 09 00 00 00 0C 04 12 30 01 02 FB 5E 41 08
              FD FF FF FF
              95 5E 41 08 09 00 00 00 24 5F 41 08
              0E 00 00 00
              E0 5D 41 08 FD FF FF FF F7 5D 41 08
              00 00 00 00
              09 5E 41 08 01 00 00 00 18 5E 41 08
              02 00 00 00
              2D 5E 41 08 03 00 00 00 39 5E 41 08
              04 00 00 00
              46 5E 41 08 05 00 00 00 57 5E 41 08
              06 00 00 00
              6D 5E 41 08 07 00 00 00 7B 5E 41 08
              08 00 00 00
              88 5E 41 08 FD FF FF FF A4 5E 41 08
              0A 00 00 00
              D5 5E 41 08 0B 00 00 00 DF 5E 41 08
              0C 00 00 00
              ED 5E 41 08 0D 00 00 00 B0 5E 41 08
              FD FF FF FF
              C7 5E 41 08 FE FF FF FF 1C 20 45 08
              C1 2E 10 08 49 2F 10 08 14 00 09 00 00 00 0C 04
              12 30 01 02 02 C8 13 03 C8 8D 00 00 0A 00 D0 07

              The above controls the Pokédex after the National Pokédex is activated using special 0x16F.

              Hover over all of the colored bytes to find out what they do. Co-ordinates are colored in red, while dimensions are in blue. List items are grouped together by yellow highlighting. Pointers are colored magenta, while the list item "functions" are colored in "royal blue". Unformatted bytes are currently unknown.

              Note that Pokémon past 151 do not get loaded with the National Pokédex list "function" (0E 00 00 00) until the special is activated, and it otherwise functions like the Kanto Pokédex list "function" (09 00 00 00).

              It's also worth noting that all of the headers (e.g. 'POKéMON LIST') are just regular strings. To recreate the orange text and dark-orange background in XSE, use this (and replace NAME with whatever you want, obviously):

              Code:
              #org @string1
              = [darknavyblue_fr]\c\h03ÓNAME
              __________________

              A Pokemon that is discriminated!
              Support squirtle and make it everyone's favourite.
              Reply With Quote
                #609    
              Old December 22nd, 2014 (3:37 PM).
              Telinc1's Avatar
              Telinc1 Telinc1 is offline
              Weirdo Extraordinaire
                 
                Join Date: Jun 2013
                Location: Sofia, Bulgaria
                Gender: Male
                Nature: Bold
                Posts: 168
                Thanks to this post, I was able to find the part of the code that checks the badges for Surf and Waterfall. They're at 0x06D59C for Surf and at 0x06D5D0 for Waterfall. They're obviously stored as little endian. That's why the bytes at Surf's location are 24 08. Why is this important? Well, if we set those to flags that get set at the start of the game (0x33 = 33 00 is one, more in this thread), we can practically remove the badge checks for HMs with the following three steps:
                • Change the two bytes at 0x06D59C and 0x06D5D0 to the number of a flag that's set by the game start script - removes overworld badge checks for Surf and Waterfall (found using this post).
                • Write 01 20 00 00 00 00 00 00 00 00 00 to 0x124620 - removes HM checks from the menu (well known and found by karatekid552, source)
                • The overworld badge checks for Cut, Strength and Rock Smash in are in the scripts themselves. Just open up the script for any tree, boulder or rock and you'll see it.
                I personally think this is a great discovery. Of course, I all I did was stare at some bytes in a Hex Editor to find the offsets for the badges themselves, so I take absolutely no credit for this.
                Also, yes, I do realise it's a better idea to completely null out the call to the routine that checks flags, though I bet anybody who knows ASM could do it in seconds just by looking at the bytes.
                __________________

                Check out my hacks by clicking on the userbar!
                Check out my new website (this link now works!)!
                Reply With Quote
                  #610    
                Old December 24th, 2014 (2:51 AM). Edited December 24th, 2014 by Shiny Quagsire.
                Shiny Quagsire's Avatar
                Shiny Quagsire Shiny Quagsire is offline
                I'm Still Alive, Elsewhere
                   
                  Join Date: May 2009
                  Location: Hoenn Safari Zone
                  Age: 20
                  Gender: Male
                  Nature: Jolly
                  Posts: 700
                  If you want to stop the top help bar from showing up at all in the Town Map in Fire Red, just stub out the function at 080C4ED0 with a bx lr (70 47). This is useful if you maybe don't like the help menus or something, idk.

                  Also, if you want the Town Map to act like it would in a Pokemon Center (ie without the sliding animation), set 080A1CB0 and 080A1CDC to 1. Basically each offset calls the routine at 80BFF50 to set up the callbacks for the Town Map, thus also passing this argument handed down through r0. If it's set to 0, it does the sliding map animation. If it's set to 1, it acts like a wall map. Note that this map will not be able to view the additional regions like a normal map would.
                  __________________



                  Reply With Quote
                    #611    
                  Old December 28th, 2014 (10:29 AM).
                  FBI's Avatar
                  FBI FBI is offline
                  Free supporter
                   
                  Join Date: Jan 2013
                  Location: Unknown Island
                  Gender: Male
                  Posts: 1,866
                  Quote:
                  Originally Posted by Hiroshi Sotomura View Post
                  I'm still seeking what controls the HM checks at all, so I can reallocate what badge works for what move.

                  And despite Black/White advancing the scene, X/Y goes back to the tried and true checks. :( (That's not why I want to keep using badge checks, mind you.) Maybe we should stop trying to follow the leader here, haha.
                  I've done some research on this some time ago :o

                  First of all, all HMs have secondary flag checks if used via the BRM.

                  The badge checks for Cut, Strength, Rocksmash are done via scripts. The badge checks for waterfall and surf are done in two places, once in their respective scripts, and another in the routines themselves (those checks would be at 0x806D570 and 0x806D5B2 respectively). Finally flag checks for moves being used via the bottom right menu are at 0x812461C (flash, fly and others you decide to use via BRM).

                  The same flag check is used for all HMs, and changing that requires your own little snipplet of ASM. Right now it's doing something like this:
                  Code:
                  ldr r0, =(0x820)
                  add r0, r0, r4
                  bl checkflag
                  Where r4, is the current HM selected from a table. So that leaves two possible ways, 1) edit the order of the table at 0x845A788, or 2) edit the routine to change the value of r4 depending on what you want. I should also mention that r4's value at this point is determined at 0x81245C0.

                  Overall just editing the badges should be rather simple :D
                  __________________
                  ...
                  Reply With Quote
                    #612    
                  Old January 4th, 2015 (9:29 AM). Edited January 4th, 2015 by daniilS.
                  daniilS's Avatar
                  daniilS daniilS is offline
                  busy trying to do stuff not done yet
                     
                    Join Date: Aug 2013
                    Age: 19
                    Gender: Male
                    Posts: 409
                    Posted this in the Beginner's Lounge as a reply to a question, but figured it might as well go here:
                    Code:
                    .thumb
                    
                    main:
                    	push {r4-r5, lr}
                    	sub sp, #8
                    	ldr r4, [sp, #0x14]
                    	str r4, [sp, #4]
                    	str r3, [sp]
                    	mvn r5, r2
                    	cmp r5, #0x1
                    	bne next
                    	mov r2, r3
                    	mov r3, r4
                    	b finish
                    next:
                    	mov r3, r2
                    	mov r2, r1
                    finish:	
                    	mov r1, r0
                    	ldr r0, warp1
                    	bl +0x080551DC-0x0805538C
                    	add sp, #8
                    	pop {r4-r5, pc}
                    
                    .align 2
                    warp1:	.word 0x02031DBC
                    
                    /*insert at 0x5538C*/
                    /*with this routine enabled, if the third argument of the warp command is 0xFE, it will instead read the last two arguments as the map and warp ID. the arguments may be vars.*/
                    __________________
                    Reply With Quote
                      #613    
                    Old January 4th, 2015 (6:53 PM). Edited January 4th, 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
                      Quote:
                      Originally Posted by DoesntKnowHowToPlay View Post
                      In-game trades in FR are at 0x26CF8C. The scripts relating to them store very little information, and just index into this table. Each entry is 0x3C bytes, used as such:

                      0x0 - Nickname, limited to ten characters + 0xFF.
                      0xC - Half-word, ID of the NPC's pokemon.
                      0xE - IVs, stored in HP/Atk/Def/Speed/SAtk/SDef order. One byte each.
                      0x14 - An entire word dedicated to the ability bit.
                      0x18 - NPC's trainer ID. Only the low bits are visible on the status screen.
                      0x1C - Five bytes; four of them are 5 and one is 0x1E. Not sure what they do if anything.
                      0x24 - Personality value; influences nature, gender, etc; more info here: http://bulbapedia.bulbagarden.net/wiki/Personality_value
                      0x28 - Hold item.
                      0x2A - 0x00 if the mon carries mail (only ZYNX has mail in FR), 0xFF otherwise.
                      0x2B - Original trainer's name. Limited to seven characters + 0xFF.
                      0x36 - 0x00 if original trainer is male, 0x01 if original trainer is female. Only visible in RSE.
                      0x37 - Always 0xA. Not sure what it controls if anything.
                      0x38 - Half-word, ID of the species the NPC is looking for.
                      0x3A - Half-word, seems unused.
                      I'm taking an educated guess without actually looking into it, but I believe that one of those unknowns are values for the received Pokemon's contest stats. In the third gen, all in game trades (even in FR/LG) give Pokemon with some contest stats built in. I'm going to guess that the bytes at 0x1C are it, as there are 5 contest stats. The byte at 0x37 may be sheen.

                      Again, just a guess.

                      EDIT: There has to be more to that mail byte too. Where is Zynx's mail message stored?

                      EDIT2: According to this Bulbapedia article, Pokemon given in ingame trades have contest stats all at 5, save for one that's set at 30. This all but confirms that the bytes at 0x1C are the Pokemon's contest stats. It also says that all ingame trade Pokemon have a sheen of ten. The byte at 0x37 is then probably sheen like I thought, since it's always set at 0xA.
                      Reply With Quote
                        #614    
                      Old January 5th, 2015 (9:26 AM).
                      redriders180's Avatar
                      redriders180 redriders180 is offline
                      Mastermind of Pokemon Glazed
                         
                        Join Date: Jun 2010
                        Location: Path of Victory, Tunod
                        Gender: Male
                        Nature: Quirky
                        Posts: 540
                        I'm not sure if anybody's done any research on this in the past, but in BPRE, the branch for incenses in breeding starts at 0x08045FD2. At that point, R4 appears to contain an address to the Pokemon's species, and R6 and R2 contain the held items of the two Pokemon. More info in the spoiler.

                        Spoiler:
                        Code:
                        ROM:08045FD2                 LDRH    R0, [R4]
                        ROM:08045FD4                 CMP     R0, R7
                        ROM:08045FD6                 BNE     loc_8045FE4
                        ROM:08045FD8                 CMP     R6, #0xDD
                        ROM:08045FDA                 BEQ     loc_8045FE4
                        ROM:08045FDC                 CMP     R2, #0xDD
                        ROM:08045FDE                 BEQ     loc_8045FE4
                        ROM:08045FE0                 MOVS    R0, #0xCA
                        ROM:08045FE2                 STRH    R0, [R4]
                        ROM:08045FE4
                        ROM:08045FE4 loc_8045FE4                             ; CODE XREF: sub_8045FA0+36j
                        ROM:08045FE4                                         ; sub_8045FA0+3Aj ...
                        ROM:08045FE4                 LDRH    R1, [R4]
                        ROM:08045FE6                 MOVS    R0, 0x15E
                        ROM:08045FEA                 CMP     R1, R0
                        ROM:08045FEC                 BNE     loc_8045FFA
                        ROM:08045FEE                 CMP     R6, #0xDC
                        ROM:08045FF0                 BEQ     loc_8045FFA
                        ROM:08045FF2                 CMP     R2, #0xDC
                        ROM:08045FF4                 BEQ     loc_8045FFA
                        ROM:08045FF6                 MOVS    R0, #0xB7
                        ROM:08045FF8                 STRH    R0, [R4]
                        The checks themselves are extremely simple. R4 is loaded, and compared with Wynaut's index number (0x168) If it's not equal, move on to the next check (Azurill). It then compares both items with the index number of Lax Incense (0xDD). If either are equal, move on to the next check. If neither are equal, write the index number of Wobbuffet to R4. The check is nearly identical for Azurill, except for different indices of course.


                        It would be fairly simple to put a hook in the table and point to more checks.
                        __________________


                        I think I'm done with ROM hacking. I'll still pop in and visit, though.


                        Reply With Quote
                          #615    
                        Old January 10th, 2015 (2:41 PM).
                        daniilS's Avatar
                        daniilS daniilS is offline
                        busy trying to do stuff not done yet
                           
                          Join Date: Aug 2013
                          Age: 19
                          Gender: Male
                          Posts: 409
                          E0 at 0806D7C3 will disable all of poison's effects in the overworld.
                          __________________
                          Reply With Quote
                            #616    
                          Old January 10th, 2015 (3:21 PM).
                          Percy's Avatar
                          Percy Percy is online now
                          almost everyone is offended now
                           
                          Join Date: Sep 2014
                          Location: Philippines
                          Gender: Male
                          Nature: Quiet
                          Posts: 2,466
                          Quote:
                          Originally Posted by Chaos Rush View Post


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

                          Repoint the battle script at x2dbd84 to point to this:

                          2A 00 08 42 02 02 05 00 92 BD 2D 08 60 0B 10 0B 01 F1 XX XX XX XX 2E 90 44 02 02 00 2E AC 40 02 02 00 2E AD 40 02 02 00 23 00 10 0F 01 3A 2E 32 43 02 02 00 F2 10 0D 01 3A 2E 32 43 02 02 00 F3 C2 BD 2D 08 F0 13 7A C9 5C 08 12 40 00 28 C3 BD 2D 08

                          where XX XX XX XX is a pointer to:

                          2E 90 44 02 02 00 2E AC 40 02 02 00 2E AD 40 02 02 00 23 00 10 0D 01 3A 2E 32 43 02 02 00 F3 C2 BD 2D 08 F0 13 7A C9 5C 08 12 40 00 28 C3 BD 2D 08

                          To let the player's mons evolve from this experience, replace the bytes at x3DE7C with B5 DE 03 08.

                          credit obviously goes to DoesntKnowHowToPlay for doing this first on FireRed lol

                          EDIT: So apparently, as discovered by Tlachtli, if you level up from experience while catching a Pokémon that hasn't yet been recorded to the Pokédex, then the Pokédex screen will have the text displayed in the wrong X-position offset. I'll look into it eventually
                          Chaos, is this safe to use? Is the bug squashed or something?
                          __________________
                          <am i the only one here who likes Alola Ash more than Kalos Ash?>
                          Reply With Quote
                            #617    
                          Old January 12th, 2015 (2:14 PM).
                          GoGoJJTech's Avatar
                          GoGoJJTech GoGoJJTech is offline
                          (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
                           
                          Join Date: Nov 2012
                          Location: Earth
                          Age: 19
                          Gender: Female
                          Nature: Jolly
                          Posts: 2,475
                          In Fire Red, change the halfword at 21D94 (0x137) to a different song ID and it'll change the wild Pokemon defeated fanfare to another song. Example:

                          Changing 0x137 (Victory 2) to 0x12B (Battle 6) will allow you to hear the Champion's battle theme every time you defeat a Pokemon in the wild. Tickle yourself with this if you'd like.
                          __________________
                          I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
                          The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
                          Romhack.me Profile - Pokecommunity Profile - Youtube Channel

                          Support me at my site!
                          Pokémon Platinum Red and Blue
                          Reply With Quote
                            #618    
                          Old January 16th, 2015 (6:43 PM).
                          Lance32497's Avatar
                          Lance32497 Lance32497 is offline
                          LanceKoijer of Pokemon_Addicts
                             
                            Join Date: Aug 2014
                            Location: Criscanto town-Ginoa Region xD
                            Gender: Male
                            Nature: Adamant
                            Posts: 793
                            Quote:
                            Originally Posted by knizz View Post
                            For FireRed:
                            If you want to skip the intro: [0x080EC5D0]=0x08078915.
                            If you want to skip the intro+titlescreen: [0x080EC5D0]=0x0800C301.
                            If you want to skip the tutorial+oak:[list] [*][0x0800C4C4]=0x08056645[*][0x08054A68]=0x4C3C[*][0x08054A6A]=0x6820[*][0x08054A6C]=0x4900[*][0x08054A6E]=0xE001
                            I want to clarify something, so in 0x800c4c4 I'll insert 08 05 66 45?

                            Quote:
                            Originally Posted by knizz View Post
                            EDIT:
                            If you want to skip the intro+titlescreen:
                            • [0x080EC5D0]=0x08079255
                            • [0x080EC5C6]=0xB431
                            • [0x080EC5C8]=0x4700
                            So when these codes are inserted, there will be no titlescreen permanently?
                            It continues to Continue/New Game/Option part?
                            __________________
                            This signature has been disabled.
                            Scrollbar appears
                            Please review and fix the issues by reading the signature rules.

                            You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

                            Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.
                            Reply With Quote
                              #619    
                            Old January 20th, 2015 (12:28 AM). Edited January 20th, 2015 by Maverickp.
                            Maverickp Maverickp is offline
                               
                              Join Date: Nov 2014
                              Posts: 1
                              Does someone know the location of the amorphous blob graphics on which the player surfs on in FireRed? It looks like some kind of blue pokémon.
                              I know there is the answer for Emerald in this thread (p.22), but I'm looking for the FireRed offsets.

                              Edit: found it, it's at 0x396B08.
                              Reply With Quote
                                #620    
                              Old January 24th, 2015 (7:59 AM).
                              knizz's Avatar
                              knizz knizz is offline
                                 
                                Join Date: Aug 2007
                                Gender: Female
                                Posts: 192
                                Quote:
                                Originally Posted by Lance32497 View Post
                                I want to clarify something, so in 0x800c4c4 I'll insert 08 05 66 45? So when these codes are inserted, there will be no titlescreen permanently? It continues to Continue/New Game/Option part?
                                The bytes are reversed. So that's 45 66 05 08 at 0x800c4c4 (offset 0xc4c4 in the gba file)
                                It will permanently disable the start game menu. You can't resume games anymore, after that. You'll have to use the emulators quick saves for that.
                                __________________
                                Firered IDA 6.6 DB: https://www.dropbox.com/s/d856o3pyndyr5sr/firered.idb
                                VBA-M with lua scripting support
                                incomplete firered decompilation
                                Reply With Quote
                                  #621    
                                Old February 2nd, 2015 (11:03 AM).
                                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: 683
                                  So I was looking at disable's effect and was wondering where a number of things in the script were found.
                                  These are:
                                  - number of turns the effect lasts
                                  - target of the effect (can it affect the user, maybe both targets in a double battle)
                                  - why you can't disable more than one move (it has to store this information in the RAM, maybe there is one RAM offset and if it's taken the effect fails)

                                  Here's the script in Emerald offset 0x2D9507

                                  Spoiler:
                                  00 02 03 01 1C 9F 2D 08 00 00 A3 1C 9F 2D 08 09 0A 10 84 00 12 40 00 28 4E 8A 2D 08


                                  The actual disablelastusedattack is one byte i think A3. It points to 0x2D9F1C.

                                  Spoiler:
                                  39 20 00 33 7C 42 02 02 20 0F 12 40 00 28 4E 8A 2D


                                  I don't think the rest of the script is relevant.

                                  If you could change the things I mentioned above you could introduce cool new moves that would be so strong they would get disabled for a few turns. If you could make disable's effect not disappear when you switch out a Pokemon you could prevent a sweep from happening.

                                  I hope there is a way to change these things and they're not hardcoded.
                                  Reply With Quote
                                    #622    
                                  Old February 11th, 2015 (3:04 PM). Edited April 5th, 2015 by Navenatox.
                                  Navenatox's Avatar
                                  Navenatox Navenatox is offline
                                     
                                    Join Date: Jan 2015
                                    Location: Austria
                                    Age: 23
                                    Gender: Male
                                    Posts: 76
                                    Option presets

                                    I don't know if this has already been posted before but I'll share it anyway.

                                    Something that has always annoyed me about the games were the presets in the option menu. Every time I start a new game, the first thing I'm doing is change the options. So I did a little research on them and found out how you can change the preset values.

                                    Write "XX 20" at offset 0x5496C, where XX = [text speed] + [frame] * 8
                                    Text speed: 0 = slow, 1 = mid, 2 = fast
                                    Frame: 0 = type 1, 1 = type 2, etc.

                                    Write "XX 20" at offset 0x5499C, where XX = [sound] + [battle style] * 2 + [battle scene] * 4
                                    Sound: 0 = mono, 1 = stereo
                                    Battle style: 0 = shift, 1 = set
                                    Battle scene: 0 = on, 1 = off

                                    Write "XX" at offset 0x549A2, where XX = [button mode]
                                    Button mode: 0 = help, 1 = LR, 2 = L=A

                                    These offsets work for both FR and LG.

                                    Edit: Here are the offsets for Emerald:
                                    84354: XX 20 for text speed and frame
                                    84378: XX 20 for sound, battle style and battle scene
                                    84384: XX 20 D0 74 for button mode
                                    The XX values are the same as above.
                                    Reply With Quote
                                      #623    
                                    Old February 11th, 2015 (6:20 PM).
                                    Shiny Quagsire's Avatar
                                    Shiny Quagsire Shiny Quagsire is offline
                                    I'm Still Alive, Elsewhere
                                       
                                      Join Date: May 2009
                                      Location: Hoenn Safari Zone
                                      Age: 20
                                      Gender: Male
                                      Nature: Jolly
                                      Posts: 700
                                      OK, happy fun time again. So over on #GoGo Le Pug was curious as to how to get rid of Spinda's spots. Turns out the fix was easy:

                                      So in Fire Red one routine actively handle's doing Spinda's spots, located at 08043458. This routine does a few checks: First if it's Spinda, then it goes through each bit of the PID and extract info from that and does its thing on the sprite, adding 4 to a certain range of colors. To get rid of the Spinda check, simply write E0 to 08043475 for Fire Red, or 0806D681 for Emerald. Likewise, if you wanted to make every Pokemon have Spinda spots, just write 00 00 to 08043474 (FR) or 0806D680 (EM). Spinda's spots are located at 0825265C and 0825265E, interlaced I believe with two bytes for the smaller two dot designs and two bytes for the larger ones (maybe, I haven't fully looked into it), hence the 2 bytes difference between the two offsets. If anyone is curious on the actual dot placement stuff this is a nice read. Also gives you the plain dot designs.
                                      __________________



                                      Reply With Quote
                                        #624    
                                      Old February 15th, 2015 (2:23 AM). Edited February 15th, 2015 by PurpleOrange.
                                      PurpleOrange's Avatar
                                      PurpleOrange PurpleOrange is offline
                                      still don't know what I'm doing
                                         
                                        Join Date: Sep 2013
                                        Location: Littleroot Town (UK)
                                        Age: 21
                                        Gender: Male
                                        Posts: 365
                                        As sonic1 said earlier in this thread, the offset for the table that determines which pokemon are banned in the battle frontier in emerald is at x611C9A. there are 3 pointers to this table.

                                        the first pointer is at x1A3FCC, this seems to be used to see if you have enough non-banned pokemon in your party.

                                        the second pointer is at x1A418C, this seems to be used in the script that tells you which pokemon are banned

                                        the third pointer is at x1B8654, this seems to be used to see which pokemon are actually not able to enter

                                        so to add more just repoint the table at x611C9A, expand it (making sure it ends with FF FF) and put the pointer to the new table in reverse hex at the three offsets
                                        __________________

                                        Reply With Quote
                                          #625    
                                        Old February 19th, 2015 (3:08 PM).
                                        El Diabeetus's Avatar
                                        El Diabeetus El Diabeetus is offline
                                        Amateur Voice Actor / ROM Editor ('Hacker')
                                           
                                          Join Date: Jul 2006
                                          Age: 25
                                          Nature: Lonely
                                          Posts: 1,066
                                          I know some amount of page back, the help system could be removed but you needed to mess with the titlescreen. Is there a way to remove it without messing with the titlescreen function?
                                          __________________
                                          Hacks I'm currently working on (at a super slow pace):

                                          Chinpokomon Big/Small (would leave the titles, but apparently exceeded sig limit)

                                          Check my Japanese inspired Logo edits for Gens 1-7!:
                                          http://www.pokecommunity.com/showpost.php?p=9137003
                                          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
                                          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 4:43 AM.