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!

Ad Content
Reply
 
Thread Tools
  #776   Link to this post, but load the entire thread.  
Old November 22nd, 2015 (11:27 AM).
Telinc1's Avatar
Telinc1 Telinc1 is offline
Weirdo Extraordinaire
     
    Join Date: Jun 2013
    Location: Sofia, Bulgaria
    Gender: Male
    Nature: Bold
    Posts: 168
    Sorry for the double post, but this is something completely different and has nothing to do with the Safari Zone. I'm okay with it being merged though.
    I've found a couple of graphics offsets for FireRed's slot machines. Maybe I'll post the palette offsets too later.

    Code:
    0x084659D0 - The slot machine itself. Definitely uses multiple palettes.
    0x0846653C - Some Poké Ball looking thing. Gets decompressed when the slot machine loads, but I don't know if it's used there.
    0x08466620 - Combo images. Used for the little popup when you hit the right arrow. Width: 14, uses palette 8 from the background palettes
    0x08464A14 - The actual 32x32 slot images. Get loaded in the OAM. Width: 4, uses palette 2 from the sprite palettes
    0x0846506C - Clefairy down at the bottom. Width: 4, uses palette 5 from the sprite palettes
    0x08465544 - Bubble-looking things that I can't identify. Similarly to 0x0846653C, they get decompressed when the slot machine loads. Don't think they're used.
    By the way, this is everything that has do with LZ77 in the log file I extracted those offsets out of. Maybe it'll be useful to somebody.
    Spoiler:
    Code:
    LZ77UnCompWram: 0x084659d0,0x02006fe0 (VCOUNT=120)
    LZ77UnCompWram: 0x0846653c,0x02008130 (VCOUNT=152)
    LZ77UnCompWram: 0x084661d4,0x02004620 (VCOUNT=154)
    LZ77UnCompWram: 0x08466620,0x020081c0 (VCOUNT=14)
    LZ77UnCompWram: 0x08466998,0x02008a10 (VCOUNT=35)
    LZ77UnCompWram: 0x08464a14,0x0201c000 (VCOUNT=134)
    LZ77UnCompWram: 0x0846506c,0x0201c000 (VCOUNT=200)
    LZ77UnCompWram: 0x08465544,0x0201c000 (VCOUNT=19)

    __________________

    Check out my hacks by clicking on the userbar!
    Check out my new website (this link now works!)!
    Reply With Quote
      #777   Link to this post, but load the entire thread.  
    Old November 29th, 2015 (7:59 AM). Edited December 21st, 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: 366
      so I found this "table" in FireRed at 0x08466C58
      Code:
      13 14 27 29 FF FF FF 14 13 15 29 FF FF FF 15 14 16 FF FF FF FF 16 15 17 1B 2B
      FF FF 17 16 18 19 1A 1B 2B 18 17 19 1A 1D FF FF 19 17 18 1A 22 FF FF 1A 17 18
      19 1C 1E FF 1B 16 17 1C 2B FF FF 1C 1A 1B 1E FF FF FF 1D 18 1E FF FF FF FF 1E
      1C 1D 1F FF FF FF 1F 1E 20 FF FF FF FF 20 1F 21 FF FF FF FF 21 20 24 25 FF FF
      FF 22 19 23 FF FF FF FF 23 22 24 FF FF FF FF 24 21 23 25 FF FF FF 25 21 24 26
      FF FF FF 26 25 27 FF FF FF FF 27 13 26 FF FF FF FF 29 13 14 2A FF FF FF 2A 29
      14 FF FF FF FF 2B 16 17 1B FF FF FF 2C 2B 1B FF FF FF FF FF FF FF FF FF FF FF
      each byte (other than the FF's) refer to the map number of the possible route the roaming pokemon can be found on. however I can't seem to find any sort of pattern for it, so expanding it doesn't seem to be easy. also, it doesn't seem to have a byte for the map bank (03), could that mean the map bank is calculated somewhere else?
      __________________

      Reply With Quote
        #778   Link to this post, but load the entire thread.  
      Old November 30th, 2015 (6:27 PM). Edited December 1st, 2015 by Vendily.
      Vendily's Avatar
      Vendily Vendily is online now
       
      Join Date: Aug 2015
      Gender: Female
      Nature: Calm
      Posts: 803
      In PMD: Red Rescue, the tilemap that contains the letters and symbols in the game is located at 302088 and is 9E0 bytes long.
      This is a dump of the first tile, a #, that fingerprints the sheet.
      Code:
      00 00 00 00 10 11 11 00 11 17 17 01 71 77 77 01 11 17 17 01 71 77 77 01 11 17 17 01 10 11 11 00
      It appears to be formatted like this on a tile (Spaces separate pixels):
      Code:
      0 0 0 0 0 0 0 0
      0 1 1 1 1 1 0 0
      1 1 7 1 7 1 1 1
      1 7 7 7 7 7 1 0
      1 1 7 1 7 1 1 0
      1 7 7 7 7 7 1 0
      1 1 7 1 7 1 1 0
      0 1 1 1 1 1 0 0
      I have yet to find the palette.

      EDIT: I suspect the Palette is controlled by ASM because I can't even find it saved in the rom.
      There might be more tiles before and after but I'm not 100% sure about anything outside this range.

      EDIT 2: I think I found the beginning of the tile map at 302048 which is just a one pixel column of black on the left and the rest is the transparent green.
      Original:
      Code:
      03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00
      Decompiled:
      Code:
      3 0 0 0 0 0 0 0
      3 0 0 0 0 0 0 0
      3 0 0 0 0 0 0 0
      3 0 0 0 0 0 0 0
      3 0 0 0 0 0 0 0
      3 0 0 0 0 0 0 0
      3 0 0 0 0 0 0 0
      3 0 0 0 0 0 0 0
      There is this block-large section of 7s right after it which doesn't make sense.
      Original:
      Code:
      77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77
      Decompiled:
      Code:
      7 7 7 7 7 7 7 7
      7 7 7 7 7 7 7 7
      7 7 7 7 7 7 7 7
      7 7 7 7 7 7 7 7
      7 7 7 7 7 7 7 7
      7 7 7 7 7 7 7 7
      7 7 7 7 7 7 7 7
      7 7 7 7 7 7 7 7
      There is also a 48 20 30 at 147E5, the only instance of it but it's immediately followed by a 05 so I don't know if it's a pointer to the tilemap. There was no pointer to the # though.

      EDIT 3: Changed 48 20 30 to 48 20 40, there doesn't seem to be a visual effect. Conclusion: this is not a pointer (probably).
      __________________

      Reply With Quote
        #779   Link to this post, but load the entire thread.  
      Old December 4th, 2015 (10:16 AM).
      Telinc1's Avatar
      Telinc1 Telinc1 is offline
      Weirdo Extraordinaire
         
        Join Date: Jun 2013
        Location: Sofia, Bulgaria
        Gender: Male
        Nature: Bold
        Posts: 168
        I'll just point out two things.
        02036E58 contains the direction the player is facing. It's got the same key as 0x800C (1: down, 2: up, 3: left, 4: right), except that you can't change it (changing it will make it flip back to what it should be, so that makes me believe it's updated every frame) and it's also reliable. I haven't looked at it in a memory viewer, but 0x800C seems to behave funnily if you want to check the player's facing and not change it. Ergo, you should do something like comparefarbytetobyte 0x2036E58 0x2 instead of compare PLAYERFACING 0x2 in scripts.

        The second I haven't looked into a lot, so I'm not sure if it's got truth in it, but type 0x7 level scripts seem to run only on menu close and not when the map is loaded (AdvanceMap 1.92 says they also run on map load). Maybe someone can confirm/reject this?
        __________________

        Check out my hacks by clicking on the userbar!
        Check out my new website (this link now works!)!
        Reply With Quote
          #780   Link to this post, but load the entire thread.  
        Old December 4th, 2015 (10:58 AM). Edited December 9th, 2015 by FBI.
        FBI's Avatar
        FBI FBI is offline
        Free supporter
         
        Join Date: Jan 2013
        Location: Unknown Island
        Gender: Male
        Posts: 1,904
        Quote:
        Originally Posted by Telinc1 View Post
        I'll just point out two things.
        02036E58 contains the direction the player is facing. It's got the same key as 0x800C (1: down, 2: up, 3: left, 4: right), except that you can't change it (changing it will make it flip back to what it should be, so that makes me believe it's updated every frame) and it's also reliable. I haven't looked at it in a memory viewer, but 0x800C seems to behave funnily if you want to check the player's facing and not change it. Ergo, you should do something like comparefarbytetobyte 0x2036E58 0x2 instead of compare PLAYERFACING 0x2 in scripts.

        The second I haven't looked into a lot, so I'm not sure if it's got truth in it, but type 0x7 level scripts seem to run only on menu close and not when the map is loaded (AdvanceMap 1.92 says they also run on map load). Maybe someone can confirm/reject this?
        That's the npc_states data structure. Basically, the first entry is always the player, and then the next entries are NPCs around the player (they include NPCs offscreen until a certain distance). The advantage to using this instead of "PLAYER_FACING" is that the temporary variable 0x800C (which is player_facing) is only updated when the "A" button is pressed. So if you wanted to use it with a green script tile, you'd a random result. Knizz has some more indepth research about the npc_states data struct in his IDB and he also made a thread about it some years ago, if you're interested.

        For your inquiry about level script 0x7, I think they are all going to activate on map reload (just a guess). You can confirm by setting a break point at "08069940" with 0x7 as the only level script. See if it's breaking on the map reload/menu open-close :)

        edit:
        I thought I'd drop this here for archival purposes for anyone trying to do this:
        http://www.pokecommunity.com/showpost.php?p=9028130&postcount=4
        __________________
        ...
        Reply With Quote
          #781   Link to this post, but load the entire thread.  
        Old December 14th, 2015 (11:18 AM).
        C me's Avatar
        C me C me is offline
        Creator of Pokemon League Of Legends
           
          Join Date: Jan 2014
          Age: 22
          Gender: Male
          Posts: 683
          I'm going to post this here because I'm sick of working on it and it should be so simple.

          I have been trying to find the location of the routine called when you use fly from the pokemon menu in Emerald. FBI found it at 0xC4EF8 in FireRed and a simple callasm script makes it work perfectly.

          After spending hours looking for byte similarities between FireRed and Emerald I found nothing of value.
          So then I moved on to making breakpoints for 'FLY', 'FLY to where?' and for cities names as well as breakpoints for the map tilesets and tilemaps, after hours the thing I keep getting is that it's around 0x124600.

          KDS spent some time helping me out and he pointed out the routine at 0x124690.

          Callasming 0x124691 produces a black screen, every other routine I've tried does nothing. Maybe something has to be set before the callasm?

          That's all the information I have, I would really appreciate help. Thank You
          Reply With Quote
            #782   Link to this post, but load the entire thread.  
          Old December 14th, 2015 (3:10 PM).
          FBI's Avatar
          FBI FBI is offline
          Free supporter
           
          Join Date: Jan 2013
          Location: Unknown Island
          Gender: Male
          Posts: 1,904
          Quote:
          Originally Posted by C me View Post
          I'm going to post this here because I'm sick of working on it and it should be so simple.

          I have been trying to find the location of the routine called when you use fly from the pokemon menu in Emerald. FBI found it at 0xC4EF8 in FireRed and a simple callasm script makes it work perfectly.

          After spending hours looking for byte similarities between FireRed and Emerald I found nothing of value.
          So then I moved on to making breakpoints for 'FLY', 'FLY to where?' and for cities names as well as breakpoints for the map tilesets and tilemaps, after hours the thing I keep getting is that it's around 0x124600.

          KDS spent some time helping me out and he pointed out the routine at 0x124690.

          Callasming 0x124691 produces a black screen, every other routine I've tried does nothing. Maybe something has to be set before the callasm?

          That's all the information I have, I would really appreciate help. Thank You
          I don't have an EM ROM so I can't confirm some of the ROM data, but have you tried calling it's parent 081B5470? The one you seemed to try callasm-ing is a task.
          __________________
          ...
          Reply With Quote
            #783   Link to this post, but load the entire thread.  
          Old December 14th, 2015 (3:50 PM). Edited December 17th, 2015 by C me.
          C me's Avatar
          C me C me is offline
          Creator of Pokemon League Of Legends
             
            Join Date: Jan 2014
            Age: 22
            Gender: Male
            Posts: 683
            Quote:
            Originally Posted by FBI View Post
            I don't have an EM ROM so I can't confirm some of the ROM data, but have you tried calling it's parent 081B5470? The one you seemed to try callasm-ing is a task.
            It justs freezes the game, sadly that doesn't work.

            Edit: Don't know why it never occured to me to find a pointer to the routine, there is a pointer for 0x124691 at 0x1B5620.
            Oh that's where 081B5470 came from, didn't think the routine would be that big.

            Edit2: If I set a breakpoint at 08124691, 081B5620 or 081B5470 the game doesn't break when I use fly. Am I doing it wrong or does that mean it's not there?
            Reply With Quote
              #784   Link to this post, but load the entire thread.  
            Old December 15th, 2015 (1:37 PM). Edited December 21st, 2015 by Spherical Ice.
            Spherical Ice's Avatar
            Spherical Ice Spherical Ice is offline
             
            Join Date: Nov 2007
            Location: Bristol, UK
            Age: 21
            Posts: 5,241
            The series of checks at x5613C check if the player is in a map with the name VICTORY ROAD (map name ID 0x84), ROUTE 23 (map name ID 0x7B) or INDIGO PLATEAU (map name ID 0x61). If they are, then the SURFing music will not play.

            This becomes an issue, though, if you have maps on there that aren't supposed to be climactic or whatever; just change the map name IDs at that location to whichever map name you want to prevent SURFing music from playing on, or simply paste 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 to nop that entire series of checks out at x5613C.

            This is for FireRed.
            __________________
            Reply With Quote
              #785   Link to this post, but load the entire thread.  
            Old December 21st, 2015 (4:59 AM). Edited December 28th, 2015 by Spherical Ice.
            Spherical Ice's Avatar
            Spherical Ice Spherical Ice is offline
             
            Join Date: Nov 2007
            Location: Bristol, UK
            Age: 21
            Posts: 5,241
            Unsure if this has been done already, but whatever. If you want Pokémon to not show their Pokédex number as ??? on the summary screen before getting the National Pokédex, make the following changes:

            0x6E272: 00 00 00 00
            0x6E280: 00 00 00 00
            0x1360F7: E0
            EDIT: also this 0x43FA6: 00 00 04 E0

            This is for FireRed.
            __________________
            Reply With Quote
              #786   Link to this post, but load the entire thread.  
            Old December 27th, 2015 (8:24 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 Spherical Ice View Post
              Unsure if this has been done already, but whatever. If you want Pokémon to not show their Pokédex number as ??? on the summary screen before getting the National Pokédex, make the following changes:

              0x6E272: 00 00 00 00
              0x6E280: 00 00 00 00
              0x1360F7: E0

              This is for FireRed.
              I have one problem though, Instead of showing the correct dex number, it only shows ?35
              __________________
              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
                #787   Link to this post, but load the entire thread.  
              Old December 28th, 2015 (6:59 AM).
              Spherical Ice's Avatar
              Spherical Ice Spherical Ice is offline
               
              Join Date: Nov 2007
              Location: Bristol, UK
              Age: 21
              Posts: 5,241
              Quote:
              Originally Posted by Lance32497 View Post
              I have one problem though, Instead of showing the correct dex number, it only shows ?35
              Oh, my bad, I forgot to include this:

              0x43FA6: 00 00 04 E0
              __________________
              Reply With Quote
                #788   Link to this post, but load the entire thread.  
              Old December 29th, 2015 (3:21 PM).
              Spherical Ice's Avatar
              Spherical Ice Spherical Ice is offline
               
              Join Date: Nov 2007
              Location: Bristol, UK
              Age: 21
              Posts: 5,241
              To fix the broken sprite behaviour 0xC, which Advance Map labels as Face Down, you can put B5 FF 05 08 at x39fbf8, and the sprite behaviour will then actually make the sprite face down and not risk the game crashing etc. If you want to make it hide the NPC like it does in RSE, put F1 31 06 08 there instead.
              __________________
              Reply With Quote
                #789   Link to this post, but load the entire thread.  
              Old January 2nd, 2016 (8:12 PM).
              GoGoJJTech's Avatar
              GoGoJJTech GoGoJJTech is offline
              (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
               
              Join Date: Nov 2012
              Location: Earth
              Age: 20
              Gender: Female
              Nature: Jolly
              Posts: 2,473
              Changing the second byte in the battle flags in Emerald (02022FEC) to 02 will activate the Wally AI. This means Wally can go against trainers..

              I'm not posting this so it goes anywhere or develops further, I just thought it was funny
              __________________
              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
                #790   Link to this post, but load the entire thread.  
              Old January 13th, 2016 (6:25 PM). Edited January 14th, 2016 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 is kinda useless to everyone, but I'm posting it so that I don't lose this info. This is all for FireRed.

                When the player enters a battle, the player's backsprite slides in from the right and stops. To change the position from which the backsprite starts sliding (that is, the sprite's initial position as the screen fades in) change the byte at 0x0323C0. By default, it's F0. Higher than F0 will start the sprite further to the right (depending on how high you put the value, the player may wrap around to the other side of the screen). Lower than F0 will start the sprite further to the left. Regardless, the sprite will stop at the same position. If I can find how to edit this position, or other battle intro stuff, I'll edit this post.

                EDIT: To disable the showing of map names when crossing to a new map regardless of the setting in AMap, write 00 00 00 00 to 0x055910. As an aside, the function knizz's idb labelled "show_new_mapname", located at 0x098110, is probably the key to getting unique graphics to show for each map name. Some of the function calls look promising (to my untrained eye) for messing with what bg is loaded. EDIT3: It appears that you still have to set A-Map to not show the name. Granted, in FireRed, the names showed even with that set for me, and nulling out that function call finally stopped them from popping down.

                EDIT2: To disable the descriptions of items on the start menu (that little blue box that spans the bottom of the screen) regardless of your options settings, write 00 00 00 00 to 0x113034.
                Reply With Quote
                  #791   Link to this post, but load the entire thread.  
                Old January 23rd, 2016 (3:17 AM).
                DizzyEgg's Avatar
                DizzyEgg DizzyEgg is offline
                   
                  Join Date: Feb 2014
                  Location: Poland
                  Age: 21
                  Gender: Male
                  Nature: Quiet
                  Posts: 759
                  Emerald Wally battle

                  Spoiler:
                  At the beginning of script special 0x28 saves your whole party and then special 0x12F replaces it with a Zigzagoon at lvl7.
                  To change Pokemon's data:
                  at 0x139472 index of new Poke / 2 ;has to be an even number and not higher than 510
                  at 0x139482 level of new Poke
                  at 0x13949C index of first move
                  Whole routine is at 0x0813946C.

                  Special 0xA0 generates Wally's opponent.
                  To change it:
                  at 0x0B0870 index of new Poke / 2 ;has to be an even number and not higher than 510
                  at 0x0B0874 level of new Poke
                  Wally's Ralts is always generated to be male. If you want its gender random place 00 00 00 00 at 0x068038.
                  If you want it to always be female place D0 at 0x06803B.

                  Wally fight uses a special battle flag: 0x200.
                  Reply With Quote
                    #792   Link to this post, but load the entire thread.  
                  Old January 24th, 2016 (11:25 AM).
                  Versekr Dark's Avatar
                  Versekr Dark Versekr Dark is offline
                     
                    Join Date: Sep 2014
                    Gender: Male
                    Posts: 110
                    no Pokemon Ruby?
                    Reply With Quote
                      #793   Link to this post, but load the entire thread.  
                    Old January 25th, 2016 (1:56 AM). Edited April 24th, 2016 by azurile13.
                    azurile13 azurile13 is offline
                       
                      Join Date: Mar 2015
                      Posts: 420
                      I don't know if this has been posted before, but whatevs. It came to my attention today that the bag in FireRed crashes if a "main" pocket has more than 42 items (the normal max for regular items). I had always assumed the malloc was done based on a multiple of the numbers inputted at the routine beginning 0x08099E44, because the TM pocket works fine even with over 100 items, but apparently the berry/TM cases mean they run off of something different. Anyhow, to allow for sufficient malloc requests, change ".equ largest_pocket_size" to your new max and insert this:
                      Code:
                      .equ largest_pocket_size,	CHANGE THIS LINE
                      .equ largest_pocket_size_plus_one, largest_pocket_size + 1
                      .equ strings_size,	largest_pocket_size_plus_one * 19
                      
                      .org 0x08002B9C
                      malloc:
                      	push {lr}
                      	mov r1, r0
                      
                      .org 0x081083F4
                      main:
                      	push {r4, lr}
                      	ldr r4, =(0x0203AD18)
                      	mov r0, #largest_pocket_size_plus_one
                      	lsl r0, r0, #0x3
                      	bl malloc
                      	str r0, [r4, #0x0]
                      	cmp r0, #0x0
                      	beq return
                      	ldr r0, =strings_size
                      	bl malloc
                      	str r0, [r4, #0x4]
                      	cmp r0, #0x0
                      	beq return
                      	mov r0, #0x1
                      
                      return:
                      	pop {r4}
                      	pop {r1}
                      	bx r1
                      EDIT: I haven't done much testing. I've only thrown like 60 items into the general items pocket before I got bored & assumed this routine was the only problem.

                      Info on 0x08099E44: http://www.pokecommunity.com/showpost.php?p=9014911&postcount=2018
                      Reply With Quote
                        #794   Link to this post, but load the entire thread.  
                      Old January 26th, 2016 (3:06 AM).
                      DizzyEgg's Avatar
                      DizzyEgg DizzyEgg is offline
                         
                        Join Date: Feb 2014
                        Location: Poland
                        Age: 21
                        Gender: Male
                        Nature: Quiet
                        Posts: 759
                        Pokemon Emerald Trading Information:
                        0x08338ED0 is a table with info related to trading. Each entry is 0x3C bytes, used as such:
                        Spoiler:
                        00000000 poke_nickname: .byte 12
                        0000000C trading_poke_index:.short
                        0000000E hp_ivs: .byte
                        0000000F attack_ivs: .byte
                        00000010 defense_ivs: .byte
                        00000011 speed_ivs: .byte
                        00000012 sp_attack_ivs: .byte
                        00000013 sp_def_ivs: .byte
                        00000014 ability_bit: .byte
                        00000015 field_15: .byte ?
                        00000016 field_16: .byte ?
                        00000017 field_17: .byte ?
                        00000018 trainer_ID: .long
                        0000001C coolness: .byte
                        0000001D beauty: .byte
                        0000001E cuteness: .byte
                        0000001F smartness: .byte
                        00000020 toughness: .byte
                        00000021 field_21: .byte ?
                        00000022 field_22: .byte ?
                        00000023 field_23: .byte ?
                        00000024 personality_value:.long
                        00000028 held_item: .short
                        0000002A mail_index*: .byte (0,1,2 or 0xFF)
                        0000002B ot_name: .byte 8 dup
                        00000033 field_33: .byte ?
                        00000034 field_34: .byte ?
                        00000035 field_35: .byte ?
                        00000036 gender: .byte
                        00000037 sheen: .byte
                        00000038 required_poke_index:.short
                        0000003A field_3A: .byte ?
                        0000003B field_3B: .byte ?
                        0000003C trading ends

                        Field values are unused.


                        There's also traded mail table. It starts at 0x08338FC0 and is 18 bytes long. Each entry is a halfword that's a word being displayed in Mail screen ending with 0x0000. Mail Index in the above struct is responsible for choosing correct entry in mails. FF is used when held item isn't a mail.
                        Reply With Quote
                          #795   Link to this post, but load the entire thread.  
                        Old January 26th, 2016 (8:56 AM).
                        Spherical Ice's Avatar
                        Spherical Ice Spherical Ice is offline
                         
                        Join Date: Nov 2007
                        Location: Bristol, UK
                        Age: 21
                        Posts: 5,241
                        To remove the black bar animation, cry and Pokémon sprite and all, that shows when you use a HM, do the following:
                        Quote:
                        Originally Posted by Spherical Ice View Post
                        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.

                        Result: https://my.mixtape.moe/pmjmtn.webm
                        Posting this here in case anyone else wants it.
                        __________________
                        Reply With Quote
                          #796   Link to this post, but load the entire thread.  
                        Old January 26th, 2016 (9:37 AM).
                        C me's Avatar
                        C me C me is offline
                        Creator of Pokemon League Of Legends
                           
                          Join Date: Jan 2014
                          Age: 22
                          Gender: Male
                          Posts: 683
                          The RAM byte which checks for the current maps type is found at:

                          FR:0x02036E13 (credits to FBI)
                          Em:0x0203732F

                          Useful for custom scripts to check if the player is underwater/underground/secret base etc
                          __________________
                          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
                            #797   Link to this post, but load the entire thread.  
                          Old January 26th, 2016 (1:29 PM).
                          GoGoJJTech's Avatar
                          GoGoJJTech GoGoJJTech is offline
                          (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
                           
                          Join Date: Nov 2012
                          Location: Earth
                          Age: 20
                          Gender: Female
                          Nature: Jolly
                          Posts: 2,473


                          I guess I'm just on a roll, huh?
                          I'll post the code to Github when I learn how to use it (and the code for follow me as well)
                          __________________
                          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
                            #798   Link to this post, but load the entire thread.  
                          Old January 28th, 2016 (3:24 PM).
                          Epsilon's Avatar
                          Epsilon Epsilon is offline
                          Shiny Scizor
                             
                            Join Date: Jun 2006
                            Location: Johto
                            Nature: Adamant
                            Posts: 248
                            So I have been looking to make the various search categories (A to Z, Type, Lighest, Smallest) work for expanded Pokemon in Fire Red. This is what I found.

                            The 'lighest list' is from 4442f6 - 4449ef.
                            A to Z seems to be at 3e7d94, although it weirdly seems to skip some Pokemon.
                            Type is at 4448fe.
                            The Smallest list I can't find.

                            Now, taking the Lightest category, I found the pointer to it at 1037cc. Then at 1037D4 there's 81 01 (385, number of dex entries minus 1). Expanding and repointing the lighest table and changing the number at 1037D4 did seem to expand the list, but it only shows Gen III Pokemon in the slots I added.

                            So, with these findings, a smarter person than me might be able to figure out how to make the categories work for expanded Pokemon? I reckon there must be limiting bytes somewhere, just as with the National Dex list in the Pokedex Expanding tutorial.

                            Anyone? :)
                            Reply With Quote
                              #799   Link to this post, but load the entire thread.  
                            Old February 7th, 2016 (10:10 PM).
                            Xencleamas's Avatar
                            Xencleamas Xencleamas is offline
                            Suddenly lurking in the shadows...
                               
                              Join Date: Feb 2014
                              Location: Asgard
                              Gender: Male
                              Nature: Adamant
                              Posts: 458
                              Quote:
                              Originally Posted by Jambo51 View Post
                              So, I've gotten sick of being asked for this, so I figured it might be a good idea to share it. It's so short and easy that it definitely doesn't warrant having its own thread, so putting it here seems like a good compromise.

                              Extending the Number of Direct Sound Tracks on 3rd Gen Pokémon Games

                              It's as easy as this:
                              1. Search for the hex string "00 C5 94 00" in your ROM
                              2. Replace said string with "00 CX 94 00" where X stands for the number of maximum DS tracks

                              Now, there are limits here. Fire Red and Emerald (presumably Leaf Green too) can support a maximum of 12 (0xC) tracks, so you can put 00 CC 94 00 for these ROMs, however, Ruby (presumably Sapphire too) are different. RS can only support a maximum of 7!

                              BPR - 12
                              BPG - 12
                              BPE - 12
                              AXV - 7
                              AXP - 7
                              Here are the offsets for each game for those who care (I don't have Sapphire and Leaf Green. Sorry! :/ But, will sure find them soon):

                              Ruby: 0x081DDECC (if not, destinjagold or any other Ruby hackers, correct me)
                              FireRed: 0x081DD0C8
                              Emerald: 0x082E0104

                              If you just want to go where to replace C5, go to one byte after it. ;)
                              __________________

                              Xencleamas Untitled Pokémon Fan Game (Coming Soon!) Untitled Region (Coming Soon!)
                              Reply With Quote
                                #800   Link to this post, but load the entire thread.  
                              Old February 8th, 2016 (3:02 AM). Edited February 8th, 2016 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
                                Mods, just let me know if you want me to separate this post into multiple ones for easier archival in the first post.

                                This is not my research, but I stumbled upon it and thought that it would be useful for locating the Emerald equivalents, as well as tracking down where other Record Mixed data is stored in the save. This is all for Ruby and Sapphire.

                                Spoiler:
                                Quote:
                                Battle Tower Data
                                When you challenge the battle tower, your party is recorded in your save file and transmitted to others when you mix records.
                                This data is almost identical to the Mossdeep Trainer data, except it seems there are no winning/losing quotes here.

                                Data Layout
                                0x0000 - Mystery Value (Word) (Deokishisu's edit: I have a hunch that this is what battle the player lost in the Tower, as position in the Tower is shared when Record Mixing.)
                                0x0004 - Trainer Name (7 Bytes)
                                0x000B - String Terminator (0xFF)
                                0x000C - Trainer ID (Word)
                                0x0010 - Introduction Phrases (6 Halfwords)
                                0x001C - Pokemon 1 (44 Bytes)
                                0x0048 - Pokemon 2 (44 Bytes)
                                0x0074 - Pokemon 3 (44 Bytes)
                                0x00A0 - Checksum (Word) This is just the sum of the 160 byte structure. I assume it is used to check for fiddled-with data.

                                Pokemon Pokemon are stored in 44 byte structures as follows:
                                0x00 - Species - Halfword
                                0x02 - Held Item - Halfword
                                0x04 - Move 1 - Halfword
                                0x06 - Move 2 - Halfword
                                0x08 - Move 3 - Halfword
                                0x0A - Move 4 - Halfword
                                0x0C - Level - Byte
                                0x0D - ?? (always 0x00) - Byte
                                0x0E - HP EV - Byte
                                0x0F - ATK EV - Byte
                                0x10 - DEF EV - Byte
                                0x11 - SPD EV - Byte
                                0x12 - SP.ATK EV - Byte
                                0x13 - SP.DEF EV - Byte
                                0x14 - Trainer ID - Word
                                0x18 - Poss. IVs - Word
                                0x1C - Personality - Word
                                0x20 - Nickname - 10 Bytes
                                0x2A - ?? (always 0x00) - Byte
                                0x2B - ?? (always 0xFF) - Byte
                                Source: This page on Furlock's Forest Wiki
                                Quote:
                                Secret Base Data
                                Scattered around Hoenn are a number of hidden locations that players may make into their own secret hideout. These are known as Secret Bases and are transfered to other players when you mix records, allowing you to visit them and even battle them once you've beaten the Pokémon League.

                                If you have forgotten where you set up your own Secret Base, there is a boy in Mossdeep who will remind you.
                                Up to 20 bases are able to be stored per Ruby or Sapphire cart, and no two bases may share the same location.

                                Data Structure
                                Position in save data: 0x2988
                                160 byte structure x 20
                                0x0000 - Location - Halfword
                                0x0002 - Trainer Name - 7 Bytes
                                0x0009 - Trainer ID - Word
                                0x000D - Unknown - Byte
                                0x000E - Unknown - 2 Halfwords
                                0x0012 - Decorations in base - 16 Bytes
                                0x0022 - Decoration positions - 16 Bytes
                                0x0032 - Unknown - 2 Bytes
                                0x0034 - Pokemon Personalities - 4 Words
                                0x004C - Pokemon Moves - 24 Halfwords
                                0x007C - Pokemon Species - 6 Halfwords
                                0x0088 - Pokemon Held Items - 6 Halfwords
                                0x0094 - Pokemon Levels - 6 Bytes
                                0x009A - Unknown - 6 Bytes

                                (Deokishisu's Edit: One of these bytes might be the Trainer's gender, perhaps the one at 0x000D.)
                                Source: This page on Furlock's Forest Wiki
                                Quote:
                                Mossdeep Trainer Data
                                In Pokémon Ruby & Sapphire, in Mossdeep, there is a house with a locked door. If you have previously scanned an e-Reader Pokémon Battle eCard then the old man who lives in the house will stand in front of the door and will tell you of a guest staying in his house that you may battle.

                                The trainer's data is quite basic and only consists of a name, type, 3 pokémon and 6 vocabulary words that are spoken when introducing themselves, winning and losing. It's basically the same as a Battle Tower trainer.

                                Data Map
                                MossDeep Trainer Battle E-Card
                                Data Structure - 188 Bytes
                                ------------------------------
                                0x00 - Battle Tower Type - Byte
                                0x01 - Type eg. Camper - Byte
                                0x02 - Battle Tower Lvl -
                                Byte 0x03 - ?? - Byte

                                Type is 0x00 for lvl 50, 0x01 for lvl 100 Lvl is the level they will appear at battle tower These aren't set unless the ecard has a mark indicating that the trainer will appear in the battle tower.

                                0x04 - Name - 7 Bytes
                                0x0B - String terminator - Byte
                                0x0C - Trainer ID - Word
                                --------- This is usually 0x00000000
                                0x10 - Introduction - 6 Halfword
                                0x1C - Win Quote - 6 Halfword
                                0x28 - Lose Quote - 6 Shorts

                                These minor amounts of dialogue are made up using set phrases in the same manner as trainers in the Battle Tower.

                                0x34 - Pokemon 1 - 44 Bytes
                                0x60 - Pokemon 2 - 44 Bytes
                                0x8C - Pokemon 3 - 44 Bytes
                                See the below structure.
                                0xB8 - Checksum - Word

                                A sum of the 184 bytes that make up the trainer data, added together as words. 44 Byte Pokemon Structure
                                -------------------------
                                0x00 - Species - Halfword
                                0x02 - Held Item - Halfword
                                0x04 - Move 1 - Halfword
                                0x06 - Move 2 - Halfword
                                0x08 - Move 3 - Halfword
                                0x0A - Move 4 - Halfword
                                0x0C - Level - Byte
                                0x0D - ?? (always 0x00) - Byte
                                0x0E - HP EV - Byte
                                0x0F - ATK EV - Byte
                                0x10 - DEF EV - Byte
                                0x11 - SPD EV - Byte
                                0x12 - SP.ATK EV - Byte
                                0x13 - SP.DEF EV - Byte
                                0x14 - OT ID - Word
                                0x18 - Poss. IVs - Word
                                0x1C - Personality - Word
                                0x20 - Nickname - 10 Bytes
                                0x2A - ?? (always 0x00) - Byte
                                0x2B - ?? (always 0xFF) - Byte
                                Source: This page on Furlock's Forest Wiki


                                This wiki also has some interesting information on R/S/E's RTC chip, some of which we already have documented in various places, but some of the information is new to me, so it may be new to others as well. I'll leave links to what I've found:

                                First, a Glitch City Forum topic about the R/S Berry Glitch that sheds some light on how the RTC works internally.

                                Second, a page on Furlock's Forest Wiki which explains how the time is stored in the save, and why simply replacing your RTC battery will not restart time-based events. This link also includes a program that can be loaded up in a flashcart and used to modify the RTC of your retail R/S/E's internal time to whatever the user desires. The source for the program is included.

                                The wiki doesn't look maintained anymore, by the way, so someone may want to archive everything in the event that it's taken down.
                                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
                                Ad Content
                                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 10:46 AM.