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
  #176    
Old November 8th, 2011 (11:15 PM).
IIMarckus's Avatar
IIMarckus IIMarckus is offline
     
    Join Date: Oct 2007
    Gender:
    Posts: 402
    Quote:
    Originally Posted by Team Fail View Post
    I've been curious as to this for a while, but has anyone managed to create a Mode 7 hack for these games? I think it can be done- it was done with Super Mario World and it's 2D graphics engine.
    Mode 7 can be done on the GBA. It’s kind of limited because you can only manipulate two planes this way (essentially, a floor and a ceiling)—walls and such have to be sprites. Since they can’t be scaled in the same way, you have to create separate sprites for various distances, and switch between them. It works better for open areas with no walls.
    __________________
    iimarck.us / hax.iimarck.us

    If you want me, please contact me by email. [email protected]

    If you want to hack Pokémon RBY or GSC, read, read, and read some more. This has tons of valuable information.

    Pokémon Red disassembly project

    Rules that should be rethought: 25charlimit, bumping.
    Bad posts are bad posts, regardless of how many words are in them or how old the thread is.
    Good posts are good posts, regardless of how old the thread is—and brevity is underrated.
    Reply With Quote

    Relevant Advertising!

      #177    
    Old November 21st, 2011 (9:25 AM).
    M.L's Avatar
    M.L M.L is offline
    Invisible
       
      Join Date: Oct 2010
      Gender: Male
      Nature: Quiet
      Posts: 765
      Small question i have seen a animated titlescreen before but im curious is it possible to create an animated Battle background like leaves in blowing or rock in the cave falling or sea moving or somthing like that?
      __________________
      Fluffy
      Reply With Quote
        #178    
      Old November 21st, 2011 (9:34 AM).
      TheDarkShark TheDarkShark is offline
      Metal Headed Hacker
         
        Join Date: May 2010
        Location: Germany
        Gender: Male
        Nature: Calm
        Posts: 56
        Well, it could be doable, but you'd need to find out how the background image is drawn and update it every second or so, which might be kind of hard considering that you'd need to hack the battle engine itself, eventually, which of course takes a lot of ASM skillz.
        __________________
        There are two things every Rom-Hacker should learn:
        1. Don't give away everything you know!

        Reply With Quote
          #179    
        Old November 21st, 2011 (9:35 AM).
        M.L's Avatar
        M.L M.L is offline
        Invisible
           
          Join Date: Oct 2010
          Gender: Male
          Nature: Quiet
          Posts: 765
          Ahh thanx lol i was just curious xD
          __________________
          Fluffy
          Reply With Quote
            #180    
          Old November 30th, 2011 (6:53 PM).
          IIMarckus's Avatar
          IIMarckus IIMarckus is offline
             
            Join Date: Oct 2007
            Gender:
            Posts: 402
            Quote:
            Originally Posted by Team Fail View Post
            Interesting. Perhaps a minigame of sorts could benefit from this. But to have many several sprites for different distances, couldn't a calculation be used, and depending on how far away from an object yor are, it would scale/resize the image? It'd take up less space.
            I’m not the one to ask about efficiency here. The GBA is not really my forte, and I’ve never worked with Mode 7, so I really can’t provide any details. Try reading up on it.
            Quote:
            Originally Posted by Team Fail View Post
            But if I were to write that- I'd have to learn ASM first.
            Do it! ASM isn’t nearly as hard as people make it out to be, and it’s a lot of fun.
            __________________
            iimarck.us / hax.iimarck.us

            If you want me, please contact me by email. [email protected]

            If you want to hack Pokémon RBY or GSC, read, read, and read some more. This has tons of valuable information.

            Pokémon Red disassembly project

            Rules that should be rethought: 25charlimit, bumping.
            Bad posts are bad posts, regardless of how many words are in them or how old the thread is.
            Good posts are good posts, regardless of how old the thread is—and brevity is underrated.
            Reply With Quote
              #181    
            Old December 15th, 2011 (2:38 PM).
            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
              Quote:
              Originally Posted by IIMarckus View Post
              Do it! ASM isn’t nearly as hard as people make it out to be, and it’s a lot of fun.
              Maybe it's me, but ASM is a pain. I've found plenty of tutorials saying the basic stuff, but nothing that says what tools you need, or anything of that nature. ANYWAYS...

              How easy or hard would it be to make it so pokemon that hatch from an egg are level 1 instead of level 5 in firered? I think it was unsafe to have level 1 Pokemon in Gen I and II, but in Gen III they're fine for the most part. Anyway, I just think it makes more sense if they hatch at Level 1.
              Reply With Quote
                #182    
              Old January 1st, 2012 (10:40 PM).
              JPAN JPAN is offline
              pokemon rom researcher
                 
                Join Date: Dec 2008
                Posts: 104
                Unfortunately, time to hack is growing shorter by the semester, and research subjects seem to pile up when you have little time. I was hoping to release some examples with this, but...

                The subject is Battle AI.
                Battles are pretty much a mystery when compared to other fields of pokemon study. We can pretty much change the Overworld to do whatever we want, but to get the code to run anything else (other than that for which it was intended) in the battle screen is hard. Even strings, that outside we can display with a simple call, need to be encoded into the battle string displayer and accessed by an index, requiring repointing tables, changing limiter bytes and much more.

                When we look at a battle, we expect the opposing team to do something back. They supposedly have some strategy, but digging into the trainer and wild pokemon code revealed something suprising: Trainers and wild pokemon seem to share the same code.
                Functions used by the wild pokemon have trainer only functions, disabled because of the battle flag.
                And I have yet to find where they select what they do. The trainer "AI byte" only function seem to be setting the IV's for each party member (0xff being 31 IV's for everything).

                So, what I found was the attack selection byte. In the case the pokemon will attack, this is the byte that is used to see what he selected.
                At 0x0801488E is the last location the selected attack is stored. It first goes through a series of temporary addresses that change a lot, so pinpointing the origin is hard. Replacing that location with a hook and creating a routine to handle it can create diverse AI.

                At 0x02000090 is the location of your attack. 0x02000091 keeps the enemy attack, 92 and 93 the same for partner pokemon. That attack is stored as the Attack slot number. The attack it corresponds can be found by going into the battle data for each pokemon (0x02023be4 for yours, 0x02023be4 + 0x58 for opponent) + 0xc + (attackSlot*2).

                So, what can we use this for? We can hook this routine to simulate lots of different scenarios.
                For instance, using it to create smarter pokemon (like Elite Four members that know the type chart and use the most effective attacks, and learn information about your team during battle). Or change attacks on your own pokemon(like simulating the battle palace on Fire Red). Or create double battles with a secondary trainer (AI for the second trainer).

                The main reason I don't have any simple examples for this one is because other than the really dumb "random attack" model, there are no simple examples. Programming an AI is time consuming (specially in assembly), but for anyone out there that wants to try, I give you a way to start.

                As you may notice, the function refered is not the AI function. It's merely the last in a series of memory variables being copied, that end at that location when the attack is selected. This findings do not allow you to change Item usage for trainers, and if the game decides to use an item, or change the pokemon on the field, your attack changes at this level will have no effect. But for wild pokemon, it works perfectly.
                __________________
                Here are the links for my work


                Currently working on:
                Battle Script Documentation
                Another large project
                Reply With Quote
                  #183    
                Old January 19th, 2012 (2:28 PM). Edited August 12th, 2015 by esperance.
                esperance's Avatar
                esperance esperance is online now
                 
                Join Date: Mar 2010
                Location: Ohio
                Age: 21
                Gender: Male
                Nature: Relaxed
                Posts: 3,821
                For anyone that wants to change the badge required for surf, the offset of the flag is 0806D59C. Also, I'm pretty sure that 0806D5D0 is waterfall, but I haven't tested it. (FireRed)
                __________________
                What are you so afraid of?
                Reply With Quote
                  #184    
                Old January 19th, 2012 (8:11 PM). Edited January 28th, 2012 by droomph.
                droomph's Avatar
                droomph droomph is offline
                weeb
                 
                Join Date: Sep 2011
                Location: nowhere spectacular
                Age: 21
                Gender: Male
                Nature: Impish
                Posts: 4,291
                I've noticed that JPAN has a thread on Specials in Fire Red, but I can't find a thread (or post) that has one that is just as comprehensive as his on any other game. So I dug out some of the more common Specials, and a little bit on flags, variables, and stuff.

                Spoiler:
                Specials:
                Note: Special2-recommended specials will be noted with a 2 before description.
                Note2: Returning 0x933F means that it is meant for Special, not Special2.
                Code:
                0x0 - Healing - who could forget that?
                	0x1 - 2 Returns 0, but has something to do with var 0x7EA1…no idea.
                0x2 - Blacks out the screen.
                0x3 - Blacks out the screen, returns you to the last warp you used on current map. If you didn't use a warp on the map you were on, then returns you to center of the map you were on.
                	0x4-0x7 - Returns 0x933F (37695), but does nothing visible.
                
                0x22 - Trading menu.
                
                	0x27 - Returns 0x933F (37695), but does nothing visible.
                0x28 - Saves party Pokémon into RAM.
                0x29 - Reverses changes from 0x28.
                0x2A - Chooses 3 Pokémon, relocates those three to 0x203CEF8.
                
                0x2C - Returns to 0x8004 - the status of the Loamy Soil of 0x800F, 0x8005 - the "beauty" of the Loamy Soil plant, if there is one. When it is 0xFF, all scripts are programmed to return a msgbox "!", possibly displaying a state change. It will return 0x0 through 0x5 depending on the state of the Loamy Soil, from 0x0 being not planted at all, to 0x5 being fully grown.
                	0x2D - Something to do with the Wailmer Pail.
                0x2E - Stores into memory the type of Berry you chose to plant and how many Berries there are ("beauty"?), and returns into \v\h03 ([buffer2]) how many Berries there are, if any, and \v\h02 ([buffer1]) what type of Berry plant it is.
                0x2F - Allows you to choose a Berry from the Berry pocket of your Bag. Affects 0x800E.
                	0x30 - Something to do with planting berries.
                0x31 - Probably returns into 0x8004 how much room that you have left in your Berry pocket. If none, then 0x0 is returned.
                	0x32 - Something to do with picking Berries.
                0x33 - Does something about the "beauty" of the plant.
                0x34 - 2 Appears to return 0x1 into specified variable if Player has a Berry available.
                
                0x3B - Starts playing the “Trainer Spotted!” music depending on the trainer class indicated by 0x8015.
                0x3C - 2 Checks if Rematch available. Returns 0x1 as yes.
                
                0x3E - Makes a trainer battle happen. Turns Player to left after done.
                0x3F - Displays a second text box displaying all the possible options for the POKéMON Storage System. Ends and returns to script if you select "SEE YA!".
                
                0x61 - Plays the actual "watering" animation, and possibly even sets the effects of the Wailmer Pail…
                0x62 - "Trendy Phrase". Used by the Trendy Dude outside in Dewford Town.
                
                0x86 - Checks how many Pokémon in Party and places in Variable. Identical to FireRed 0x83. (Credit to JPAN and buddies)
                0x87 - I assume this is identical to 0x86…
                
                0x8E – Used first in the Mauville City Gym switches.
                0x8F – Used second in the Mauville City Gym switches.
                
                0x91 - Map refresh. Identical to FireRed 0x8E.
                
                0x9D - Better set the clock!
                0x9E - Now look at the clock.
                0x9F - Starter Pokémon; Birch's Bag
                0xA0 – Wally Meets Ralts! - Wally sends out first Party Pokémon unless special paramaters are set.
                0xA1 - Nickname Pokémon in Party, as indicated by 0x8004.
                0xA2 – Choose a Pokémon. – Sends it somewhere.
                
                0xA4 – Berry blender.
                0xA5 – 2/ Roulette game. Somehow returns 1, then 3. Has something to do with 0x8004 and cmd96.
                
                	0xA9 - Returns 0x933F (37695), but does nothing visible.
                
                0xAE - Generates a wild battle from the "Tree (Rock Smash)" wild Pokémon data. May have a chance of returning 0x0 into LASTRESULT; 0x0 means no battle.
                
                0xB7 - 2 Checks how the last wild battle ended. 0x1 if won, 0x4 if lost, 0x5 because it can, 0x7 if captured.
                0xB8 - Buffers the two Day-Care Pokémon into \v\h02 ([buffer1]) and \v\h03 ([buffer2]). Identical to FireRed 0xB5. (Credit to JPAN and buddies)
                0xB9 - 2 Returns 0x1 if there is an egg, 0x2 if one Pokémon, 0x3 if two Pokémon. Identical to FireRed 0xB6. (Credit to JPAN and buddies)
                0xBA - Clears Egg timer, prepares it for new timer. Identical to FireRed 0xB7. (Credit to JPAN and buddies)
                0xBB - Creates and places egg in Party. Identical to FireRed 0xB8. (Credit to JPAN and buddies)
                
                0xD9 - Turns the tile above the player that is also directly bordering the script tile into the 6th tile in the tileset, and flickers it between the 5th and the 6th tile for a while. Used for PCs.
                0xDA - Turns the tile changed in 0xD9 into the 5th tile in the tileset. Used for PCs. Changes the movement to "blocked"?
                
                0xF4 - Stops all music.
                
                0xFC - Player's PC.
                0xFD - Player's POKéMON Center PC. Returns to script when "TURN OFF" is selected.
                0xFE - HOENN map.
                
                0x109 - Sets up a second text box displaying all accessible PCs, displaying "LANETTE's" instead of "SOMEONE's" if you have seen her. Returns to 0x800D (LASTRESULT) 0x0 if you chose Pokémon Storage; 0x1 if you chose "\v\h01's PC"; 0x3 if you backed out by selecting "LOG OFF"; 0x7F if you backed out with the B button.
                
                0x129 - Used in a manner like FireRed 0x127. Something to do with [0x3005DF0].
                0x12A - Used in a manner like FireRed 0x128. Something to do with [0x3005DF0].
                
                0x136 - 2 Seems like it checks for Pokérus in party; returns 0x1 if indeed Pokérus exists.
                	0x137 - Returns 0x933F (37695), but does nothing visible.
                0x138 - Takes variables from 0x8004 (dyp), 0x8005 (dxp), 0x8006 (length, in shakes), and 0x8007 (frames between shakes?) and makes an earthquake.
                
                0x13A - dowildbattle for RAYQUAZA.
                0x13B - dowildbattle for the Regis.
                	0x13C - Returns 0x933F (37695), but does nothing visible.
                0x13D - Jostles the screen up then down in medium speed.
                
                0x13F - "Flash grenade" effect.
                0x140 - Same as 0x3.
                0x141 - Same as 0x140, but with a fall-animation instead.
                
                	0x143-0x144 - Returns 0x933F (37695), but does nothing visible.
                0x145 - Normal battle.
                	0x146-0x148 - Returns 0x933F (37695), but does nothing visible.
                
                	0x14A - Returns 0x933F (37695), but does nothing visible.
                
                	0x15E - Something to do with planting Berries.
                	0x15F - Something to do with picking Berries.
                
                0x19F - Checks for Wireless. 0x1 true, 0x0 false. Identical to FireRed 0x16A. (Credit to JPAN and buddies)
                
                0x1A5 - 2 Checks if someone is linked to you, and puts their name in \v\h02 ([buffer1]), otherwise clears buffer. Identical to FireRed 0x183. (Credit to JPAN and buddies)
                
                0x1A9 - 2 Checks for bad Union Room Pokémon, then returns 0x1 if indeed there is. Identical to Fire Red 0x1AE. (Credit to JPAN and his buddies)
                
                0x1D9 - 2 Checks for Trainer Stars; returns to given variable how many stars. Notably used by Nurse Joy for "special treatment"
                
                0x1E6 - Names a Pokémon that is to be sent to the PC.
                0x1E7 - 2 Returns to given variable the current default box name. Moves default box forward one?
                0x1E8 - 2 Returns to given variable if the box is full. 0x1 means full.
                0x1E9 - Takes value in 0x8004 and registers in the POKéNAV the corresponding Trainer.
                
                0x1F3 - Obtain National Dex!
                
                0x203 - 2 Checks if [Map Block] +8 bytes is equal to 0xA02. Probably vaguely has something to do with Linking. Identical to FireRed 0x1B1. (Credit to JPAN and his buddies)
                Variables:
                Code:
                0x0-0x3FFF - Not Variables
                
                0x4050 - Introduction Events
                		Default 0
                		Meet Rival - set to 1; now Route 101 is open!
                		Go to Route 101 - set to 2; Birch is in trouble!
                		
                		Get Running Shoes - set to 4
                
                0x4082 - Temporary variable?
                		Leave truck as MAY - set to 1
                
                0x408C - Temporary variable?
                		Leave truck as BRENDAN - set to 1
                
                0x408D - Introduction Events
                		Meet Rival - set to 3; now script downstairs will not activate.
                
                0x4092 - Introduction Events
                		Leave truck as BRENDAN - set to 1
                		Leave truck as MAY - set to 2
                		Go into house as BRENDAN - set to 3
                		Observe house as BRENDAN - set to 4
                
                0x8004 - Multiple Uses
                		PokéCenter - if 0x1 then alternate but identical scene for goodbye message
                		MOM - set to 0x5 when jump out of truck
                		MOM - if 0x1 then move MOM in MAY/BRENDAN's house.
                
                0x8005 - Multiple Uses
                		MOM - set to 0x5 when jump out of truck
                
                0x8008 - Multiple Uses
                		BRENDAN/MAY - chooses which script-tile you are on for "meeting" them.
                		MR. BRINEY in Dewford - Holds the value of 0x4096. Temporarily?
                
                0x800D - LASTRESULT, who could forget you?
                0x800E - LASTITEM basically.
                0x800F - LASTTALKED - stores the Person ID of the OW that is linked to the most recent executed script; is processed each time a script is about to happen.
                
                0x8015 - LASTBATTLED basically.
                Flags:
                Code:
                0x1 - Has PokéMart Lady told you about the PokéMart?
                
                0x11 - Controls visibility of:
                		A tree on Route 104.
                		A rock on Route 111.
                		A rock on Route 114.
                		A rock on Route 115.
                		A tree on Route 116.
                		A tree on Route 117.
                		A tree on Route 118.
                		A tree on Route 120.
                0x12 - Controls visibility of:
                		A tree on Route 103.
                		A rock on Route 111.
                		A rock on Route 114.
                		A tree on Route 116.
                		A tree on Route 120.
                0x13 - Controls visibility of:
                		A tree on Route 103.
                		A tree on Route 111.
                		A rock on Route 114.
                		A tree on Route 116.
                0x14 – Controls visibility of:
                		A rock on Route 114.
                		A tree on Route 116.
                		A tree on Route 120. 
                0x15 – Controls visibility of: 
                		A rock on Route 114.
                		A tree on Route 116.
                 
                0x50 - Controls the battling RAYQUAZA.
                0x51 - If set, you set the clock. Great job!
                0x52 - You encountered BIRCH in trouble!
                
                0x59 – You came from far away.
                0x5A – You got the bike.
                
                0x5E - If set, you got the Wailmer Pail.
                
                0x6B – Has gotten HM06 (ROCK SMASH) yet?
                
                0x74 - Ready to Catch POKéMON! (Finished Introductory Scenes, Footprint Guy moves away)
                
                0x93 - Has talked to MR. BRINEY for the first time?
                
                0x95 - Has delivered the package to CAPT. STERN yet?
                
                0xA5 – Has beaten ROXANNE yet, and received her TM?
                0xA6 – Has beaten BRAWLY yet, and received his TM?
                0xA7 – Has beaten WATTSON yet, and received his TM?
                0xA8 – Has beaten FLANNERY yet, and received her TM?
                0xA9 – Has beaten NORMAN yet, and received his TM?
                0xAA – Has beaten WINONA yet, and received her TM?
                0xAB – Has beaten TATE & LIZA yet, and received their TM?
                0xAC – Has beaten JUAN yet, and received his TM?
                
                0xAE - Disposable Character 1 in Player's room, possibly a doll?
                0xAF - Disposable Character 2 in Player's room, possibly a doll?
                0xB0 - Disposable Character 3 in Player's room, possibly a doll?
                0xB1 - Disposable Character 4 in Player's room, possibly a doll?
                0xB2 - Disposable Character 5 in Player's room, possibly a doll?
                0xB3 - Disposable Character 6 in Player's room, possibly a doll?
                0xB4 - Disposable Character 7 in Player's room, possibly a doll?
                0xB5 - Disposable Character 8 in Player's room, possibly a doll?
                0xB6 - Disposable Character 9 in Player's room, possibly a doll?
                0xB7 - Disposable Character 10 in Player's room, possibly a doll?
                0xB8 - Disposable Character 11 in Player's room, possibly a doll?
                0xB9 - Disposable Character 12 in Player's room, possibly a doll?
                0xBA - Not sure; set unconditionally upon entering Room
                0xBB - Not sure; set unconditionally upon entering Room
                
                0xBD - Has sent the LETTER to STEVEN yet?
                
                0xE1 – Has gotten 20 coins from MAN in Mauville yet?
                0xE2 – Has gotten GIRL’s duplicate doll in Mauville yet?
                
                0x102 – Has gotten COIN CASE from GIRL yet?
                
                0x111 - If unset, then Nurse Joy didn't tell you about Pokérus, did she?
                0x112 - Not sure, Mom sets that upon "switching shoes".
                
                0x12F - Set when you obtain the PokéNav.
                
                0x159 - Oh, you have a Gold Card! I'll take note of that…
                
                0x1BB - You beat Regirock…
                0x1BC - You beat Regice…
                0x1BD - You beat Registeel…
                
                0x2D0 - Controls Prof. BIRCH in trouble on Route 101.
                0x2D3 - Controls Rival on Route 103.
                
                0x2BC - Controls BIRCH's BAG on Route 101.
                0x2BE - Controls MYSTERY EVENT lady in the second floor of the Pokémon Center.
                0x2BF - Controls a disposable character in the Union Room.
                0x2C0 - Controls a disposable character in the Union Room.
                0x2C1 - Controls a disposable character in the Union Room.
                0x2C2 - Controls a disposable character in the Union Room.
                0x2C3 - Controls a disposable character in the Union Room.
                0x2C4 - Controls a disposable character in the Union Room.
                0x2C5 - Controls a disposable character in the Union Room.
                0x2C6 - Controls a disposable character in the Union Room.
                
                0x2CF – Controls Rival (MAY/BRENDAN) outside MR. BRINEY’s house on Route 104.
                
                0x2D1 - Controls BRICH in BIRCH's lab.
                0x2D2 - Controls MAY in MAY's room.
                
                0x2D6 – Controls WALLY outside in Petalburg City.
                
                0x2D8 – Controls WALLY’s mom in Petalburg City.
                
                0x2DB – Controls TEAM AQUA GRUNT in Rustboro City.
                0x2DC – Controls the DEVON GOODS guy in Rustboro City.
                
                0x2DE - Controls NORMAN in Player's house.
                0x2DF - Controls BRENDAN's little brother in BRENDAN's house.
                0x2E0 - Controls MAY's little brother in MAY's house.
                
                0x2E2 – Controls MR. BRINEY on Route 104.
                0x2E3 - Controls MR. BRINEY in his house.
                0x2E4 - Controls MR. BRINEY in Dewford Town.
                0x2E5 – Controls MR. BRINEY on Route 109.
                0x2E6 – Controls MR. BRINEY’s boat on Route 104.
                0x2E7 - Controls MR. BRINEY's boat in Dewford Town.
                0x2E8 – Controls Mr. BRINEY’s boat on Route 109.
                0x2E9 - Controls BRENDAN (?) in BRENDAN's house.
                0x2EA - Controls MAY (?) in MAY's house.
                
                0x2ED – Controls SCOTT outside the Slateport Battle Tent.
                0x2EE - Controls the ZIGZAGOON on Route 101.
                
                0x2F0 - Controls MOM in Littleroot Town.
                
                0x2F2 - Controls "Fugiiiiih!" Vigoroth in Player's house.
                0x2F3 - Controls "Huggoh, ugh ugh…" Vigoroth in Player's house.
                
                0x2F5 - Controls MOM in Player's room.
                0x2F6 - Controls MOM in BRENDAN's house.
                0x2F7 - Controls MOM in MAY's house.
                0x2F8 - Controls BRENDAN upstairs in his room.
                0x2F9 - Controls BRENDAN's Moving Van in Littleroot Town.
                0x2FA - Controls MAY's Moving Van in Littleroot Town.
                
                0x2FD – Controls SCOTT in Mauville City.
                
                0x300 – Controls Winston Family Member on Route 111.
                0x301 – Controls Winston Family Member on Route 111.
                0x302 – Controls Winston Family Member on Route 111.
                0x303 – Controls Winston Family Member on Route 111.
                
                0x305 - Controls the sleeping RAYQUAZA.
                
                0x30D – Controls the Gym Assistant of Norman.
                
                0x310 - Controls BRENDAN's mom in BRENDAN's house.
                0x311 - Controls MAY's mom in MAY's house.
                0x312 – Controls Scott on Route 119.
                
                0x314 – Controls Scott in Mossdeep City.
                
                0x31A - Controls someone near MAY's home in Littleroot Town. (D,A)
                0x31B - Controls someone near MAY's home in Littleroot Town. (D,B)
                0x31C – Controls GABBY & TY on Route 111.
                0x31D – Controls GABBY & TY on Route 118.
                0x31E – Controls GABBY & TY rematch on Route 120.
                0x31F – Controls GABBY & TY rematch on Route 111.
                
                0x324 – Controls WALLY in Mauville City.
                0x325 – Controls WALLY’s uncle in Mauville City.
                
                0x32B - Controls the POKé BALL that allows you to choose CYNDAQUIL after completing the POKé DEX in BIRCH's lab.
                0x32C - Controls the POKé BALL that allows you to choose TOTODILE after completing the POKé DEX in BIRCH's lab.
                0x32D – Controls the BlackGlasses dude on Route 116.
                0x32E – Controls Rival (MAY/BRENDAN) in Rustboro City.
                0x32F - Controls SWABLU doll (?) in BRENDAN's room.
                0x330 – Controls WALLACE in Sootopolis City, outside the Cave of Origin.
                0x331 - Controls BRENDAN's POKé BALL in BRENDAN's room.
                0x332 - Controls MAY's POKé BALL in MAY's room.
                0x333 – Controls TEAM MAGMA GRUNTS on Route 112.
                
                0x337 – Controls the TEAM MAGMA GRUNTS and MAXIE in Mossdeep City.
                0x338 – Controls GABBY in the Petalburg City Gym.
                
                0x33A – Controls ARCHIE in Sootopolis City.
                0x33B – Controls MAXIE in Sootopolis City.
                
                0x33E – Controls some person (WALLY’s dad?) outside in Petalburg City.
                
                0x343 – Controls TY and GABBY in Slateport City.
                0x345 – Controls PROF. BIRCH on Route 110.
                0x346 - Controls the POKé BALL that allows you to choose CHIKORITA after completing the POKé DEX in BIRCH's lab.
                0x347 – Controls a man outside in Sootopolis City.
                0x348 – Controls CAPT. STERN outside the Slateport Harbor.
                
                0x34B – Controls “Forgot my Rock Smash!” Guy on Route 111.
                0x34C – Controls Scientist in Rustboro City.
                
                0x351 - Controls PIKACHU doll (?) in MAY's room.
                
                0x353 – Controls Rival (MAY/BRENDAN) on Route 119.
                0x354 – Controls the TEAM AQUA GRUNTS in Lilycove City.
                
                0x356 – Controls bystanders of the battle between GROUDON and KYOGRE outside in Sootopolis City.
                0x357 - Controls WALLACE outside Sky Pillar.
                
                0x362 – Controls WALLY in the Petalburg City Gym.
                
                0x364 - Controls "Technology is Awesome!" Guy in Littleroot Town.
                
                0x36B – Controls a person on Route 111. (Fossil?)
                0x36C – Controls a FOSSIL on Route 111.
                
                0x371 - Controls PEEKO in MR. BRINEY's house.
                0x372 – Controls TEAM AQUA GRUNTS outside the Museum in Slateport City.
                
                0x379 - Controls BIRCH's child (MAY/BRENDAN) in BIRCH's lab.
                0x37A – Controls TEAM AQUA GRUNTS on Route 119.
                0x37B – Controls MR. BRINEY on Route 116.
                
                0x37E – Controls the Digging guy on Route 116.
                
                0x381 - Controls Prof. BIRCH on Route 101.
                0x382 - Controls Prof. BIRCH on Route 103.
                
                0x384 – Controls the TEAM AQUA GRUNTS on Route 110.
                0x385 – Controls GABBY & TY rematch on Route 118.
                0x386 – Controls GABBY & TY rematch on Route 120.
                0x387 – Controls GABBY & TY rematch on Route 111.
                0x388 – Controls GABBY & TY rematch on Route 118.
                
                0x38A – Controls lady outside Pretty Petal Shop on Route 104.
                0x38B – Controls an AZURILL in Fallarbor Town.
                
                0x390 – Controls WATTSON in Mauville City.
                
                0x397 – Controls a person on Route 110. (Rival?)
                
                0x39A – Controls a person on Route 110. (Rival?)
                0x39B – Controls a person on Route 119.
                
                0x3A1 – Controls a person (C, F) outside Lavaridge Town Gym.
                0x3A2 – Controls a person (6, 10) outside Lavaridge Town Gym.
                
                0x3A7 - Controls REGIROCK in the Desert Ruins.
                0x3A8 - Controls REGICE in the Island Cave.
                0x3A9 - Controls REGISTEEL in the Aincent Tomb.
                
                0x3B3 – Controls the Devon Goods guy on Route 116.
                0x3B4 – Controls the TM10/TM43 lady outside in the Slateport Market area.
                
                0x3C0 – Controls the Secret Power lady on Route 111.
                
                0x3C6 – Controls STEVE on Route 118.
                
                0x3C9 – Controls the KECLEON!? in Fortree City.
                0x3CA – Controls the KECLEON!? on Route 120.
                0x3CB – Controls Rival (MAY/BRENDAN) outside the Lilycove Department Store.
                0x3CC – Controls STEVEN on Route 120.
                0x3CD – Controls STEVEN outside in Sootopolis. “It’s Amazing…”
                
                0x3D3 - Controls BIRCH's child (MAY/BRENDAN) on the way back to completing the Introductory Scenes in Odale Town.
                
                0x3D5 – Controls a KECLEON!? on Route 120.
                0x3D6 – Controls a KECLEON!? on Route 120.
                
                0x3D9 – Controls a KECLEON!? on Route 120.
                0x3DA – Controls a KECLEON!? on Route 120.
                0x3DB – Controls a KECLEON!? on Route 120.
                0x3DC – Controls a KECLEON!? on Route 120.
                0x3DD – Controls a KECLEON!? on Route 119.
                0x3DE – Controls a KECLEON!? on Route 119.
                0x3DF – Controls a guy in Route 101.
                
                0x3E3 – Controls SCOTT in Petalburg City.
                0x3E4 – Controls RAYQUAZA in Sootopolis City.
                0x3E5 – Controls KYOGRE in Sootopolis City.
                0x3E6 – Controls GROUDON in Sootopolis City.
                
                0x3E8 - Controls a Potion on Route 102.
                0x3E9 – Controls an X-Special on Route 116.
                0x3EA - Controls a PP Up on Route 104.
                0x3EB – Controls an Iron on Route 105.
                0x3EC – Controls a Protein on Route 106.
                0x3ED – Controls a PP Up on Route 109.
                0x3EE – Controls a Rare Candy on Route 110.
                0x3EF – Controls a Dire Hit on Route 110.
                0x3F0 – Controls a TM37 on Route 111.
                0x3F1 – Controls a Stardust on Route 111.
                0x3F2 – Controls an HP Up on Route 111.
                0x3F3 – Controls a Nugget on Route 112.
                0x3F4 – Controls a Max Ether on Route 113.
                0x3F5 – Controls a Super Repel on Route 113.
                0x3F6 – Controls a Rare Candy on Route 114.
                0x3F7 – Controls a Protein on Route 114.
                0x3F8 – Controls a Super Potion on Route 115.
                0x3F9 – Controls a TM01 on Route 115.
                0x3FA – Controls an Iron on Route 115.
                0x3FB – Controls an Ether on Route 116.
                0x3FC – Controls a Repel on Route 116.
                0x3FD – Controls an HP Up on Route 116.
                0x3FE – Controls a Great Ball on Route 117.
                0x3FF – Controls a Revive on Route 117.
                0x400 – Controls a Super Repel on Route 119.
                0x401 – Controls a Zinc on Route 119.
                0x402 – Controls an Elixir on Route 119.
                0x403 – Controls a Leaf Stone on Route 119.
                0x404 – Controls a Rare Candy on Route 119.
                0x405 – Controls a Hyper Potion on Route 119.
                0x406 – Controls a Nugget on Route 120.
                0x407 – Controls a Full Heal on Route 120.
                
                0x40F – Controls a Max Revive in Petalburg City.
                0x410 – Controls an Ether in Petalburg City.
                0x411 – Controls an X-Defend in Rustboro City.
                0x412 – Controls a Max Repel in Lilycove City.
                0x413 – Controls a Net Ball in Mossdeep City.
                
                0x421 - Controls a Poké Ball on Route 104.
                
                0x452 – Controls a Hyper Potion on Route 119.
                0x453 – Controls a Hyper Potion on Route 120.
                0x454 – Controls a Nest Ball on Route 120.
                
                0x45A - Controls a Guard Spec on Route 103.
                0x45B - Controls an X-Accuracy on Route 104.
                0x45C – Controls an X-Speed in Mauville City.
                
                0x45E – Controls a Great Ball on Route 115.
                
                0x461 – Controls a Hyper Potion on Route 118.
                
                0x46E – Controls a Nugget on Route 119.
                0x46F - Controls a Potion on Route 104.
                
                0x471 - Controls a PP Up on Route 103.
                
                0x473 – Controls a Star Piece on Route 108.
                0x474 – Controls a Potion on Route 109.
                0x475 – Controls an Elixir on Route 110.
                0x476 – Controls an Elixir on Route 111.
                0x477 – Controls a Hyper Potion on Route 113.
                0x478 – Controls a Heal Powder on Route 115.
                
                0x47A – Controls a Potion on Route 116.
                0x47B – Controls an Elixir on Route 119.
                0x47C – Controls a Revive on Route 120.
                
                0x488 – Controls an Energy Powder on Route 114.
                0x489 – Controls a PP Up on Route 115.
                
                0x4F0 - Gym Assistant of Roxanne
                0x4F1 - Gym Assistant of Brawly
                0x4F2 - Gym Assistant of Wattson
                0x4F3 - Gym Assistant of Flannery
                0x4F4 - Gym Assistant of Norman
                0x4F5 - Gym Assistant of Winona
                0x4F6 - Gym Assistant of Tate and Liza
                0x4F7 - Gym Assistant of Wallace
                
                0x860 - Pokémon Menu
                0x861 - Pokédex Menu
                0x862 - Pokénav Menu
                
                0x867 - Got Stone Badge!
                0x868 - Got Knuckle Badge!
                0x869 - Got Dynamo Badge!
                0x86A - Got Heat Badge!
                0x86B - Got Balance Badge!
                0x86C - Got Feather Badge!
                0x86D - Got Mind Badge!
                0x86E - Got Rain Badge!
                
                0x8AB - Met LANETTE!
                
                0x8C0 - Got Running Shoes!
                0x8C1 - Did you win the Legendary battle? 1 - no.
                
                0x930 - Berry from Pretty Petal Shop; reset at Midnight.
                
                0x4000 - Set by game? Cleared when Mom enters house.
                Hidden Items:
                Code:
                0x25 - 1 POTION; Route 104
                
                0x2C - 1 SUPER POTION; Route 104
                
                0x3E - 1 POKé BALL; Route 104
                
                0x55 - 1 ANTIDOTE; Route 104
                
                0x58 - 1 HEART SCALE; Route 104
                Revised Sounds:
                Code:
                0x19 – “a’a’a’a’a” synth-voice.
                0x1A – “i’i’i’i’i” synth-voice.
                0x1B – “u’u’u’u’u” synth-voice.
                0x1C – “e’e’e’e’e” synth-voice.
                0x1D – “o’o’o’o’o” synth-voice.
                0x1E – “n’n’n’n’n” synth-voice. Now sounds are shifted six ahead.
                
                0x30 – Open PokéNav. Now sounds are shifted seven ahead.
                
                0xFF – Kaching!
                Note that this is far from finished; I only started this afternoon. I will add more as I find even more stuff.

                I hope this will be of some help to the Emerald population.
                __________________
                did u no there r 21 letters in the alphabet
                o i forgot 5
                uraqt


                Reply With Quote
                  #185    
                Old January 21st, 2012 (4:57 AM).
                sonic1's Avatar
                sonic1 sonic1 is offline
                ASM is my life now...
                   
                  Join Date: May 2008
                  Location: Portugal
                  Age: 23
                  Gender: Male
                  Nature: Timid
                  Posts: 79
                  Hey, for emerald i have something too:
                  Spoiler:

                  Specials:
                  Code:
                  28 - Saves pokemon party into RAM. Used for situations of switching parties (battle frontier)
                  29 - Restores that party
                  2A - Lets you choose 3 pokemons and puts their party slot in 0x203CEF8
                  3B - Plays trainer encounter music (not the battle one) according to the 8015 (trainer number) VAR. Used in the game internal script of trainer spotting.
                  91 - Map Refresh. Used in setmaptiles. Similar to FireRed 0x8E.
                  AE - WildBattle using Tree wild Data.
                  F4 - Stops any music from playing.
                  FE - Shows worldmap.
                  1F3 - Sets National Dex

                  Variables:
                  Spoiler:

                  4010 - OWs with image number 240 (0xF0) gets the sprite defined in this var.
                  800E - When you select an item on bag, this var gets the value of that item
                  8015 - Opponent trainer number (when you fight someone, this value is what trainer is)

                  __________________
                  This signature has been disabled.
                  over 350px high
                  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
                    #186    
                  Old January 21st, 2012 (4:07 PM). Edited January 21st, 2012 by droomph.
                  droomph's Avatar
                  droomph droomph is offline
                  weeb
                   
                  Join Date: Sep 2011
                  Location: nowhere spectacular
                  Age: 21
                  Gender: Male
                  Nature: Impish
                  Posts: 4,291
                  Quote:
                  Originally Posted by EdensElite View Post
                  Hey Guys. I've been trying to find out how to edit the PC Boxes for a while. So far all I've find out is that it is stored in the VRAM and what I've include in the screenshot below. If anyone experienced with Hex etc. can help me out, I would really appreciate it :)

                  Findings


                  I managed to find the header. I havn't tried editing it yet. As I'm more interested interested in the actual box. I noticed that most boxes only use one or two different tiles repeated over and over, so maybe there isn't actually a whole image to edit unlike Gen IV games. In which case it's possible that those tiles are in that picture and I missed them.
                  You do realize in that picture you didn't include ALL the tiles in the tileset, right? Go check on those. When you find a couple "grainy" tiles, those are the tiles.

                  Quote:
                  Originally Posted by Awkward Squirtle View Post
                  Uh... they're stored in the ROM, and copied to the VRAM when the game needs to draw them to the screen. I suspect they're uncompressed in the ROM, so you could just use a tile editor to change them (if you can find them).
                  If you want to find it in the ROM, simply go to 0x600400, note the first hundred or so bytes (copy function?) and search for that in the actual ROM (0x8000000 onwards).
                  __________________
                  did u no there r 21 letters in the alphabet
                  o i forgot 5
                  uraqt


                  Reply With Quote
                    #187    
                  Old January 22nd, 2012 (7:36 PM).
                  aar2697 aar2697 is offline
                     
                    Join Date: Jun 2010
                    Age: 21
                    Gender: Male
                    Posts: 37
                    For music hacking with Pokemon Emerald, you can find out the voicegroups by doing this...

                    1. Have two windows of Sappy open.
                    2. http://www.pokecommunity.com/showthread.php?t=148811 Use this page
                    3. One window of Sappy has Emerald. The other has Fire Red.
                    4. Look for a song in Fire Red that has a voicegroup from the link that you want.
                    5. Open the same song in the Emerald Sappy window.
                    6. The voicegroups correspond with each other.
                    7. Use the Emerald voicegroup for the new song your inserting.
                    Reply With Quote
                      #188    
                    Old January 23rd, 2012 (8:46 AM).
                    sonic1's Avatar
                    sonic1 sonic1 is offline
                    ASM is my life now...
                       
                      Join Date: May 2008
                      Location: Portugal
                      Age: 23
                      Gender: Male
                      Nature: Timid
                      Posts: 79
                      In emerald, at the offset 0x611C9A, there's a table with 10 entries of 2 bytes (shorts), followed by an FFFF at the end of the table, which marks the pokemon restricted for entry in Battle Tower. To add or remove entries, add the pokemon number reversed in hex, and end the table with FFFF. If you want to remove all the limitations, just write FFFF to the beginning of the table (offset 611C9A).

                      ~Sonic1
                      __________________
                      This signature has been disabled.
                      over 350px high
                      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
                        #189    
                      Old January 23rd, 2012 (12:15 PM).
                      Jambo51's Avatar
                      Jambo51 Jambo51 is offline
                      Glory To Arstotzka
                         
                        Join Date: Jun 2009
                        Gender: Male
                        Nature: Quiet
                        Posts: 732
                        I have found the transform animation in FireRed. It's located at 0xDF9BC.
                        It gets called multiple times, once a frame I believe, during the transformation. Everything is in here, including the pallet loading part which gets the "whited out" pallet, and the part which gets the actual sprite.

                        Using this routine, we could theoretically create custom transformations, such as Burmy changing into a different forme, or perhaps even in battle evolution.
                        __________________
                        Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
                        Reply With Quote
                          #190    
                        Old January 26th, 2012 (3:43 PM).
                        Darkdata's Avatar
                        Darkdata Darkdata is offline
                        15 year old me was an idiot.
                           
                          Join Date: Aug 2005
                          Nature: Calm
                          Posts: 137
                          I have a spreadsheet file that contains a bunch of useful information for those who like to keep organized when scripting. With it, you can quickly reference and grab information in a easy to read format.

                          Credits for the information are on the last sheet.



                          Click picture to download
                          __________________
                          Jul | Homepage
                          Reply With Quote
                            #191    
                          Old January 29th, 2012 (4:43 PM). Edited January 29th, 2012 by droomph.
                          droomph's Avatar
                          droomph droomph is offline
                          weeb
                           
                          Join Date: Sep 2011
                          Location: nowhere spectacular
                          Age: 21
                          Gender: Male
                          Nature: Impish
                          Posts: 4,291
                          I got bored, so I made this. I'll probably add to it as I find out more about NSBMD. Hm, maybe not.
                          Spoiler:
                          List of Material IDs:
                          Code:
                          Twinleaf Town:
                          	0x0 - Bottom part of leaves. Maybe stumps too? (ID: conttree_b_lm52)
                          	0x1 - Top of the trees (ID: conttree_t_lm52)
                          	0x2 - Doorstop (ID: hage_lm27) Oh you, Game Freak…^^
                          	0x3 - Fence (ID: imped_lm51)
                          	0x4 - Water - PURE water ^^ (ID: lake_lm34)
                          	0x5 - Water approaching shore. (ID: lakep_lm3)
                          	0x6 - Your average, everyday neatly mowed grass. (ID: ngrass_lm42)
                          	0x7 - Flowers. (ID: nhana_lm59)
                          	0x8 - Main dirt…or "sand". (ID: nsand_lm52)
                          	0x9 - Dirt fringes - or "curb". (ID: nsandp_lm70)
                          	0xA - Puddle apparently… (ID: puddle_b_lm8)
                          	0xB - Jump-into-sea ledge, e.g. where you select SURF. (ID: seaside3_lm55)
                          	0xC - A NORMAL freaking tree… (ID: tree01_lm48)
                          	0xD - Forest Floor. I don't even care. (ID: tshadow_lm13)
                          List of Polygon IDs:
                          Code:
                          Twinleaf Town:
                          	0x0 - *Almost* every tree in town.
                          	0x1 - Flowers.
                          	0x2 - Fence surrounding flowers.
                          	0x3 - Dirt fringes.
                          	0x4 - Main dirt path.
                          	0x5 - Door-mat tile.
                          	0x6 - Select SURF here. Water's edge. I dunno how to explain clearer.
                          	0x7 - The bottom of the trees, and the stumps? (southeastern corner)
                          	0x8 - The tops of the trees of 0x7. WTH
                          	0x9 - All the grass in this little town.
                          	0xA - Forest Floor.
                          	0xB - Edge of Pond.
                          	0xC - Inside of Pond.
                          	0xD - Essence of Pond? I don't know.
                          __________________
                          did u no there r 21 letters in the alphabet
                          o i forgot 5
                          uraqt


                          Reply With Quote
                            #192    
                          Old March 15th, 2012 (12:25 PM).
                          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
                            Complete Edit: I decided to delete my previous post, and ask something else instead
                            Oh wow, you guys are quite a few calibers above me...I feel sort of insignificant, but I guess I'll post my ideas.

                            Anyway, I'd like to implement a very dynamic script in my game...Basically, I wanted to allow myself to release events for my game. But instead of being limited to whatever I choose at the time, and avoiding releasing a new patch every time I wanted to do an event, I decided to make a spot in my game with a person that asks for a series of codes. These codes would be released by me, and the script would take the codes hex values, arrange them as necessary, do some checks to make sure the player isn't just mashing buttons, and "build" a completely custom Pokemon. This would allow me to easily decide an event, calculate the code, and release it in a post.

                            But my problem is that I need a keyboard to pop up, in order to enter the code. I've decided on two approaches:

                            The easy way would be to edit the mail input to take easy chat words and convert them into code. This would be good, since there are so many words, and I assume each is a byte value. But it's somewhat unprofessional.

                            The hard way would be to recreate the "nickname" keyboard. I wouldn't know whats involved, but I know emerald has one for Walda...could we port it over.

                            Aw man, I made my post immensely long for no reason again ._. Sorry, and thanks for the help!
                            __________________


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


                            Reply With Quote
                              #193    
                            Old March 15th, 2012 (1:02 PM).
                            sonic1's Avatar
                            sonic1 sonic1 is offline
                            ASM is my life now...
                               
                              Join Date: May 2008
                              Location: Portugal
                              Age: 23
                              Gender: Male
                              Nature: Timid
                              Posts: 79
                              Quote:
                              Originally Posted by redriders180 View Post
                              Complete Edit: I decided to delete my previous post, and ask something else instead
                              Oh wow, you guys are quite a few calibers above me...I feel sort of insignificant, but I guess I'll post my ideas.

                              Anyway, I'd like to implement a very dynamic script in my game...Basically, I wanted to allow myself to release events for my game. But instead of being limited to whatever I choose at the time, and avoiding releasing a new patch every time I wanted to do an event, I decided to make a spot in my game with a person that asks for a series of codes. These codes would be released by me, and the script would take the codes hex values, arrange them as necessary, do some checks to make sure the player isn't just mashing buttons, and "build" a completely custom Pokemon. This would allow me to easily decide an event, calculate the code, and release it in a post.

                              But my problem is that I need a keyboard to pop up, in order to enter the code. I've decided on two approaches:

                              The easy way would be to edit the mail input to take easy chat words and convert them into code. This would be good, since there are so many words, and I assume each is a byte value. But it's somewhat unprofessional.

                              The hard way would be to recreate the "nickname" keyboard. I wouldn't know whats involved, but I know emerald has one for Walda...could we port it over.

                              Aw man, I made my post immensely long for no reason again ._. Sorry, and thanks for the help!
                              Well, either way of doing things, if you want to create a completely "custom" pokemon, you're gonna need ASM.
                              My approach is: why don't you build a system that, when inputting some values in the ram, reads them and does things based on them?
                              Did you know that VBA's Memory Viewer has the ability of loading hex data into ram offsets? You could create your .raw/.bin files and ask the player to load them manually with vba.

                              But yeah, thats only an idea i have.

                              ~Sonic1
                              __________________
                              This signature has been disabled.
                              over 350px high
                              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
                                #194    
                              Old March 15th, 2012 (1:32 PM).
                              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
                                Quote:
                                Originally Posted by sonic1 View Post


                                Well, either way of doing things, if you want to create a completely "custom" pokemon, you're gonna need ASM.
                                My approach is: why don't you build a system that, when inputting some values in the ram, reads them and does things based on them?
                                Did you know that VBA's Memory Viewer has the ability of loading hex data into ram offsets? You could create your .raw/.bin files and ask the player to load them manually with vba.

                                But yeah, thats only an idea i have.

                                ~Sonic1
                                I already knew that I'd need ASM, and I do have a plan on making this work...Each letter has a byte value, and I want to make the keyboard thing store a byte value to certain variables (0x8000 to 0x8009 come to mind). The all you need to do is create a certain code, e.g the first two bytes determine pokemon species, etc. etc, put in some checks, and then voila, the Pokemon is created. I've already studied extensively on pokemon data structures, and JPANs hack engine makes it easier...simply give a "base pokemon" (aka Bulbasaur), use the special that "unlocks" the pokemon, and "push" the values from the variables to the corresponding bytes. All I need to make is the keyboard store each letters byte value into a variable.

                                I realise that simply giving a .raw file would be simple, but I dunno, I kinda want it to look nice, keep it interesting, and make it so even the noobiest of rom hack players could obtain my events, and I'm sure almost everyone can input some codes.
                                __________________


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


                                Reply With Quote
                                  #195    
                                Old March 15th, 2012 (2:19 PM). Edited March 15th, 2012 by droomph.
                                droomph's Avatar
                                droomph droomph is offline
                                weeb
                                 
                                Join Date: Sep 2011
                                Location: nowhere spectacular
                                Age: 21
                                Gender: Male
                                Nature: Impish
                                Posts: 4,291
                                Quote:
                                Originally Posted by redriders180 View Post
                                I already knew that I'd need ASM, and I do have a plan on making this work...Each letter has a byte value, and I want to make the keyboard thing store a byte value to certain variables (0x8000 to 0x8009 come to mind). The all you need to do is create a certain code, e.g the first two bytes determine pokemon species, etc. etc, put in some checks, and then voila, the Pokemon is created. I've already studied extensively on pokemon data structures, and JPANs hack engine makes it easier...simply give a "base pokemon" (aka Bulbasaur), use the special that "unlocks" the pokemon, and "push" the values from the variables to the corresponding bytes. All I need to make is the keyboard store each letters byte value into a variable.

                                I realise that simply giving a .raw file would be simple, but I dunno, I kinda want it to look nice, keep it interesting, and make it so even the noobiest of rom hack players could obtain my events, and I'm sure almost everyone can input some codes.
                                well, 0x815F9B4+(0x79x4) in FireRed is the pointer to the ASM routine for givepokemon...maybe you could try a little call-with-parameters to that or whatnot?

                                Also, if you wanna do that keyboard thing, DavidJCobb has a keyboard (of sorts) for variable reading, although it's kinda cumbersome. I think he has a link in his sig or something...

                                If you know some programming you could set up a small applet online which automatically patches your save file, like a real Event.
                                __________________
                                did u no there r 21 letters in the alphabet
                                o i forgot 5
                                uraqt


                                Reply With Quote
                                  #196    
                                Old March 15th, 2012 (3:45 PM).
                                sonic1's Avatar
                                sonic1 sonic1 is offline
                                ASM is my life now...
                                   
                                  Join Date: May 2008
                                  Location: Portugal
                                  Age: 23
                                  Gender: Male
                                  Nature: Timid
                                  Posts: 79
                                  Quote:
                                  There's just one problem with that. What about people that use hardware (ie. A Flashcard) and not VBA?
                                  Well... Yeah, i admit, it isn't good for those, but you can just do an action replay that overwrites the values in RAM.


                                  Quote:
                                  I already knew that I'd need ASM, and I do have a plan on making this work...Each letter has a byte value, and I want to make the keyboard thing store a byte value to certain variables (0x8000 to 0x8009 come to mind). The all you need to do is create a certain code, e.g the first two bytes determine pokemon species, etc. etc, put in some checks, and then voila, the Pokemon is created. I've already studied extensively on pokemon data structures, and JPANs hack engine makes it easier...simply give a "base pokemon" (aka Bulbasaur), use the special that "unlocks" the pokemon, and "push" the values from the variables to the corresponding bytes. All I need to make is the keyboard store each letters byte value into a variable.
                                  Well, you know, its fairly easy to use the naming routine (the keyboard thing). Its just calling the routine with 2 parameters plus 2 optional (optinal depending on the type of usage = player, pokemon, box, mail). R0 is type of naming/usage, and R1 is the adress in RAM where the input is gonna be stored! This is a valuable info for you. You can store the adress of the var 8000 there and it will store 10 bytes (max letters) from the initial address onward (thus ending in var 8005, if i'm correct).

                                  But hey, don't try to put everything in just 1 input. Make 3-4 inputs depending on your needs. I doubt 2 bytes are enough to store a pokemon species using the keyboard, because the keyboard doesn't have access to 255 different symbols (ok, what i'm tryin' to explain is a bit hard, and i don't know how to explain it well).

                                  ~Sonic1
                                  __________________
                                  This signature has been disabled.
                                  over 350px high
                                  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
                                    #197    
                                  Old March 15th, 2012 (4:18 PM).
                                  Mana's Avatar
                                  Mana Mana is online now
                                   
                                  Join Date: Jan 2009
                                  Location: UK
                                  Age: 26
                                  Gender: Male
                                  Posts: 9,983
                                  I've been fiddling around with special 0xC2 which apparently hatches eggs, to try and create a 'force hatching' scenario.

                                  The special alone (in a script) seems to only work if 'egg' is the only thing in your party. Having 2 eggs in your party - only the first one will hatch. Having any pokemon in your party and a " - hatched from the Egg" message will occur, giving you the option to nickname 'egg' but having no effect.

                                  The normal egg hatching script:

                                  Quote:
                                  #org 0x1BF546
                                  lockall
                                  msgbox 0x81BFB5A MSG_KEEPOPEN '"Huh?"
                                  special 0xC2
                                  waitstate
                                  releaseall
                                  end
                                  I tried using Special2 and set the store variable to 0x2 to see if it could 'select' the correct position for the egg, if it was 2/3rd in the party. However the only change this made was the egg then hatched to ??????, which then got nicknamed, but the eggs stayed in the party still.

                                  So is it possible to use the special / special2, in co-ordination with writing a byte or calling forth a variable to then either pick what the egg hatches into, or what egg hatches.
                                  Reply With Quote
                                    #198    
                                  Old March 15th, 2012 (4:33 PM).
                                  droomph's Avatar
                                  droomph droomph is offline
                                  weeb
                                   
                                  Join Date: Sep 2011
                                  Location: nowhere spectacular
                                  Age: 21
                                  Gender: Male
                                  Nature: Impish
                                  Posts: 4,291
                                  Quote:
                                  Originally Posted by SwiftSign View Post
                                  I've been fiddling around with special 0xC2 which apparently hatches eggs, to try and create a 'force hatching' scenario.

                                  The special alone (in a script) seems to only work if 'egg' is the only thing in your party. Having 2 eggs in your party - only the first one will hatch. Having any pokemon in your party and a " - hatched from the Egg" message will occur, giving you the option to nickname 'egg' but having no effect.

                                  The normal egg hatching script:



                                  I tried using Special2 and set the store variable to 0x2 to see if it could 'select' the correct position for the egg, if it was 2/3rd in the party. However the only change this made was the egg then hatched to ??????, which then got nicknamed, but the eggs stayed in the party still.

                                  So is it possible to use the special / special2, in co-ordination with writing a byte or calling forth a variable to then either pick what the egg hatches into, or what egg hatches.
                                  Try decompiling the pointers to that script/the few bytes around the script and see what you find, maybe those pass the parameters to the variables...
                                  __________________
                                  did u no there r 21 letters in the alphabet
                                  o i forgot 5
                                  uraqt


                                  Reply With Quote
                                    #199    
                                  Old March 15th, 2012 (5:01 PM).
                                  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
                                    Quote:
                                    Originally Posted by sonic1 View Post

                                    Well... Yeah, i admit, it isn't good for those, but you can just do an action replay that overwrites the values in RAM.




                                    Well, you know, its fairly easy to use the naming routine (the keyboard thing). Its just calling the routine with 2 parameters plus 2 optional (optinal depending on the type of usage = player, pokemon, box, mail). R0 is type of naming/usage, and R1 is the adress in RAM where the input is gonna be stored! This is a valuable info for you. You can store the adress of the var 8000 there and it will store 10 bytes (max letters) from the initial address onward (thus ending in var 8005, if i'm correct).

                                    But hey, don't try to put everything in just 1 input. Make 3-4 inputs depending on your needs. I doubt 2 bytes are enough to store a pokemon species using the keyboard, because the keyboard doesn't have access to 255 different symbols (ok, what i'm tryin' to explain is a bit hard, and i don't know how to explain it well).

                                    ~Sonic1
                                    I understand completely what you mean :) I had planned to make the script something with a maybe 4 or 5 inputs...I wanted complete control over species, IVs, moves, item held, and possibly nickname. How do you recommend I make this work, however? Would I have to make an ASM that just puts the ram offset into R1, then call the normal nicknaming special?

                                    This brings up something else...If I just use the nickname keyboard, the text says "[pokemon's] Nickname?". If it's not hard, I'd like to make it say something else on it, otherwise I'm sure I could live with it.
                                    __________________


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


                                    Reply With Quote
                                      #200    
                                    Old March 15th, 2012 (5:13 PM).
                                    Mana's Avatar
                                    Mana Mana is online now
                                     
                                    Join Date: Jan 2009
                                    Location: UK
                                    Age: 26
                                    Gender: Male
                                    Posts: 9,983
                                    Quote:
                                    Originally Posted by droomph View Post
                                    Try decompiling the pointers to that script/the few bytes around the script and see what you find, maybe those pass the parameters to the variables...
                                    Hmm the pointer to the egg script lies at 0x6d71c, the only data string that is just before that pointed to a script with the line 'fadesong 0x9AOD' which as far as I know doesn't exist - so looks like egg hatching is controlled by ASM.

                                    Does anyone know where Egg-Step information is stored?

                                    //

                                    Been looking for possibly Egg-Step info, can't seem to find it anywhere o_o nobody lists it with species/etc. data, and I have looked around the areas with it to no avail (For example, I'm assuming Pikachu will have a value of '15' somewhere in it's data to signify 21 cycles for hatching. If that value was momentarily set to 0, I wonder if the egg would insta-hatch.
                                    Reply With Quote
                                    Reply

                                    Quick Reply

                                    Join the conversation!

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

                                    Create a PokéCommunity Account

                                    Sponsored Links
                                    Thread Tools

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

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

                                    Forum Jump


                                    All times are GMT -8. The time now is 6:52 AM.