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