Advertiser Content

Development Move Resource Thread Page 8

Started by Spherical Ice April 22nd, 2013 10:29 PM
  • 167713 views
  • 425 replies

destinedjagold

You Can Contact me in PC's Discord

Age 29
Male
Philippines
Seen 4 Weeks Ago
Posted May 6th, 2019
8,596 posts
12.5 Years
You can just use Aurora Beam's effect for Play Rough.
Huh, the more I know. I never was lucky enough to lower a foe's Attack stat using Aurora Beam, so I just thought it has a low chance of either freezing or lowering the foe's speed, like normal Ice attacks. xD

Seen January 10th, 2017
Posted April 21st, 2016
180 posts
5.7 Years
By the way, the following moves also require custom Effects: Boomburst, Bulldoze, Discharge, Lava Plume, Parabolic Charge, Petal Blizzard, Searing Shot, Sludge Wave and Surf (needs to be updated). They do not work properly with their current effect, as they are supposed to hit Both Foes AND the allied Pokemon similar to Earthquake.

I have managed to make Surf work so it hits Ally + Target 1 + Target 2, the problem is that it does not recognise the ally's Water Absorb. I guess it's the same with Flash Fire and Volt Absorb when using Lava Plume and Discharge. Is there theoretically any way to get around this without using ASM?

