Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.
I think that's a big problem. Not only the scene of registering Pokemon data is not right, but the data in Pokedex is also wrong when I open it to see the data. For example, I caught Gary's squirtle but in the Pokedex the data of Pidgey is obtained and squirtle is still marked not caught. I challenged another trainer with 2 Pokemon and the same thing happened.
Wow, you took that well. I was expecting you to be a little annoyed at me for practically butchering through most of your suggestions. I like people who understand. Here's something you'll enjoy :)
Introducing ASM to your Bank scripts
Bank scripts are normally very simple. There's a variable which holds the amount of money you have, normally holding $65, 535. Or if the scripter who wrote the script is good like I am, it'd become 999, 999, 999. Anyways, bragging aside, I made two routines to help improve your banking experience :P
This is very specific to the bank variable you're using. I'll show you the routine first. There's some orange text for you to look at again. The first orange text is how often to add interest, 0x1 is every minute and 0x3b would be every hour. The second orange text is the amount you need to subtract from 0x4100 to reach your variable. Note, you bank variable should be in the range of 0x4011 - 0x40FF. If it's not you're using an unsafe variable and should change it to something.
After you've fixed the orange text to match your bank script compile and insert into free space.
Spoiler:
Code:
.text
.align 2
.thumb
.thumb_func
main:
push {r0-r5, lr}
ldr r0, =(0x300500C)
ldr r0, [r0]
add r0, r0, #0x10
ldrb r0, [r0] @mins
[COLOR=darkorange] mov r1, #0x1 @frequency (range is from 0x1 to 0x3B). 0x1 = every minute[/COLOR]
ldr r2, =(0x81E4684 +1)
bl linker2
cmp r0, #0x0
beq end
calculateInterest:
mov r0, #0x82 @ r0 = var = 0x82
lsl r0, #0x7 @ var = 0x82 * 0x80 = 4100
[COLOR=darkorange] sub r0, r0, #0x1 @4100 -1 = 0x40FF. Subtract a sufficient amount to reach your var[/COLOR]
[COLOR=darkorange] @ the above is the variable tracking bank deposit value. Change amount subtracted if your var is different[/COLOR]
mov r5, r0
ldr r4, =(0x806E568 +1) @get var
bl linker
mov r1, #0xA @0xA = 10%
mov r4, r0
mul r0, r0, r1 @multiply (percent * 100) * (Original price)
mov r1, #0x64
ldr r2, =(0x81E4018 +1) @integer divide by 100 = rounded price
bl linker2
add r1, r0, r4 @finalized total
mov r0, r5
ldr r4, =(0x806E584 +1) @set var
bl linker
end:
pop {r0-r5, pc}
linker:
bx r4
linker2:
bx r2
.align 2
After you've inserted this routine, append a pointer to it to the Minute Routine Framework table.
Usage:
No usage. Interest is added on a minute basis to your variable of choice (which should be deposited value).
Battle Money Straight into a variable
So this one is kind of specific, but I kinda felt like helping someone out so I did it. All it does is, intercept the money being given to the bag, and adds it to a given variable instead. It's toggled by flag 0x250.
How to insert:
Look at the orange text. Similar to the first routine, you will need to change the amount subtracted to match your variable (remember you're subtracting two hex numbers). Once you've fixed it, you can go ahead and compile the routine into free space (write down the place you compiled it to).
Thank you so much!!! ^_^
Now I can start my hack....
It will be interesting to see if others use this as well...
Honestly I was just happy to get a reply at all for them requests,
I read the terms of the thread and wasn't even going to post but I thought hell with it midas well try...
I figured what the answers would be, but thought that it would be a good idea to get a programmers opinion on the subjects.
Usually to get a reply at all from the top asm programmers, scripters and graphic artist on here is a shot in the dark. So I do really appreciate it!
I would like to add though that I did try to make the Dawn Stone an its because of the gendercheck that it needs asm... From what I have been told, But you are right GoGo has it but wont release it until he feels the need I guess... sadly >_<
But that can always be worked around....
Again though THANK YOU!!!!!!
You need a donation button >_<
Well, actually this isn't as hard as you may think it is. In your script you can do a checkitem to check how many they have, and if they have too many you just say, "aww too bad". The only difficulties would be the mart checking if you have bag space...hmmm. I'm sure there's more cases of failure
Thank you so much!!! ^_^
Now I can start my hack....
It will be interesting to see if others use this as well...
Honestly I was just happy to get a reply at all for them requests,
I read the terms of the thread and wasn't even going to post but I thought hell with it midas well try...
I figured what the answers would be, but thought that it would be a good idea to get a programmers opinion on the subjects.
Usually to get a reply at all from the top asm programmers, scripters and graphic artist on here is a shot in the dark. So I do really appreciate it!
I would like to add though that I did try to make the Dawn Stone an its because of the gendercheck that it needs asm... From what I have been told, But you are right GoGo has it but wont release it until he feels the need I guess... sadly >_<
But that can always be worked around....
Again though THANK YOU!!!!!!
You need a donation button >_<
Dawn stone has a gender requirement? Odd...
But what you could do is use Kearnseyboy6's gender routine and modifie it to work with evolution stones. It would probably be adding an extra check to the evo stone routine though. Im not the best with asm so I wont try it out, but maybe someone could figure out a little routine for it.:)
I think that's a big problem. Not only the scene of registering Pokemon data is not right, but the data in Pokedex is also wrong when I open it to see the data. For example, I caught Gary's squirtle but in the Pokedex the data of Pidgey is obtained and squirtle is still marked not caught. I challenged another trainer with 2 Pokemon and the same thing happened.
Thank you so much!!! ^_^
Now I can start my hack....
It will be interesting to see if others use this as well...
Honestly I was just happy to get a reply at all for them requests,
I read the terms of the thread and wasn't even going to post but I thought hell with it midas well try...
I figured what the answers would be, but thought that it would be a good idea to get a programmers opinion on the subjects.
Usually to get a reply at all from the top asm programmers, scripters and graphic artist on here is a shot in the dark. So I do really appreciate it!
I would like to add though that I did try to make the Dawn Stone an its because of the gendercheck that it needs asm... From what I have been told, But you are right GoGo has it but wont release it until he feels the need I guess... sadly >_<
But that can always be worked around....
Again though THANK YOU!!!!!!
You need a donation button >_<
Hmmm, alright I'll look into it. It's just going to be painful because I'd need to make look-up tables and people need to keep those tables updated and such.
Oh, that's an interesting side effect. Yes, I can change it really easily using my Random number generator. Routine may come sometime tomorrow.
Trainer Pokemon Capturing bug fixes
There were two bugs that needed squashing. The first one was the Pokedex being incorrectly updated. The second one was the pokedex graphic being incorrectly updated. These routines are fixes for specifically trainer capturing, however, they will do no harm at all if you insert them into a ROM without the trainer hack. For those of you with buggy Pokedexes, I suggest you pay some attention, because this is the key to fixing those as well.
I'll attach some technical explanations of how the thing is implemented later, and the cause of the bug.
Fixing the Pokedex update
The Pokedex is incorrectly updated in the case you don't capture the opponent's first Pokemon. This is because the game assumes that the Pokemon captured is in the first slot. There aren't any double wild battles in FireRed, so the case of two Pokemon aren't covered. Not to mention that it was never originally intended for the player to be able to capture trainer Pokemon. If anyone is planning on double wild battles in FireRed, this is how you would fix the capturing system here as well.
How to insert:
Compile and insert into free space the following routine:
Now navigate to 0x2D95E and insert the following byte changes:
Code:
00 00 00 48 00 47 XX XX XX 08
Where XX XX XX is the reverse hex pointer to where you inserted this routine +1
Usage:
There isn't a usage for this hack. It's run internally and is 100% (tested) and safe for wild battles as well.
Fixing the Pokedex graphic
The Pokedex graphic suffered the same issue as the Pokedex update, however the routines aren't connected, so you need to fix both to yield a proper result.
How to insert:
Compile and insert the following routine into free space:
Requires the insertion of Random Number generator
So apparently TID isn't set if you skip the intro, and I'm sure SID is probably also not set. The following routine will randomize them for you!
To insert:
There's some orange text here, set it to be the pointer to where you inserted the random number generator routine +1 (keep the 0x8 prefix, but don't reverse the pointer).
After you've fixed the pointer, compile and insert into free space.
No rush at all...
I am very appreciative for not only the Bank System I have been trying to get for years but every single contribution you bring to the community ^_^
So I again Thank and applaud you an even the rest of the contributors!!!
Joexv,
Dawn Stone- Effect: Causes Male Kirlia to evolve into Gallade.
Causes Female Snorunt to evolve into Froslass.
Great work! The current problem was solved but I found another bug. When the old man in Firered taught you how to catch pokemon, the weedle he caught was registered on the Pokedex and it appeared in my team!
Edit: Moreover, when I watched the Teachy TV, as it caught a Jigglypuff, it didn't appear in my team but is registered in the Pokedex and marked as caught!
There's some orange text here, set it to be the pointer to where you inserted the random number generator routine +1 (keep the 0x8 prefix, but don't reverse the pointer).
After you've fixed the pointer, compile and insert into free space.
Spoiler:
Code:
.text
.align 2
.thumb
.thumb_func
main:
push (r0-r3, lr}
ldr r0, .random
ldr r1, =(0x20370B8) @generate first half of ID
mov r2, #0xFFFF
strh r2, [r1]
bl linker
mov r3, r0
ldr r1, =(0x20370B8) @generate second half of ID
mov r2, #0xFFFF
strh r2, [r1]
push {r3}
bl linker
pop {r3}
lsl r0, r0, #0x10
lsr r3, r3, #0x10
orr r3, r3, r0
ldr r0, =(0x300500C)
ldr r0, [r0]
add r0, r0, #0xA
ldr r1, =(0x20370BA)
ldrb r1, [r1]
add r0, r0, r1
strh r3, [r0] @set ID
cmp r1, #0x1
bne setRam
pop {r0-r3, pc}
setRam:
ldr r1, =(0x2020000) @set RAM Pointer to TID
strh r3, [r1]
pop {r0-r3, pc}
linker:
bx r0
.align 2
.random:
.word 0x8[COLOR=DarkOrange][random][/COLOR]
[code]
[/spoiler]
[B]Usage:[/B]
setvar 0x8001 0x0
callasm 0x[this routine +1]
setvar 0x8001 0x2
callasm 0x[this routine +1]
Call it twice like I have, setting var 0x8001 to 0x0 and 0x2 respectively, it will generate a random PID and SID.[/QUOTE]
It won't compile in HackMew's compiler. It complains for both "mov r2, 0xFFFF" lines that 0xFFFF/65535 is "out of range".
It likely won't. There's a lot of things that go wrong, there's limiting code everywhere. So unless you fix those and keep the data/clean and consistent you're going to get bugs all day :)
Great work! The current problem was solved but I found another bug. When the old man in Firered taught you how to catch pokemon, the weedle he caught was registered on the Pokedex and it appeared in my team!
Edit: Moreover, when I watched the Teachy TV, as it caught a Jigglypuff, it didn't appear in my team but is registered in the Pokedex and marked as caught!
Woah. That's actually a cool side-effect imo (especially since you can change what Pokemon the old guy catches you). But you can overcome with this clever use of the PSS full party swap routine. Basically call it at the start of the techy tv script, then use the PSS again at the end of the script.
Using the Battle Mode + Remove White Out add-on. Is there any flag or variable to check whether I won or lost the last battle? (particularly for trainers)
I'm trying to branch a script using the 0x1 Trainerbattle byte. With a trainer having a 'victory' message and a 'defeated' message.
Using the Battle Mode + Remove White Out add-on. Is there any flag or variable to check whether I won or lost the last battle? (particularly for trainers)
I'm trying to branch a script using the 0x1 Trainerbattle byte. With a trainer having a 'victory' message and a 'defeated' message.
This is awesome! Upgrading your Party Item Checker Routine
A new var will be set making the game checks If an specified Pokemon holding an specified item in an specified party slot.
Example, A bulbasaur holding Master ball in Party Slot number 1.
This is awesome! Upgrading your Party Item Checker Routine
A new var will be set making the game checks If an specified Pokemon holding an specified item in an specified party slot.
Example, A bulbasaur holding Master ball in Party Slot number 1.
Yes, he's saying that the routine is able to check whether a certain species in the party is carrying a specific item. If you give it a species to check for as well as an item, it will check both. If you give it just the item, it'll simply try to find the item.
Yes, he's saying that the routine is able to check whether a certain species in the party is carrying a specific item. If you give it a species to check for as well as an item, it will check both. If you give it just the item, it'll simply try to find the item.
No, That is Not what I mean, I know that routines usage. what I mean is The game will check not only the Specie and Item but also party slot,
example: A bulbasaur holding Master ball in 1st slot only.