Resource [EM][FR] Pokemon Overworld Form(e) change.

Started by Chacha Dinosaur January 14th, 2017 11:43 AM
  • 13857 views
  • 35 replies
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.9 Years
Pokemon Overworld Form(e) Change Project

The Battle Engine Upgrade code only handles the form(e) changes that happen in Battle.
So, here is a separate project made by me in C and python which contains the code for different types of form(e) changes that not happen in the Battle but the Overworld.

So why there is an another form(e) change resource thread when one already exists?
1. Some of the routines here are specially coded to be used in conjunction with the Battle Engine Upgrade. The existing form(e) change routines in PC might not work without modifying them.
2. It also provides the complex Rotom form change special move handling with mechanism to automatically generate scripts that are hardwired to the Rotom form handling routines.
3. C is better than ASM.

What is Implemented?
Spoiler:

-Arceus/Silvally Formes (Handling for form(e) changes in box left)
-Giratina Formes (Handling for form(e) changes in box left)
-Genesect Formes (Handling for form(e) changes in box left)
-Rotom Forms
-Deoxys Formes
-Shaymin Formes
-Genie Formes
-Kyurem Formes
-Hoopa Formes


What is Left?
Spoiler:

-Keldeo Forme Change (reversion)
-Handling for Hold Item formes changes in the PC
-2 more Shaymin revert scenarios (Low priority)


Source Code:-

Installation instructions:-
Spoiler:

- Download devkitpro. Follow the instructions.
(Note: you can only install devkitARM)

- Download the latest version of python(3.5).
After downloading and before proceeding to install make sure that the 'add to path' checkbox is ticked, otherwise you'll have to add the python path in the environment variables manually.

- Download the master folder from this github page
(click 'Clone or Download', then 'Download Zip')

- Get your ROM, rename it BPEE0.gba and place it the main(master) folder.

- To decide the offsets where you want to insert the code:

* in the 'insert.py' file in the folder 'scripts' change default=0xF00000 to the location you want to insert the Upgrade data (let it be X)

* in the 'linker.ld' file change 'ORIGIN = 0x08F00000' to X+0x8000000 (for e.g if default=0x1A10000 then ORIGIN = 0x9a10000)

- Run the cmd.exe in the main folder.
You can do this by typing 'cmd' and hitting enter in the url address or selecting 'run command prompt from here' from right clciking on empty space while holding the shift key

- In command prompt window, type 'python scripts//build.py', press Enter and then 'python scripts//insert.py' (here we output a text file containing a list of all the offsets), press Enter.
A new gba file will appear named as test.gba and an offsets.ini file.
That is your resultant file.



Setting up different form(e)s:-
Spoiler:

Giratina:
Spoiler:
1. In config.h, update the index of POKE_GIRATINA and POKE_GIRATINA_O
2. Set the hold item effect of the item to be used as Griseous Orb to 0x49 (73)


Arceus/Silvally:
Spoiler:
1. In config.h, update the index of POKE_ARCEUS and POKE_ARCEUS_FIGHTING.
You don't need to update the rest of formes if all the formes are placed in consecutive slots and are
in the same order defined in the enum. Otherwise, set them the same way as done for ARCUES_FIGHTING
(add an =value to the corresponding entry). Same goes for Silvally
2. Set the ability of all the formes as MULTITYPE. RKS System in case of Silvally
3. For the plates, set the hold item effect as 0x90 (145). Item effect quality as the type boost factor.
And the extra field as the type index to represent the plate type. The hold item effect for Memories are 0x91 (146).


Genesect:
Spoiler:
1. In config.h, update the index of POKE_GENESECT and its formes in the similar way as done for Arcues.
2. For the drives, the hold item effect is 0x8C (140). The extra field will decide the Genesect form. 1 for Douse, 2 for Burn, 3 for Chill and 4 for Shock.


Rotom:
Spoiler:
1. In config.h, update the index of POKE_ROTOM and its formes in the same way as done for Arcues.
2. Prepare a custom mulitichoice box for Rotom formes exactly same as ORAS. You will need to expand multichoice boxes to add a custom one.
3. Then update the multichoice index in the 'config.s' file.
4. Open the offsets.ini file and note the offset of rotom_main script and attach it as a signpost script.


Deoxys:
Spoiler:
1. In config.h, update the index of deoxys formes.
2. Open the offsets.ini file and note the offset of deoxys_main script and attach it as a signpost script


Shaymin, Genie Forms, Hoopa, Kyurem:
Spoiler:

