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
  #1076    
Old August 9th, 2018 (12:39 PM).
Super Versekr Dark Super Versekr Dark is offline
     
    Join Date: Jan 2017
    Gender: Male
    Posts: 17
    Quote:
    Originally Posted by Spherical Ice View Post
    To remove the black bar animation, cry and Pokémon sprite and all, that shows when you use a HM, do the following:

    Posting this here in case anyone else wants it.

    FR: 00 00 00 00 00 00 00 00 00 00 00 00 at x860C2.
    EM: 00 00 00 00 00 00 00 00 00 00 00 00 at xB8536
    Ruby: 00 00 00 00 00 00 00 00 00 00 00 00 at x88102
    Reply With Quote
      #1077    
    Old August 15th, 2018 (6:19 PM).
    Super Versekr Dark Super Versekr Dark is offline
       
      Join Date: Jan 2017
      Gender: Male
      Posts: 17
      I need help with this:


      I have been modifying the routine of Chacha Dinosaur, well I suppose that here they could help me to finish it since then I already have the pointers, I do not know if they can help me and in that way we help rom hackers of ruby;)

      EV-enhancing items (Power Items)

      Spoiler:
      .text
      .align 2
      .thumb
      .thumb_func

      Main:
      push {r2}
      mov r0, r8 /*Load pokemon slot no*/
      mov r1, #0xC
      mov r2, #0x0
      bl Decrypter /* Load pokemon's item */
      lsl r0, r0, #0x10
      lsr r0, r0, #0x10
      pop {r2} /* Restore Pokerus Factor*/
      cmp r0, #0xAF
      beq EnigmaBerry
      add r3, r0, #0x0
      bl GetItemEffect /* Get Held Item's Effect Byte*/
      lsl r0, r0, #0x18
      lsr r0, r0, #0x18
      cmp r0, #0x18
      bne NoPowerItem
      add r0, r3, #0x0
      bl GetSecondEffectByte
      lsl r0, r0, #0x18
      lsr r0, r0, #0x18
      cmp r0, #0x0
      beq MachoBrace
      add r1, r6, #0x1 /*Load a Power Item's Secondary Effect Byte*/
      cmp r1, r0 /*Match items*/
      bne NoPowerItem /*No Power Item or No Match for that particular stat*/
      lsl r2, r2, #0x2
      add r4, r4, r2 /* Add 4 EVs or 8 (due to Pokerus) */
      NoPowerItem:
      ldr r3, =0x0803FFB9
      bx r3

      EnigmaBerry:
      ldr r3, =0x0803FF6F
      bx r3

      MachoBrace:
      ldr r3, =0x0803FFB5
      bx r3

      Decrypter:
      ldr r3, =0x08031D71
      bx r3

      GetItemEffect:
      ldr r1, =0x080A993D
      bx r1

      GetSecondEffectByte:
      ldr r1, =0x080A9961
      bx r1

      /*At 3FF58: 04 1C 54 43 00 49 08 47 XX+1 XX XX 08 00 00 00 00 00 00 00 00 00 00*/
      /*At 3FFDC && 3FFE2: FC to limit EV growth for each stat to 252 */
      Reply With Quote
        #1078    
      Old 4 Weeks Ago (8:49 AM). Edited 4 Weeks Ago 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,225
      00 00 00 00 00 00 00 00 00 00 00 00 at x82980 will enable wilds in the Tanoby Ruins chambers (maps 2.27 to 2.34) irrespective of if the Tanoby Key puzzle has been solved (i.e. flag 0x849 is set).

      At x3CA71C, there is a list of bytes which correspond to the Unown forme for each slot for the wilds of the Tanoby Ruins chambers. There are twelve bytes for each chamber, and six chambers in total. The bytes range from 00 to 1B (dec 27), and the first 26 (00 to dec 25) bytes follow the order of the alphabet (A-Z), with 1A (dec 26) being ! and 1B (dec 27) being ?. The byte order matches the probability listing for the Grass wilds of a map, so the 12th byte has a 1% chance of appearing, and so on.

      The routine at x829FC is how it determines which chamber to use (by subtracting 27 from the map number at x82A42), so you can change this to be whichever map number your first Unown chamber is on. The lsls around this area (x82A4A) are used to multiply the (map number - 27) by six, as there are six chambers, so change that arithmetic if you have a different number of chambers. This is why, as Squeetz points out here https://www.pokecommunity.com/showthread.php?p=9578348#post9578348, the game will crash if the map number is not between 27 and 34 when spawning Unown.
      __________________

      A Pokemon that is discriminated!
      Support squirtle and make it everyone's favourite.
      Reply With Quote
        #1079    
      Old 1 Week Ago (5:39 PM).
      kalarie kalarie is online now
         
        Join Date: Jun 2008
        Gender:
        Posts: 136
        I haven't seen this documented anywhere, so I thought I should post it here.

        Every Overworld Sprite has a data address with 0x24 bytes of data. (See for example https://www.pokecommunity.com/showthread.php?p=3674554#post3674554 or JPAN's Hacked Engine Manual)

        The 14th byte (That was a mystery) determines what kind of footprints will appear when walking on sand. The byte should be either value 0x00 (No Footprints), 0x01 (Footprints) or 0x02 (Bicycle). Any other value will cause the game to freeze when stepping on sand.

        To Illustrate:
        No Footprints (00).gif Footprints (01).gif Bicycle (02).gif
        Reply With Quote
          #1080    
        Old 1 Week Ago (10:06 AM).
        hjk321's Avatar
        hjk321 hjk321 is offline
           
          Join Date: Sep 2017
          Posts: 145
          Quote:
          Originally Posted by Shiny Quagsire View Post
          I actually found the other half of this that changes things to greyscale without doing any division or other crazy ASM. It's one RAM location:
          Code:
          0x02036E28
          So just wrote a 0x1 to that offset for greyscale, and 0x2 for sepia (I think...). To reset, set it to 0x0.
          Small thing and I know this is like 6 years late but if you put this in a mapscript you will need to set it as 01 (setmaptile script) or it won't change the colors before loading the map. Now even if people save and quit while the "shader" is active it will still be there when they come back, provided you make a decent map script that loads from a flag...
          __________________
          Reply With Quote
            #1081    
          Old 5 Days Ago (9:55 AM).
          AtecainCorp.'s Avatar
          AtecainCorp. AtecainCorp. is offline
          Rejishan awake...
             
            Join Date: Jun 2008
            Location: Takoabe Town (Region Thonsu)
            Age: 25
            Gender: Male
            Nature: Hardy
            Posts: 1,294
            POKEMON RUBY RELATED
            I found limiter related to pokemons in the Contests. So for rid off limiter from contests.
            Adress - B278C
            In there change 9b 01 to new number related to SLOTS. Not same Pokemon in dex. But Slots. That makes formes even working with contests. In my case for be sure about All pokes i repleace 9b 01 with ff 04... And prest. It works.

            __________________
            - My new Project comming Soon
            Reply With Quote
              #1082    
            Old 3 Days Ago (7:53 AM).
            Super Versekr Dark Super Versekr Dark is offline
               
              Join Date: Jan 2017
              Gender: Male
              Posts: 17
              Door 16x16 Pokémon Ruby:

              583DC: FF F7 D6 FF - 00 00 00 00

              583E6: FF F7 01 FD - 00 00 00 00

              Reply With Quote
                #1083    
              Old 3 Days Ago (9:30 AM). Edited 3 Days Ago by Super Versekr Dark.
              Super Versekr Dark Super Versekr Dark is offline
                 
                Join Date: Jan 2017
                Gender: Male
                Posts: 17
                Quote:
                Originally Posted by Wobbu View Post
                I found the offsets from Pokémon Emerald (BPEE) for changing the level of Pokémon when they hatch from eggs.

                Code:
                08070A38: XX 22
                08071414: XX 22
                081C3200: XX 21
                Thanks to Jambo51 for finding the FireRed offsets and making it easy to find the Emerald offsets.


                Pokémon Ruby:

                08042132: XX 22
                08042954: XX 22
                080A2050: XX 21

                Reply With Quote
                  #1084    
                Old 2 Days Ago (8:46 AM).
                0x575446 0x575446 is offline
                   
                  Join Date: Sep 2018
                  Posts: 3
                  I have tried to look for the the location of the amount of pokemon in both the Kanto and National dexes in Firered but I'm coming up blank. I want to be able to read it out of the ROM and use it in a data parser. I'm slightly overwhelmed by the sheer amount of data in the ROM. Any help would be appreciated.
                  I've tried looking through the forums, but I might've missed information about this.
                  Reply With Quote
                    #1085    
                  Old 2 Days Ago (8:50 AM).
                  Super Versekr Dark Super Versekr Dark is offline
                     
                    Join Date: Jan 2017
                    Gender: Male
                    Posts: 17
                    Quote:
                    Originally Posted by AkameTheBulbasaur View Post
                    The Great And Powerful Lucky Egg

                    The check for the Lucky Egg is at:

                    FireRed: 0x21DBA
                    Emerald: 0x4A67A

                    The byte that determines the experience multiplier is at:

                    FireRed: 0x21DC2
                    Emerald: 0x4A682

                    In the vanilla games, this byte has a value of 0x96, or 150 is decimal.

                    This gives a multiplier of 1.5.

                    So if you want to change the amount of experience the Lucky Egg gives you, just follow these three easy steps!

                    1. Choose a value that you want to multiply the gained experience by (It will have to be less than 2.5 without using ASM).

                    2. Take away the decimal point (so 1.5 would be 150, 2.0 would be 200).

                    3. Convert that value to hex (so 1.5 is 0x96, 2.5 is 0xFA) and put that value at the offset listed above.
                    The Great And Powerful Lucky Egg

                    The check for the Lucky Egg is at:

                    FireRed: 0x21DBA
                    Emerald: 0x4A67A
                    Ruby: 0x20386

                    The byte that determines the experience multiplier is at:

                    FireRed: 0x21DC2
                    Emerald: 0x4A682
                    Ruby: 0x2038E
                    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 5:21 AM.