![]() |
Quote:
|
So, I was messing around with spriteface2, which doesn't seem to be very documented (at least not in Spherical Ice's online thing), and I got this (tested in EM, btw):
Spriteface 2 documentation 0 - face down 1 - face down 2 - face up 3 - face left 4 - face right 5 - face down 6 - face down 7 - face up 8 - face up 9 - run nonstop facing down 10- run nonstop facing down 11- run nonstop facing up 12- run nonstop facing left 13- run nonstop facing right 14- run nonstop facing down 15- run nonstop facing down 16- run nonstop facing up 17- run nonstop facing up 18- run nonstop facing down faster 19- run nonstop facing down faster 20- run nonstop facing up faster 21- run nonstop facing left faster 22- run nonstop facing right faster 23- run nonstop facing down faster 28- run nonstop facing down very fast 29- run nonstop facing up very fast 30- run nonstop facing left very fast 30- run nonstop facing right very fast 46- (only works on creatsprite of player) runs in place facing down 47- (only works on creatsprite of player) runs in place facing up 48- (only works on creatsprite of player) runs in place facing left 49- (only works on creatsprite of player) runs in place facing right To use it, first you must use createsprite then spriteface2. |
In-game trades in FR are at 0x26CF8C. The scripts relating to them store very little information, and just index into this table. Each entry is 0x3C bytes, used as such:
0x0 - Nickname, limited to ten characters + 0xFF. 0xC - Half-word, ID of the NPC's pokemon. 0xE - IVs, stored in HP/Atk/Def/Speed/SAtk/SDef order. One byte each. 0x14 - An entire word dedicated to the ability bit. 0x18 - NPC's trainer ID. Only the low bits are visible on the status screen. 0x1C - Five bytes; four of them are 5 and one is 0x1E. Not sure what they do if anything. 0x24 - Personality value; influences nature, gender, etc; more info here: http://bulbapedia.bulbagarden.net/wiki/Personality_value 0x28 - Hold item. 0x2A - 0x00 if the mon carries mail (only ZYNX has mail in FR), 0xFF otherwise. 0x2B - Original trainer's name. Limited to seven characters + 0xFF. 0x36 - 0x00 if original trainer is male, 0x01 if original trainer is female. Only visible in RSE. 0x37 - Always 0xA. Not sure what it controls if anything. 0x38 - Half-word, ID of the species the NPC is looking for. 0x3A - Half-word, seems unused. |
Quote:
Quote:
|
Quote:
|
Someone on YouTube who goes under the username of "Pokechu22" had discovered a hidden debug function within Pokémon FireRed just by fiddling around with a glitch Pokémon.
When he shared his discovery on Bulbapedia, someone pointed out that the "backup save memory" mentioned within this hidden debug function was also mentioned in a couple of places within the leaked debug copy of the German version of Pokémon Ruby, leading me realize that this is indeed a function related to debugging the game. Who knows? Perhaps there's more hidden debug features within the ROM that we don't know about. |
Quote:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00451F50 00451F60 00 00 00 00 01 01 02 14 10 00 08 00 01 15 0B 08 06 01 48 01 01 15 02 09 09 00 78 01 FB 5E 41 08 The above controls the size and positioning of various aspects of the Pokédex page, regardless of whether the National Pokédex has been activated or not. 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00451F60 00451F70 00451F80 00451F90 00451FA0 00451FB0 00451FC0 00451FD0 00451FE0 00451FF0 00452000 00452010 06 01 48 01 01 15 02 09 09 00 7B 01 FB 5E 41 08 FD FF FF FF 95 5E 41 08 09 00 00 00 E0 5D 41 08 FD FF FF FF F7 5D 41 08 00 00 00 00 09 5E 41 08 01 00 00 00 18 5E 41 08 02 00 00 00 2D 5E 41 08 03 00 00 00 39 5E 41 08 04 00 00 00 46 5E 41 08 05 00 00 00 57 5E 41 08 06 00 00 00 6D 5E 41 08 07 00 00 00 7B 5E 41 08 08 00 00 00 88 5E 41 08 FD FF FF FF A4 5E 41 08 0A 00 00 00 D5 5E 41 08 0B 00 00 00 DF 5E 41 08 0C 00 00 00 ED 5E 41 08 0D 00 00 00 B0 5E 41 08 FD FF FF FF C7 5E 41 08 FE FF FF FF 6C 1F 45 08 C1 2E 10 08 49 2F 10 08 13 00 09 00 00 00 0C 04 12 30 01 02 FB 5E 41 08 The above controls the Pokédex prior to the National Pokédex being activated. 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00452010 00452020 00452030 00452040 00452050 00452060 00452070 00452080 00452090 004520A0 004520B0 004520C0 004520D0 13 00 09 00 00 00 0C 04 12 30 01 02 FB 5E 41 08 FD FF FF FF 95 5E 41 08 09 00 00 00 24 5F 41 08 0E 00 00 00 E0 5D 41 08 FD FF FF FF F7 5D 41 08 00 00 00 00 09 5E 41 08 01 00 00 00 18 5E 41 08 02 00 00 00 2D 5E 41 08 03 00 00 00 39 5E 41 08 04 00 00 00 46 5E 41 08 05 00 00 00 57 5E 41 08 06 00 00 00 6D 5E 41 08 07 00 00 00 7B 5E 41 08 08 00 00 00 88 5E 41 08 FD FF FF FF A4 5E 41 08 0A 00 00 00 D5 5E 41 08 0B 00 00 00 DF 5E 41 08 0C 00 00 00 ED 5E 41 08 0D 00 00 00 B0 5E 41 08 FD FF FF FF C7 5E 41 08 FE FF FF FF 1C 20 45 08 C1 2E 10 08 49 2F 10 08 14 00 09 00 00 00 0C 04 12 30 01 02 02 C8 13 03 C8 8D 00 00 0A 00 D0 07 The above controls the Pokédex after the National Pokédex is activated using special 0x16F. Hover over all of the colored bytes to find out what they do. Co-ordinates are colored in red, while dimensions are in blue. List items are grouped together by yellow highlighting. Pointers are colored magenta, while the list item "functions" are colored in "royal blue". Unformatted bytes are currently unknown. Note that Pokémon past 151 do not get loaded with the National Pokédex list "function" (0E 00 00 00) until the special is activated, and it otherwise functions like the Kanto Pokédex list "function" (09 00 00 00). It's also worth noting that all of the headers (e.g. 'POKéMON LIST') are just regular strings. To recreate the orange text and dark-orange background in XSE, use this (and replace NAME with whatever you want, obviously): Code:
|
Thanks to this post, I was able to find the part of the code that checks the badges for Surf and Waterfall. They're at 0x06D59C for Surf and at 0x06D5D0 for Waterfall. They're obviously stored as little endian. That's why the bytes at Surf's location are 24 08. Why is this important? Well, if we set those to flags that get set at the start of the game (0x33 = 33 00 is one, more in this thread), we can practically remove the badge checks for HMs with the following three steps:
Also, yes, I do realise it's a better idea to completely null out the call to the routine that checks flags, though I bet anybody who knows ASM could do it in seconds just by looking at the bytes. |
If you want to stop the top help bar from showing up at all in the Town Map in Fire Red, just stub out the function at 080C4ED0 with a bx lr (70 47). This is useful if you maybe don't like the help menus or something, idk.
Also, if you want the Town Map to act like it would in a Pokemon Center (ie without the sliding animation), set 080A1CB0 and 080A1CDC to 1. Basically each offset calls the routine at 80BFF50 to set up the callbacks for the Town Map, thus also passing this argument handed down through r0. If it's set to 0, it does the sliding map animation. If it's set to 1, it acts like a wall map. Note that this map will not be able to view the additional regions like a normal map would. |
Quote:
First of all, all HMs have secondary flag checks if used via the BRM. The badge checks for Cut, Strength, Rocksmash are done via scripts. The badge checks for waterfall and surf are done in two places, once in their respective scripts, and another in the routines themselves (those checks would be at 0x806D570 and 0x806D5B2 respectively). Finally flag checks for moves being used via the bottom right menu are at 0x812461C (flash, fly and others you decide to use via BRM). The same flag check is used for all HMs, and changing that requires your own little snipplet of ASM. Right now it's doing something like this: Code:
Overall just editing the badges should be rather simple :D |
Posted this in the Beginner's Lounge as a reply to a question, but figured it might as well go here:
Code:
|
Quote:
Again, just a guess. EDIT: There has to be more to that mail byte too. Where is Zynx's mail message stored? EDIT2: According to this Bulbapedia article, Pokemon given in ingame trades have contest stats all at 5, save for one that's set at 30. This all but confirms that the bytes at 0x1C are the Pokemon's contest stats. It also says that all ingame trade Pokemon have a sheen of ten. The byte at 0x37 is then probably sheen like I thought, since it's always set at 0xA. |
I'm not sure if anybody's done any research on this in the past, but in BPRE, the branch for incenses in breeding starts at 0x08045FD2. At that point, R4 appears to contain an address to the Pokemon's species, and R6 and R2 contain the held items of the two Pokemon. More info in the spoiler.
Spoiler:
It would be fairly simple to put a hook in the table and point to more checks. |
E0 at 0806D7C3 will disable all of poison's effects in the overworld.
|
Quote:
|
In Fire Red, change the halfword at 21D94 (0x137) to a different song ID and it'll change the wild Pokemon defeated fanfare to another song. Example:
Changing 0x137 (Victory 2) to 0x12B (Battle 6) will allow you to hear the Champion's battle theme every time you defeat a Pokemon in the wild. Tickle yourself with this if you'd like. |
Quote:
Quote:
It continues to Continue/New Game/Option part? |
Does someone know the location of the amorphous blob graphics on which the player surfs on in FireRed? It looks like some kind of blue pokémon.
I know there is the answer for Emerald in this thread (p.22), but I'm looking for the FireRed offsets. Edit: found it, it's at 0x396B08. |
Quote:
It will permanently disable the start game menu. You can't resume games anymore, after that. You'll have to use the emulators quick saves for that. |
So I was looking at disable's effect and was wondering where a number of things in the script were found.
These are: - number of turns the effect lasts - target of the effect (can it affect the user, maybe both targets in a double battle) - why you can't disable more than one move (it has to store this information in the RAM, maybe there is one RAM offset and if it's taken the effect fails) Here's the script in Emerald offset 0x2D9507 Spoiler:
The actual disablelastusedattack is one byte i think A3. It points to 0x2D9F1C. Spoiler:
I don't think the rest of the script is relevant. If you could change the things I mentioned above you could introduce cool new moves that would be so strong they would get disabled for a few turns. If you could make disable's effect not disappear when you switch out a Pokemon you could prevent a sweep from happening. I hope there is a way to change these things and they're not hardcoded. |
Option presets
I don't know if this has already been posted before but I'll share it anyway. Something that has always annoyed me about the games were the presets in the option menu. Every time I start a new game, the first thing I'm doing is change the options. So I did a little research on them and found out how you can change the preset values. Write "XX 20" at offset 0x5496C, where XX = [text speed] + [frame] * 8 Text speed: 0 = slow, 1 = mid, 2 = fast Frame: 0 = type 1, 1 = type 2, etc. Write "XX 20" at offset 0x5499C, where XX = [sound] + [battle style] * 2 + [battle scene] * 4 Sound: 0 = mono, 1 = stereo Battle style: 0 = shift, 1 = set Battle scene: 0 = on, 1 = off Write "XX" at offset 0x549A2, where XX = [button mode] Button mode: 0 = help, 1 = LR, 2 = L=A These offsets work for both FR and LG. Edit: Here are the offsets for Emerald: 84354: XX 20 for text speed and frame 84378: XX 20 for sound, battle style and battle scene 84384: XX 20 D0 74 for button mode The XX values are the same as above. |
OK, happy fun time again. So over on #GoGo Le Pug was curious as to how to get rid of Spinda's spots. Turns out the fix was easy:
So in Fire Red one routine actively handle's doing Spinda's spots, located at 08043458. This routine does a few checks: First if it's Spinda, then it goes through each bit of the PID and extract info from that and does its thing on the sprite, adding 4 to a certain range of colors. To get rid of the Spinda check, simply write E0 to 08043475 for Fire Red, or 0806D681 for Emerald. Likewise, if you wanted to make every Pokemon have Spinda spots, just write 00 00 to 08043474 (FR) or 0806D680 (EM). Spinda's spots are located at 0825265C and 0825265E, interlaced I believe with two bytes for the smaller two dot designs and two bytes for the larger ones (maybe, I haven't fully looked into it), hence the 2 bytes difference between the two offsets. If anyone is curious on the actual dot placement stuff this is a nice read. Also gives you the plain dot designs. |
As sonic1 said earlier in this thread, the offset for the table that determines which pokemon are banned in the battle frontier in emerald is at x611C9A. there are 3 pointers to this table.
the first pointer is at x1A3FCC, this seems to be used to see if you have enough non-banned pokemon in your party. the second pointer is at x1A418C, this seems to be used in the script that tells you which pokemon are banned the third pointer is at x1B8654, this seems to be used to see which pokemon are actually not able to enter so to add more just repoint the table at x611C9A, expand it (making sure it ends with FF FF) and put the pointer to the new table in reverse hex at the three offsets |
I know some amount of page back, the help system could be removed but you needed to mess with the titlescreen. Is there a way to remove it without messing with the titlescreen function?
|
Quote:
- From the PRPB log |
Quote:
|
Quote:
When using this the start menu seems to pop up randomly at the end, which glitches out the script a bit (it will continue to run, but yeah... not the best). Any ideas why? Or an alternative? ): // Tested on another ROM incase it was compatibility with other bits and pieces - on a near-blank FR it does the same. |
Quote:
|
The bytes at 0x130F56 and 0x130F58 control the X and Y position, respectively, of Oak's intro Pokemon in BPRE. I'm not entirely sure where the origin is considered, but I suspect the coordinates point to the center of the sprite, as opposed to the top-left corner as one may have thought.
|
After my post being deleted, I decided to figure it out myself. I'm not sure if this has already been documented, but the bike bell's location is at 0x06B57D8. If you want to use the bike for something else like I am, to get rid of it completely its as easy as replacing the BC with a 00 :)
|
Looks like there's a table of boxes and pals which are used for the FIGHT menu. The table is located at 08471E8C.
The routine which determines which box to show during battle is at 0814FFC4. In the same routine, down at 0814FFEE there's a table switch which happens depending on the value in R4. It's used to select a specific text box style. The same subroutine seems be to used at places like text messages, signs, start menu, and Pokemon selection menu too. |
After a while of searching, I've found the offset needed to change the palette for the head on the world map in FireRed. I've noticed a lot of hacks haven't changed this, so its 003EF27C.
You can just go to APE with that offset and edit it to the palettes as you please. And, if anyone was wondering, the offset for the image itself in UNLZ is 188 ;) http://oi59.tinypic.com/2ebhl3l.jpg Yay :) |
Quote:
|
But the only place where there could be restriction is the train tower, though there is no restriction, so what it is for ?
|
Quote:
|
This is for Firered.
The Lavender Tower Ghost palette is in a weird, compressed format. The first color of the palette is at 0xE93B19. If you open up VBA's palette viewer with the Ghost onscreen, its entry is the second row on the sprite side. By following along carefully (and remembering that VBA switches the color values; FF7F becomes 7FFF) you should be able to figure out which bytes in your hex editor are the Ghost's colors and which aren't. And I guess as a well known bonus the actual Ghost's image is compressed at 0xE93B38 (credit to NSE's bookmarks). The pointer to the image is at 0x0346B8, if you'd rather change the pointer to another image like I did. Just remember to compress the image you want to change it to when you insert it, as the game will crash if it isn't compressed. And some keywords so that anyone searching for this can find it: unidentified ghost palette lavender town ghost palette ghost marowak palette ghost marowak's mother palette lavender ghost palette silph scope lavander lavandar FR |
This is probably pretty basic but I didn't realize it until now, so I'm posting it.
If two of the same type of event are stacked on top of each other (for example, two person events on the same tile), the player will always interact with the one with the lower event number first. Changing around the person numbers will not affect this. I discovered this because I had to hide an item ball on a cut tree and was fiddling around to make it work so that the player interacted with the hidden item ball before the cut tree. Making it so that the item ball had a lower event number than the cut tree worked. |
FINALLY SOLVED IT!!!!!
To remove the need for a Pokemon to have learned surf to be able to surf in the overworld in Emerald, replace the bytes at 9C80A-9C80B to 00 00. (You need to change the script that Dark Sneasel found aswell but that's easy - page 22) Thanks to FBI agent, I could not have found them without his research on FireRed. Edit: This doesn't change the badge requirement, I'm using the 5th badge to activate surf anyway so I didn't have to. Check the first page of this thread for how to change the badge requirement. |
Quote:
Code:
Code:
|
So, I'm posting some research done by daniilS. The content of this whole post should be credited to him. The offsets here are for Firered.
In order to change the xy position and the height and width of the textbox in the overworld, you just have to make some simple byte changes. Keep in mind, the positions and sizes are in tiles, so you may need to divide your needed dimensions by eight for things to line up. To change the x coordinate, change the byte at 0x41F42D. To change the y coordinate, change the byte at 0x41F42E. To change the width, change the byte at 0x41F42F. To change the height, change the byte at 0x41F430. Fortunately, the text itself will automatically adjust to its relative new position in the box. Here's a link to the rboxbase's code. |
The Town map can only display 25 flying sprites. Not sure on how to increase this number however sorry.
|
Quote:
Also, I do recall encountering that exact Nuzleaf swarm in-game so this seems fairly legitimate, though I am also puzzled as like you mentioned, it doesn't reflect what most places claim are the swarms for Emerald. |
Quote:
I have no idea about repointing them, I didn't try to do anything too fancy. I just tried to find and edit them so I could stop having wilds appearing with blatantly wrong movesets, and then gave them blatantly illegal moves calling them event spawns. |
Quote:
Quote:
|
Quote:
|
Hum, french research, i have found offset for delete Cascade, surf in rouge feu(french redfire) and Emeraude (french Emerald)
And other: (Only french offset): I work without ASM :x French rom without CS(french HM): Spoiler:
FBI agent have give offset cascade and surf for Redfire, then, i have found for Rouge feu. After 6hours, i have found offset cascade and surf for Emeraude, with my research, you can found offset for Emerald easy. (Surf: Redfire: 0x6D588 : 0CD1 => 0000 and rouge feu 06D5A8 : 0CD1 => 0000 , so easy for you ^^. Also, where are post for without HM FLY (FBI agent: http://www.pokecommunity.com/showpost.php?p=8505424&postcount=8) for newbie ,like me, easy to understand. Because with this tutorial, i cannot for french rom, i think. Thank. |
So the other day I found a plugin for IDA which was called patchdiff2, which apparently could find similar and identical functions between code revisions of the same program. So I decided to run it through and do a diff between Emerald and knizz's IDB, and it actually managed to document most if not all of his function labelings:
Identical: Code:
Code:
EDIT: And a list of functions which Fire Red has but Emerald either doesn't have or is too radically different: Code:
|
Quote:
|
I'll just leave a link to this thread here: http://www.pokecommunity.com/showthread.php?p=8728989
That thread hasn't gotten the attention it deserves. Also, I've just posted some more info in the last two posts, but I'm sharing it here because I'm afried it'll go unnoticed otherwise. |
Don't know where to post it, items thread are almost never used, so, Choice Specs for Emerald. Just place this routine anywhere and follow the instruction within the spoiler :
Spoiler:
Thank's to Touched for his help and MrDs for his code (which I almost litterally copy/paste) Forgot to mention, this routine allows a new item to have the choice spec effect. All you have to do is to give at your item the same caracteristic than choice band, except for the "held item" part (which is just above the "battle usage" in G3T). If you copy/paste the routine above, you will have to set the held item effect at 16, because 0x10 in hex = 16 in dec. |
Event dependent map music
I wasn't sure if I should post this here or in the ASM resource thread, but I decided to post it here. If the ASM resource thread is more adequate for something like this, feel free to move it there. So I've written a little routine that makes the game load a different track number than the one that's specified in the map header if a certain variable has a certain value. Basically what it does is it goes through a table and searches for a suited entry. The table can be inserted at any address at your convenience. Here's what an entry has to look like: Byte: map bank Byte: map number Hword: track number Hword: variable number Hword: variable value For example, if you want to have the map 3.0 play the song 0x130 when variable 0x40D0 holds the value 1, your entry should look like this: 03 00 30 01 D0 40 01 00. Important: The table has to be terminated by FF FF, otherwise the routine wouldn't stop searching. If the routine doesn't find any entry whose conditions are met, it will load the track from the map header. Vice versa, if more than one condition would be met, only the first track will be loaded. Also note that when you insert this routine, the already existing non-standard tracks of RSE (like the one during the weather crisis) won't work by default anymore. To insert it, you have to write the following: At 55D6C (FR) or at 8565C (EM) Code:
The routine for FR is Code:
Code:
|
Does your Emerald hack sound like this? Are you having sound corruption?
[hd]TUP78I9H4Qw[/hd] Well then go to 0x2E0000 and you should see something like Code:
Code:
[hd]WBwWDkCYut8[/hd] |
Quote:
Below are the exact steps I took: Spoiler:
|
Quote:
|
Quote:
Hmmm exact same problem. Wonder if JPAN's engine effects this? Edit: Got it working thanks for Percy. Looks like it was something to do with the offsets I was pointing to. Once pointed to 2D70C, and 2D7C4 it worked like a dream. Thanks so much everyone. |
Since we're talking about the caught Exp. gain implementation again, I was wondering if anyone ever figured out what was going on with this issue with it. No one ever responded to it, and I don't think anyone proposed a solution.
|
Updated LightBall (Double Atk/Sp atk) for Emerald :
Spoiler:
|
STATS BUFF CHANGES (and miscellaneous) :
Hi, I'm not sure if this is the good place, so tell me if I have to move/remove it. I was trying to make contrary when I realised that there was a bunch of things to take in count. So I started to make a table that I could use to simplify the task, which is rather hard. I looked at JPAN's battle script documentation, which had been really useful but I noticed there was some things that were missing. That's why I started to change the bytes used in the stats change animation and such, one by one, and found some useful stuff. All of this effect can be (I think) set in any attack by setbyte 0x0202448E or 0x02024335 in BattleScriptPro from Jambo51, or by using your hands and type them in Hex. Note that for the first category (0202448E) I did the test through a modification of tail glow's setbyte, and through a modification of overheat for the second (02024335). I think I missed some of the command, for exemple I only found the nightmare one with percent, I actually didn't test all the possibility, perhaps there's the byte "revenge effect" (which can be used for adjust technician for exemple) or "absorb effect", but most of the time I was full life with a classic situation. I could have missed rapid spin, dream eater, weather ball, thaws, imprison, snatch, stomp etc (at least if they can be set here). So, if a command is not documented it's because I couldn't found what it does (and if it does indeed something). Also I didn't mention the "buff HP" because they actually do nothing. Also, a thing to note to avoid confusion : when I say "percent" I meant you can set the probability of the effect to happen (in G3T for exemple, which you should use). You can possibly make a move that has 30% to make the foe unable to attack for the next turn (must recharge). Of course you can think it's like "flinched" except that there's no ability that can bypass this. You can make a foe fall in nightmare when it's asleep by hiting it, and adjust the probability to happens (a little bit overpowered I confess). There's other weird effect that can be used for fun (see commands 0xB5-like). I divided these effects in two category (with 2 sub-category for the second). The first is controled by the byte at 0x0202448E and the second by the byte at 0x02024335. So, here is what I found : Always change. Non-damaging. Byte at 0x0202448E. Here the changement are most of the time applied to the target, though the user can also be the target (agility and such), and sometimes the user is buffed instead of the target (anc power/overheat/super power also use that byte) : Spoiler:
At this byte sometimes you can adjust the effect with a percent (with G3T or others). Byte at 0x02024335. Damaging moves use this. Here the user or the target may be affected : Target : Spoiler:
User : Spoiler:
Any addition/correction is welcome :) |
Quote:
Quote:
|
Quote:
|
[FR] Battle hud offsets with pallets
I'm not sure this deserves its own thread, but I know the information will be useful to someone.
There are two images used for the battle hud. The enemy hud, and your pokemon's hud. The enemy hud location is: D1F604 Your pokemon's is: D1F340 Each of these use the same pallet at: D11b84 Entering these into the program NSE and setting the width to "8" and the height to "16" will display a perfect image of them, only cut in half. Happy editing! |
While inserting my new map into my hack I had the problem that the calculated map points were wrong.
Like for example ROUTE 1 has the block size 1x2 so at some point at the overworld the map shows your player at the upper point or the lower point. When you change your map size things are messed up, because the calculation goes wrong. If you want to change this go to 0x083F2178. It takes some trying to find the right offset for your location. It starts with the citys which are 1x1. |
Two doubts/ideas/requests:
1 - Is there a way to make fainted wild Pokémon not disappear, so you could catch them easier after they faint? And making they get some health back after an attempt to capture (so it looks like the anime, a little more)? 2 - Also I know this have probably been discussed before, but how hard would it be to make a Pokémon have more than 4 attacks? I know you wouldn't have to change anything within the Pokédex. Adding one or two summary page with another 4 attacks each (if we could make it to 8 attacks, or 12 respectively) would solve the OW problems. Inside battles, I don't have knowledge to make a correct statement. But the way I see, you only would have to change the "'Pokémon X' is trying to learn 'move Y', but he already know four moves. Forget a move to make room for 'move Y'?" routine, the room for the moves themselves and a way to show four moves in three different sets. Is all that too difficult? What would it take? |
Quote:
|
Quote:
If you're adding or taking away any moves, even one, you have to break half the game and edit every single instance of move reading and writing, names and even things like position and structures. So if you like to break the game in half and rewrite almost the entire engine for moves, start as soon as possible since you'll be at it for 8 years. |
Quote:
Quote:
It's hard... Tedious, long and super hard... Even the first one? I saw the experience gain after catching a wild Pokémon, and I thought there could be a way to make the game "wait" for you to decide to capture it or not after the Pokémon faints. |
Quote:
|
Quote:
|
Quote:
Honestly, this feature seems like it's way above your current skill level. You should work your way up to that level with more "conventional" hacking before attempting this, I would think. Furthermore, allowing every Pokemon to have more than four moves would require expanding the data structure that handles a Pokemon's information, not to mention you'd have to C up interfaces to display those extra moves, and find some way to handle switching sets in battle for both the player and the AI. If an AI Trainer is to have custom movesets, you'd have to set up a way to save eight moves per Pokemon in that structure too. The game is set up with the four move limit, and every structure/feature that involves using, displaying, or otherwise refers to Pokemon moves assumes that the limit is four. That's an almost insurmountable amount of research and targeted ASM edits to accomplish, and it has a good chance of breaking the game in ways that are not immediately obvious because of the scope of the changes. If, once you get to the skill level that how this all works is understandable to you, and you still think it's worth the effort to change, then go for it! But for those who do know how difficult and impractical this would be to implement, it's not worth the time investment to do for someone else. |
Quote:
I believe it could be easier, as the experience after catching a Pokémon was simple too. I never thought about the Pokéballs, actually. Just had the idea and let it out. Believe me, not trying that until a lot of other stuff is done, here. As for the maximum moves a Pokémon can have, I thought that would be easy to just add a new page to the "Summary" screen, as the same easy way to add a new layer to the "Fight" command inside a battle. I didn't know it involved so much. Plus, I thought the moves were directed for each Pokémon. I thought each Pokémon had 4 slots, and the game would just "fill the blanks" for the Pokémon every time a move was shown (fighting, Summary screen, etc, etc). I thought just changing this number to 8 and adding a viewable way of using the other slots was enough. I also thought after GoGoJJTech's explanation that maybe the attacks could be divided into "sets". That way, before the game "chooses" or "displays" (or whatever) using codes like "load move1, move2, move3 and move4" it would come with a "load set1, set2" beforehand. That way, you could still have codes for 4 moves, but you could choose what "block of 4 moves" you could use before. I don't know if the way I explained it, it sounded silly or just plain stupid. I don't have much programming knowledge, but it seemed like an alternative (not by far a much efficient one) to rewriting half the game. But no sweat, dropped it. Maybe if I ever try to write a game from scratch, who knows... |
Quote:
D1F340 - Player normal battles D1F794 - Player double battles D1F604 - Enemy normal battles D1F928 - Enemy double battles D1FABC - Safari ui D11BC4 HP bar (Pallet D11BA4) D11BC4 XP bar (Pallet D11B84) E7BB04 Trainer Pokeball line (think it uses pallet D11B84) As for the maps, I have no clue where they are, and I'm still searching. The XP and health bars are missing another image, and once it gets to a certain point will change to that image, if you find it, post it here please. Also no clue on where the text is. |
Anyone know where I can edit the table(?) for the friendship/happiness?
To elaborate on this something like making the decrease of a pokemon's friendship 10 instead of 1.. |
This stuff should help anyone wanting to check their party's hp.
0x20242DA is the address stored in RAM for the 1st pokemon in your party's HP. 0x20242DC is the max HP. 0x20242D4 is the status ailment a pokemon is currently suffering. (00 being nothing) Using comparefarbytetobyte 0x20242DA 0xnumber you want to check you can easily check a pokemon's hp. using comparefarbytetobyte 0x20242DC 0xnumber you want to check you can easily see if a pokemon has enough hp for something. using writebytetooffset 0xstatus 0x20242D4 you can easily edit the status effecting them. For the rest of your party, take these offsets and add 0x64 to them. |
Quote:
And if it helps, here's my script. Spoiler:
Thanks in advance! |
Choice Scarf for Emerald :
Spoiler:
Same idea than choice spec, give the special 0x1D to allow only one move, and give the same held effect than in the routine (which can be whatever you want). Choice scarf/spec MUST have a different held effect of course. There's two routines because there's apparently two checks (don't ask me why) |
In Emerald :
Wrap and such does 1/8 damage instead of 1/16 : write C0 08 instead of 00 09 at 08040D90 Quote:
|
Quote:
Fire Red: 020A4A: 01 020A4E: 05 Emerald: 0492EE: 01 0492F2: 05 |
Quote:
|
Quote:
Also, how can I make Pokémon breed only with his evolutionary family and Ditto? Will I have to make a new Egg Group for each evolutionary family? If yes, how do I do it? What about the Nidoran's and Volbeat/Illumise's case? I just put them in the same evolutionary family and they will breed? How can I make they not breed with Ditto, only amog themselves (Nidorans and Volbeat/Illumise)? How can I make the first Pokémon of every evolutionary family to be surely what comes out of an egg (No Marill, Wobbuffet, Pikachu, etc.), never skipping a baby? Lastly, how can I test this without having to go all the way 'till Island 4? |
I've been researching Tile Background behavior bytes.
This thread here exists: http://www.pokecommunity.com/showthread.php?t=144408 But its not complete. Here are a few other helpful ones. I'll update as I find more. 0x9 works like 0x1 (Wild Battle) except for the top layer covers the player. 0x21 works like 0x1 or 0x9 (Wild Battle) except for the player is above both of them. 0x60 works in an odd way. It deletes whatever image you had on there, and replaces it with random ones that you are able to walk over. If anyone knows which block allows both the up and down layers to cover the player, please let me know! |
Quote:
|
Quote:
|
Does anyone know how to change the exp. share to update it to gen 6 in pokemon emerald?
|
Does anyone know which routine is executed to generate a wild Pokemon on the grass. I know JPAN create a special for this on his Hacked Engine, but it's easier with just the callasm
|
Quote:
I ask, 'cause without that knowledge, I made encounters on sand to be possible just editing tiles with the Block Editor in Advance Map. |
To those people who want to expand the number of Pokémon on Emerald while retaining the animations:
Step 1: Spoiler:
Step 2: Spoiler:
Step 3: Spoiler:
Step 4: Spoiler:
Step 5: Spoiler:
http://i.imgur.com/ZxXvwuk.gif For the front sprite and back sprite animations index, Chaos Rush has an excellent index here on Pokécommunity. Now the only issue will be the creation of 2-frame sprites for Gen IV to Gen VI. Personally, knowing that Flora Sky has sprites for Gen IV to Gen V, I think that if Sky were to let us use and resize his sprites we could come up with a pretty good repository soon. Another method would be to use the Sugimori palettes DS-style sprite repository that MrDollSteak has come up with, which covers Gen I to V. |
I can't find the Small/stupid Questions Thread in tools and tutorials, so i'm posting here.
I want to know if there is any way to edit the gen 2 bug catching contest pokemon. Now using a randomizer, i've randomized them successfully, so i know that A. It can be done, and B. Someone has figured it out. For the record, i want to make it into a ghost-catching contest, with some newer gen ghosts added to the mix. |
I found out that inserting a new map in Emerald will screw up the Battle Pyramid. Screen goes black when entering the blue warp thing at the beginning.
Anyone got a solution to this? |
Quote:
|
Excuse me, I have a trouble with checking 1 Pokemon if it has been seen (= check Pokedex) in Emerald, I hasn't found any our topics talk about it... so, anyone know how to write script with XSE? Thanks!
(Such as: if you has seen it --> A/ hasn't --> B) |
Quote:
DPPt Save/Summary Pokedex Seen Count Display into EmeraldFor those who want the DPPt Amount Display of Pokedex which displays the seen amount in while saving and in the continue-new game menu into Emerald: 08031F96: 00 20 08031FA4: 00 20 0819A3B0: 00 20 0819A3B8: 00 20 Again, it is really that simple. :) Credits to Jambo51 for his original routine for FireRed. Only error though: the Trainer's ID. While these changes, it doesn't show the seen amount. Does it supposedly to happen or not? I'll look into that later. |
I've done some research on set wild battles in Emerald, and it turns out to be more complicated than what I anticipated. I can't guarantee that this is the same for Firered or any other ROM.
First of all, the command "setwildbattle PKMN LEVEL ITEM" is the same as doing "setvar 0x8004 PKMN, setvar 0x8005 LEVEL, setvar 0x8006 ITEM". Also, the flag 0x8C1 gets set before every battle and is cleared afterwards. I'm not sure why this happens. I don't see the difference when I don't include this. A set wild battle is always followed by a special that determines the battle type, which is 0x139, 0x13A, 0x13B or 0x145. --- SPECIAL 0x139 Special 0x139 doesn't seem to be used anywhere in the game, but it has a wave-like intro with the Kyogre/Groudon/Rayquaza battle music. Let's call it the "Weather Trio Song". --- SPECIAL 0x13A The special 0x13A is the strangest one, because it behaves differently depending on which Pokémon you're battling. This special is used on the Groudon, Kyogre, Rayquaza, Deoxys, Mew, Ho-oh and Lugia events. If this special is used on any other Pokémon than the ones I mentioned, it will have the same intro that Groudon uses. Groudon image, cave background and the weather trio music. When the special is used on Kyogre, it will have the same music but with a slightly different image and water background in battle. On Rayquaza, it has the same music, different image and a sky background in battle. Ho-Oh and Lugia have the same type of intro here. The screen fades black three times, then it pixelates. It uses the Kanto-legendary battle music. Deoxys has almost the same as Ho-Oh and Lugia, except it uses a battle music that is exclusive to Deoxys. Mew's intro fades black three times, then has a checkered-type of animation before going into battle. Not sure how to explain it, but it looks to be the same intro in special 0x13B. Mew also has its own exclusive battle music, which is similar to the Kanto-legendary music. --- SPECIAL 0x13B This special is only used for the Regis, and the intro depends on which of the three Pokémon is set in the wild battle. First of all, if you use a Pokémon that isn't a Regi, it will have the Regi battle music but it will have the same type of intro that Mew uses. In the intros, Regice shows seven yellow circles on the screen, Regirock shows seven orange circles and Registeel shows seven red circles. All in different patterns. --- SPECIAL 0x145 This special does not behave differently depending on the Pokémon, but on the level. If the Pokémon is the same level or above your first Pokémon in the party, the intro will show white stripes. If it's under your Pokémon's level, it will be a completely normal intro, like a wild encounter in a grass patch. As far as I'm concerned, this special is pretty much the same as using a "wildbattle" command. In the game, this special is only used on Southern Island for the Latios/Latias that isn't roaming, at level 50. --- Here are videos with the scripts in the descriptions: https://drive.google.com/folderview?id=0B1n0SW2yBMufV18tNTdITkxhaEk&usp=sharing I'm not sure how to change these battle types that are set to determined Pokémon. It might be possible with some ASM, but I have zero knowledge about that. However, it's pretty easy to change the battle music. Just add a "playsong" command and use any song you like. |
Quote:
flag 0x8c1 is a temporary flag btw. The level scripts structures are as follows: Code:
Code:
|
Quote:
Spoiler:
And the level script at Sky Pillar: Spoiler:
|
Quote:
|
In Emerald, anyone knows the script that check a certain PKMN in party? Tks!
|
Battle Script Command cmd49 (Fire Red):
This is a very important command. It appears in 99% of the Move Effect Battle Scripts. It is usually called at the end of battle Script (at 0x081d694E) which is used to terminates various Move Battle Scripts. Code:
The command routine is located at 0x0823210. At 0x2337c, there is a master table that controls the order of things that happen the end of a move. Each entry in the table, consists of offset to the ASM code for a particular end move event. There are 0x12 (18) entries in the table. I will explain the entries that I could understand Table Entries: Spoiler:
Table Execution Controllers: Spoiler:
Usage and Table Expansion Spoiler:
Important Locations, Registers and Shortcuts Spoiler:
|
Quote:
|
Quote:
DPPt/HGSS Poison Survival Style into EmeraldFor those who want the Generation IV's Poison Survival Style which leaves 1HP and the Poison status disappears in overworld into Emerald, here you go: Code:
|
Cap individual EVs to 252 instead of 255 Like in Gen VI
Set 080439FC and 08043A02 to 0xFC (FireRed) |
| All times are GMT -8. The time now is 8:53 AM. |
![]()
© 2002 - 2018 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2016 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.
Acknowledgements
Use of PokéCommunity Assets
vB Optimise by DragonByte Technologies Ltd © 2023.