1. In config.h, update the index of all the respective forms.
2. Open the offsets.ini file and note the offsets of item_forme_change_handler_gracidea,
item_forme_change_handler_reveal_glass, item_forme_change_handler_dna_splicers & item_forme_change_handler_prison_bottle
for Shaymin, Genies, Kyurem & Hoopa respectively
3. Open an item editor, select the item to be used as Gracidea and set the Field Usage Pointer to the offset corresponding to item_forme_change_handler_gracidea[B}+1[/B].
4. Select type of the item to '2. use of select'.
5. Repeat steps 3-4 for Reveal Glass, DNA Splicers and Prison Bottle Respectively.
6. Importantly for kyurem fusion, install a saveblock hack, then in src/config.h, set the value of SAVE_FUSEE to a RAM area consisting of 80 free bytes of saveblock space.
(saveblock hack comes bundled with the Dynamic Pokemon Expansion for EM:- https://www.pokecommunity.com/showthread.php?t=380296
for FR use PGE for Pokemon Expansion or JPAN's saveblock hack). If you don't want to use kyurem formes set SAVE_FUSEE to 0x0.

Note: Shaymin and Hoopa revert when being withdrawn from PC. The Genie formes are interchangable with the item itself.


Keldeo:
Spoiler:

1. Just modify the keldeo form(e) indices in config.h
2. Open 'offsets.ini' file to get the offset of keldeo_main and assign it to a NPC.




BUGS/Oddities:-
Spoiler:

The pokemon icon sprites don't update immediately after giving or taking the item for form(e) change. They only update after changing the screens.


Major Changes:-
Spoiler:

Port to Fire Red
Scripts for Rotom and Deoxys now build with the source. Simplifies the insertion process more.


Credits:-
Spoiler:

The_Learner - Helping me to bring the project to near closure and doing the entire port to FR. Huge Thanks!
Dizzy - My partner in the Battle Engine Upgrade, the Run Script from Item routine (which i translated to C) and telling some important offsets.
Spherical Ice - Sharing his Rotom Script used in Gaia to get an idea of the workflow for Rotom.
Sagiri - Identifying ORAS messages for Rotom and Deoxys Scripts.
Tetrable - Keldeo Form(e) change.

LCCoolJ95

Limited Capacity

Age 25
Male
The World That Never Was
Seen 14 Hours Ago
Posted 2 Days Ago
612 posts
11 Years
For the dynamic offsets, I would recommend using this:

#freespace 0xFF
#dynamic 0x9C0B20

This only overwrites FF bytes, and not 00 and FF, because overwriting 00 could lead to possible graphical and sound errors.

Also, the Rotom and Deoxys scripts are not working...
"The greatest obstacle in life is Yourself. Overcome it, and you will achieve the greatest accomplishment of all." -Art Beins, 1982

Pokémon Theta Emerald EX: https://www.pokecommunity.com/showthread.php?t=386240
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.9 Years
For the dynamic offsets, I would recommend using this:

#freespace 0xFF
#dynamic 0x9C0B20

This only overwrites FF bytes, and not 00 and FF, because overwriting 00 could lead to possible graphical and sound errors.

Also, the Rotom and Deoxys scripts are not working...
I see.
In what ways the scripts aren't working? Care to elaborate?

LCCoolJ95

Limited Capacity

Age 25
Male
The World That Never Was
Seen 14 Hours Ago
Posted 2 Days Ago
612 posts
11 Years
Here's Rotom's script:
Spoiler:
#freespace 0xFF
#dynamic 0x300000

'---------------
#org @main
lock
msgbox @appliance_detection_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F0033D
compare 0x800D 0x0
if 0x1 goto @finish_rotom_menu
compare 0x800D 0x2
if 0x1 goto @choose_candidate_rotom
#org @investigation_prompt
bufferpartypokemon 0x1 0x8004
msgbox @rotom_investigation_string MSG_KEEPOPEN
closeonkeypress
msgbox @investigation_prompt_string MSG_YESNO
compare 0x800D 0x0
if 0x1 goto @finish_rotom_menu
preparemsg @appliance_choice_string
waitmsg
multichoice 0x72 0x0 0xD 0x0
compare 0x800D 0x6
if 0x1 goto @finish_rotom_menu
callasm 0x8F00425
compare 0x800D 0x0
if 0x1 goto @rotom_already_in_motor
compare 0x800D 0x4
if 0x1 goto @rotom_already_out_of_motor
compare 0x800D 0x3
if 0x1 goto @delete_move_after_revert
copyvar 0x8007 0x800D
msgbox @entered_motor_string MSG_KEEPOPEN
closeonkeypress
compare 0x8007 0x2
if 0x1 goto @rotom_learn_special_move
special 0xE0
bufferattack 0x2 0x8003
msgbox @forgot_special_move_string MSG_KEEPOPEN
closeonkeypress

#org @rotom_learn_special_move
callasm 0x8F00549
compare 0x8006 0x0
if 0x1 goto @finish_rotom_menu
special 0xE2
compare LASTRESULT 0x4
if 0x1 goto @rotom_move_delete_prompt

#org @learned_special_move
callasm 0x8F005A9
bufferattack 0x2 0x8006
fanfare 0x101
msgbox @learn_special_move_string MSG_KEEPOPEN
waitfanfare
closeonkeypress

#org @finish_rotom_menu
release
end

#org @rotom_move_delete_prompt
bufferattack 0x2 0x8006
msgbox @try_to_learn_move_string MSG_YESNO
compare LASTRESULT 0x0
if 0x1 goto @revert_for_not_learning_new_move
special 0xDF
waitstate
compare 0x8005 0x3
if 0x2 goto @finish_rotom_menu
msgbox @pff_move_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F005D5
bufferattack 0x2 0x8003
special 0xE0
bufferpartypokemon 0x1 0x8004
msgbox @forgot_special_move_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F00549
goto @learned_special_move

#org @rotom_already_in_motor
msgbox @already_appliance_string MSG_KEEPOPEN
closeonkeypress
goto @finish_rotom_menu

#org @rotom_already_out_of_motor
msgbox @not_in_motor_string MSG_KEEPOPEN
closeonkeypress
goto @finish_rotom_menu

#org @delete_move_after_revert
bufferattack 0x2 0x8003
special 0xE0
setvar 0x8006 0x0
callasm 0x8F005A9
msgbox @left_motor_string MSG_KEEPOPEN
closeonkeypress
msgbox @forgot_special_move_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F00549
compare 0x8006 0x0
if 0x1 @finish_rotom_menu
callasm 0x8F005A9
goto @finish_rotom_menu

#org @revert_for_not_learning_new_move
setvar 0x800D 0x5
callasm 0x8F00425
msgbox @left_motor_string MSG_KEEPOPEN
closeonkeypress
goto @finish_rotom_menu

#org @choose_candidate_rotom
special 0xA2
waitstate
callasm 0x8F003D1
compare 0x800D 0x1
if 0x1 goto @investigation_prompt
msgbox @not_valid_rotom_msg MSG_KEEPOPEN
closeonkeypress
goto @finish_rotom_menu

'---------
' Strings
'---------
#org @appliance_detection_string
= It's full of cardboard boxes with\nelectrical appliances in them.

#org @rotom_investigation_string
= Oh? [buffer2] would like to\ninvestigate the motors of\pthe electrical appliances....

#org @investigation_prompt_string
= Is that OK?

#org @appliance_choice_string
= Which appliance's motor will you allow\n[buffer2] to enter?

#org @entered_motor_string
= [buffer2] entered the motor.

#org @left_motor_string
= [buffer2] emerged from the motor.

#org @forgot_special_move_string
= [buffer2] forgot [buffer3]!

#org @learn_special_move_string
= [buffer2] learned [buffer3]!

#org @try_to_learn_move_string
= [black_fr][buffer2] is trying to\nlearn [buffer3].\pBut, it can't learn\nmore than four moves.\pDelete a move to make\nroom for [buffer3]?

#org @pff_move_string
= \c\h08î1, \c\h08Ô2, and\c\h08Ô[.] \c\h08Ô[.] \c\h08Ô[.] \c\h08Ô\c\h10\h31 Poof!

#org @already_appliance_string
= This Rotom has already entered\nthat appliance motor.

#org @not_in_motor_string
= [buffer2] hasn't entered a motor.

#org @not_valid_rotom_msg
= Not a valid rotom.


Here's Deoxys' script:
Spoiler:
#freespace 0xFF
#dynamic 0x300000

#org @main
lock
msgbox @meteorite_detection_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F00631
compare 0x800D 0x0
if 0x1 goto @finish_deoxys_menu
compare 0x800D 0x2
if 0x1 goto @choose_candidate_deoxys

#org @reaction_prompt
bufferpartypokemon 0x1 0x8004
msgbox @deoxys_reaction_string MSG_KEEPOPEN
closeonkeypress
msgbox @reaction_prompt_string MSG_YESNO
compare 0x800D 0x0
callasm 0x8F006A1
compare 0x800D 0x1
if 0x1 call @change_to_attack
compare 0x800D 0x2
if 0x1 call @change_to_defense
compare 0x800D 0x3
if 0x1 call @change_to_speed
compare 0x800D 0x4
if 0x1 call @change_to_original
#org @finish_deoxys_menu
release
end

#org @choose_candidate_deoxys
special 0xA2
waitstate
callasm 0x8F0075D
compare 0x800D 0x1
if 0x1 goto @reaction_prompt
msgbox @not_valid_deoxys_msg MSG_KEEPOPEN
closeonkeypress
goto @finish_deoxys_menu

#org @change_to_attack
msgbox @attack_forme_string MSG_KEEPOPEN
closeonkeypress
return

#org @change_to_defense
msgbox @defense_forme_string MSG_KEEPOPEN
closeonkeypress
return

#org @change_to_speed
msgbox @speed_forme_string MSG_KEEPOPEN
closeonkeypress
return

#org @change_to_original
msgbox @balance_forme_string MSG_KEEPOPEN
closeonkeypress
return

'---------
' Strings
'---------

#org @meteorite_detection_string
= It's a meteor that fell from space...

#org @deoxys_reaction_string
= [Buffer2] is reacting to the meteorite...

#org @reaction_prompt_string
= Would you like to bring\nthe Deoxys in your party\pcloser to the meteorite?

#org @attack_forme_string
= [Buffer2] has changed to have\nsuperior stats for attacking!

#org @defense_forme_string
= [Buffer2] has changed to have\nsuperior stats when defending!

#org @speed_forme_string
= [Buffer2] has changed to have\nincreased speed!

#org @balance_forme_string
= [Buffer2] has changed to have\nbalanced stats!

#org @not_valid_deoxys_msg
= The pokemon does not react\nto the meteor.


It seems that even if Rotom/Deoxys is in the party, the first piece of text reads, and the script ends. It doesn't freeze, the game works after the first string of text. Maybe missing a check for them?
"The greatest obstacle in life is Yourself. Overcome it, and you will achieve the greatest accomplishment of all." -Art Beins, 1982

Pokémon Theta Emerald EX: https://www.pokecommunity.com/showthread.php?t=386240
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.9 Years
Here's Rotom's script:
Spoiler:
#freespace 0xFF
#dynamic 0x300000

'---------------
#org @main
lock
msgbox @appliance_detection_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F0033D
compare 0x800D 0x0
if 0x1 goto @finish_rotom_menu
compare 0x800D 0x2
if 0x1 goto @choose_candidate_rotom
#org @investigation_prompt
bufferpartypokemon 0x1 0x8004
msgbox @rotom_investigation_string MSG_KEEPOPEN
closeonkeypress
msgbox @investigation_prompt_string MSG_YESNO
compare 0x800D 0x0
if 0x1 goto @finish_rotom_menu
preparemsg @appliance_choice_string
waitmsg
multichoice 0x72 0x0 0xD 0x0
compare 0x800D 0x6
if 0x1 goto @finish_rotom_menu
callasm 0x8F00425
compare 0x800D 0x0
if 0x1 goto @rotom_already_in_motor
compare 0x800D 0x4
if 0x1 goto @rotom_already_out_of_motor
compare 0x800D 0x3
if 0x1 goto @delete_move_after_revert
copyvar 0x8007 0x800D
msgbox @entered_motor_string MSG_KEEPOPEN
closeonkeypress
compare 0x8007 0x2
if 0x1 goto @rotom_learn_special_move
special 0xE0
bufferattack 0x2 0x8003
msgbox @forgot_special_move_string MSG_KEEPOPEN
closeonkeypress

#org @rotom_learn_special_move
callasm 0x8F00549
compare 0x8006 0x0
if 0x1 goto @finish_rotom_menu
special 0xE2
compare LASTRESULT 0x4
if 0x1 goto @rotom_move_delete_prompt

#org @learned_special_move
callasm 0x8F005A9
bufferattack 0x2 0x8006
fanfare 0x101
msgbox @learn_special_move_string MSG_KEEPOPEN
waitfanfare
closeonkeypress

#org @finish_rotom_menu
release
end

#org @rotom_move_delete_prompt
bufferattack 0x2 0x8006
msgbox @try_to_learn_move_string MSG_YESNO
compare LASTRESULT 0x0
if 0x1 goto @revert_for_not_learning_new_move
special 0xDF
waitstate
compare 0x8005 0x3
if 0x2 goto @finish_rotom_menu
msgbox @pff_move_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F005D5
bufferattack 0x2 0x8003
special 0xE0
bufferpartypokemon 0x1 0x8004
msgbox @forgot_special_move_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F00549
goto @learned_special_move

#org @rotom_already_in_motor
msgbox @already_appliance_string MSG_KEEPOPEN
closeonkeypress
goto @finish_rotom_menu

#org @rotom_already_out_of_motor
msgbox @not_in_motor_string MSG_KEEPOPEN
closeonkeypress
goto @finish_rotom_menu

#org @delete_move_after_revert
bufferattack 0x2 0x8003
special 0xE0
setvar 0x8006 0x0
callasm 0x8F005A9
msgbox @left_motor_string MSG_KEEPOPEN
closeonkeypress
msgbox @forgot_special_move_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F00549
compare 0x8006 0x0
if 0x1 @finish_rotom_menu
callasm 0x8F005A9
goto @finish_rotom_menu

#org @revert_for_not_learning_new_move
setvar 0x800D 0x5
callasm 0x8F00425
msgbox @left_motor_string MSG_KEEPOPEN
closeonkeypress
goto @finish_rotom_menu

#org @choose_candidate_rotom
special 0xA2
waitstate
callasm 0x8F003D1
compare 0x800D 0x1
if 0x1 goto @investigation_prompt
msgbox @not_valid_rotom_msg MSG_KEEPOPEN
closeonkeypress
goto @finish_rotom_menu

'---------
' Strings
'---------
#org @appliance_detection_string
= It's full of cardboard boxes with\nelectrical appliances in them.

#org @rotom_investigation_string
= Oh? [buffer2] would like to\ninvestigate the motors of\pthe electrical appliances....

#org @investigation_prompt_string
= Is that OK?

#org @appliance_choice_string
= Which appliance's motor will you allow\n[buffer2] to enter?

#org @entered_motor_string
= [buffer2] entered the motor.

#org @left_motor_string
= [buffer2] emerged from the motor.

#org @forgot_special_move_string
= [buffer2] forgot [buffer3]!

#org @learn_special_move_string
= [buffer2] learned [buffer3]!

#org @try_to_learn_move_string
= [black_fr][buffer2] is trying to\nlearn [buffer3].\pBut, it can't learn\nmore than four moves.\pDelete a move to make\nroom for [buffer3]?

#org @pff_move_string
= \c\h08î1, \c\h08Ô2, and\c\h08Ô[.] \c\h08Ô[.] \c\h08Ô[.] \c\h08Ô\c\h10\h31 Poof!

#org @already_appliance_string
= This Rotom has already entered\nthat appliance motor.

#org @not_in_motor_string
= [buffer2] hasn't entered a motor.

#org @not_valid_rotom_msg
= Not a valid rotom.


Here's Deoxys' script:
Spoiler:
#freespace 0xFF
#dynamic 0x300000

#org @main
lock
msgbox @meteorite_detection_string MSG_KEEPOPEN
closeonkeypress
callasm 0x8F00631
compare 0x800D 0x0
if 0x1 goto @finish_deoxys_menu
compare 0x800D 0x2
if 0x1 goto @choose_candidate_deoxys

#org @reaction_prompt
bufferpartypokemon 0x1 0x8004
msgbox @deoxys_reaction_string MSG_KEEPOPEN
closeonkeypress
msgbox @reaction_prompt_string MSG_YESNO
compare 0x800D 0x0
callasm 0x8F006A1
compare 0x800D 0x1
if 0x1 call @change_to_attack
compare 0x800D 0x2
if 0x1 call @change_to_defense
compare 0x800D 0x3
if 0x1 call @change_to_speed
compare 0x800D 0x4
if 0x1 call @change_to_original
#org @finish_deoxys_menu
release
end

#org @choose_candidate_deoxys
special 0xA2
waitstate
callasm 0x8F0075D
compare 0x800D 0x1
if 0x1 goto @reaction_prompt
msgbox @not_valid_deoxys_msg MSG_KEEPOPEN
closeonkeypress
goto @finish_deoxys_menu

#org @change_to_attack
msgbox @attack_forme_string MSG_KEEPOPEN
closeonkeypress
return

#org @change_to_defense
msgbox @defense_forme_string MSG_KEEPOPEN
closeonkeypress
return

#org @change_to_speed
msgbox @speed_forme_string MSG_KEEPOPEN
closeonkeypress
return

#org @change_to_original
msgbox @balance_forme_string MSG_KEEPOPEN
closeonkeypress
return

'---------
' Strings
'---------

#org @meteorite_detection_string
= It's a meteor that fell from space...

#org @deoxys_reaction_string
= [Buffer2] is reacting to the meteorite...

#org @reaction_prompt_string
= Would you like to bring\nthe Deoxys in your party\pcloser to the meteorite?

#org @attack_forme_string
= [Buffer2] has changed to have\nsuperior stats for attacking!

#org @defense_forme_string
= [Buffer2] has changed to have\nsuperior stats when defending!

#org @speed_forme_string
= [Buffer2] has changed to have\nincreased speed!

#org @balance_forme_string
= [Buffer2] has changed to have\nbalanced stats!

#org @not_valid_deoxys_msg
= The pokemon does not react\nto the meteor.


It seems that even if Rotom/Deoxys is in the party, the first piece of text reads, and the script ends. It doesn't freeze, the game works after the first string of text. Maybe missing a check for them?
I fixed an issue where it doesn't support expanded roms. Try doing this again.

EDIT: Also make sure that you specify a offset in the dynamic such that all of the components of the scripts are placed together (i.e enough free space to insert the whole script).

LCCoolJ95

Limited Capacity

Age 25
Male
The World That Never Was
Seen 14 Hours Ago
Posted 2 Days Ago
612 posts
11 Years
Just tried it today, same thing happened.

Rotom Script:
Spoiler:
'---------------
#org 0x31CAAE
lock
msgbox 0x831CC7E MSG_KEEPOPEN '"It's full of cardboard boxes with\..."
closeonkeypress
callasm 0x8F0033D
compare LASTRESULT 0x0
if 0x1 goto 0x831CB90
compare LASTRESULT 0x2
if 0x1 goto 0x831CC5B
'---------------
#org 0x31CB90
release
end

'---------------
#org 0x31CC5B
special 0xA2
waitstate
callasm 0x8F003D1
compare LASTRESULT 0x1
if 0x1 goto 0x831CAD4
msgbox 0x831CEBF MSG_KEEPOPEN '"Not a valid rotom."
closeonkeypress
goto 0x831CB90

'---------------
#org 0x31CAD4
bufferpartypokemon 0x1 0x8004
msgbox 0x831CCC1 MSG_KEEPOPEN '"Oh? [buffer2] would like to\ninves..."
closeonkeypress
msgbox 0x831CD10 MSG_YESNO '"Is that OK?"
compare LASTRESULT 0x0
if 0x1 goto 0x831CB90
preparemsg 0x831CD1E '"Which appliance's motor will you a..."
waitmsg
multichoice 0x72 0x0 0xD 0x0
compare LASTRESULT 0x6
if 0x1 goto 0x831CB90
callasm 0x8F00425
compare LASTRESULT 0x0
if 0x1 goto 0x831CBE6
compare LASTRESULT 0x4
if 0x1 goto 0x831CBF5
compare LASTRESULT 0x3
if 0x1 goto 0x831CC04
copyvar 0x8007 LASTRESULT
msgbox 0x831CD54 MSG_KEEPOPEN '"[buffer2] entered the motor."
closeonkeypress
compare 0x8007 0x2
if 0x1 goto 0x831CB5A
special 0xE0
bufferattack 0x2 0x8003
msgbox 0x831CD89 MSG_KEEPOPEN '"[buffer2] forgot [buffer3]!"
closeonkeypress
'---------------
#org 0x31CBE6
msgbox 0x831CE6B MSG_KEEPOPEN '"This Rotom has already entered\nth..."
closeonkeypress
goto 0x831CB90

'---------------
#org 0x31CBF5
msgbox 0x831CEA2 MSG_KEEPOPEN '"[buffer2] hasn't entered a motor."
closeonkeypress
goto 0x831CB90

'---------------
#org 0x31CC04
bufferattack 0x2 0x8003
special 0xE0
setvar 0x8006 0x0
callasm 0x8F005A9
msgbox 0x831CD6C MSG_KEEPOPEN '"[buffer2] emerged from the motor."
closeonkeypress
msgbox 0x831CD89 MSG_KEEPOPEN '"[buffer2] forgot [buffer3]!"
closeonkeypress
callasm 0x8F00549
compare 0x8006 0x0
if 0x1 call 0x831CB90
callasm 0x8F005A9
goto 0x831CB90

'---------------
#org 0x31CB5A
callasm 0x8F00549
compare 0x8006 0x0
if 0x1 goto 0x831CB90
special 0xE2
compare LASTRESULT 0x4
if 0x1 goto 0x831CB93
'---------------
#org 0x31CB93
bufferattack 0x2 0x8006
msgbox 0x831CDD2 MSG_YESNO '"[darkgrey_em][buffer2] is trying t..."
compare LASTRESULT 0x0
if 0x1 goto 0x831CC42
special 0xDF
waitstate
compare 0x8005 0x3
if 0x2 goto 0x831CB90
msgbox 0x831CE3E MSG_KEEPOPEN '"\c\h08î1, \c\h08Ô2, and\c\h08Ô[.] ..."
closeonkeypress
callasm 0x8F005D5
bufferattack 0x2 0x8003
special 0xE0
bufferpartypokemon 0x1 0x8004
msgbox 0x831CD89 MSG_KEEPOPEN '"[buffer2] forgot [buffer3]!"
closeonkeypress
callasm 0x8F00549
goto 0x831CB79

'---------------
#org 0x31CC42
setvar LASTRESULT 0x5
callasm 0x8F00425
msgbox 0x831CD6C MSG_KEEPOPEN '"[buffer2] emerged from the motor."
closeonkeypress
goto 0x831CB90

'---------------
#org 0x31CB79
callasm 0x8F005A9
bufferattack 0x2 0x8006
fanfare 0x101
msgbox 0x831CD99 MSG_KEEPOPEN '"[buffer2] learned [buffer3]!"
waitfanfare
closeonkeypress

'---------
' Strings
'---------
#org 0x31CC7E
= It's full of cardboard boxes with\nelectrical appliances in them.

#org 0x31CEBF
= Not a valid rotom.

#org 0x31CCC1
= Oh? [buffer2] would like to\ninvestigate the motors of\pthe electrical appliances....

#org 0x31CD10
= Is that OK?

#org 0x31CD1E
= Which appliance's motor will you allow\n[buffer2] to enter?

#org 0x31CD54
= [buffer2] entered the motor.

#org 0x31CD89
= [buffer2] forgot [buffer3]!

#org 0x31CE6B
= This Rotom has already entered\nthat appliance motor.

#org 0x31CEA2
= [buffer2] hasn't entered a motor.

#org 0x31CD6C
= [buffer2] emerged from the motor.

#org 0x31CDD2
= [darkgrey_em][buffer2] is trying to\nlearn [buffer3].\pBut, it can't learn\nmore than four moves.\pDelete a move to make\nroom for [buffer3]?

#org 0x31CE3E
= \c\h08î1, \c\h08Ô2, and\c\h08Ô[.] \c\h08Ô[.] \c\h08Ô[.] \c\h08Ô\c\h10\h31 Poof!

#org 0x31CD99
= [buffer2] learned [buffer3]!


Deoxys Script:
Spoiler:
'---------------
#org 0x31CED3
lock
msgbox 0x831CF97 MSG_KEEPOPEN '"It's a meteor that fell from space..."
closeonkeypress
callasm 0x8F00631
compare LASTRESULT 0x0
if 0x1 goto 0x831CF45
compare LASTRESULT 0x2
if 0x1 goto 0x831CF48
'---------------
#org 0x31CF45
release
end

'---------------
#org 0x31CF48
special 0xA2
waitstate
callasm 0x8F0075D
compare LASTRESULT 0x1
if 0x1 goto 0x831CEF9
msgbox 0x83256B3 MSG_KEEPOPEN '"The pokemon does not react\nto the..."
closeonkeypress
goto 0x831CF45

'---------------
#org 0x31CEF9
bufferpartypokemon 0x1 0x8004
msgbox 0x831F310 MSG_KEEPOPEN '"[buffer2] is reacting to the meteo..."
closeonkeypress
msgbox 0x8320ED8 MSG_YESNO '"Would you like to bring\nthe Deoxy..."
compare LASTRESULT 0x0
callasm 0x8F006A1
compare LASTRESULT 0x1
if 0x1 call 0x831CF6B
compare LASTRESULT 0x2
if 0x1 call 0x831CF76
compare LASTRESULT 0x3
if 0x1 call 0x831CF81
compare LASTRESULT 0x4
if 0x1 call 0x831CF8C
'---------------
#org 0x31CF6B
msgbox 0x8320F24 MSG_KEEPOPEN '"[buffer2] has changed to have\nsup..."
closeonkeypress
return

'---------------
#org 0x31CF76
msgbox 0x83230A4 MSG_KEEPOPEN '"[buffer2] has changed to have\nsup..."
closeonkeypress
return

'---------------
#org 0x31CF81
msgbox 0x8325660 MSG_KEEPOPEN '"[buffer2] has changed to have\ninc..."
closeonkeypress
return

'---------------
#org 0x31CF8C
msgbox 0x832568A MSG_KEEPOPEN '"[buffer2] has changed to have\nbal..."
closeonkeypress
return


'---------
' Strings
'---------
#org 0x31CF97
= It's a meteor that fell from space...

#org 0x3256B3
= The pokemon does not react\nto the meteor.

#org 0x31F310
= [buffer2] is reacting to the meteorite...

#org 0x320ED8
= Would you like to bring\nthe Deoxys in your party\pcloser to the meteorite?

#org 0x320F24
= [buffer2] has changed to have\nsuperior stats for attacking!

#org 0x3230A4
= [buffer2] has changed to have\nsuperior stats when defending!

#org 0x325660
= [buffer2] has changed to have\nincreased speed!

#org 0x32568A
= [buffer2] has changed to have\nbalanced stats!


Here's my config if that helps any:
Spoiler:
#ifndef CONFIG_H
#define CONFIG_H

#include "types.h"

#define ALL_POKES 886 //number of all pokemon
#define ALL_ITEMS 644 //number of all items
#define NUM_OF_EVOS 8 //number of evolutions per pokemon

//////////////////////////////////////////////////////////////////////////////
//// GIRATINA CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define POKE_GIRATINA 540
#define POKE_GIRATINA_O 797

//////////////////////////////////////////////////////////////////////////////
//// ARCEUS CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define POKE_ARCEUS 546
enum arceus_formes_idx {
POKE_ARCEUS_FIGHTING = 799, // This a enum. The subsequent value of indexes will be 1302, 1303 etc.
POKE_ARCEUS_FLYING,
POKE_ARCEUS_POISON,
POKE_ARCEUS_GROUND,
POKE_ARCEUS_ROCK,
POKE_ARCEUS_BUG,
POKE_ARCEUS_GHOST,
POKE_ARCEUS_STEEL,
POKE_ARCEUS_FIRE,
POKE_ARCEUS_WATER,
POKE_ARCEUS_GRASS,
POKE_ARCEUS_ELECTRIC,
POKE_ARCEUS_PSYCHIC,
POKE_ARCEUS_ICE,
POKE_ARCEUS_DRAGON,
POKE_ARCEUS_DARK,
POKE_ARCEUS_FAIRY,
};

//////////////////////////////////////////////////////////////////////////////
//// SILVALLY CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define ABILITY_RKS_SYSTEM 240
#define POKE_SILVALLY 1340
enum silvally_forms_idx {
POKE_SILVALLY_FIGHTING = 1341,
POKE_SILVALLY_FLYING,
POKE_SILVALLY_POISON,
POKE_SILVALLY_GROUND,
POKE_SILVALLY_ROCK,
POKE_SILVALLY_BUG,
POKE_SILVALLY_GHOST,
POKE_SILVALLY_STEEL,
POKE_SILVALLY_FIRE,
POKE_SILVALLY_WATER,
POKE_SILVALLY_GRASS,
POKE_SILVALLY_ELECTRIC,
POKE_SILVALLY_PSYCHIC,
POKE_SILVALLY_ICE,
POKE_SILVALLY_DRAGON,
POKE_SILVALLY_DARK,
POKE_SILVALLY_FAIRY,
};

//////////////////////////////////////////////////////////////////////////////
//// GENESECT CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define POKE_GENESECT 702
enum genesect_formes{
POKE_GENESECT_DOUSE = 831,
POKE_GENESECT_BURN = 829,
POKE_GENESECT_CHILL = 830,
POKE_GENESECT_SHOCK = 828
};

enum drives
{
DOUSE_DRIVE_EFFECT=1,
BURN_DRIVE_EFFECT,
CHILL_DRIVE_EFFECT,
SHOCK_DRIVE_EFFECT
};


//////////////////////////////////////////////////////////////////////////////
//// ROTOM CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define POKE_ROTOM 532

enum rotom_forms
{
POKE_ROTOM_HEAT=792,
POKE_ROTOM_WASH,
POKE_ROTOM_FROST,
POKE_ROTOM_FAN,
POKE_ROTOM_MOW
};

//////////////////////////////////////////////////////////////////////////////
//// DEOXYS CONFIG ////
//////////////////////////////////////////////////////////////////////////////
enum deoxys_forms
{
POKE_DEOXYS_ATTACK=781,
POKE_DEOXYS_DEFENSE,
POKE_DEOXYS_SPEED,
};

#endif /* CONFIG_H */
"The greatest obstacle in life is Yourself. Overcome it, and you will achieve the greatest accomplishment of all." -Art Beins, 1982

Pokémon Theta Emerald EX: https://www.pokecommunity.com/showthread.php?t=386240
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.9 Years
Just tried it today, same thing happened.

Rotom Script:
Spoiler:
'---------------
#org 0x31CAAE
lock
msgbox 0x831CC7E MSG_KEEPOPEN '"It's full of cardboard boxes with\..."
closeonkeypress
callasm 0x8F0033D
compare LASTRESULT 0x0
if 0x1 goto 0x831CB90
compare LASTRESULT 0x2
if 0x1 goto 0x831CC5B
'---------------
#org 0x31CB90
release
end

'---------------
#org 0x31CC5B
special 0xA2
waitstate
callasm 0x8F003D1
compare LASTRESULT 0x1
if 0x1 goto 0x831CAD4
msgbox 0x831CEBF MSG_KEEPOPEN '"Not a valid rotom."
closeonkeypress
goto 0x831CB90

'---------------
#org 0x31CAD4
bufferpartypokemon 0x1 0x8004
msgbox 0x831CCC1 MSG_KEEPOPEN '"Oh? [buffer2] would like to\ninves..."
closeonkeypress
msgbox 0x831CD10 MSG_YESNO '"Is that OK?"
compare LASTRESULT 0x0
if 0x1 goto 0x831CB90
preparemsg 0x831CD1E '"Which appliance's motor will you a..."
waitmsg
multichoice 0x72 0x0 0xD 0x0
compare LASTRESULT 0x6
if 0x1 goto 0x831CB90
callasm 0x8F00425
compare LASTRESULT 0x0
if 0x1 goto 0x831CBE6
compare LASTRESULT 0x4
if 0x1 goto 0x831CBF5
compare LASTRESULT 0x3
if 0x1 goto 0x831CC04
copyvar 0x8007 LASTRESULT
msgbox 0x831CD54 MSG_KEEPOPEN '"[buffer2] entered the motor."
closeonkeypress
compare 0x8007 0x2
if 0x1 goto 0x831CB5A
special 0xE0
bufferattack 0x2 0x8003
msgbox 0x831CD89 MSG_KEEPOPEN '"[buffer2] forgot [buffer3]!"
closeonkeypress
'---------------
#org 0x31CBE6
msgbox 0x831CE6B MSG_KEEPOPEN '"This Rotom has already entered\nth..."
closeonkeypress
goto 0x831CB90

'---------------
#org 0x31CBF5
msgbox 0x831CEA2 MSG_KEEPOPEN '"[buffer2] hasn't entered a motor."
closeonkeypress
goto 0x831CB90

'---------------
#org 0x31CC04
bufferattack 0x2 0x8003
special 0xE0
setvar 0x8006 0x0
callasm 0x8F005A9
msgbox 0x831CD6C MSG_KEEPOPEN '"[buffer2] emerged from the motor."
closeonkeypress
msgbox 0x831CD89 MSG_KEEPOPEN '"[buffer2] forgot [buffer3]!"
closeonkeypress
callasm 0x8F00549
compare 0x8006 0x0
if 0x1 call 0x831CB90
callasm 0x8F005A9
goto 0x831CB90

'---------------
#org 0x31CB5A
callasm 0x8F00549
compare 0x8006 0x0
if 0x1 goto 0x831CB90
special 0xE2
compare LASTRESULT 0x4
if 0x1 goto 0x831CB93
'---------------
#org 0x31CB93
bufferattack 0x2 0x8006
msgbox 0x831CDD2 MSG_YESNO '"[darkgrey_em][buffer2] is trying t..."
compare LASTRESULT 0x0
if 0x1 goto 0x831CC42
special 0xDF
waitstate
compare 0x8005 0x3
if 0x2 goto 0x831CB90
msgbox 0x831CE3E MSG_KEEPOPEN '"\c\h08î1, \c\h08Ô2, and\c\h08Ô[.] ..."
closeonkeypress
callasm 0x8F005D5
bufferattack 0x2 0x8003
special 0xE0
bufferpartypokemon 0x1 0x8004
msgbox 0x831CD89 MSG_KEEPOPEN '"[buffer2] forgot [buffer3]!"
closeonkeypress
callasm 0x8F00549
goto 0x831CB79

'---------------
#org 0x31CC42
setvar LASTRESULT 0x5
callasm 0x8F00425
msgbox 0x831CD6C MSG_KEEPOPEN '"[buffer2] emerged from the motor."
closeonkeypress
goto 0x831CB90

'---------------
#org 0x31CB79
callasm 0x8F005A9
bufferattack 0x2 0x8006
fanfare 0x101
msgbox 0x831CD99 MSG_KEEPOPEN '"[buffer2] learned [buffer3]!"
waitfanfare
closeonkeypress

'---------
' Strings
'---------
#org 0x31CC7E
= It's full of cardboard boxes with\nelectrical appliances in them.

#org 0x31CEBF
= Not a valid rotom.

#org 0x31CCC1
= Oh? [buffer2] would like to\ninvestigate the motors of\pthe electrical appliances....

#org 0x31CD10
= Is that OK?

#org 0x31CD1E
= Which appliance's motor will you allow\n[buffer2] to enter?

#org 0x31CD54
= [buffer2] entered the motor.

#org 0x31CD89
= [buffer2] forgot [buffer3]!

#org 0x31CE6B
= This Rotom has already entered\nthat appliance motor.

#org 0x31CEA2
= [buffer2] hasn't entered a motor.

#org 0x31CD6C
= [buffer2] emerged from the motor.

#org 0x31CDD2
= [darkgrey_em][buffer2] is trying to\nlearn [buffer3].\pBut, it can't learn\nmore than four moves.\pDelete a move to make\nroom for [buffer3]?

#org 0x31CE3E
= \c\h08î1, \c\h08Ô2, and\c\h08Ô[.] \c\h08Ô[.] \c\h08Ô[.] \c\h08Ô\c\h10\h31 Poof!

#org 0x31CD99
= [buffer2] learned [buffer3]!


Deoxys Script:
Spoiler:
'---------------
#org 0x31CED3
lock
msgbox 0x831CF97 MSG_KEEPOPEN '"It's a meteor that fell from space..."
closeonkeypress
callasm 0x8F00631
compare LASTRESULT 0x0
if 0x1 goto 0x831CF45
compare LASTRESULT 0x2
if 0x1 goto 0x831CF48
'---------------
#org 0x31CF45
release
end

'---------------
#org 0x31CF48
special 0xA2
waitstate
callasm 0x8F0075D
compare LASTRESULT 0x1
if 0x1 goto 0x831CEF9
msgbox 0x83256B3 MSG_KEEPOPEN '"The pokemon does not react\nto the..."
closeonkeypress
goto 0x831CF45

'---------------
#org 0x31CEF9
bufferpartypokemon 0x1 0x8004
msgbox 0x831F310 MSG_KEEPOPEN '"[buffer2] is reacting to the meteo..."
closeonkeypress
msgbox 0x8320ED8 MSG_YESNO '"Would you like to bring\nthe Deoxy..."
compare LASTRESULT 0x0
callasm 0x8F006A1
compare LASTRESULT 0x1
if 0x1 call 0x831CF6B
compare LASTRESULT 0x2
if 0x1 call 0x831CF76
compare LASTRESULT 0x3
if 0x1 call 0x831CF81
compare LASTRESULT 0x4
if 0x1 call 0x831CF8C
'---------------
#org 0x31CF6B
msgbox 0x8320F24 MSG_KEEPOPEN '"[buffer2] has changed to have\nsup..."
closeonkeypress
return

'---------------
#org 0x31CF76
msgbox 0x83230A4 MSG_KEEPOPEN '"[buffer2] has changed to have\nsup..."
closeonkeypress
return

'---------------
#org 0x31CF81
msgbox 0x8325660 MSG_KEEPOPEN '"[buffer2] has changed to have\ninc..."
closeonkeypress
return

'---------------
#org 0x31CF8C
msgbox 0x832568A MSG_KEEPOPEN '"[buffer2] has changed to have\nbal..."
closeonkeypress
return


'---------
' Strings
'---------
#org 0x31CF97
= It's a meteor that fell from space...

#org 0x3256B3
= The pokemon does not react\nto the meteor.

#org 0x31F310
= [buffer2] is reacting to the meteorite...

#org 0x320ED8
= Would you like to bring\nthe Deoxys in your party\pcloser to the meteorite?

#org 0x320F24
= [buffer2] has changed to have\nsuperior stats for attacking!

#org 0x3230A4
= [buffer2] has changed to have\nsuperior stats when defending!

#org 0x325660
= [buffer2] has changed to have\nincreased speed!

#org 0x32568A
= [buffer2] has changed to have\nbalanced stats!


Here's my config if that helps any:
Spoiler:
#ifndef CONFIG_H
#define CONFIG_H

#include "types.h"

#define ALL_POKES 886 //number of all pokemon
#define ALL_ITEMS 644 //number of all items
#define NUM_OF_EVOS 8 //number of evolutions per pokemon

//////////////////////////////////////////////////////////////////////////////
//// GIRATINA CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define POKE_GIRATINA 540
#define POKE_GIRATINA_O 797

//////////////////////////////////////////////////////////////////////////////
//// ARCEUS CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define POKE_ARCEUS 546
enum arceus_formes_idx {
POKE_ARCEUS_FIGHTING = 799, // This a enum. The subsequent value of indexes will be 1302, 1303 etc.
POKE_ARCEUS_FLYING,
POKE_ARCEUS_POISON,
POKE_ARCEUS_GROUND,
POKE_ARCEUS_ROCK,
POKE_ARCEUS_BUG,
POKE_ARCEUS_GHOST,
POKE_ARCEUS_STEEL,
POKE_ARCEUS_FIRE,
POKE_ARCEUS_WATER,
POKE_ARCEUS_GRASS,
POKE_ARCEUS_ELECTRIC,
POKE_ARCEUS_PSYCHIC,
POKE_ARCEUS_ICE,
POKE_ARCEUS_DRAGON,
POKE_ARCEUS_DARK,
POKE_ARCEUS_FAIRY,
};

//////////////////////////////////////////////////////////////////////////////
//// SILVALLY CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define ABILITY_RKS_SYSTEM 240
#define POKE_SILVALLY 1340
enum silvally_forms_idx {
POKE_SILVALLY_FIGHTING = 1341,
POKE_SILVALLY_FLYING,
POKE_SILVALLY_POISON,
POKE_SILVALLY_GROUND,
POKE_SILVALLY_ROCK,
POKE_SILVALLY_BUG,
POKE_SILVALLY_GHOST,
POKE_SILVALLY_STEEL,
POKE_SILVALLY_FIRE,
POKE_SILVALLY_WATER,
POKE_SILVALLY_GRASS,
POKE_SILVALLY_ELECTRIC,
POKE_SILVALLY_PSYCHIC,
POKE_SILVALLY_ICE,
POKE_SILVALLY_DRAGON,
POKE_SILVALLY_DARK,
POKE_SILVALLY_FAIRY,
};

//////////////////////////////////////////////////////////////////////////////
//// GENESECT CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define POKE_GENESECT 702
enum genesect_formes{
POKE_GENESECT_DOUSE = 831,
POKE_GENESECT_BURN = 829,
POKE_GENESECT_CHILL = 830,
POKE_GENESECT_SHOCK = 828
};

enum drives
{
DOUSE_DRIVE_EFFECT=1,
BURN_DRIVE_EFFECT,
CHILL_DRIVE_EFFECT,
SHOCK_DRIVE_EFFECT
};


//////////////////////////////////////////////////////////////////////////////
//// ROTOM CONFIG ////
//////////////////////////////////////////////////////////////////////////////
#define POKE_ROTOM 532

enum rotom_forms
{
POKE_ROTOM_HEAT=792,
POKE_ROTOM_WASH,
POKE_ROTOM_FROST,
POKE_ROTOM_FAN,
POKE_ROTOM_MOW
};

//////////////////////////////////////////////////////////////////////////////
//// DEOXYS CONFIG ////
//////////////////////////////////////////////////////////////////////////////
enum deoxys_forms
{
POKE_DEOXYS_ATTACK=781,
POKE_DEOXYS_DEFENSE,
POKE_DEOXYS_SPEED,
};

#endif /* CONFIG_H */
Can you give your test rom patch and save? I'm bit busy in office so directly testing your rom will speed up the process.

LCCoolJ95

Limited Capacity

Age 25
Male
The World That Never Was
Seen 14 Hours Ago
Posted 2 Days Ago
612 posts
11 Years
I sent the ROM and save. Also, when trying to get the offsets.txt, using 'python scripts//insert --debug>offsets.txt', I get this error:
Spoiler:
Traceback (most recent call last):
File "scripts//insert", line 239, in <module>
with open('offsets.txt', 'w') as fout:
PermissionError: [Errno 13] Permission denied: 'offsets.txt'
"The greatest obstacle in life is Yourself. Overcome it, and you will achieve the greatest accomplishment of all." -Art Beins, 1982

Pokémon Theta Emerald EX: https://www.pokecommunity.com/showthread.php?t=386240
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.9 Years
I sent the ROM and save. Also, when trying to get the offsets.txt, using 'python scripts//insert --debug>offsets.txt', I get this error:
Spoiler:
Traceback (most recent call last):
File "scripts//insert", line 239, in <module>
with open('offsets.txt', 'w') as fout:
PermissionError: [Errno 13] Permission denied: 'offsets.txt'
There was some issue in the script compilation. So I have added goto statements to avoid that issue.

Download the latest build for updated XSE scripts. This should fix the issue.

Regarding the debug error, i have disabled the debug parameter for the insert script and instead, it outputs the offsets.txt file for generate_offsets.py by default.

LCCoolJ95

Limited Capacity

Age 25
Male
The World That Never Was
Seen 14 Hours Ago
Posted 2 Days Ago
612 posts
11 Years
Fixed now, but now there's this:
Have this glitch when leveling up...empty spots in party level up:
"The greatest obstacle in life is Yourself. Overcome it, and you will achieve the greatest accomplishment of all." -Art Beins, 1982

Pokémon Theta Emerald EX: https://www.pokecommunity.com/showthread.php?t=386240
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.9 Years
UPDATE

So this project was progressing at a snail's ace (despite not being relatively large) and was likely to go this way. But then The_Learner approached me for learning Rom hacking with C.
After teaching some basics of rom hacking. I decided to take him in a live project which helped both me and him as the pace of project sped up rapidly and The_Learner became more potent in writing code in C. He is also responsible for porting this repo to Fire Red side by side.

Anyways, the update consists of forme changes for Shamyin, Hoopa, Genie Trio, & Kyurem as well as the process of inserting Rotom and Deoxys form(e)s have been simplified as they are now built within the code itself (no need for XSE).

An entire Fire Red port done by The_Learner!

See the first port for more details and instructions to set them up!
Seen August 7th, 2017
Posted June 10th, 2017
16 posts
3.2 Years
I have met some problems about Kyurem.When I use the dna_splicers to relieve the black or white ,it hints there is no enough place in the party. But it still returns.After I want to fusion again, it hints mulitype fusions are not allowed.
Another thing is that if I fusion 2 Kyurem black or white, and then I relieve them, the first fusion can not return, just the second. Maybe it is my fault, I didn't understand the saveblock about SAVE_FUSEE, I just write the 0x0203CF64 in Dynamic Pokemon Expansion for EM.
Sorry about that I don't know how to send a picture, could you understand what I said, it's really sorry about that.THANKS for your great work.

Froosty

The_Learner

Age 22
Male
Somewhere in this world.
Seen 4 Days Ago
Posted November 21st, 2019
544 posts
5.7 Years
I have met some problems about Kyurem.When I use the dna_splicers to relieve the black or white ,it hints there is no enough place in the party. But it still returns.After I want to fusion again, it hints mulitype fusions are not allowed.
Another thing is that if I fusion 2 Kyurem black or white, and then I relieve them, the first fusion can not return, just the second. Maybe it is my fault, I didn't understand the saveblock about SAVE_FUSEE, I just write the 0x0203CF64 in Dynamic Pokemon Expansion for EM.
Sorry about that I don't know how to send a picture, could you understand what I said, it's really sorry about that.THANKS for your great work.
That problem with the 6 poke but reverting..
That was a silly coding mistake ;-;
I fixed it actually... get the latest code now.. it should be working.

The multiple fusion thing will be executed when you have done the fusion or if the saveblock area is not so free (usable)

and yeah the codes are managed such that only one fusion is possible in the game..
(Means NO hacking with multiply kyurems) :P
Seen August 7th, 2017
Posted June 10th, 2017
16 posts
3.2 Years
That problem with the 6 poke but reverting..
That was a silly coding mistake ;-;
I fixed it actually... get the latest code now.. it should be working.

The multiple fusion thing will be executed when you have done the fusion or if the saveblock area is not so free (usable)

and yeah the codes are managed such that only one fusion is possible in the game..
(Means NO hacking with multiply kyurems) :P
And how to solve the problem that the saveblock is not free, now if I revert the black or white, the dex information will all be cleared, after fusion again it comes back.
It is so sorry that I really know noting about the RAM and the saveblock,but I don't want to give up the kyurem. ;-;
I have used the saveblock hack in the Dynamic Pokemon Expansion for EM and also use the item expasion,so will it cause that the free space is not enough?:(

Froosty

The_Learner

Age 22
Male
Somewhere in this world.
Seen 4 Days Ago
Posted November 21st, 2019
544 posts
5.7 Years
And how to solve the problem that the saveblock is not free, now if I revert the black or white, the dex information will all be cleared, after fusion again it comes back.
It is so sorry that I really know noting about the RAM and the saveblock,but I don't want to give up the kyurem. ;-;
I have used the saveblock hack in the Dynamic Pokemon Expansion for EM and also use the item expasion,so will it cause that the free space is not enough?:(
The dex-information...
I think we hadnt check that.. if it clears after revert or not ~_~

and yeah about the saveblock thing ... I too dont know much about it but KDS once told that there is something related to it in Egg's battle engine upgrade..
and he might be able to tell you.

Sorry but I too dunno about this saveblock free ram area...
Seen August 7th, 2017
Posted June 10th, 2017
16 posts
3.2 Years
The dex-information...
I think we hadnt check that.. if it clears after revert or not ~_~

and yeah about the saveblock thing ... I too dont know much about it but KDS once told that there is something related to it in Egg's battle engine upgrade..
and he might be able to tell you.

Sorry but I too dunno about this saveblock free ram area...
Thanks for your help and reply. Maybe I can try to look for other ways to solve the problem.

Froosty

The_Learner

Age 22
Male
Somewhere in this world.
Seen 4 Days Ago
Posted November 21st, 2019
544 posts
5.7 Years
Good things. So sad that this is not in ASM. since it will been easier for me to convert routine into Ruby rom.
ASM is easier for me to port int ruby engine than C scripts.
The ASM future seems so faint and dark actually..
If things like dissaembly happen successfully then yeah I think we wont be needing the asm more.. ;)
Age 25
Male
Seen August 31st, 2019
Posted August 31st, 2019
455 posts
6.9 Years
I have met some problems about Kyurem.When I use the dna_splicers to relieve the black or white ,it hints there is no enough place in the party. But it still returns.After I want to fusion again, it hints mulitype fusions are not allowed.
Another thing is that if I fusion 2 Kyurem black or white, and then I relieve them, the first fusion can not return, just the second. Maybe it is my fault, I didn't understand the saveblock about SAVE_FUSEE, I just write the 0x0203CF64 in Dynamic Pokemon Expansion for EM.
Sorry about that I don't know how to send a picture, could you understand what I said, it's really sorry about that.THANKS for your great work.
You can do this. Use 0x0203CF64 for kyurem and 0x0203CF64+0x64 for Pokemon Expansion.