(I'll post the BSP when I get back home)

#org @growth
jumpifabilitypresent ABILITY_CLOUDNINE @workup
jumpifabilitypresent ABILITY_AIRLOCK @workup
jumpifhalfword B_& 0x2023F1C 0x60 @sunlight
goto @workup
Just tried your Growth/Work Up/Rototiller script and spotted a few bugs. First one was growth sharply increasing Att. And Sp. Att when not Sunny (I fixed this by adding the goto @workup in red), probably just a simple oversight in the code.

Also, I got some problems with Rototiller, it seems to freeze directly after printing the second status message, just as it goes to @Return.

Here is the Script I used. I've double checked it to make sure all Offsets are ok with the original Flower Shield Script. Everything is working fine except that last little part where it freezes :(

FOR EMERALD

Spoiler:
#include abilities.bsh
#dynamic 0xE47C50
#freespacebyte 0xFF

#org @pickmove
jumpifhalfword 0x0 0x20241EA 0x4A @growth
jumpifhalfword 0x0 0x20241EA 0x1C6 @workup
jumpifhalfword 0x0 0x20241EA 0x1C5 @rototiller
goto 0x82D8C90

#org @growth
jumpifabilitypresent 0xD @workup
jumpifabilitypresent 0x4D @workup
jumpifhalfword 0x4 weather 0x60 @sunlight
goto @workup

#org @sunlight
attackcanceler
attackstring
ppreduce
jumpifstat 0x1 0x3 0x1 0xC @attack2
jumpifstat 0x1 0x0 0x4 0xC 0x82DA71D

#org @attack2
attackanimation
waitanimation
setbyte 0x202448F 0x0
playstatchangeanimation 0x0 0x12 0x0
setbyte 0x202448E 0x21
statbuffchange 0x1 true @spatk2
jumpifbyte 0x0 multistringchooser 0x2 @spatk2
printfromtable 0x85CC89C
waitmessage 0x40

#org @spatk2
setbyte 0x202448E 0x24
statbuffchange 0x1 true 0x82DA790
jumpifbyte 0x0 multistringchooser 0x2 0x82DA790
printfromtable 0x85CC89C
waitmessage 0x40
goto 0x82D8A4E

#org @workup
attackcanceler
attackstring
ppreduce
jumpifstat BANK_USER 0x3 0x1 0xC @attack
jumpifstat BANK_USER B_= 0x4 0xC 0x82DA71D

#org @attack
attackanimation
waitanimation
setbyte 0x202448F 0x0
playstatchangeanimation 0x0 0x12 0x0
setbyte 0x202448E 0x11
statbuffchange 0x1 true @spatk
jumpifbyte 0x0 multistringchooser 0x2 @spatk
printfromtable 0x85CC89C
waitmessage 0x40

#org @spatk
setbyte 0x202448E 0x14
statbuffchange 0x1 true 0x82DA790
jumpifbyte 0x0 multistringchooser 0x2 0x82DA790
printfromtable 0x85CC89C
waitmessage 0x40
goto 0x82D8A4E

#org @rototiller
setbyte 0x2024200 0x0
attackcanceler
attackstring
ppreduce
cmd25
jumpiftype 0x1 0xC @selfgrass
goto @call

#org @selfgrass
jumpifsecondarystatus 0x1 0x1000000 @next
jumpifstat 0x1 B_>= 0x1 0xC @next
jumpifstat 0x1 B_>= 0x4 0xC @next
jumpifbyte B_= 0x2024200 0x1 @selfnoanimation
attackanimation
waitanimation
setbyte 0x2024200 0x1

#org @selfnoanimation
cmd47
playstatchangeanimation 0x1 0x12 0x0
setbyte 0x202448E 0x11
statbuffchange 0x80 true @selfnoanimation2
jumpifbyte B_>= 0x2024337 0x2 @selfnoanimation2
printfromtable 0x85CC89C
waitmessage 0x40

#org @selfnoanimation2
setbyte 0x202448E 0x14
statbuffchange 0x80 true @next
jumpifbyte B_>= 0x2024337 0x2 @next
printfromtable 0x85CC89C
waitmessage 0x40

#org @next
cmd25

#org @call
jumpifarrayequal 0x202420B 0x202420C 0x1 @next
call @target
setbyte 0x2024488 0x0
cmd49 0x2 0x10
jumpwhiletargetvalid @next
jumpifbyte B_= 0x2024200 0x0 @nobuffs
end

#org @target
jumpiftype 0x0 0xC @grass
goto @return

#org @grass
jumpifsecondarystatus 0x0 0x1000000 @return
jumpifstat 0x0 B_>= 0x1 0xC @return
jumpifstat 0x0 B_>= 0x4 0xC @return
jumpifbyte B_= 0x2024200 0x1 @noanimation
attackanimation
waitanimation
setbyte 0x2024200 0x1

#org @noanimation
cmd47
playstatchangeanimation 0x0 0x12 0x0
setbyte 0x202448E 0x11
statbuffchange 0x0 false @noanimation2
jumpifbyte B_>= 0x2024337 0x2 @noanimation2
printfromtable 0x85CC89C
waitmessage 0x40

#org @noanimation2
setbyte 0x202448E 0x14
statbuffchange 0x0 false @return
jumpifbyte B_>= 0x2024337 0x2 @return
printfromtable 0x85CC89C
waitmessage 0x40

#org @return
return

#org @nobuffs
pause 0x20
orbyte 0x202427C 0x20
resultmessage
waitmessage 0x40
end

MrDollSteak

Formerly known as 11bayerf1

Age 24
Male
Hong Kong
Seen 3 Days Ago
Posted 1 Week Ago
847 posts
11 Years
By the way, the following moves also require custom Effects: Boomburst, Bulldoze, Discharge, Lava Plume, Parabolic Charge, Petal Blizzard, Searing Shot, Sludge Wave and Surf (needs to be updated). They do not work properly with their current effect, as they are supposed to hit Both Foes AND the allied Pokemon similar to Earthquake.

I have managed to make Surf work so it hits Ally + Target 1 + Target 2, the problem is that it does not recognise the ally's Water Absorb. I guess it's the same with Flash Fire and Volt Absorb when using Lava Plume and Discharge. Is there theoretically any way to get around this without using ASM?

(I'll post the BSP when I get back home)



Just tried your Growth/Work Up/Rototiller script and spotted a few bugs. First one was growth sharply increasing Att. And Sp. Att when not Sunny (I fixed this by adding the goto @workup in red), probably just a simple oversight in the code.

Also, I got some problems with Rototiller, it seems to freeze directly after printing the second status message, just as it goes to @Return.

Here is the Script I used. I've double checked it to make sure all Offsets are ok with the original Flower Shield Script. Everything is working fine except that last little part where it freezes :(

FOR EMERALD

Spoiler:
#include abilities.bsh
#dynamic 0xE47C50
#freespacebyte 0xFF

#org @pickmove
jumpifhalfword 0x0 0x20241EA 0x4A @growth
jumpifhalfword 0x0 0x20241EA 0x1C6 @workup
jumpifhalfword 0x0 0x20241EA 0x1C5 @rototiller
goto 0x82D8C90

#org @growth
jumpifabilitypresent 0xD @workup
jumpifabilitypresent 0x4D @workup
jumpifhalfword 0x4 weather 0x60 @sunlight
goto @workup

#org @sunlight
attackcanceler
attackstring
ppreduce
jumpifstat 0x1 0x3 0x1 0xC @attack2
jumpifstat 0x1 0x0 0x4 0xC 0x82DA71D

#org @attack2
attackanimation
waitanimation
setbyte 0x202448F 0x0
playstatchangeanimation 0x0 0x12 0x0
setbyte 0x202448E 0x21
statbuffchange 0x1 true @spatk2
jumpifbyte 0x0 multistringchooser 0x2 @spatk2
printfromtable 0x85CC89C
waitmessage 0x40

#org @spatk2
setbyte 0x202448E 0x24
statbuffchange 0x1 true 0x82DA790
jumpifbyte 0x0 multistringchooser 0x2 0x82DA790
printfromtable 0x85CC89C
waitmessage 0x40
goto 0x82D8A4E

#org @workup
attackcanceler
attackstring
ppreduce
jumpifstat BANK_USER 0x3 0x1 0xC @attack
jumpifstat BANK_USER B_= 0x4 0xC 0x82DA71D

#org @attack
attackanimation
waitanimation
setbyte 0x202448F 0x0
playstatchangeanimation 0x0 0x12 0x0
setbyte 0x202448E 0x11
statbuffchange 0x1 true @spatk
jumpifbyte 0x0 multistringchooser 0x2 @spatk
printfromtable 0x85CC89C
waitmessage 0x40

#org @spatk
setbyte 0x202448E 0x14
statbuffchange 0x1 true 0x82DA790
jumpifbyte 0x0 multistringchooser 0x2 0x82DA790
printfromtable 0x85CC89C
waitmessage 0x40
goto 0x82D8A4E

#org @rototiller
setbyte 0x2024200 0x0
attackcanceler
attackstring
ppreduce
cmd25
jumpiftype 0x1 0xC @selfgrass
goto @call

#org @selfgrass
jumpifsecondarystatus 0x1 0x1000000 @next
jumpifstat 0x1 B_>= 0x1 0xC @next
jumpifstat 0x1 B_>= 0x4 0xC @next
jumpifbyte B_= 0x2024200 0x1 @selfnoanimation
attackanimation
waitanimation
setbyte 0x2024200 0x1

#org @selfnoanimation
cmd47
playstatchangeanimation 0x1 0x12 0x0
setbyte 0x202448E 0x11
statbuffchange 0x80 true @selfnoanimation2
jumpifbyte B_>= 0x2024337 0x2 @selfnoanimation2
printfromtable 0x85CC89C
waitmessage 0x40

#org @selfnoanimation2
setbyte 0x202448E 0x14
statbuffchange 0x80 true @next
jumpifbyte B_>= 0x2024337 0x2 @next
printfromtable 0x85CC89C
waitmessage 0x40

#org @next
cmd25

#org @call
jumpifarrayequal 0x202420B 0x202420C 0x1 @next
call @target
setbyte 0x2024488 0x0
cmd49 0x2 0x10
jumpwhiletargetvalid @next
jumpifbyte B_= 0x2024200 0x0 @nobuffs
end

#org @target
jumpiftype 0x0 0xC @grass
goto @return

#org @grass
jumpifsecondarystatus 0x0 0x1000000 @return
jumpifstat 0x0 B_>= 0x1 0xC @return
jumpifstat 0x0 B_>= 0x4 0xC @return
jumpifbyte B_= 0x2024200 0x1 @noanimation
attackanimation
waitanimation
setbyte 0x2024200 0x1

#org @noanimation
cmd47
playstatchangeanimation 0x0 0x12 0x0
setbyte 0x202448E 0x11
statbuffchange 0x0 false @noanimation2
jumpifbyte B_>= 0x2024337 0x2 @noanimation2
printfromtable 0x85CC89C
waitmessage 0x40

#org @noanimation2
setbyte 0x202448E 0x14
statbuffchange 0x0 false @return
jumpifbyte B_>= 0x2024337 0x2 @return
printfromtable 0x85CC89C
waitmessage 0x40

#org @return
return

#org @nobuffs
pause 0x20
orbyte 0x202427C 0x20
resultmessage
waitmessage 0x40
end
Boomburst doesn't need a custom effect. Just use 147. The Dig hit I believe is tied to Earthquake's ID not the Move Script. But I can't guarantee. If that is the case just copy it.

Thanks for spotting that with Growth. Rototiller works fine for me. I'll compare it against my BS to see if anything's different.

MrDollSteak

Formerly known as 11bayerf1

Age 24
Male
Hong Kong
Seen 3 Days Ago
Posted 1 Week Ago
847 posts
11 Years
Here are the updated Gyro Ball and Electro Ball effects.

Fire Red
Spoiler:
You will need to have inserted either the Turn Order Loader that KDS recently made located here, OR if you want the included new moves, items and abilities, the routine found here

Then you will need to make a Battle Script in the same way as Flail, with a Callasm to the following routine replacing the AC command for Flail.

.text
.align 2
.thumb
.thumb_func
.global GyroBallElectroBall

GetSpeed:
	push {lr}
	ldr r4, .Bank
	ldrb r0, [r4, #0x1]
	bl SpeedBL
	mov r5, r0 @TargetSpeed
	ldrb r0, [r4, #0x0]
	bl SpeedBL
	mov r4, r0 @UserSpeed
BasePowerCalc:
	ldr r0, .MoveLoc
	ldrh r0, [r0]
	mov r1, #0xB4
	lsl r1, r1, #0x1
	cmp r0, r1
	bne ElectroBall
GyroBall:
	mov r0, #0x19
	mul r0, r5
	mov r1, r4
	bl DivideBL
	ldr r1, .BaseDamageLoc
	cmp r0, #0x96
	bgt MaximumBasePower
	b StoreBasePower
ElectroBall:
	mov r0, #0x64
	mul r0, r5
	mov r1, r4
	bl DivideBL
	ldr r1, .BaseDamageLoc
	cmp r0, #0x32
	bgt LowBasePower
	cmp r0, #0x21
	bgt MediumBasePower
	cmp r0, #0x19
	bgt HighBasePower
MaximumBasePower:
	mov r0, #0x96
	b StoreBasePower
LowBasePower:
	mov r0, #0x3C
	b StoreBasePower
MediumBasePower:
	mov r0, #0x50
	b StoreBasePower
HighBasePower:
	mov r0, #0x78
StoreBasePower:
	strb r0, [r1]
Exit:
	pop {r0}
	bx r0
SpeedBL:
	ldr r1, .SpeedBL
	bx r1
DivideBL:
	ldr r2, .DivideBL
	bx r2

.align
.Bank: .word 0x02023D6B
.MoveLoc: .word 0x2023D4A
.BaseDamageLoc: .word 0x2023F50
.SpeedBL: .word 0x8CCCCCC @The location of GetSpeed or SpeedBL in your rom
.DivideBL: .word 0x081E4019
To make Gyro Ball work you'll need to find its index (make sure it is even) and replace B4 in the base power calculation, with half of the index for the move. In my Rombase Gyro Ball is move 168, which B4 is half of. So if your index is 178 it would be BC, etc.


Emerald
Spoiler:
You will need to have inserted either the Turn Order Loader that KDS recently made and Kleenex ported located here, OR if you want the included new moves, items and abilities, the routine found here

Then you will need to make a Battle Script in the same way as Flail, with a Callasm to the following routine replacing the AC command for Flail.

.text
.align 2
.thumb
.thumb_func
.global GyroBallElectroBall

GetSpeed:
	push {lr}
	ldr r4, .Bank
	ldrb r0, [r4, #0x1]
	bl SpeedBL
	mov r5, r0 @TargetSpeed
	ldrb r0, [r4, #0x0]
	bl SpeedBL
	mov r4, r0 @UserSpeed
BasePowerCalc:
	ldr r0, .MoveLoc
	ldrh r0, [r0]
	mov r1, #0xB4
	lsl r1, r1, #0x1
	cmp r0, r1
	bne ElectroBall
GyroBall:
	mov r0, #0x19
	mul r0, r5
	mov r1, r4
	bl DivideBL
	ldr r1, .BaseDamageLoc
	cmp r0, #0x96
	bgt MaximumBasePower
	b StoreBasePower
ElectroBall:
	mov r0, #0x64
	mul r0, r5
	mov r1, r4
	bl DivideBL
	ldr r1, .BaseDamageLoc
	cmp r0, #0x32
	bgt LowBasePower
	cmp r0, #0x21
	bgt MediumBasePower
	cmp r0, #0x19
	bgt HighBasePower
MaximumBasePower:
	mov r0, #0x96
	b StoreBasePower
LowBasePower:
	mov r0, #0x3C
	b StoreBasePower
MediumBasePower:
	mov r0, #0x50
	b StoreBasePower
HighBasePower:
	mov r0, #0x78
StoreBasePower:
	strb r0, [r1]
Exit:
	pop {r0}
	bx r0
SpeedBL:
	ldr r1, .SpeedBL
	bx r1
DivideBL:
	ldr r2, .DivideBL
	bx r2

.align
.Bank: .word 0x0202420B
.MoveLoc: .word 0x20241EA
.BaseDamageLoc: .word 0x2024400
.SpeedBL: .word 0x803CF79
.DivideBL: .word 0x082E7541
To make Gyro Ball work you'll need to find its index (make sure it is even) and replace B4 in the base power calculation, with half of the index for the move. In my Rombase Gyro Ball is move 168, which B4 is half of. So if your index is 178 it would be BC, etc.


Old Post: There's really no benefit to using this, but I'll just leave this here for interest's sake.
Spoiler:
So I've got Gyro Ball and Electro Ball effects working in Fire Red and Emerald.

I'd like to thank HidoranBlaze for pushing me to make it, and testing out the code for me, identifying all its bugs that have since been fixed.

Fire Red

Spoiler:
Firstly you'll need to insert 01 48 00 47 00 00 xx xx xx 08 at 15096, where xx xx xx is the pointer to the following routine plus one.

.text
.align 2
.thumb
.thumb_func
.global speedstore

main:
	ldr r0, [sp, #0x8]
	add sp, #0xC
	ldr r3, .speedstore
	mov r4, r8
	mov r5, r7
	strh r4, [r3]
	strh r5, [r3, #0x2]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	ldr r1, .return
	bx r1

.align
.speedstore: .word 0x0203C024
.return: .word 0x080150A1
This stores the completed Speed Calculations of the user and the foe in a free ram location.

Then make a Battle Script in the same way as Flail, with a callasm to the following routine replacing the AC command for Flail.

.text
.align 2
.thumb
.thumb_func
.global gyroball

main:
	push {lr}
	ldr r0, .bank
	ldrb r1, [r0, #0x1]
	ldrb r0, [r0, #0x0]
	mov r2, #0x2
	mul r0, r2
	mul r1, r2
	ldr r2, .speedstore
	add r4, r0, r2
	add r5, r1, r2
	ldrh r4, [r4]
	ldrh r5, [r5]
basepowercalc:
	ldr r0, .moveloc
	ldrh r0, [r0]
	mov r1, #0xB4
	lsl r1, r1, #0x1
	cmp r0, r1
	bne electroball
gyroball:
	mov r0, #0x19
	mul r0, r5
	mov r1, r4
	bl divmod
	ldr r1, .basedamageloc
	cmp r0, #0x96
	bgt setgyrobp
	b storebasepower
electroball:
	mov r0, #0x64
	mul r0, r5
	mov r1, r4
	bl divmod
	ldr r1, .basedamageloc
	cmp r0, #0x32
	bgt low
	cmp r0, #0x21
	bgt medium
	cmp r0, #0x19
	bgt high
setgyrobp:
	mov r0, #0x96
	b storebasepower
low:
	mov r0, #0x3C
	b storebasepower
medium:
	mov r0, #0x50
	b storebasepower
high:
	mov r0, #0x78
storebasepower:
	strb r0, [r1]
exit:
	pop {r0}
	bx r0
divmod:
	ldr r2, .divide
	bx r2

.align
.bank: .word 0x02023D6B
.speedstore: .word 0x0203C024
.moveloc: .word 0x2023D4A
.basedamageloc: .word 0x2023F50
.divide: .word 0x081E4019
To make Gyro Ball work you'll need to find its slot (make sure it is even) and replace B4 in the base power calc, with half of the index for the move.In my Rombase it's move 168, which B4 is half of. So if yours is 178 it would be BC, etc.


Emerald

Spoiler:
Firstly you'll need to insert 01 48 00 47 00 00 xx xx xx 08 at 3D2D6, where xx xx xx is the pointer to the following routine plus one.

.text
.align 2
.thumb
.thumb_func
.global speedstore

main:
	ldr r0, [sp, #0x8]
	add sp, #0xC
	ldr r3, .speedstore
	mov r4, r8
	mov r5, r7
	strh r4, [r3]
	strh r5, [r3, #0x2]
	pop {r3-r5}
	mov r8, r3
	mov r9, r4
	ldr r1, .return
	bx r1

.align
.speedstore: .word 0x0203E324
.return: .word 0x0803D2E1
This stores the completed Speed Calculations of the user and the foe in a free ram location.

Then make a Battle Script in the same way as Flail, with a callasm to the following routine replacing the AC command for Flail.

.text
.align 2
.thumb
.thumb_func
.global gyroball

main:
	push {lr}
	ldr r0, .bank
	ldrb r1, [r0, #0x1]
	ldrb r0, [r0, #0x0]
	mov r2, #0x2
	mul r0, r2
	mul r1, r2
	ldr r2, .speedstore
	add r4, r0, r2
	add r5, r1, r2
	ldrh r4, [r4]
	ldrh r5, [r5]
basepowercalc:
	ldr r0, .moveloc
	ldrh r0, [r0]
	mov r1, #0xB4
	lsl r1, r1, #0x1
	cmp r0, r1
	bne electroball
gyroball:
	mov r0, #0x19
	mul r0, r5
	mov r1, r4
	bl divmod
	ldr r1, .basedamageloc
	cmp r0, #0x96
	bgt setgyrobp
	b storebasepower
electroball:
	mov r0, #0x64
	mul r0, r5
	mov r1, r4
	bl divmod
	ldr r1, .basedamageloc
	cmp r0, #0x32
	bgt low
	cmp r0, #0x21
	bgt medium
	cmp r0, #0x19
	bgt high
setgyrobp:
	mov r0, #0x96
	b storebasepower
low:
	mov r0, #0x3C
	b storebasepower
medium:
	mov r0, #0x50
	b storebasepower
high:
	mov r0, #0x78
storebasepower:
	strb r0, [r1]
exit:
	pop {r0}
	bx r0
divmod:
	ldr r2, .divide
	bx r2

.align
.bank: .word 0x0202420B
.speedstore: .word 0x0203E324
.moveloc: .word 0x20241EA
.basedamageloc: .word 0x2024400
.divide: .word 0x082E7541
To make Gyro Ball work you'll need to find its slot (make sure it is even) and replace B4 in the base power calc, with half of the index for the move.In my Rombase it's move 168, which B4 is half of. So if yours is 178 it would be BC, etc.


EDIT: Having talked with Doesn't, I realised that this method does not account for things like Scary Face and Thunder Wave happening in the same turn the user uses Gyro Ball. As such I am rewriting it based upon Doesnt's suggestions. If this isn't a huge concern to you, feel free to use it as it is, but as I said, it won't work in every situation.

Additionally the updated code will likely also come with Trick Room and Tailwind. Which is something to look forward to.
Seen January 10th, 2017
Posted April 21st, 2016
180 posts
5.7 Years
Heavy Slam for Fire Red.
I've been trying to port your Heavy Slam to Emerald, but I can't get it to deal more than 40 Base Damage. I've made sure to change 0x24 to 0x20 and the RAM offsets work for Doesn'ts Stored Power and Punishment. 0xE is the byte that determines weight just as in Fire Red.

Any ideas what could be going wrong? I tried to use Flail as script as well (which I guess is more optimized) and got the same result, 40 Damage no matter what weight I set on my test mon.

Spoiler:
.text
.align 2
.thumb
.thumb_func
.global heavyslam

main:
push {lr}
ldr r0, userBank
ldrb r0, [r0]
ldr r1, battleData
mov r2, #0x58
mul r0, r2
add r3, r0, r1
ldr r0, targetBank
ldrb r0, [r0]
mul r0, r2
add r4, r0, r1
ldrb r5, [r3, #0x0]
ldrb r6, [r4, #0x0]
ldr r1, dexData
mov r2, #0x20
mul r5, r2
add r0, r1, r5
ldrh r5, [r0, #0xE]
mul r6, r2
add r0, r1, r6
ldrh r6, [r0, #0xE]
mov r2, #0x5
mul r2, r6
cmp r5, r2
bgt set120
sub r2, r6
cmp r5, r2
bgt set100
sub r2, r6
cmp r5, r2
bgt set80
sub r2, r6
cmp r5, r2
bgt set60
mov r1, #0x28
b end

set60:
mov r1, #0x3C
b end

set80:
mov r1, #0x50
b end

set100:
mov r1, #0x64
b end

set120:
mov r1, #0x78

end:
ldr r2, basePower
strh r1, [r2, #0x0]
pop {r0}
bx r0

.align 2
targetBank: .word 0x0202420C
userBank: .word 0x0202420B
battleData: .word 0x02024084
basePower: .word 0x02024400
dexData: .word 0x0856B5B0


Spoiler:
#dynamic 0xE48D30
#freespacebyte 0xFF

#org @pickmove
jumpifhalfword 0x0 0x20241EA 0x1BA @HeavySlam
goto 0xOtherMove

#org @HeavySlam
attackcanceler
accuracycheck 0x82D8A5E 0x0
attackstring
ppreduce
callasm 0x8E48CB1
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c BANK_TARGET
waitstate
graphicalhpupdate BANK_TARGET
datahpupdate BANK_TARGET
critmessage
waitmessage DELAY_1SECOND
resultmessage
waitmessage DELAY_1SECOND
seteffectwithchancetarget
faintpokemon BANK_TARGET 0x0 0x0
setbyte 0x2024488 0x0
cmd49 0x0 0x0
end
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.3 Years
I've been trying to port your Heavy Slam to Emerald, but I can't get it to deal more than 40 Base Damage. I've made sure to change 0x24 to 0x20 and the RAM offsets work for Doesn'ts Stored Power and Punishment. 0xE is the byte that determines weight just as in Fire Red.
Actually there is some problem in the ASM. I'll look to fix it.

EDIT: Here is the corrected code for Emerald. Will update the OP of the ASM later.
Spoiler:
.text
.align 2
.thumb
.thumb_func
.global heavyslam

main:
push {lr}
ldr r0, userBank
ldrb r0, [r0]
ldr r1, battleData
mov r2, #0x58
mul r0, r2
add r3, r0, r1
ldr r0, targetBank
ldrb r0, [r0]
mul r0, r2
add r4, r0, r1
ldrh r5, [r3, #0x0]
cmp r5, #0xFB
ble cont
ldr r1, dexMapper
lsl r5, r5, #0x1
add r1, r5
ldrh r5, [r1]

cont:
ldrh r6, [r4, #0x0]
cmp r6, #0xFB
ble cont2
ldr r1, dexMapper
lsl r6, r6, #0x1
add r1, r6
ldrh r6, [r1]

cont2:
ldr r1, dexData
mov r2, #0x20
mul r5, r2
add r0, r1, r5
ldrh r5, [r0, #0xE]
mul r6, r2
add r0, r1, r6
ldrh r6, [r0, #0xE]
mov r2, #0x5
mul r2, r6
cmp r5, r2
bgt set120
sub r2, r6
cmp r5, r2
bgt set100
sub r2, r6
cmp r5, r2
bgt set80
sub r2, r6
cmp r5, r2
bgt set60
mov r1, #0x28
b end

set60:
mov r1, #0x3C
b end

set80:
mov r1, #0x50
b end

set100:
mov r1, #0x64
b end

set120:
mov r1, #0x78

end:
ldr r2, basePower
strh r1, [r2, #0x0]
pop {r0}
bx r0

.align 2
targetBank: .word 0x0202420C
userBank: .word 0x0202420B
battleData: .word 0x02024084
basePower: .word 0x02024400
dexData: .word 0x0856B5B0
dexMapper: .word 0x0831DC80


Constant Base Power Hidden Power:
Just place these bytes:

Fire Red:
At 0x2B712: 07 E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Emerald:
At 0X544C0: 07 E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Now, it saves some processor cycles and set the base power directly in the move editor.
Seen January 10th, 2017
Posted April 21st, 2016
180 posts
5.7 Years
#org @slot1
bicbyte 0x20242D4 0xFF
goto @thawdisp

#org @slot2
bicbyte 0x202407C 0xFF
goto @thawdisp

#org @slot3
bicbyte 0x2024338 0xFF
goto @thawdisp

#org @slot4
bicbyte 0x20240E0 0xFF
goto @thawdisp

Hey KDS, in the process of translating your ASM routines to Emerald, but these recurring RAM locations I can't seem to find. I've tried to find similar RAM pointers in the Emerald ROM tracing pointers in a HEX-editor and thought I found them, but the effect just freezes the game so I must be wrong.

Would you mind telling me how you found these locations in Fire Red so I can do the same in Emerald, or if you happen to have the Emerald RAM locations written down somewhere?

Thanks!
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.3 Years
Hey KDS, in the process of translating your ASM routines to Emerald, but these recurring RAM locations I can't seem to find. I've tried to find similar RAM pointers in the Emerald ROM tracing pointers in a HEX-editor and thought I found them, but the effect just freezes the game so I must be wrong.

Would you mind telling me how you found these locations in Fire Red so I can do the same in Emerald, or if you happen to have the Emerald RAM locations written down somewhere?
Thanks!
These pointers are actually pointer to the actual pokemon party structure rather than battle structure pointers.
I' ll tell you for Emerald:-
Slot 1 - [0x020244EC(for US) or 0x02024190(other Emerakd)]+0x50
Slot 2 - 0x02024744 + 0x50
Slot 3 - [0x020244EC(for US) or 0x02024190(other Emerakd)]+0x50+0x64
Slot 4 - 0x02024744 + 0x50 + 0x64

And here is the link for the pokemon data structure:
http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_data_structure_in_Generation_III
Seen January 10th, 2017
Posted April 21st, 2016
180 posts
5.7 Years
Made an animation for Electro Ball

Emerald
Spoiler:
00 E3 27 00 E4 27 00 E5 27 0A 00 0C 0C 08 02 74 72 59 08 02 05 01 00 02 00 00 00 04 00 00 00 05 03 FD AA 10 08 02 04 00 00 3C 00 02 00 0C 00 19 D5 00 C0 04 1E 19 D5 00 C0 04 1E 19 D5 00 C0 02 5C 59 59 08 02 01 00 00 04 19 19 D5 00 C0 04 14 19 D5 00 C0 04 0F 19 D5 00 C0 04 0A 04 06 1C D5 00 C0 06 05 05 02 8C 59 59 08 02 03 00 00 10 00 10 00 04 02 02 8C 59 59 08 02 03 00 00 F0 FF F0 FF 19 77 00 C0 05 02 74 72 59 08 02 05 01 00 04 00 04 00 00 00 00 00 0B 00 0D 00 11 27 00 1B 27 04 0F 1F 59 8C 15 08 07 A8 00 C0 FF 3F 00 05 00 05 00 00 00 05 00 02 ZZ YY XX 08 82 03 10 00 10 00 08 00 05 19 9F 00 3F 03 D1 52 0D 08 02 05 01 00 04 00 00 00 08 00 01 00 05 15 17 00 0E 00 0B 00 0D 0E EA 7B 2D 08 05 08

At Offset XX YY ZZ
11 27 1B 27 74 49 52 08 9C C6 2E 08 00 00 00 00 54 6D 59 08 E1 19 11 08 19 11 08
Seen January 10th, 2017
Posted April 21st, 2016
180 posts
5.7 Years
Wake-up Slap (Improved):
Sorry for double-post, but I would like to report a potential glitch.
This move effects works fine except it doesn't remove the SLP Icon after using Wake-Up Slap. Does it work for you on your system?

I saw a similar report on MrDS ROM-base which I assume uses the same Battle Script.
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.3 Years
Sorry for double-post, but I would like to report a potential glitch.
This move effects works fine except it doesn't remove the SLP Icon after using Wake-Up Slap. Does it work for you on your system?

I saw a similar report on MrDS ROM-base which I assume uses the same Battle Script.
It is working properly in my system. You might be getting glitches because of large scripts, BSP sometimes messes up the dynamic pointers. So try to the check script in the hex editor, correct the pointers and then check if the script is being able to decompile again in BSP without problems.

Spherical Ice

Age 21
Bristol, UK
Seen 5 Hours Ago
Posted September 24th, 2019
5,254 posts
12 Years
It is working properly in my system. You might be getting glitches because of large scripts, BSP sometimes messes up the dynamic pointers. So try to the check script in the hex editor, correct the pointers and then check if the script is being able to decompile again in BSP without problems.
I also get this issue, could you perhaps post the hex dump of your scripts?
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.3 Years
I also get this issue, could you perhaps post the hex dump of your scripts?
Sure, here are 2 in hex format.
WAKE-UP SLAP:-

Spoiler:

1D 00 00 00 00 01 26 69 1D 08 1C 00 07 00 00 00 VV VV VV 08 28 26 69 1D 08

At VV VV VV:
2E D2 3F 02 02 02 00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 19 00 00 00 00 00 08 E3 00 4E 69 1D 08 2E 85 3E 02 02 01 18 00 2E 20 C0 03 02 DD 2E 21 C0 03 02 DD 2E 22 C0 03 02 DD 2E 23 C0 03 02 08 10 84 01 12 20 00 29 00 6C 3D 02 02 00 WW WW WW 08 29 00 6C 3D 02 02 01 XX XX XX 08 29 00 6C 3D 02 02 02 YY YY YY 08 29 00 6C 3D 02 02 03 ZZ ZZ ZZ 08

At WW WW WW:
36 D4 42 02 02 FF 98 00 28 4E 69 1D 08

At XX XX XX:
36 7C 40 02 02 FF 98 00 28 4E 69 1D 08

At YY YY YY:
36 38 43 02 02 FF 98 00 28 4E 69 1D 08

At ZZ ZZ ZZ:
36 E0 40 02 02 FF 98 00 28 4E 69 1D 08

String at DD DD DD:
FD 10 00 EB E3 DF D9 00 E9 E4 AB FF


SCALD:-(hook this with 125)
Spoiler:

1D 00 00 00 00 01 26 69 1D 08 2E 85 3E 02 02 03 00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 15 19 00 00 00 00 00 08 E3 00 4E 69 1D 08 1C 00 20 00 00 00 VV VV VV 08 28 4E 69 1D 08

At VV VV VV:
2E 20 C0 03 02 DD 2E 21 C0 03 02 DD 2E 22 C0 03 02 DD 2E 23 C0 03 02 08 10 84 01 12 20 00 2E 85 3E 02 02 04 18 00 29 00 6C 3D 02 02 00 WW WW WW 08 29 00 6C 3D 02 02 01 XX XX XX 08 29 00 6C 3D 02 02 02 YY YY YY 08 29 00 6C 3D 02 02 03 ZZ ZZ ZZ 08

At WW WW WW:
36 D4 42 02 02 FF 98 00 28 4E 69 1D 08

At XX XX XX:
36 7C 40 02 02 FF 98 00 28 4E 69 1D 08

At YY YY YY:
36 38 43 02 02 FF 98 00 28 4E 69 1D 08

At ZZ ZZ ZZ:
36 E0 40 02 02 FF 98 00 28 4E 69 1D 08

String at DD DD DD:
FD 10 00 EB D5 E7 FE D8 D9 DA E6 E3 E7 E8 D9 D8 AB FF


I have actually made some changes in these script to improve some message formatting and sequence of events. The scripts in the OP are also updated now.

MrDollSteak

Formerly known as 11bayerf1

Age 24
Male
Hong Kong
Seen 3 Days Ago
Posted 1 Week Ago
847 posts
11 Years
Sure, here are 2 in hex format.
WAKE-UP SLAP:-

Spoiler:

1D 00 00 00 00 01 26 69 1D 08 1C 00 07 00 00 00 VV VV VV 08 28 26 69 1D 08

At VV VV VV:
2E D2 3F 02 02 02 00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 19 00 00 00 00 00 08 E3 00 4E 69 1D 08 2E 85 3E 02 02 01 18 00 2E 20 C0 03 02 DD 2E 21 C0 03 02 DD 2E 22 C0 03 02 DD 2E 23 C0 03 02 08 10 84 01 12 20 00 29 00 6C 3D 02 02 00 WW WW WW 08 29 00 6C 3D 02 02 01 XX XX XX 08 29 00 6C 3D 02 02 02 YY YY YY 08 29 00 6C 3D 02 02 03 ZZ ZZ ZZ 08

At WW WW WW:
36 D4 42 02 02 FF 98 00 28 4E 69 1D 08

At XX XX XX:
36 7C 40 02 02 FF 98 00 28 4E 69 1D 08

At YY YY YY:
36 38 43 02 02 FF 98 00 28 4E 69 1D 08

At ZZ ZZ ZZ:
36 E0 40 02 02 FF 98 00 28 4E 69 1D 08

String at DD DD DD:
FD 10 00 EB E3 DF D9 00 E9 E4 AB FF


SCALD:-(hook this with 125)
Spoiler:

1D 00 00 00 00 01 26 69 1D 08 2E 85 3E 02 02 03 00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 15 19 00 00 00 00 00 08 E3 00 4E 69 1D 08 1C 00 20 00 00 00 VV VV VV 08 28 4E 69 1D 08

At VV VV VV:
2E 20 C0 03 02 DD 2E 21 C0 03 02 DD 2E 22 C0 03 02 DD 2E 23 C0 03 02 08 10 84 01 12 20 00 2E 85 3E 02 02 04 18 00 29 00 6C 3D 02 02 00 WW WW WW 08 29 00 6C 3D 02 02 01 XX XX XX 08 29 00 6C 3D 02 02 02 YY YY YY 08 29 00 6C 3D 02 02 03 ZZ ZZ ZZ 08

At WW WW WW:
36 D4 42 02 02 FF 98 00 28 4E 69 1D 08

At XX XX XX:
36 7C 40 02 02 FF 98 00 28 4E 69 1D 08

At YY YY YY:
36 38 43 02 02 FF 98 00 28 4E 69 1D 08

At ZZ ZZ ZZ:
36 E0 40 02 02 FF 98 00 28 4E 69 1D 08

String at DD DD DD:
FD 10 00 EB D5 E7 FE D8 D9 DA E6 E3 E7 E8 D9 D8 AB FF


I have actually made some changes in these script to improve some message formatting and sequence of events. The scripts in the OP are also updated now.
KDS, I believe I posted a Setword Battle Scripting command, that I use as command FA. so you don't need to buffer each individual byte. Saves space and makes scripting easier. I think it's with my Geomancy one.
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.3 Years
KDS, I believe I posted a Setword Battle Scripting command, that I use as command FA. so you don't need to buffer each individual byte. Saves space and makes scripting easier. I think it's with my Geomancy one.
Actually, in my version of bsp there is a setword command that actually decomposes into 4 setbyte commands, just like the calculatedamage commands break into command no (5,6,7,8). If you see my original script of wakeup slap, there is a setword command to set the string. On your geomancy post I can't seem to find the link to the setword command (maybe because I am using a phone to post this).
Seen January 10th, 2017
Posted April 21st, 2016
180 posts
5.7 Years
Actually, in my version of bsp there is a setword command that actually decomposes into 4 setbyte commands, just like the calculatedamage commands break into command no (5,6,7,8). If you see my original script of wakeup slap, there is a setword command to set the string. On your geomancy post I can't seem to find the link to the setword command (maybe because I am using a phone to post this).
I've been using your new script with Wake-Up Slap. The issue is that when I give Spore + Wake-Up slap to a wild Pokemon and have it use it on my Pokemon, everything is flawless and the SLP icon disappears. However, when I give Spore and Wake-Up Slap to my own Pokemon, put a wild pokemon to sleep, and wake-up slap it, it wakes up but the SLP icon is still there.

Have you tried both of these ways on your system and gotten them to work?
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.3 Years
Welp, I deleted this message by accident in process of editing it for adding something new. x0

I've been using your new script with Wake-Up Slap. The issue is that when I give Spore + Wake-Up slap to a wild Pokemon and have it use it on my Pokemon, everything is flawless and the SLP icon disappears. However, when I give Spore and Wake-Up Slap to my own Pokemon, put a wild pokemon to sleep, and wake-up slap it, it wakes up but the SLP icon is still there.

Have you tried both of these ways on your system and gotten them to work?
Mine definitely works when I use spore + wakeup slap on the opponent. Can you VM or PM me your version of the hex dump, so that i can check it?

-----------------------------------------------------
To fix Spite's reduction to 4 PP

Spoiler:

Fire Red
At 2A55A: 04 D8 90 E0 00 00 00 00 00 00 00 00 04 26

Emerald
At 532E2: 04 D8 90 E0 00 00 00 00 00 00 00 00 04 26


Emerald ports for Taunt, Encore and Disable (Credits to Doesnt for the FR ones from which I
found the Emerald ones easily).

Spoiler:

Taunt's duration is controlled by the byte at x54DB6; change it to 04 for BW's length.

To fix Encore at 4 turns, insert 00 00 00 00 at x529EE and x529FE.

To fix Disable at 4 turns, insert 00 00 00 00 at x528B6 and x528C6.


Facade's ignore burn effect on attack (Fire Red Only):

Spoiler:

Important things :-
1. Only works for DoesntKnowHowToPlay's Fire Red PSS Split patch.
2. Make sure before making the hex edits, the region (x3F32c - x3F397) is filled with 00's
only, otherwise you will have to perform a hook or extra logic instead of directly
inserting these hex bytes).
3. Also make sure that facade's vanilla battle script is intact and not altered.
Anyways, the hex edits:

At x3F326: 27 E0 (branch to x3F378)

At x3F378:
F0 6C 10 21 08 40 00 28 16 D0 09 99 08 78 3E 28 12 D0 05 49 09 88 0C 20 41 43 04 48 40 18
01 78 A9 29 09 D0 05 E0 00 00 4C 3D 02 02 XX XX XX 08 00 00 (XX XX XX is location of your
move table )



I also have made some changes to Hidden Power so check its OP again.
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.3 Years


.FailScript: .word 0x082D9F1C


However, I can't manage to get "The Moved Failed" in my script. It just shows "XX Used Sucker Punch" and then nothing

(everything works fine, just that this textstring doesn't come up). I've tried to add Resultmessage and missmessage

after the callasm, but neither of that worked.


Do I need to add a printstring somewhere? Sorry if noobish question.
Actually jambo's callasm increments your script pointer by 5 regardless of whether you made change in the Script

Pointer, so you should subtract it by 5 i.e change 0x082D9F1C to 0x082D9F17 in the ASM then your message should appear.

Also updated the Script Pointer of the Second ASM of Acupressure to reflect this type of change in the OP
---------------------------------------------------------------------------------------------------
--
Now this post contains very important fixes to some of my move effects, and a few useful stuff also.



---------------------------------------------------------------------------------------------------
1. Emerald port for Battle String Loader (credits to Jambo51 for original one)
Spoiler:

Byte Changes
0x14E6C0: 01 49 08 47
0x14E6C8: XX+1 XX XX 08 (Pointer to routine)

.text
.align 2
.thumb
.thumb_func
.global battlestringloaderhack
main:
mov r0, #0xC2
lsl r0, r0, #0x1
cmp r0, r6
bne normalcode
ldr r0, ramlocation
ldr r7, [r0, #0x0]
cmp r7, #0x0
beq alternative
mov r0, #0xA
lsl r0, r0, #0x18
cmp r7, r0
bge alternative
mov r0, #0x8
lsl r0, r0, #0x18
cmp r7, r0
blt alternative
b continue
alternative: mov r6, #0xC
ldr r1, returntwo
bx r1
continue: ldr r0, returnone
bx r0
normalcode: ldr r1, otherramloc
mov r0, #0xFF
strb r0, [r1, #0x0]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align
ramlocation: .word 0x0202C4D0
returntwo: .word 0x0814E6CD
returnone: .word 0x0814E6D9
otherramloc: .word 0x02022E2C
0x202C4D0 is chosen as the free RAM space to set the position of required string (if there any flaw in this location,

then please notify with the reason), it is placed similar as 0x203C020 in Fire Red.

Use this offset in setword command to setup your battle string



---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
2. Incinerate (Destroys target's berry completely)
Instead of checking the index, the way to check whether an item is a berry or not is to check its pocket number (5 for

FR and 4 for Emerald) and there is an preexisting command that clears the item of banked pokemon (so no need for

encrypt-er decry-pt-er calls in the ASM).

First add this entry in commands.bsh in BSP
#command removeitem 0x6A 0x1 "Bank" 0x1
Fire Red:-
Spoiler:

ASM:
.text
.align 2
.thumb
.thumb_func
.global incinerate

main:
    push {lr}
    ldr r0, =0x02023D6C
    ldrb r0, [r0]
    ldr r1, =0x02023BE4
    mov r2, #0x58
    mul r2, r0
    add r1, r2
    ldrh r0, [r1, #0x2E]
    ldr r3, =0x083DB028
    add r3, #0x1A
    mov r2, #0x2C
    mul r2, r0
    add r3, r2
    ldrb r0, [r3, #0x0]
    cmp r0, #0x5
    beq exit
    
    ldr r1, =0x081D6947
    sub r1, r1, #0x5
    ldr r0, =0x02023D74
    str r1, [r0, #0x0]
    
exit:
    pop {r0}
    bx r0
Script:
#org @incinerate
jumpifsecondarystatus 0x0 0x1000000 0x81D6926
attackcanceler
accuracycheck 0x01D695E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
jumpifbyte 0x4 0x02023DCC 0x8 0x81D694E
callasm 0x08(offset to routine + 1)
setword 0x203c020 0x08DDDDDD
printstring 0x184
waitmessage 0x40
removeitem 0x0
goto 0x81D6947


Emerald:-
Spoiler:

ASM:
.text
.align 2
.thumb
.thumb_func
.global incinerate

main:
    push {lr}
    ldr r0, =0x0202420C
    ldrb r0, [r0]
    ldr r1, =0x02024084
    mov r2, #0x58
    mul r2, r0
    add r1, r2
    ldrh r0, [r1, #0x2E]
    ldr r3, =0x085839A0
    add r3, #0x1A
    mov r2, #0x2C
    mul r2, r0
    add r3, r2
    ldrb r0, [r3, #0x0]
    cmp r0, #0x4
    beq exit
    
    ldr r1, =0x082D8A47
    sub r1, r1, #0x5
    ldr r0, =0x02024214
    str r1, [r0, #0x0]
    
exit:
    pop {r0}
    bx r0
Script:
#org @incinerate
jumpifsecondarystatus 0x0 0x1000000 0x82D8A26
attackcanceler
accuracycheck 0x82D8A5E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
jumpifbyte 0x4 0x202427C 0x8 0x82D8A4E
callasm 0x08(offset to routine + 1)
setword 0x202C4D0 0x08DDDDDD
printstring 0x184
waitmessage 0x40
removeitem 0x0
goto 0x82D8A47


String at DDDDDD (Common to both):
FD 10 B3 E7 00 FD 16 FE EB D5 E7 00 D6 E9 E6 E2 E8 00 E9 E4 AB
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
3. Hi Jump Kick (Now it crashes due to type immunity also)
(Remove the Bold Lines in the Script if you don't have Magic Guard)

Fire Red:-
Spoiler:

ASM:
.align 2
.thumb
.thumb_func

main:
ldr r0, .userBank
ldrb r0, [r0, #0x0]
ldr r1, .battleStruct
mov r2, #0x58
mul r0, r2
add r4, r0, r1
ldrh r3, [r4, #0x2c]
lsr r3, #0x1
ldr r0, .damageValue
str r3, [r0, #0x0]
bx lr

.align
.damageValue:  .word 0x02023D50
.battleStruct:  .word 0x02023be4
.userBank: .word 0x02023D6B
Script:
#org @jumpkick
attackcanceler
accuracycheck @misscrash 0x0
attackstring
ppreduce
critcalc
cmd5
cmd6
cmd7
jumpifbyte 0x4 0x2023DCC 0x8 @immunitycrash
goto 0x81D6934

#org @immunitycrash
pause 0x40
resultmessage
waitmessage 0x40
jumpifability 0x1 MAGIC_GUARD 0x81D694E
printstring 0x60
waitmessage 0x40
bicbyte 0x2023DCC 0x8
call @crashdamage
orbyte 0x2023DCC 0x8
goto 0x81D694E

#org @misscrash
attackstring
ppreduce
pause 0x40
resultmessage
waitmessage 0x40
jumpifability 0x1 MAGIC_GUARD 0x81D694E
printstring 0x60
waitmessage 0x40
jumpifbyte 0x4 0x2023DCC 0x8 @micrash
bicbyte 0x2023DCC 0x1
call @crashdamage
orbyte 0x2023DCC 0x1
goto 0x81D694E

#org @micrash
bicbyte 0x2023DCC 0x9
call @crashdamage
orbyte 0x2023DCC 0x9
goto 0x81D694E

#org @crashdamage
orword 0x2023DD0 0x100
callasm 0x8(offset to routine + 1)
graphicalhpupdate 0x1
datahpupdate 0x1
faintpokemon 0x1 0x0 0x0
return


Emerald:-
Spoiler:

ASM:
.align 2
.thumb
.thumb_func

main:
ldr r0, userBank
ldrb r0, [r0, #0x0]
ldr r1, battleStruct
mov r2, #0x58
mul r0, r2
add r4, r0, r1
ldrh r3, [r4, #0x2c]
lsr r3, #0x1
ldr r0, damageValue
str r3, [r0, #0x0]
bx lr

.align
damageValue:  .word 0x020241F0
battleStruct:  .word 0x02024084
userBank: .word 0x0202420B
Script:
#dynamic 0xC00000
#freespacebyte 0x00

#org @jumpkick
attackcanceler
accuracycheck @misscrash 0x0
attackstring
ppreduce
critcalc
cmd5
cmd6
cmd7
jumpifbyte 0x4 0x202427C 0x8 @immunitycrash
goto 0x82D8A34

#org @immunitycrash
pause 0x40
resultmessage
waitmessage 0x40
jumpifability 0x1 MAGIC_GUARD 0x82D8A4E
printstring 0x60
waitmessage 0x40
bicbyte 0x202427C 0x8
call @crashdamage
orbyte 0x202427C 0x8
goto 0x82D8A4E

#org @misscrash
attackstring
ppreduce
pause 0x40
resultmessage
waitmessage 0x40
jumpifability 0x1 MAGIC_GUARD 0x82D8A4E
printstring 0x60
waitmessage 0x40
jumpifbyte 0x4 0x207427C 0x8 @micrash
bicbyte 0x202427C 0x1
call @crashdamage
orbyte 0x202427C 0x1
goto 0x82D8A4E

#org @micrash
bicbyte 0x202427C 0x9
call @crashdamage
orbyte 0x202427C 0x9
goto 0x82D8A4E

#org @crashdamage
orword 0x2024280 0x100
callasm 0x8(offset to routine + 1)
graphicalhpupdate 0x1
datahpupdate 0x1
faintpokemon 0x1 0x0 0x0
return


---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
4. Cure Primary Status Command
Some points about it:-
--> It is custom command created by me to cure any primary status of banked Pokemon.

--> It is actually a mod of the cureifburnparalysedpoisoned to command to support curing of any status and adds the

functionality of selecting banks to too.

--> It provides an efficient way to cure any primary status of a Pokemon. My fixed Wake-Up Slap, Scald and Psycho Shift

use this now (I might have missed some flags in my previous methods for simulating these but this command addresses all

those issues).

--> It can also be handy for simulating Bug Bite and Healer ability.

--> It branches to an address mentioned in the command if the banked Pokemon does suffer from a primary status (added

for safety)

STEPS To Add This:

1. Insert this ASM somewhere

Fire Red:-
Spoiler:

.text
.align 2
.thumb
.thumb_func

push {r4-r6, lr}
add sp, #-0x4
ldr r3, scriptPointer
ldr r0, [r3, #0x0]
ldrb r0, [r0, #0x1]
bl bankGetter
lsl r3, r0, #0x18
lsr r3, r3, #0x18
ldr r1, =0x02023BE4
mov r6, #0x58
mul r0, r6
add r5, r1, #0x0
add r5, #0x4C
add r2, r0, r5
ldr r0, [r2, #0x0]
mov r1, #0xFF
and r0, r1
cmp r0, #0x0
beq fail
mov r0, #0x0
str r0, [r2, #0x0]
ldr r1, scriptPointer
ldr r0, [r1, #0x0]
add r0, #0x6
str r0, [r1, #0x0]
ldr r4, =0x02023BC4
mov r0, r3
strb r0, [r4, #0x0]
ldrb r0, [r4, #0x0]
mul r0, r6
add r0, r0, r5
str r0, [sp, #0x0]
mov r0, #0x0
mov r1, #0x28
mov r2, #0x0
mov r3, #0x4
bl function1
ldrb r0, [r4, #0x0]
bl function2
b exit

fail:
ldr r3, scriptPointer
ldr r2, [r3, #0x0]
ldrb r1, [r2, #0x2]
ldrb r0, [r2, #0x3]
lsl r0, r0, #0x08
orr r1, r0
ldrb r0, [r2, #0x4]
lsl r0, r0, #0x10
orr r1, r0
ldrb r0, [r2, #0x5]
lsl r0, r0, #0x18
orr r1, r0
str r1, [r3, #0x0]

exit:
add sp, #0x4
pop {r4-r6}
pop {r0}
bx r0

bankGetter:
ldr r1, =0x08016E25
bx r1

function1:
ldr r6, =0x0800DFF1
bx r6

function2:
ldr r1, =0x08017249
bx r1

.align 2
scriptPointer: .word 0x2023D74


Emerald:-
Spoiler:

.text
.align 2
.thumb
.thumb_func

push {r4-r6, lr}
add sp, #-0x4
ldr r3, scriptPointer
ldr r0, [r3, #0x0]
ldrb r0, [r0, #0x1]
bl bankGetter
lsl r3, r0, #0x18
lsr r3, r3, #0x18
ldr r1, =0x02024084
mov r6, #0x58
mul r0, r6
add r5, r1, #0x0
add r5, #0x4C
add r2, r0, r5
ldr r0, [r2, #0x0]
mov r1, #0xFF
and r0, r1
cmp r0, #0x0
beq fail
mov r0, #0x0
str r0, [r2, #0x0]
ldr r1, scriptPointer
ldr r0, [r1, #0x0]
add r0, #0x6
str r0, [r1, #0x0]
ldr r4, =0x02024064
mov r0, r3
strb r0, [r4, #0x0]
ldrb r0, [r4, #0x0]
mul r0, r6
add r0, r0, r5
str r0, [sp, #0x0]
mov r0, #0x0
mov r1, #0x28
mov r2, #0x0
mov r3, #0x4
bl function1
ldrb r0, [r4, #0x0]
bl function2
b exit

fail:
ldr r3, scriptPointer
ldr r2, [r3, #0x0]
ldrb r1, [r2, #0x2]
ldrb r0, [r2, #0x3]
lsl r0, r0, #0x08
orr r1, r0
ldrb r0, [r2, #0x4]
lsl r0, r0, #0x10
orr r1, r0
ldrb r0, [r2, #0x5]
lsl r0, r0, #0x18
orr r1, r0
str r1, [r3, #0x0]

exit:
add sp, #0x4
pop {r4-r6}
pop {r0}
bx r0

bankGetter:
ldr r1, =0x0803F3CD
bx r1

function1:
ldr r6, =0x08033901
bx r6

function2:
ldr r1, =0x0803F801
bx r1

.align 2
scriptPointer: .word 0x2024214


2. Add another entry to your repointed command table containing the offset to this ASM + 1.
3. Add this entry in commands.bsh in BSP for our new command
#command cureprimarystatus 0xF9 0x2 "Bank" 0x1 "Fail Address" 0x4
Then you are set to use this.

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
I recommend to use the new scripts for Wake-Up Slap and Scald with this new command.
---------------------------------------------------------------------------------------------------
5. Wake-Up Slap (With the custom command)

Fire Red:-
Spoiler:

#org @sleepchecker
jumpifsecondarystatus 0x0 0x1000000 0x81D6926
jumpifstatus 0x0 0x7 @wakupslap
goto 0x81D6926

#org @wakupslap
setbyte damagemultiplier 0x2
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
jumpifbyte 0x4 0x02023DCC 0x8 0x81D694E
faintpokemon 0x0 0x0 0x0
jumpiffainted 0x0 0x81D694E
cureprimarystatus 0x0 0x81D694E
setword 0x203C020 0x08DDDDDD
printstring 0x184
waitmessage 0x40
cmd98 0x0
goto 0x81D694E


Emerald:-
Spoiler:

#org @sleepchecker
jumpifsecondarystatus 0x0 0x1000000 0x82D8A26
jumpifstatus 0x0 0x7 @wakupslap
goto 0x82D8A26

#org @wakupslap
setbyte damagemultiplier 0x2
attackcanceler
accuracycheck 0x82D8A5E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
jumpifbyte 0x4 0x202427C 0x8 0x82D8A4E
faintpokemon 0x0 0x0 0x0
jumpiffainted 0x0 0x82D8A4E
cureprimarystatus 0x0 0x82D8A4E
setword 0x202C4D0 0x08DDDDDD
printstring 0x184
waitmessage 0x40
cmd98 0x0
goto 0x82D8A4E


String at DDDDDD:
FD 10 00 EB E3 DF D9 00 E9 E4 AB FF
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
6. Psycho Shift (Type Immunity check in Paralysis removal)

Fire Red:-
Spoiler:

#include std.bsh

#org @psycoshift
attackcanceler
attackstring
ppreduce
jumpifsecondarystatus BANK_TARGET 0x1000000 0x81D7DF2
jumpifstatus BANK_USER 0x10 @burnandcure
jumpifstatus BANK_USER 0x8 @poisonandcure
jumpifstatus BANK_USER 0x80 @toxicandcure
jumpifstatus BANK_USER 0x40 @paralijeandcure
jumpifstatus BANK_USER 0x7 @sleepandcure
goto 0x81D7DF2

#org @burnandcure
jumpifstatus 0x0 0x10 0x81D7F91
jumpiftype 0x0 0xA 0x81D7E04
jumpifability 0x0 0x29 0x81D7F77
jumpifstatus 0x0 0xFF 0x81D7DF2
accuracycheck 0x81D7DF2 0x0
jumpifhalverset 0x0 0x20 0x81D8B39
attackanimation
waitanimation
setbyte 0x2023E85 0x3
seteffecttarget
cureifburnedparalysedorpoisoned 0x81D7DF2
cmd98 0x1
goto 0x81D694E

#org @poisonandcure
jumpifability 0x0 0x11 0x81D6E4F
jumpifstatus 0x0 0x8 0x81D6E41
jumpifstatus 0x0 0x80 0x81D6E41
jumpiftype 0x0 0x3 0x81D7E04
jumpiftype 0x0 0x8 0x81D7E04
jumpifstatus 0x0 0xFF 0x81D7DF2
accuracycheck 0x81D7DF2 0x0
jumpifhalverset 0x0 0x20 0x81D8B39
attackanimation
waitanimation
setbyte 0x2023E85 0x2
seteffecttarget
cureifburnedparalysedorpoisoned 0x81D7DF2
cmd98 0x1
goto 0x81D694E

#org @paralijeandcure
jumpifability 0x0 0x7 0x81D7245
jumpiftype 0x0 0xD 0x81D7E04
jumpifstatus 0x0 0x40 0x81D7237
jumpifstatus 0x0 0xFF 0x81D7DF2
accuracycheck 0x81D7DF2 0x0
jumpifhalverset 0x0 0x20 0x81D8B39
attackanimation
waitanimation
setbyte 0x2023E85 0x5
seteffecttarget
cureifburnedparalysedorpoisoned 0x81D7DF2
cmd98 0x1
goto 0x81D694E

#org @toxicandcure
jumpifability 0x0 0x11 0x81D6E4F
jumpifstatus 0x0 0x8 0x81D6E41
jumpifstatus 0x0 0x80 0x81D6E41
jumpifstatus 0x0 0xFF 0x81D7DF2
jumpiftype 0x0 0x3 0x81D7E04
jumpiftype 0x0 0x8 0x81D7E04
accuracycheck 0x81D7DF2 0x0
jumpifhalverset 0x0 0x20 0x81D8B39
attackanimation
waitanimation
setbyte 0x2023E85 0x6
seteffecttarget
cureifburnedparalysedorpoisoned 0x81D7DF2
cmd98 0x1
goto 0x81D694E

#org @sleepandcure
jumpifstatus 0x0 0x7 0x81D69B0
jumpifcannotsleep 0x81D69CC
jumpifstatus 0x0 0xFF 0x81D7DF2
accuracycheck 0x81D7DF2 0x0
jumpifhalverset 0x0 0x20 0x81D8B39
attackanimation
waitanimation
setbyte 0x2023E85 0x1
seteffecttarget
cureprimarystatus 0x1 0x81D7DF2
cmd98 0x1
goto 0x81D694E


Emerald:-
Spoiler:

#include std.bsh

#org @psycoshift
attackcanceler
attackstring
ppreduce
jumpifsecondarystatus BANK_TARGET 0x1000000 0x82D9F1C
jumpifstatus BANK_USER 0x10 @burnandcure
jumpifstatus BANK_USER 0x8 @poisonandcure
jumpifstatus BANK_USER 0x80 @toxicandcure
jumpifstatus BANK_USER 0x40 @paralijeandcure
jumpifstatus BANK_USER 0x7 @sleepandcure
goto 0x82D9F1C

#org @burnandcure
jumpifstatus 0x0 0x10 0x82DA0BB
jumpiftype 0x0 0xA 0x82D9F2E
jumpifability 0x0 0x29 0x82DA0A1	
jumpifstatus 0x0 0xFF 0x82D9F1C
accuracycheck 0x82D9F1C 0x0
jumpifhalverset 0x0 0x20 0x82DAD01
attackanimation
waitanimation
setbyte 0x2024335 0x3
seteffecttarget
cureifburnedparalysedorpoisoned 0x82D9F1C
cmd98 0x1
goto 0x82D8A4E

#org @poisonandcure
jumpifability 0x0 0x11 0x82D8F63
jumpifstatus 0x0 0x8 0x82D8F52

jumpifstatus 0x0 0x80 0x82D8F52

jumpiftype 0x0 0x3 0x82D9F2E

jumpiftype 0x0 0x8 0x82D9F2E

jumpifstatus 0x0 0xFF 0x82D9F1C
accuracycheck 0x82D9F1C 0x0
jumpifhalverset 0x0 0x20 0x82DAD01
attackanimation
waitanimation
setbyte 0x2024335 0x2
seteffecttarget
cureifburnedparalysedorpoisoned 0x82D9F1C
cmd98 0x1
goto 0x82D8A4E

#org @paralijeandcure
jumpifability 0x0 0x7 0x82D9362
jumpiftype 0x0 0xD 0x82D9F2E
jumpifstatus 0x0 0x40 0x82D9351

jumpifstatus 0x0 0xFF 0x82D9F1C

accuracycheck 0x82D9F1C 0x0

jumpifhalverset 0x0 0x20 0x82DAD01
attackanimation
waitanimation
setbyte 0x2024335 0x5
seteffecttarget
cureifburnedparalysedorpoisoned 0x82D9F1C
cmd98 0x1
goto 0x82D8A4E

#org @toxicandcure
jumpifability 0x0 0x11 0x82D8F63

jumpifstatus 0x0 0x8 0x82D8F52

jumpifstatus 0x0 0x80 0x82D8F52

jumpifstatus 0x0 0xFF 0x82D9F1C

jumpiftype 0x0 0x3 0x82D9F2E

jumpiftype 0x0 0x8 0x82D9F2E

accuracycheck 0x82D9F1C 0x0

jumpifhalverset 0x0 0x20 0x82DAD01
attackanimation
waitanimation
setbyte 0x2024335 0x6
seteffecttarget
cureifburnedparalysedorpoisoned 0x82D9F1C
cmd98 0x1
goto 0x82D8A4E

#org @sleepandcure
jumpifstatus 0x0 0x7 0x82D8AB0

jumpifcannotsleep 0x82D8ACF

jumpifstatus 0x0 0xFF 0x82D9F1C

accuracycheck 0x82D9F1C 0x0

jumpifhalverset 0x0 0x20 0x82DAD01
attackanimation
waitanimation
setbyte 0x2024335 0x1
seteffecttarget
cureprimarystatus 0x1 0x82D9F1C
cmd98 0x1
goto 0x82D8A4E


---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
7. Scald (Thaw user, thaw foe & chance to burn (don't burn if foe is thawed by Scald) & Hook with effect 125 to thaw

user)

Fire Red:-
Spoiler:

#org @scald
jumpifsecondarystatus 0x0 0x1000000 0x81D6926
setbyte 0x2023E85 0x3
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
jumpifbyte 0x4 0x02023DCC 0x9 0x81D694E
seteffectwithchancetarget
faintpokemon 0x0 0x0 0x0
jumpiffainted 0x0 0x81D694E
jumpifstatus 0x0 0x20 @thawfoe
goto 0x81D694E

#org @thawfoe
cureprimarystatus 0x0 0x81D694E
setword 0x203C020 0x83FBD63
printstring 0x184
waitmessage 0x40
cmd98 0x0
goto 0x81D694E


Emerald:-
Spoiler:

#org @scald
jumpifsecondarystatus 0x0 0x1000000 0x82D8A26
setbyte 0x2024335 0x3
attackcanceler
accuracycheck 0x82D8A5E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
jumpifbyte 0x4 0x202427C 0x9 0x82D8A4E
seteffectwithchancetarget
faintpokemon 0x0 0x0 0x0
jumpiffainted 0x0 0x82D8A4E
jumpifstatus 0x0 0x20 @thawfoe
goto 0x82D8A4E

#org @thawfoe
cureprimarystatus 0x0 0x82D8A4E
setword 0x202C4D0 0x85C9F43
printstring 0x184
waitmessage 0x40
cmd98 0x0
goto 0x82D8A4E


(OPTIONAL) Updating of defrost message to thaw message

Fire Red:-
At x3FB6D6 and x3FB6E8 place E8 DC D5 EB D9 D8 00 E3 E9 E8 AB 00 00 00 FF

Emerald:-
At x5C9F46 and x5C9F58 place E8 DC D5 EB D9 D8 00 E3 E9 E8 AB 00 00 00 FF
Age 23
Male
Seen July 6th, 2019
Posted October 26th, 2016
253 posts
6.6 Years
---------------------------------------------------------------------------------------------------
1. Emerald port for Battle String Loader (credits to Jambo51 for original one)
Spoiler:

Byte Changes
0x14E6C0: 01 49 08 47
0x14E6C8: XX+1 XX XX 08 (Pointer to routine)

.text
.align 2
.thumb
.thumb_func
.global battlestringloaderhack
main:
mov r0, #0xC2
lsl r0, r0, #0x1
cmp r0, r6
bne normalcode
ldr r0, ramlocation
ldr r7, [r0, #0x0]
cmp r7, #0x0
beq alternative
mov r0, #0xA
lsl r0, r0, #0x18
cmp r7, r0
bge alternative
mov r0, #0x8
lsl r0, r0, #0x18
cmp r7, r0
blt alternative
b continue
alternative: mov r6, #0xC
ldr r1, returntwo
bx r1
continue: ldr r0, returnone
bx r0
normalcode: ldr r1, otherramloc
mov r0, #0xFF
strb r0, [r1, #0x0]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align
ramlocation: .word 0x0202C4D0
returntwo: .word 0x0814E6CD
returnone: .word 0x0814E6D9
otherramloc: .word 0x02022E2C
0x202C4D0 is chosen as the free RAM space to set the position of required string (if there any flaw in this location,

then please notify with the reason), it is placed similar as 0x203C020 in Fire Red.

Use this offset in setword command to setup your battle string

Don't really want to burst your bubble, but I actually ported that to EM a while ago :p

Nice work with the battle scripts though!

Xencleamas

Suddenly lurking in the shadows...

Male
Asgard
Seen January 21st, 2019
Posted August 7th, 2018
460 posts
5.8 Years
Emerald Shadow Claw animation:
Spoiler:
14 01 17 00 B7 27 00 37 27 00 E0 27 0A 01 0C 0C 08 02 28 FE 57 08 02 02 06 00 04 00 04 04 03 D1 52 0D 08 02 05 01 00 02 00 00 00 12 00 01 00 02 38 71 59 08 82 03 F6 FF F6 FF 00 00 02 38 71 59 08 82 03 F6 FF 0A 00 00 00 19 88 00 3F 04 0C 02 38 71 59 08 82 03 0A 00 F6 FF 01 00 02 38 71 59 08 82 03 0A 00 0A 00 01 00 19 88 00 3F 05 0D 0B 01 0E DD 7C 2D 08 08

Simply combined Crush Claw and shadow background. Hope you like this simplicity but it suits well.

Xencleamas Untitled Pokémon Fan Game (Coming Soon!) Untitled Region (Coming Soon!)
Male
Forina
Seen 2 Days Ago
Posted July 13th, 2019
110 posts
12.4 Years
Here are Worry Seed and Fairy Wind animation for Emerald which I'm going to share, I translated them from MrDollSteak's Rombase:

Worry Seed:
Spoiler:
00 16 27 00 E1 27 00 67 27 19 A9 00 C0 02 BC 22 59 08 82 06 0F 00 00 00 00 00 18 00 23 00 E0 FF 04 08 19 A9 00 C0 02 BC 22 59 08 82 06 0F 00 00 00 F0 FF 18 00 23 00 D8 FF 04 08 19 A9 00 C0 02 BC 22 59 08 82 06 0F 00 00 00 10 00 18 00 23 00 DB FF 04 0C 1C A7 00 3F 0A 08 05 02 8C 36 59 08 82 03 01 00 EC FF E4 FF 19 C2 00 3F 05 04 0C 02 8C 36 59 08 82 03 01 00 14 00 E4 FF 19 C2 00 3F 08 08


Fairy Wind:
Spoiler:
02 74 72 59 08 02 05 01 00 01 00 00 00 08 00 7D 6E 05 00 02 28 00 97 27 0A 03 0C 0C 08 19 C7 00 C0 02 ZZ YY XX 08 83 07 14 00 F6 FF 14 00 00 00 16 00 14 00 01 00 04 05 19 C7 00 C0 02 ZZ YY XX 08 83 07 14 00 F6 FF 14 00 05 00 16 00 EE FF 01 00 04 05 19 C7 00 C0 02 ZZ YY XX 08 83 07 14 00 F6 FF 14 00 F6 FF 16 00 0F 00 01 00 03 D1 52 0D 08 02 05 01 00 02 00 00 00 12 00 01 00 03 D1 52 0D 08 02 05 03 00 02 00 00 00 12 00 01 00 04 05 19 C7 00 C0 02 ZZ YY XX 08 83 07 14 00 F6 FF 14 00 00 00 16 00 EC FF 01 00 04 05 19 C7 00 C0 02 ZZ YY XX 08 83 07 14 00 F6 FF 14 00 00 00 16 00 0C 00 01 00 04 05 05 0B 03 0D 02 74 72 59 08 02 05 01 00 01 00 08 00 00 00 7D 6E 05 0B 03 0D 08 08

At Offset XX YY ZZ:
02 28 02 28 74 49 52 08 9C C6 2E 08 00 00 00 00 00 24 59 08 F5 F0 0F 08
Male
Paris
Seen March 13th, 2018
Posted August 12th, 2017
40 posts
5.5 Years
Hello, I ported some effects you made for Fire Red to Emerald.

Blizzard Updated :
Spoiler:

#dynamic 0xF00000
#freespacebyte 0xFF

#org @blizzard
setbyte 0x2024335 0x4
jumpifhalfword 0x0 weather 0x80 @notmiss
goto 0x82D8A00

#org @notmiss
attackcanceler
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
seteffectwithchancetarget
faintpokemon 0x0 0x0 0x0
setbyte 0x2024488 0x0
cmd49 0x0 0x0
end


Charge Updated :
Spoiler:

#dynamic 0xF00000
#freespacebyte 0xFF

#org @charge
attackcanceler
attackstring
ppreduce
setcharge
attackanimation
waitanimation
printstring 0xA5
waitmessage 0x40
jumpifstat 0x1 0x0 0x5 0xC 0x82D8A4E
setbyte 0x202448E 0x15
statbuffchange 0x1 true 0x82D8A4E
jumpifbyte 0x0 0x2024337 0x2 0x82D8A4E
playstatchangeanimation 0x1 0x30 0x0
printfromtable 0x85CC89
waitmessage 0x40
goto 0x82D8A4E


Freeze Shock Ice Burn and Sky Attack :
Spoiler:

#dynamic 0xF00000
#freespacebyte 0xFF

#org @moveselect
jumpifhalfword 0x0 0x20241EA 0xXX @freejshock //replace XX with ID of freeze shock
jumpifhalfword 0x0 0x20241EA 0xYY @iceburn //replace YY with ID of ice burn
goto @skyattack


#org @skyattack
jumpifsecondarystatus 0x1 0x1000 0x82D9040
jumpifword 0x4 0x2024280 0x200 0x82D9040
setbyte 0x2024483 0x3
call @firstturnsk
goto 0x82D8A4E

#org @firstturnsk
attackcanceler
attackstring
waitmessage 0x40
ppreduce
attackanimation
waitanimation
orword 0x2024280 0x8000000
setbyte 0x2024335 0x4C
seteffecttarget
copyarray 0x2024337 0x2024483 0x1
setword 0x202C4D0 0x8CCCCCC
printstring 0x184
waitmessage 0x40
return


#org @freejshock
jumpifsecondarystatus 0x1 0x1000 @executefs
jumpifword 0x4 0x2024280 0x200 @executefs
setbyte 0x2024483 0x3
call @firstturnfs
goto 0x82D8A4E

#org @executefs
attackcanceler
setbyte 0x2024335 0xC
setbyte 0x202448C 0x1
clearstatus 0x1
orword 0x2024280 0x800
jumpiftype 0x0 0xD 0x82D8A4B
setbyte 0x2024335 0x5
goto 0x82D8A27

#org @firstturnfs
attackcanceler
attackstring
waitmessage 0x40
ppreduce
attackanimation
waitanimation
orword 0x2024280 0x8000000
setbyte 0x2024335 0x4C
seteffecttarget
copyarray 0x2024337 0x2024483 0x1
setword 0x202C4D0 0x8BBBBBB
printstring 0x184
waitmessage 0x40
return


#org @iceburn
jumpifsecondarystatus 0x1 0x1000 @executeib
jumpifword 0x4 0x2024280 0x200 @executeib
setbyte 0x2024483 0x3
call @firstturnib
goto 0x82D8A4E

#org @executeib
attackcanceler
setbyte 0x2024335 0xC
setbyte 0x202448C 0x1
clearstatus 0x1
orword 0x2024280 0x800
jumpiftype 0x0 0xA 0x82D8A4B
setbyte 0x2024335 0x3
goto 0x82D8A27

#org @firstturnib
attackcanceler
attackstring
waitmessage 0x40
ppreduce
attackanimation
waitanimation
orword 0x2024280 0x8000000
setbyte 0x2024335 0x4C
seteffecttarget
copyarray 0x2024337 0x2024483 0x1
setword 0x202C4D0 0x8AAAAAA
printstring 0x184
waitmessage 0x40
return

//Ice Burn AAAAAA -> FD 0F B4 E7 00 D6 D9 D7 D5 E1 D9 00 D7 E0 E3 D5 DF D9 D8 FE DD E2 00 D5 00 DA E6 D9 D9 EE DD E2 DB 00 D5 DD E6 AB
//Freeze Shock BBBBBB -> FD 0F B4 E7 00 D6 D9 D7 D5 E1 D9 00 D7 E0 E3 D5 DF D9 D8 FE DD E2 00 D5 00 DA E6 D9 D9 EE DD E2 DB 00 E0 DD DB DC E8 AB
//Sky Attack CCCCCC -> FD 0F B4 E7 00 D6 D9 D7 D5 E1 D9 00 D7 E0 E3 D5 DF D9 D8 FE DD E2 00 D5 00 DC D5 E6 E7 DC 00 E0 DD DB DC E8 AB
If you have a problem with this one, compile each sub-script with one FF octet between them.


Geomancy :
Spoiler:

#dynamic 0xF00000
#freespacebyte 0xFF

#org @geomancy
jumpifsecondarystatus 0x1 0x1000 @execute
jumpifword 0x4 0x2024280 0x200 @execute
setbyte 0x2024483 0x3
call @firstturn
goto 0x82D8A4E

#org @execute
attackcanceler
setbyte 0x2024335 0xC
setbyte 0x202448C 0x1
clearstatus 0x1
orword 0x2024280 0x800
goto @boost

#org @boost
attackstring
ppreduce
jumpifstat 0x1 0x3 0x4 0xC @spattack
jumpifstat 0x1 0x3 0x5 0xC @spattack
jumpifstat 0x1 0x0 0x3 0xC 0x82DA71D
goto @spattack

#org @spattack
attackanimation
waitanimation
setbyte 0x202448F 0x0
playstatchangeanimation 0x1 0x30 0x0
setbyte 0x202448E 0x24
statbuffchange 0x1 true @spdef
jumpifbyte 0x0 0x2024337 0x2 @spdef
printfromtable 0x85CC89C
waitmessage 0x40
goto @spdef

#org @spdef
setbyte 0x202448E 0x25
statbuffchange 0x1 true @speed
jumpifbyte 0x0 0x2024337 0x2 @speed
printfromtable 0x85CC89C
waitmessage 0x40
goto @speed

#org @speed
setbyte 0x202448E 0x23
statbuffchange 0x1 true 0x82D8A4E
jumpifbyte 0x0 0x2024337 0x2 0x82D8A4E
printfromtable 0x85CC89C
waitmessage 0x40
goto 0x82D8A4E

#org @firstturn
attackcanceler
attackstring
waitmessage 0x40
ppreduce
attackanimation
waitanimation
orword 0x2024280 0x8000000
setbyte 0x2024335 0x4C
seteffecttarget
copyarray 0x2024337 0x2024483 0x1
printstring 0xA5
waitmessage 0x40
return


Hex :
Spoiler:

#dynamic 0xF00000
#freespacebyte 0xFF

#org @hex
jumpifstatus 0x0 0x10 @doubledamage
jumpifstatus 0x0 0x8 @doubledamage
jumpifstatus 0x0 0x80 @doubledamage
jumpifstatus 0x0 0x40 @doubledamage
jumpifstatus 0x0 0x7 @doubledamage
goto 0x82D8A00

#org @doubledamage
setbyte damagemultiplier 0x2
goto 0x82D8A00


Venoshock :
Spoiler:

#dynamic 0xF00000
#freespacebyte 0xFF

#org @hex
jumpifstatus 0x0 0x8 @doubledamage
goto 0x82D8A00

#org @doubledamage
setbyte damagemultiplier 0x2
goto 0x82D8A00


Knock Off Updated :
Spoiler:

#dynamic 0xF00000
#freespacebyte 0xFF

#org @start
jumpifbyte 0x0 0x0202420C 0x0 @slot1
jumpifbyte 0x0 0x0202420C 0x1 @slot2
jumpifbyte 0x0 0x0202420C 0x2 @slot3
jumpifbyte 0x0 0x0202420C 0x3 @slot4
goto @doubledamage

#org @slot1
jumpifhalfword 0x1 0x020240C2 0x0 @tripledamage
goto @doubledamage

#org @slot2
jumpifhalfword 0x1 0x0202411A 0x0 @tripledamage
goto @doubledamage

#org @slot3
jumpifhalfword 0x1 0x02024172 0x0 @tripledamage
goto @doubledamage

#org @slot4
jumpifhalfword 0x1 0x020241CA 0x0 @tripledamage
goto @doubledamage

#org @tripledamage
setbyte damagemultiplier 0x3
goto 0x82DA390

#org @doubledamage
setbyte damagemultiplier 0x2
goto 0x82D8A00


Toxic Updated :
Spoiler:

#dynamic 0xF00000
#freespacebyte 0xFF

#org @Start
jumpiftype 0x1 0x3 @PerfectAcc
goto 0x82D8EF1

#org @PerfectAcc
attackcanceler
attackstring
ppreduce
accuracycheck 0x82D9F1C 0xFFFF 
jumpifability 0x0 0x11 0x82D8F63
jumpifsecondarystatus 0x0 0x1000000 0x82D9F1C
jumpifstatus 0x0 0x8 0x82D8F52
jumpifstatus 0x0 0x80 0x82D8F52
jumpifstatus 0x0 0xFF 0x82D9F1C
jumpiftype 0x0 0x3 0x82D9F2E
jumpiftype 0x0 0x8 0x82D9F2E
jumpifhalverset 0x0 0x20 0x82DAD01
attackanimation
waitanimation
setbyte 0x2024335 0x6
seteffecttarget
resultmessage
waitmessage 0x40
goto 0x82D8A4E


I also made one effect by myself. (For Emerald too).

U-Turn :
Spoiler:

#dynamic 0xF00000

#org @start
attackcanceler
accuracycheck 0x82D8A5E 0x0
attackstring
ppreduce
jumpifword 0x4 0x2022FEC 0x40000 0x82D9F1C
jumpifcannotswitch 0x81 0x82D9F1C
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
faintpokemon 0x0 0x0 0x0
openpartyscreen 0x1 0x82D9F1C
cmde2 0x1
waitstate
cmd51 0x1 0x2
cmd58 0x1
switch1 0x1
switch2 0x1
cmd73 0x1
printstring 0x3
switch3 0x1 0x1
waitstate
cmd52 0x1
goto 0x82D8A4E


PS : I wanted to created an effect like Judgment, but I don't know if there is a function to set the attack's type. And I don't remember the function to check the held object. Also, is it possible to change the ratio of drained HP in the drain effect, in order to make Oblivion Wing ? Thanks.
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.3 Years

PS : I wanted to created an effect like Judgment, but I don't know if there is a function to set the attack's type. And I don't remember the function to check the held object. Also, is it possible to change the ratio of drained HP in the drain effect, in order to make Oblivion Wing ? Thanks.
You'll need ASM for all of these things since there are no dedicated commands for these. You can use Jambo's callasm command to put custom ASM in a battle script.
Advertiser Content