LocksmithArmy
Mew!
- 416
- Posts
- 12
- Years
- Seen Apr 7, 2025
Can't you just remove the running shoes temporarily?
well duh! lol dont know why I ddnt just think of that :) thanks
Can't you just remove the running shoes temporarily?
In the games, "sales" for the big shopping stores can happen randomly. Guessing he may be trying to have some control over it.
I don't think this needs any routines though. You could always create an NPC that sells you an item for a set price. Unless you make your own multichoicebox, it will only be able to sell one item type at a time. :s
It could also be used to sell an item to the player that the player cannot sell back. I think it would be cool\handy\awesome. So I to request this.:P
I know that part, but I meant can pokemon be stored there which the player does not have, or has not store in them??
Such that when the game starts you can have a whole party stored in PSS & trade it for your starter pokemon at the beginning of the game?? or does it require you to have to manually store the pokemon in the PSS as a trainer??
Ok FBI agent, I have some challenges you will enjoy
1: the bike having 2 gears like in DPP
2: a way to stop the player using running shoes in certain areas
I've got a suggestion.
It would be interesting to lower the players speed in half, both while walking and running, while walking on specific tiles.
Or better yet being able to control the speed, say speed in lowered slightly when walking in mud, puddles, or tall grass.
Pokemon ORAS has a similar feature when you step in sand.
This may go hand in hand with research done on the dual geared bikes if you choose to work on it.
Oh, wow, thank you so much for taking a shot at mystupidly complicatedrequest! I'll definitely be using the routines you posted, which should be more than good enough for what I'm wanting to do :) so thanks again!
I think with a bit of ingenuity and resourceful use of the PSS, I can get over the final hurdle, too – which is enabling steal events even when the player has a full party of six. (I just don't want to force people to be constantly heading back to the PC to dump their new Pokémon so that they don't miss out on an event. It always annoyed me when I had to do that in the official games, haha.) So, yeah, here's my idea…
For a Snag Ball battle, I'd use countpokemon before starting the battle. Then, if the result is <5, I can just use your lovely routine as provided. :) If it's 0x6, though, I could activate the PSS intercept system to push any snagged Pokémon into the PSS.
That done, I could take advantage of the fact that OTs can be modified in the overworld, and do that inside the PSS. Then (hopefully) I could push the Pokémon out of the PSS and into storage.
This would circumvent the problem I currently have, which is that Pokémon snagged by a Snag Ball go straight into the PC without the correct OT attached (if the player has a party of six). It'd also work for givepokemon events, which I'd be using as 'steals' – I'd countpokemon first, then activate the intercept and do much the same thing as for the snagged monsters.
So I just have a couple of questions, really:
1) Does the PSS intercept routine work on the givepokemon command as well as with captures? (Also, how safe is the nicknaming bit of the intercept routine? I saw it was commented out...)
2) Is there a way to push Pokémon from the PSS into PC storage space?
Oh, and I'm assuming that renaming the OT of a Pokémon in the PSS would be as simple as using your existing overworld routine, but replacing this line:
with this:Code:ldr r0, =(0x2024284)
My ASM knowledge is pretty much based on staring at your code in wonder and bemusement and painstakingly trying to figure out how the magic happens, though, so please feel free to correct me if I'm being stupid :PCode:ldr r0, =(0x203C001)
You may want to do more testing on this. I inserted it into my game and it's crashing every time I get into a battle.
Can't you just remove the running shoes temporarily?
Please don't do that. Pokemon data is stored in 100 bytes for the party, but the Pokemon stored in the PC is a different matter. It only records 80 bytes of the structure. And if my 10 second glance at FBI's PSS routine didn't deceive me, FBI stored 80 bytes for each Pokemon, which means that if you just change that line, you are going to screw yourself over.
FBI how about
...
setvar 0x8000 0x85
setvar 0x8001 0x1
callasm 0x800001
compare LASTRESULT 0x1
if = goto @1
...
what I want is the NPC will check if the player has eevee holding masterball, if it has it will jump to #org @1 and if it doesnt have it will jump to #org @2.. I dont understand how the game will check if I have eevee with well in fact it just set a var but nothing to compare with, like in flag, checkflag will check if the desired flag has been set.
...
setvar 0x8000 0x85
setvar 0x8001 0x1
callasm 0x800001
compare 0x8000 0x6
if == jump @noMatches
...
For number one I mean to be able to have like a discount store, where items cost half their original price.
The second one, I think I know to solve it ;)
It's OK. Everyone has that kind of moment :Pwell duh! lol dont know why I ddnt just think of that :) thanks
.text
.align 2
.thumb
.thumb_func
main:
push {r0-r7}
mov r4, #0x0
loop:
ldr r0, .TABLE
mov r1, #0x4
mul r1, r1, r4
add r0, r0, r1
ldr r0, [r0] @load routine
mov r1, r0
lsr r1, r1, #0x18
cmp r1, #0xFF
beq noCrash @if end of routine table, break out
bl linker
add r4, r4, #0x1
b loop
linker:
bx r0
noCrash:
pop {r0-r7}
ldrb r0, [r1, #0x10]
cmp r0, #0x59
bls end
strb r3, [r1, #0x10]
ldr r0, =(0x80548B0 +1)
bx r0
end:
pop {r0}
bx r0
.align 2
.TABLE:
[COLOR="DarkOrange"] .word 0x8[free space in ROM. Do not add 1][/COLOR]
00 48 00 47 XX XX XX 08
You may want to do more testing on this. I inserted it into my game and it's crashing every time I get into a battle.
2. Did you replace XX XX XX in reverse hex? for example if at offset 720040 you placed the compiled routine XX XX XX should be replaced by 41 00 72.
Like previous games, Pokémon Black 2 & White 2 have included a varierty of swarms. These swarms, like the past swarms, activate after you have received the National Dex, change each day at midnight and go through a random selection of possibilities. The focus of these swarms are Pokémon that don't normally exist within the Unova region and as such can only be obtained in the wild using this method
In order to check the swarms, you need to enter a gate between two areas and look at the ticket going along on the back wall. It will mention that there is a swarm of Pokémon going on in that particular route. Go to that route and you'll find the Pokémon.
Taken from: https://www.serebii.net/black2white2/swarms.shtml
<Map Bank (1 Byte)> <Map Number (1 byte)> <Map value (1 byte)>
03 00 58 03 01 59 03 02 5A 03 03 5B 03 04 5C 03 05 5D 03 06 5E 03 07 5F 03 08 60 03 09 61 03 0A 62 03 13 65 03 14 66 03 25 67 03 16 68 03 17 69 03 18 6A 03 19 6B 03 1A 6C 03 1B 6D 03 1C 6E 03 1D 6F 03 1E 70 03 1F 71 03 20 72 03 21 73 03 22 74 03 23 75 03 24 76 03 25 77 03 26 78 03 27 79 03 29 7A 03 2A 7B 03 2B 7C 03 2C 7D 01 00 7E 01 01 7F 01 04 80 01 1E 81 01 21 82 01 24 83 01 27 84 01 2A 85 01 2F 86 01 3B 87 01 3F 88 01 4B 89 01 51 8A 01 53 8B 01 58 8C 01 48 8D 01 5F 8E 03 0C 8F 03 0D 90 03 0E 91 03 0F 92 03 10 93 03 11 94 03 12 95 03 2D 96 03 2E 97 03 2F 98 03 30 99 03 31 9A 03 32 9B 03 33 9C 03 34 9D 03 35 9E 03 36 9F 03 37 A0 03 38 A1 03 39 A2 03 3A A3 03 3B A4 03 3C A5 03 3D A6 03 3E A7 03 3F A8 03 40 A9 03 41 AA 02 00 AE 01 60 AF 01 6D B0 01 6E B1 01 72 B2 02 01 B3 01 73 B4 02 12 B5 01 79 B6 01 7A B7 02 22 B9 02 23 BA 02 38 BB 02 1B BC 02 1C BD 02 1D BE 02 1E BF 02 1F C0 02 20 C1 02 21 C3 02 39 C4 00 00 C5 FF FF FF
C0 D4 2D 08 58 A5 71 08 5A 54 16 08 6C 27 35 08 2C 01 4E 00 [COLOR="Orange"][SIZE="2"][B]58[/B][/SIZE][/COLOR] 00 02 01 01 06 00 00
.text
.align 2
.thumb
.thumb_func
main:
push {r0-r7, lr}
mov r0, #0x81 @var = (81 *80) + 1 = 0x4081
lsl r0, #0x7
add r0, r0, #0x1 @map bank variable
ldr r4, =(0x806E568 +1)
bl linker
mov r5, r0
mov r0, #0x81 @var = (81 *80) + 2 = 0x4082
lsl r0, #0x7
add r0, r0, #0x2 @map number variable
ldr r4, =(0x806E568 +1)
bl linker
mov r6, r0
@r5 = map bank, r6 = map number
ldr r7, .conversionTable
loop:
ldrb r0, [r7]
cmp r0, #0xFF
beq notFound @end of table
cmp r0, r5
bne next @map bank doesn't match
add r4, r7, #0x1
ldrb r0, [r4]
cmp r0, r6
bne next @map number doesn't match
add r4, r4, #0x1
ldrb r1, [r4] @match found
b display
next:
add r7, r7, #0x3
b loop
notFound:
mov r1, #0xFF @write string terminator, to not glitch game
display:
ldr r0, =(0x2021D18) @location to store string
mov r2, #0x0
ldr r4, =(0x80C4D78 +1)
bl linker
end:
pop {r0-r7, pc}
linker:
bx r4
.align 2
.conversionTable:
[COLOR="DarkOrange"] .word 0x8[Insert table offset here][/COLOR]
#dyn 0x740000
#org @start
lock
faceplayer
setvar 0x4081 0x[Map Bank]
setvar 0x4082 0x[Map Number]
callasm 0x[Where you inserted the routine +1]
storetext 0x0 0x2021D18 'Text not in ROM area
msgbox @mapData ' Map: \v\h02
callstd MSG_NORMAL ' Built-in lock command
release
end
#org @mapData
=That map is \v\h02!
#dyn 0x740000
#org @start
lock
faceplayer
setvar 0x4081 0x[Map Bank]
setvar 0x4082 0x[Map Number]
callasm 0x[Where you inserted the routine +1]
bufferstring 0x0 0x2021D18 'Text not in ROM area
msgbox @mapData ' Map: \v\h02
callstd 0x6
release
end
#org @mapData
=That map is [buffer1]!
[Species (2 bytes)] [Map Bank (1 byte)] [Map Number (1 byte)]
00800000: 01 00 03 00 FF FF FF ...
00800100: 01 FF FF FF FF FF FF...
.text
.align 2
.thumb
.thumb_func
main:
push {r0-r5, lr}
@check swarm flag
mov r0, #0x92
lsl r0, r0, #0x2
ldr r2, =(0x806E6D0 +1) @checkflag 0x92 *0x4 = 0x248
bl linker
cmp r0, #0x0
beq end
checkTime:
ldr r0, =(0x300500C)
ldr r0, [r0]
add r0, r0, #0x10
ldrb r0, [r0] @mins
[COLOR="DarkOrange"] mov r1, #0x1 @frequency of swarm change 0x1 = every min (range is 0x1 to 0x3B)[/COLOR]
ldr r2, =(0x81E4684 +1)
bl linker
cmp r0, #0x0
bne end
changeSwarm:
ldr r1, =(0x20370B8)
ldr r0, .PossibleSwarms
ldrb r0, [r0]
strb r0, [r1]
ldr r2, .random @pick a random swarm
bl linker
mov r2, r0
mov r0, #0x81 @var = (81 *80) + 1 = 0x407F
lsl r0, #0x7
sub r0, r0, #0x1
mov r1, r2
push {r2}
ldr r2, =(0x806E584 +1) @set var 0x407F to random
bl linker
pop {r2}
mov r1, #0x4
mul r1, r1, r2
ldr r0, .SwarmTable @formatted, [Species 2 bytes] [map data: 2 bytes]
add r0, r0, r1
ldr r0, [r0] @current swarmer data
lsl r1, r0, #0x10
lsr r1, r1, #0x10 @species
lsr r3, r0, #0x10 @map data
setVars:
mov r0, #0x81 @var = 81 *80 = 0x4080
lsl r0, #0x7
push {r3}
ldr r2, =(0x806E584 +1) @set var 0x4080 to species
bl linker
pop {r3}
mov r0, #0x81 @var = (81 *80) + 2 = 0x4082
lsl r0, #0x7
add r0, r0, #0x2
mov r1, r3
lsr r1, r1, #0x8 @map number
push {r3}
ldr r2, =(0x806E584 +1) @set var 0x4082 to map number
bl linker
pop {r3}
mov r0, #0x81 @var = (81 *80) + 2 = 0x4081
lsl r0, #0x7
add r0, r0, #0x1
mov r1, r3
lsl r1, r1, #0x18
lsr r1, r1, #0x18 @map bank
push {r3}
ldr r2, =(0x806E584 +1) @set var 0x4081 to map bank
bl linker
pop {r3}
end:
pop {r0-r5, pc}
linker:
bx r2
.align 2
[COLOR="SandyBrown"].random:
.word 0x8XXXXXX@pointer to where random number generator is inserted +1 (unreversed)
.SwarmTable:
.word 0x8XXXXXX @pointer to where you inserted the Swarm table (don't +1 or reverse)
.PossibleSwarms:
.word 0x8XXXXXX @Pointer to Swarm table length (don't +1 or reverse)[/COLOR]
.text
.align 2
.thumb
.thumb_func
@at 08082A2A place hook
main:
mov r0, #0x92
lsl r0, r0, #0x2
ldr r2, =(0x806E6D0 +1) @checkflag 0x92 *0x4 = 0x248
bl linker
cmp r0, #0x0
beq setOld
rollForSwap:
ldr r0, =(0x20370B8)
mov r1, #0x1 @encounter change of swarmer vs normal chance
strb r1, [r0]
ldr r2, .random
bl linker
cmp r0, #0x0
bne setOld
checkSwarmingMap:
mov r0, #0x81 @var = (81 *80) + 1 = 0x407F
lsl r0, #0x7
sub r0, r0, #0x1
ldr r2, =(0x806E568 +1)
bl linker
ldr r1, .SwarmTable
mov r2, #0x4
mul r0, r0, r2
add r2, r0, r1
add r2, r2, #0x2 @map data
ldrh r0, [r2]
ldr r1, =(0x2031DBC)
ldrh r1, [r1]
cmp r1, r0
bne setOld
readSpecies:
sub r1, r2, #0x2
ldr r0, =(0x202402C) @src
ldrh r1, [r1] @species
cmp r1, #0x0 @check if species ID 0 (question mark)
beq setOld
cmp r1, #0xFF @check if species ID 0xFF (hacker made pointer error.)
beq setOld
mov r2, r6
b end
setOld:
ldr r0, =(0x202402C)
mov r1, r4
mov r2, r6
end:
mov r3, #0x20
ldr r4, =(0x803DD98 +1)
bl linker2
ldr r4, =(0x8082A36 +1)
linker2:
bx r4
linker:
bx r2
.align 2
[COLOR="DarkOrange"].SwarmTable:
.word 0x8XXXXXX @replace the X's with a pointer to the swarm table (don't +1 or reverse hex)
.random:
.word 0x8XXXXXX @replace the X's with a pointer to the Random number routine +1 (non reversed)[/COLOR]
00 00 00 49 08 47 XX XX XX 08
Name length extensions: No. Forcing rival name, I'll look into it!Are forcing names for rivals and name extentions possible (so a few more character spaces for Pokémon/Trainers)?
...
setvar 0x8000 0x85
setvar 0x8001 0x1
callasm 0x800001
compare 0x8000 0x6
if 0x0 jump @has
setvar 0x8000 0x86
setvar 0x8001 0x1
callasm 0x800001
compare 0x8000 0x6
if 0x0 jump @has2
setvar 0x8000 0x87
setvar 0x8001 0x1
callasm 0x800001
compare 0x8000 0x6
if 0x0 jump @has3
setvar 0x8000 0x88
setvar 0x8001 0x1
callasm 0x800001
compare 0x8000 0x6
if 0x0 jump @has4
...
Minute Routines Frame Structure
Usage:
This routine will run through all the pointers in the table you provided. It will keep going until it reaches FF FF FF FF with is read as the terminating pointer (i.e it stops reading pointers after that value is reached). So basically to add more routines into the list of executed routines, you would just append another pointer (in reverse hex +1) to your new routine's location.
Hello,
I was wondering if you could help me with a few things.
1.Bank System with Atm system
Done 100% by script.
2.The ability to Lose a trainer battle and not be warped to a healing spot.
FBI has already made this look at OP.
3.Dawn Stone =(
Its just a new evolutionary stone. Follow some of the tutorials to add them in or check out Locksmitharmy's item editor that adds them for you.
4.Poke-rus,
Isnt that already a thing in Fire Red? Although I wouldn't know cause I've never played it.
5.New RTC and or updated version of primedialgas along with new DNS I find it can be very buggy =(
It is buggy but its not the only option.
6.Now this is much needed,
But a new or updated "Fire Red Hacked Engine" (This might be stretching it I know >_<)
This isnt really needed as the current one works fairly well if you know how to use it.
8.Building lights (On and Off) capabilities
Use a time based event level script and do setmaptiles. Its time consuming and difficult but it doesnt require the need for asm.
9.Mega-Evolutions,
Read earlier post you would have read that this is already being worked on.
11.Working Fossil Reviver Routine
Done by script. Checkitem givepokemon. That simple.
12.Follow me routine
Done by touched. Read around.
13.Day and Night switching of wild pokemon with out breaking the map editor capabilities.
Wait till MEH is finished. It supports that.
14.Ability to make Shedinja's HP more than 1.
I feel like someone figured out how to do it but I cant remember who.
Hello,
I was wondering if you could help me with a few things.
1.Bank System with Atm system
Basically I have been trying to get this bank system to work for years.
Summary- A Bank System with an account of course that with the activation of a flag can take the money the player wins in a battle and adds it to the account instead. And to add simple things like interest, the ability to withdraw and deposit set amounts...
The Atm would work by getting a item which I am sure can all be done with XSE...
Now I will pay you if you can do this Bank System for me and the community because I would like it to be public as well...This is what I really need to be able to Start my long time awaited Mod =(
I've done this already. Look at the first post, it's called "Battle Modes add-on no Whiteout" or something similar to that :P2.The ability to Lose a trainer battle and not be warped to a healing spot.
Now I know that this can only be done in the beginning of the game when you first get challenged by your rival in Oaks lab.
If you let the player lose the script will go back to lab an rival will start talking, if then you look at your pokemon they it will be fully healed...
I tried for hours to get it to work with no avail =(
I even asked for help and no one could help or just didn't want to... sadly
Ask GoGo, he's got a working version apparently. Also, this isn't ASM? It's just creating a new evolution stone. There's tutorials right in this forum for achieving that :X3.Dawn Stone =(
I have asked so many for this and I know a few have it but refuse to release it which is quite sad....
There wouldn't be any sample scripts for PokeRus because it's interally done. There's literally a byte you flip on, and that controls the Pokerus stat. I will look into PokeRus in the near future, but not in conjunction with an RTC. I believe that RTCs do more bad to hack games than good. You should always use the ingame playtime for any and all of your timer needs.4.Poke-rus,
As fire red Does not have Poke-rus and the one I found really don't have good enough documentation for me to be able to follow how it works, nor are there any sample scripts...
I would like it to use the RTC unless there is a better way...
*Disregard any you have no interest in...
5.New RTC and or updated version of primedialgas along with new DNS I find it can be very buggy =(
6. Now this is much needed,
But a new or updated "Fire Red Hacked Engine" (This might be stretching it I know >_<)
7.Trainer Ability's,
ergo attack boost, heal a % each turn, lower opponent accuracy ect..
8.Building lights (On and Off) capabilities
*I know its graphical but it is much needed by all
9.Mega-Evolutions,
Now I know you have Silent evolutions but I am still not sure how that even works...
I already made a routine which swaps around the Pokemon's base ability. Look for it in the first post!10.Pokemon Ability Tutor/Remover,
Again not sure if can even be done.
This is just a check item script. It's really easy honestly. The game has a scripting solution for it too, there's no way for someone to not be able to expand that11.Working Fossil Reviver Routine
Not sure if this can be done or not...
1) follow me is hard, and definitely not trivial12.Follow me routine
This would make interesting Trainer battles as well...
Trainers who could walk around and look for you possibly?
I realize there is a thread just for this.... so I understand if not possible...
This is going to be very specific for each D/N engine you're using. There's some that run off an RTC and a few that utilize the playtime. It's specific to each one. Though, D/N switching can be added by simply opening a hex editor and changing some bytes? Why do you want me to basically noob-ify a process that already isn't hard? It's not often when you're setting wild Pokemon, you set them once a map?13.Day and Night switching of wild pokemon with out breaking the map editor capabilities.
Oh here's something that I can actually help with. iirc, there's specific code to keep it's HP at one. I'll look into it.14.Ability to make Shedinja's HP more than 1.
I tried to change it with KarateKids tool with again no avail.
That's awesome! The Pokemon is right. But there's still a problem that the scene of writing Pokedex data still showed the first Pokemonv of the trainer. (For example, I caught Gary's Squirtle but the Pokedex showed that I caught Pidgey. ) Did I miss anyting?
Will these codes will work in Checking party system
Code:... setvar 0x8000 0x85 setvar 0x8001 0x1 callasm 0x800001 compare 0x8000 0x6 if 0x0 jump @has setvar 0x8000 0x86 setvar 0x8001 0x1 callasm 0x800001 compare 0x8000 0x6 if 0x0 jump @has2 setvar 0x8000 0x87 setvar 0x8001 0x1 callasm 0x800001 compare 0x8000 0x6 if 0x0 jump @has3 setvar 0x8000 0x88 setvar 0x8001 0x1 callasm 0x800001 compare 0x8000 0x6 if 0x0 jump @has4 ...
All it does is check if one of the 4 pokemon is holding masterball, if yes, then it will continue to has script.?
could we get a routine that simply adds 1 to a given var.
and has a max number (also editible)
so if the var == 500 it stops adding 1 and calls a script, but if var < 500 it adds 1 every minute.
there would need to be a check, to make sure no other script or battle is running, if it is running itll wait for that event to end before calling the script
the idea is we can make event happen every so many minutes. so if the var is set to 480, in 20 minutes an event will happen, and in that event the var will be set to say 470, so in 30 minutes another event will happen.
maybe a phone call or a mini game ends or something.
.text
.align 2
.thumb
.thumb_func
main:
add r0, r0, r4
ldrh r0, [r0, #0x10]
mov r4, r0
push {r2-r3}
mov r0, #0x98
lsl r0, r0, #0x2
ldr r2, =(0x806E6D0 +1) @check flag 0x260
bl linker
cmp r0, #0x0
beq noChange
calculateNewPrice:
ldr r1, =(0x20370B8)
ldrh r1, [r1]
mov r0, r4
mul r0, r0, r1 @multiply (percent * 100) * (Original price)
mov r1, #0x64
ldr r2, =(0x81E4018 +1) @integer divide by 100 = rounded price
bl linker
mov r1, r4
checkModification:
ldr r2, =(0x20370BA) @var 0x8001
ldrb r2, [r2]
cmp r2, #0x0 @increase by percent
bne decreasePrice
add r0, r0, r1 @finalized total
b end
noChange:
mov r0, r4
b end
decreasePrice:
sub r0, r1, r0
end:
pop {r2-r3}
pop {r4}
pop {r1}
bx r1
linker:
bx r2
.align 2
00 19 00 8A 04 1C 0C B4 98 20 80 00 0D 4A 00 F0 18 F8 00 28 0E D0 0C 49 09 88 20 1C 48 43 64 21 0A 4A 00 F0 0E F8 21 1C 09 4A 12 78 00 2A 03 D1 40 18 02 E0 20 1C 00 E0 08 1A 0C BC 10 BC 02 BC 08 47 10 47 D1 E6 06 08 B8 70 03 02 19 40 1E 08 BA 70 03 02
00 49 08 47 XX XX XX 08
I got an idea now.
Item Limits!
My idea is that you can only hold say...20 Potions, 15 Super Potions, 10 Max Potions and 5 Full Restores. If you come across an item that you already have maxed out it will show the typical "Too bad! Bag is full..." string. Also keep in mind that once you max out an item to the limit (default x99), a new stack will be created. We don't want that since it pretty much makes any changes pointless.
I think it will be interesting to see how the game will be played when you can only carry a limited amount of items. :D
Ok I know this will be partially a script but is it possible for there to be an NPC who will tells you where the pokemon is currently
Basically this is an extension for the roaming pokemon thingy to make it easier to find.
I also have some things I think you should implement into the roaming pokemon,
1: after the set time, there is a 1/3 chance for the pokemon to move location
2: when you fly to a location there is a 1/3 chance for the pokemon to move
3: the same as above but with dig,teleport and escape ropes
Also will the roaming pokemon still be a shiny if it moves? (If there is a way to make it a shiny, if not, there is another challenge
#dyn 0x740000
#org @start
lock
faceplayer
copyvar 0x8004 0x4081 '@ back up swarming map bank
copyvar 0x8005 0x4082 '@ back up swarming map number
copybyte 02023D066 0x4081 '@set variables to match roamer's details
copybyte 0x2023D067 0x4082
callasm 0x[Map name buffer] '@get map of roamer
storetext 0x0 0x2021D18 '@in xse storetext = bufferstring
copyvar 0x4081 0x8004 'restore variables we modified
copyvar 0x4082 0x8005
msgbox @roamMap
callstd MSG_NORMAL
release
end
#org @roamMap '\v\h02 = [buffer1] in xse
= It's in \v\h02 now!
This is a script. It's not an ASM routine at all, though admittedly, you can greatly enhance the current versions using a little bit of ASM tweaking (in terms of interest being given on a time basis). Ultimately it's a script though (and this is an ASM thread). Maybe I'll make an interest routine later on.
I've done this already. Look at the first post, it's called "Battle Modes add-on no Whiteout" or something similar to that :P
Ask GoGo, he's got a working version apparently. Also, this isn't ASM? It's just creating a new evolution stone. There's tutorials right in this forum for achieving that :X
There wouldn't be any sample scripts for PokeRus because it's interally done. There's literally a byte you flip on, and that controls the Pokerus stat. I will look into PokeRus in the near future, but not in conjunction with an RTC. I believe that RTCs do more bad to hack games than good. You should always use the ingame playtime for any and all of your timer needs.
I don't know about his RTC. What I do know is that you shouldn't be using an RTC. Here's, in my opinion, the best D/N system ever:
https://github.com/shinyquagsire23/Wizard-DN
This was JPAN's best work. It took him many many months of work. There's no way I can just, go out and do it. I can however update some features and add other features which I've kinda done. I've upgraded (some by a lot) a few of his routines like backsprites, party routines, roaming and swarming all which he's done too.
This is a battle script and I said earlier that battle scripts are against my policy. I hear that MrDollSteak, HidoranBlaze and DoesntKnowHowToPlay are working on abilities. So if you want, maybe you can ask one of them.
There are scripting commands that do this. Check out my HM crusade link on the first post. It's one of the last posts in that thread.
daniilS has requested to let him finish megas. I'm going to let him finish, you can pester him about it. Though I'm not understanding why you don't know how silent evolutions work? I documented it pretty heavily while keeping it as easy to understand as possible. It's literally:
- Look up next evolution
- Set evolution
- Negate Exp curve level gain/loss
- Update stats
I already made a routine which swaps around the Pokemon's base ability. Look for it in the first post!
This is just a check item script. It's really easy honestly. The game has a scripting solution for it too, there's no way for someone to not be able to expand that
1) follow me is hard, and definitely not trivial
2) there's an Advance Map option for making trainers wander around
3) I'm not writing a new AI for wandering trainers if that's what you're asking
This is going to be very specific for each D/N engine you're using. There's some that run off an RTC and a few that utilize the playtime. It's specific to each one. Though, D/N switching can be added by simply opening a hex editor and changing some bytes? Why do you want me to basically noob-ify a process that already isn't hard? It's not often when you're setting wild Pokemon, you set them once a map?
Oh here's something that I can actually help with. iirc, there's specific code to keep it's HP at one. I'll look into it.
Nope, doesn't look like you missed anything, it's a graphical bug. I didn't have this happen to me either. I'll take a look to see what's causing it later. Thanks.
Lance, this isn't a script thread :/
If you're having troubles there's an assembly/dissassembly help thread as well as a script help thread. Only ask here if you think you've encountered a bug or if the usage isn't specific enough. From a quick glance, I don't see anything wrong with that script, no.
Sounds like a good idea. I'm going to have to check a few things to confirm the player isn't in battle and such. I'll work on this.
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 :)Some stuffs ...
I also Thank you for all the work you are doing...
Much appreciated!!!
.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
@ 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
.text
.align 2
.thumb
.thumb_func
@hook at 080259F0
@00 49 08 47 01 00 83 08
main:
mov r1, #0xA4
lsl r1, r1, #0x2
add r0, r0, r1
mov r1, r4
ldr r4, =(0x20370B8)
strh r1, [r4]
push {r0-r4}
flagCheck:
[COLOR="DarkOrange"]mov r0, #0x94
lsl r0, r0, #0x2
ldr r2, =(0x806E6D0 +1) @checkflag 0x94 *0x4 = 0x250[/COLOR]
bl linker
cmp r0, #0x0
beq endTwo
moveToBankVar:
mov r0, #0x82 @ r0 = var = 0x82
lsl r0, #0x7 @ var = 0x82 * 0x80 = 4100
[COLOR="DarkOrange"] sub r0, r0, #0x1 @4100 -1 = 0x40FF, this is the variable tracking bank deposit value. Change amount subtracted if your var is different[/COLOR]
mov r4, r0
ldr r2, =(0x806E568 +1) @get var
bl linker
ldr r1, =(0x20370B8)
ldrh r1, [r1]
add r1, r1, r0
mov r0, r4
ldr r2, =(0x806E584 +1) @set var
bl linker
end:
pop {r0-r4}
mov r4, r1
ldr r1, =(0x8025A00 +1)
bx r1
endTwo:
pop {r0-r4}
mov r4, r1
push {r4}
ldr r4, =(0x809FDA0 +1)
bl linker2
pop {r4}
ldr r1, =(0x8025A00 +1)
bx r1
linker2:
bx r4
linker:
bx r2
.align 2
00 49 08 47 XX XX XX 08