![]() |
By nulling out the function call at 0805BA3A, you can remove the flag check for running shoes. So removing it is as simple as writing 00 00 00 00 over the bytes there!
|
I'm just now getting into hex editing, and the more in depth ROM hacking stuff, and I've been looking at how maps are stored in the ROM. I've learned quite a lot, but I wasn't able to do one thing I was really hoping I could. Is it not possible to write bytes of maps to change tiles in game? It seemed like it would be easier than having a level script to change the tiles every time you enter the map. (Which might not actually be necessary, I've been scripting for all of 2 days, so I very well may be over complicating it, not sure.)
I also tried rewriting the sound ID of a sound command to see if the next time that script was called the sound would be different, and it didn't change, so I'm guessing this isn't possible, but I thought I'd ask and see if anyone knew anything about it, and if there was a way to do it. |
So, I'll post my just-now finding, but I don't know if it's been posted yet. For Emerald, it's very easy to script a wild battle where the foe tries to flee. Simply use setwildbattle to set the Pokemon's species, level, and held item, then callasm 0xB072D, followed by waitstate. Simple as that ^_^
|
Karatekid552 told me I should put this here:
Quote:
|
Has anyone ever researched the ability of using moves outside of battle? Like is that just a thumb routine to be executed and how does one find it? I wondered if I was able to extend this, i mean it is easy to use attacks in scripts etc. but i'm looking for the attacks you can choose from the pokemon menu. (Like the HMs, dig, etc.)
I am thinking of it just being a basic thumb routine. I don't care for the game version btw. at the moment, I would be happy if someone would have any data I would research myself for german rom versions anyways and I don't think there is any big difference between FR/LG and RSS. ~SBird |
Your reflection palette is stored at 35E968
|
Quote:
|
Used flags:
Fire Red Spoiler:
Emerald Spoiler:
|
Now this has probably posted before but I couldn't find it and it seems like a fun feature: Riding pokémon like in the upcoming games.
I'm not too well versed with programming but my idea is as follows: My idea would be to have a bit for each pokémon that determines whether it is "ridable" or not. On the menu where you can view the pokémon's stats, held item etc there would be a check for this bit and if it is the value that means its ridable a ride option would appear, if not it wouldn't. Once selected the appropriate overworld would be loaded determined by something unique to each pokemon (id number?) and all would be great. Obviously going through this step everytime you want to ride a pokémon would be tedious so this feature could replace the bike. The last pokemon you rode could be stored somehow so when you press select the game would look to see if that pokémon was in your party and if not it would just load the regular bike sprite. There would need to be a lot of custom overworlds made but the HGSS pokemon overworlds could be used for now. As I said previously I'm not familiar with coding so various details could be wrong/far more complicated than I made out. Something similar could be done with surf I guess. Has anyone considered/attempted this before? I do think it would make a very interesting feature. |
Quote:
|
I acutally thought about this when I was asking the new cut like moves thingy. My current idea is to hijack the overworld routine(which basically takes the Overworld ID as input and then loads the sprite) so that the bike overworld is replaced by a dynamic ID. This way you don't have to concern about graphics anymore. I actually already wrote such a routine, but replaced the normal hero OW, it would not be a problem to extend this for the bike OW though. I also thought about making an item to do this job, one could basically hack the bike routine to do this and just check for any ridable pokémon in the current party. If there is no such pokémon it would basically not work and display a message. It would be way cooler though to have the ability on the pokémon itself(Like on the menu or as a dedicated move)
Everything else can be done very easily(You can see the outcome of this in the pokémon sovereign of the skies thread or on the youtube video: https://www.youtube.com/watch?v=IcYepxEgAHA I may also give you the code sample for this if you want just ask me via PM it's for the german emerald version though (BPED) and you need to figure out the needed branches and routines yourself for your version(also the dedicated offsets) What would be still really nice would be a way to implement this in a user friendly way. An item would be fine but how would it look like? Like a whip? Guess that would be rather harsh. Also the user can't decide which pokémon to ride this way. Not the best option I suppose... ~SBird |
Quote:
Also, I'm sad to say, that on Emerald, there is no hack to allow more than 256 OWs. Right now, emerald is already at 240. This would limit you to an extreme amount unless you port over JPAN's massive OW hack. On another note, we could also just hack the OW loader, so that when it is loading the bike, we simply push it to a different table, but using all of the same parameters as the bike. Then we wouldn't need to worry about expanding OWs. If Jambo is interested, he could code it into a move himself, since he knows how to, but I don't know if this would be his thing. If you do want to continue with the bike OW thing, go to RHO. I just finished code to force an immediate OW switch that doesn't require a reload of the screen or warping. |
Quote:
I did once write a routine to at least use more than one OW table therefore I know that it's working, but I did not test to expand the current table at all. I just don't see any obstacles(I did not look at JPANs routines eighter, since they are all for Firered and I guess at least in the part of how the game handles overworlds those two have some differences, at least in FR OWs are also captable of executing scripts if the right sort of behavior byte is set, this is not the case in Emerald) Well I guess i will try to use some sort of item first, for the moment I just can't come up with another solution probably it is also possible to implement some sort of "professional tamer" who allows you to "set" your saddle to a specific pokémon which of course can be "ridden" so you have an actual explanation for the player. Still using a ride move would be the best solution(in my opinion) but who knows what the future brings... ~SBird Edit: I guess if one expands the OW table he is also not able to use the new OW regularly on a map, at least advance map does not allow half word sized values. I don't know if this is also stored in byte form but it should'nt bother the game if it loads it from a dynamic ram adress like a in-game variable or something, you can basically store the "new bike" OWs and everything you do not need to use like regurarly on a map beyond the byte limit and your regular ows befor that. I don't know how JPAN worked himself arround this problem, I'm pretty sure advance map and other mapping tools won't support entrys beyond one byte if the map structure does not allow it. JPAN would have to hack the whole map structure which would make all the normal maps unuseable and the tools had to adapt themselves which is also unknown to me(Maybe i'm just uninformed) ;) |
Quote:
What I am seeing, if we continue with the bike, is a hack near the end of the routine which branches if the hero's bike is being loaded. At that point, we send it to check a var which will then read from a table and load the correct sprite. This, combined with my OW hack (simply for instaloading of palettes) would work well and wouldn't require an expansion of OWs. |
Quote:
There is still no solution for the "how", I'm still not converned by the idea of implementing an item for the sole purpose of riding a pokémon which you can't even choose. ~SBird |
If you ever feel the urge to stone a Pokemon to death, setting the byte at 080169D4 from 0x6 to 0x0 will make it so Pokemon don't flee after throwing 20 rocks at them in the safari zone in Fire Red. Not sure if anyone will ever actually use this but whatever. :P
|
Quote:
|
Found the offset to disable Safari Zone pokemon from running in Pokemon Ruby. It's exactly the same procedure as my post above, but at offset 08014D3C.
|
The behavior bytes in Advance Map are stored in a really weird format. The later ones such as 80s-90s usually display messages. Each script is 9 bytes long, and is stored in a table. So I decided to find the start of said table by going 9 bytes left until I hit 0. The problem is, The area where I ended contains scripts like adding an item from "MSG_OBTAIN". So this is a stumble...
|
Is there any way to swap the values of two registers?
r1 -> r2 r1 <- r2 Excuse my English but I use google translator: \ |
Quote:
But anyway you could store r1 in r3, then put r2 in r1, then r3 in r2 Like this: r1 -> r3 r2 -> r1 r3 -> r2 But clear r3 afterwards. The command you should use is mov. |
Quote:
Push {r3} Mov r3, r1 Mov r1, r2 Mov r2, r3 Pop {r3} |
In Jambo's DirectSound voices per moment extention he said that the maximum for FR/LG/E is 12 DirectSound voices per moment and 7 in R/S. If you will choose a higher number, the game will probably freeze, crash, slow down etc.
So is it possible to extend the limit using an ASM code? |
Quote:
In all the GBA games, the max number of tracks is 10. The max number of channels is what you're changing. |
Quote:
|
| 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.