The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > Fan Games > Binary ROM Hacking > Binary Hack Research & Development
Reload this Page Quick Research & Development Thread

Notices
For all updates, view the main page.

Binary Hack Research & Development Got a well-founded knack with your binary Pokémon hacks? Love reverse-engineering them? For the traditional Pokémon ROM hacker, this is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!

Ad Content
Reply
 
Thread Tools
  #1076   Link to this post, but load the entire thread.  
Old September 18th, 2018 (9:30 AM). Edited October 30th, 2018 by Super Versekr Dark.
Super Versekr Dark Super Versekr Dark is offline
 
Join Date: Jan 2017
Gender: Male
Posts: 79
Quote:
Originally Posted by Wobbu View Post
I found the offsets from Pokémon Emerald (BPEE) for changing the level of Pokémon when they hatch from eggs.

Code:
08070A38: XX 22
08071414: XX 22
081C3200: XX 21
Thanks to Jambo51 for finding the FireRed offsets and making it easy to find the Emerald offsets.


Pokémon Ruby:

08042132: XX 22
08042954: XX 22
080A2050: XX 21

Credits to: veganime

42068 -- seems to fix the move set
A080C -- fix met lvl

Reply With Quote
  #1077   Link to this post, but load the entire thread.  
Old September 19th, 2018 (8:46 AM).
0x575446 0x575446 is offline
 
Join Date: Sep 2018
Posts: 3
I have tried to look for the the location of the amount of pokemon in both the Kanto and National dexes in Firered but I'm coming up blank. I want to be able to read it out of the ROM and use it in a data parser. I'm slightly overwhelmed by the sheer amount of data in the ROM. Any help would be appreciated.
I've tried looking through the forums, but I might've missed information about this.
Reply With Quote
  #1078   Link to this post, but load the entire thread.  
Old September 19th, 2018 (8:50 AM).
Super Versekr Dark Super Versekr Dark is offline
 
Join Date: Jan 2017
Gender: Male
Posts: 79
Quote:
Originally Posted by AkameTheBulbasaur View Post
The Great And Powerful Lucky Egg

The check for the Lucky Egg is at:

FireRed: 0x21DBA
Emerald: 0x4A67A

The byte that determines the experience multiplier is at:

FireRed: 0x21DC2
Emerald: 0x4A682

In the vanilla games, this byte has a value of 0x96, or 150 is decimal.

This gives a multiplier of 1.5.

So if you want to change the amount of experience the Lucky Egg gives you, just follow these three easy steps!

1. Choose a value that you want to multiply the gained experience by (It will have to be less than 2.5 without using ASM).

2. Take away the decimal point (so 1.5 would be 150, 2.0 would be 200).

3. Convert that value to hex (so 1.5 is 0x96, 2.5 is 0xFA) and put that value at the offset listed above.
The Great And Powerful Lucky Egg

The check for the Lucky Egg is at:

FireRed: 0x21DBA
Emerald: 0x4A67A
Ruby: 0x20386

The byte that determines the experience multiplier is at:

FireRed: 0x21DC2
Emerald: 0x4A682
Ruby: 0x2038E
Reply With Quote
  #1079   Link to this post, but load the entire thread.  
Old September 25th, 2018 (5:49 AM). Edited September 28th, 2018 by kalarie.
kalarie kalarie is online now
 
Join Date: Jun 2008
Posts: 760
EDIT: To enable all Sevii Islands' catchmaps to show up in the Pokedex, regardless of whether the worldmapflags are set:

Replace the bytes at 0x0CC206 with:
FF 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

To align the word 'Area' with the new dimensions replace the byte at 0x452207 with:
06

To remove the 'Area Unknown' make the image transparent and replace the byte at 0x10673C with:
FC

Credits to: Spherical Ice
Reply With Quote
  #1080   Link to this post, but load the entire thread.  
Old September 26th, 2018 (2:36 AM). Edited September 27th, 2018 by kalarie.
kalarie kalarie is online now
 
Join Date: Jun 2008
Posts: 760
Town Map palette offsets for Fire Red:

Palette 0: 0x3EF2DC
Palette 1: 0x3EF2FC
Palette 2: 0x3EF31C
Palette 3: 0x3EF33C
Palette 4: 0x3EF35C
Reply With Quote
  #1081   Link to this post, but load the entire thread.  
Old September 29th, 2018 (8:49 AM). Edited September 29th, 2018 by PurpleOrange.
PurpleOrange's Avatar
PurpleOrange PurpleOrange is offline
still don't know what I'm doing
 
Join Date: Sep 2013
Location: Littleroot Town (UK)
Age: 25
Gender: Male
Posts: 367
Here are some mystery gift scripts that are found in the ROM of firered/leagreen and emerald as well as some quirks about them.

Although these are in the game, these scripts are never used. The events that were actually distributed set an almost identical script (albeit with different offsets) to RAM instead.

(This is a long post so I've put it in a spoiler.)
Spoiler:

Aurora Ticket
FR: 0x4894B9
Spoiler:
'-----------------------
#org 0x4894B9
setvirtualaddress 0x84894B9
lock
faceplayer
checkflag 0x2A7
virtualjumpif 0x1 0x848951D
checkflag 0x2E4
virtualjumpif 0x1 0x848951D
checkitem 0x173 0x1
compare LASTRESULT 0x1
virtualjumpif 0x1 0x848951D
virtualmsgbox 0x8489526 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
checkitemamount 0x173 0x1
compare LASTRESULT 0x0
virtualjumpif 0x1 0x8489514
giveitem 0x173 0x1 0x0
setflag 0x84B
setflag 0x2A7
virtualmsgbox 0x8489583 '"It appears to be for use at the\nVE..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x48951D
virtualmsgbox 0x84895E8 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x489514
virtualmsgbox 0x8489615 '"Oh, I'm sorry, [player]. Your BAG's..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x489526
= Thank you for using the MYSTERY\nGIFT System.\pYou must be [player].\nThere is a ticket here for you.

#org 0x489583
= It appears to be for use at the\nVERMILION CITY port.\pWhy not give it a try and see what\nit is about?

#org 0x4895E8
= Thank you for using the MYSTERY\nGIFT System.

#org 0x489615
= Oh, I'm sorry, [player]. Your BAG's\nKEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.
LG: 0x488D95
Spoiler:
'-----------------------
#org 0x488D95
setvirtualaddress 0x8488D95
lock
faceplayer
checkflag 0x2A7
virtualjumpif 0x1 0x8488DF9
checkflag 0x2E4
virtualjumpif 0x1 0x8488DF9
checkitem 0x173 0x1
compare LASTRESULT 0x1
virtualjumpif 0x1 0x8488DF9
virtualmsgbox 0x8488E02 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
checkitemamount 0x173 0x1
compare LASTRESULT 0x0
virtualjumpif 0x1 0x8488DF0
giveitem 0x173 0x1 0x0
setflag 0x84B
setflag 0x2A7
virtualmsgbox 0x8488E5F '"It appears to be for use at the\nVE..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x488DF9
virtualmsgbox 0x8488EC4 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x488DF0
virtualmsgbox 0x8488EF1 '"Oh, I'm sorry, [player]. Your BAG's..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x488E02
= Thank you for using the MYSTERY\nGIFT System.\pYou must be [player].\nThere is a ticket here for you.

#org 0x488E5F
= It appears to be for use at the\nVERMILION CITY port.\pWhy not give it a try and see what\nit is about?

#org 0x488EC4
= Thank you for using the MYSTERY\nGIFT System.

#org 0x488EF1
= Oh, I'm sorry, [player]. Your BAG's\nKEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.
E: 0x67533C
Spoiler:
'-----------------------
#org 0x67533C
setvirtualaddress 0x867533C
lock
faceplayer
checkflag 0x13A
virtualjumpif 0x1 0x86753A0
checkflag 0x1AD
virtualjumpif 0x1 0x86753A0
checkitem 0x173 0x1
compare LASTRESULT 0x1
virtualjumpif 0x1 0x86753A0
virtualmsgbox 0x86753A9 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
checkitemamount 0x173 0x1
compare LASTRESULT 0x0
virtualjumpif 0x1 0x8675397
giveitem 0x173 0x1 0x0
setflag 0x8D5
setflag 0x13A
virtualmsgbox 0x8675406 '"It appears to be for use at the\nLI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x6753A0
virtualmsgbox 0x867546A '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x675397
virtualmsgbox 0x8675497 '"Oh, I'm sorry, [player].\nYour BAG'..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x6753A9
= Thank you for using the MYSTERY\nGIFT System.\pYou must be [player].\nThere is a ticket here for you.

#org 0x675406
= It appears to be for use at the\nLILYCOVE CITY port.\pWhy not give it a try and see what\nit is about?

#org 0x67546A
= Thank you for using the MYSTERY\nGIFT System.

#org 0x675497
= Oh, I'm sorry, [player].\nYour BAG's KEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.


Mystic Ticket
FR: 0x489689
Spoiler:
'-----------------------
#org 0x489689
setvirtualaddress 0x8489689
lock
faceplayer
checkflag 0x2A8
virtualjumpif 0x1 0x84896F6
checkflag 0x2F2
virtualjumpif 0x1 0x84896F6
checkflag 0x2F3
virtualjumpif 0x1 0x84896F6
checkitem 0x172 0x1
compare LASTRESULT 0x1
virtualjumpif 0x1 0x84896F6
virtualmsgbox 0x84896FF '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
checkitemamount 0x172 0x1
compare LASTRESULT 0x0
virtualjumpif 0x1 0x84896ED
giveitem 0x172 0x1 0x0
setflag 0x84A
setflag 0x2A8
virtualmsgbox 0x848975C '"It appears to be for use at the\nVE..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x4896F6
virtualmsgbox 0x84897C1 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x4896ED
virtualmsgbox 0x84897EE '"Oh, I'm sorry, [player]. Your BAG's..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x4896FF
= Thank you for using the MYSTERY\nGIFT System.\pYou must be [player].\nThere is a ticket here for you.

#org 0x48975C
= It appears to be for use at the\nVERMILION CITY port.\pWhy not give it a try and see what\nit is about?

#org 0x4897C1
= Thank you for using the MYSTERY\nGIFT System.

#org 0x4897EE
= Oh, I'm sorry, [player]. Your BAG's\nKEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.
LG: 0x488F65
Spoiler:
'-----------------------
#org 0x488F65
setvirtualaddress 0x8488F65
lock
faceplayer
checkflag 0x2A8
virtualjumpif 0x1 0x8488FD2
checkflag 0x2F2
virtualjumpif 0x1 0x8488FD2
checkflag 0x2F3
virtualjumpif 0x1 0x8488FD2
checkitem 0x172 0x1
compare LASTRESULT 0x1
virtualjumpif 0x1 0x8488FD2
virtualmsgbox 0x8488FDB '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
checkitemamount 0x172 0x1
compare LASTRESULT 0x0
virtualjumpif 0x1 0x8488FC9
giveitem 0x172 0x1 0x0
setflag 0x84A
setflag 0x2A8
virtualmsgbox 0x8489038 '"It appears to be for use at the\nVE..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x488FD2
virtualmsgbox 0x848909D '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x488FC9
virtualmsgbox 0x84890CA '"Oh, I'm sorry, [player]. Your BAG's..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x488FDB
= Thank you for using the MYSTERY\nGIFT System.\pYou must be [player].\nThere is a ticket here for you.

#org 0x489038
= It appears to be for use at the\nVERMILION CITY port.\pWhy not give it a try and see what\nit is about?

#org 0x48909D
= Thank you for using the MYSTERY\nGIFT System.

#org 0x4890CA
= Oh, I'm sorry, [player]. Your BAG's\nKEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.
E: 0x67550B
Spoiler:
'-----------------------
#org 0x67550B
setvirtualaddress 0x867550B
lock
faceplayer
checkflag 0x13B
virtualjumpif 0x1 0x8675578
checkflag 0x91
virtualjumpif 0x1 0x8675578
checkflag 0x92
virtualjumpif 0x1 0x8675578
checkitem 0x172 0x1
compare LASTRESULT 0x1
virtualjumpif 0x1 0x8675578
virtualmsgbox 0x8675581 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
checkitemamount 0x172 0x1
compare LASTRESULT 0x0
virtualjumpif 0x1 0x867556F
giveitem 0x172 0x1 0x0
setflag 0x8E0
setflag 0x13B
virtualmsgbox 0x86755DE '"It appears to be for use at the\nLI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x675578
virtualmsgbox 0x8675642 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x67556F
virtualmsgbox 0x867566F '"Oh, I'm sorry, [player].\nYour BAG'..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x675581
= Thank you for using the MYSTERY\nGIFT System.\pYou must be [player].\nThere is a ticket here for you.

#org 0x6755DE
= It appears to be for use at the\nLILYCOVE CITY port.\pWhy not give it a try and see what\nit is about?

#org 0x675642
= Thank you for using the MYSTERY\nGIFT System.

#org 0x67566F
= Oh, I'm sorry, [player].\nYour BAG's KEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.


Old Sea Map
E: 0x6757F4
Spoiler:
'-----------------------
#org 0x6757F4
setvirtualaddress 0x86757F4
lock
faceplayer
checkflag 0x13C
virtualjumpif 0x1 0x8675858
checkflag 0x1CA
virtualjumpif 0x1 0x8675858
checkitem 0x178 0x1
compare LASTRESULT 0x1
virtualjumpif 0x1 0x8675858
virtualmsgbox 0x8675861 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
checkitemamount 0x178 0x1
compare LASTRESULT 0x0
virtualjumpif 0x1 0x867584F
giveitem 0x178 0x1 0x0
setflag 0x8D6
setflag 0x13C
virtualmsgbox 0x86758D9 '"It appears to be for use at the\nLI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x675858
virtualmsgbox 0x867593D '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x67584F
virtualmsgbox 0x867596A '"Oh, I'm sorry, [player].\nYour BAG'..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x675861
= Thank you for using the MYSTERY\nGIFT System.\pLet me confirm--you are [player]?\pWe received this OLD SEA MAP\naddressed to you.

#org 0x6758D9
= It appears to be for use at the\nLILYCOVE CITY port.\pWhy not give it a try and see what\nit is about?

#org 0x67593D
= Thank you for using the MYSTERY\nGIFT System.

#org 0x67596A
= Oh, I'm sorry, [player].\nYour BAG's KEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.

Something to note about the aurora ticket/mystic ticket/old sea map scripts is that the script actually checks if the pokemon found on the respective islands has been caught/ko'd.
So if a player used a cheating device to get to the island and then caught the pokemon, they wouldn't be able to get the ticket.

Altering Cave
FR: 0x489862
Spoiler:
'-----------------------
#org 0x489862
setvirtualaddress 0x8489862
addvar 0x4024 0x1
compare 0x4024 0xA
virtualjumpif 0x0 0x848987C
setvar 0x4024 0x0
lock
faceplayer
virtualmsgbox 0x8489887 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x48987C
lock
faceplayer
virtualmsgbox 0x8489887 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x489887
= Thank you for using the MYSTERY\nGIFT System.\pRecently, there have been rumors\nof rare POKéMON appearances.\pThe rumors are about ALTERING\nCAVE on OUTCAST ISLAND.\pWhy not visit there and check if\nthe rumors are indeed true?
LG: 0x48913E
Spoiler:
'-----------------------
#org 0x48913E
setvirtualaddress 0x848913E
addvar 0x4024 0x1
compare 0x4024 0xA
virtualjumpif 0x0 0x8489158
setvar 0x4024 0x0
lock
faceplayer
virtualmsgbox 0x8489163 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x489158
lock
faceplayer
virtualmsgbox 0x8489163 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x489163
= Thank you for using the MYSTERY\nGIFT System.\pRecently, there have been rumors\nof rare POKéMON appearances.\pThe rumors are about ALTERING\nCAVE on OUTCAST ISLAND.\pWhy not visit there and check if\nthe rumors are indeed true?
E: 0x6756E3
Spoiler:
'-----------------------
#org 0x6756E3
setvirtualaddress 0x86756E3
addvar 0x403E 0x1
compare 0x403E 0xA
virtualjumpif 0x0 0x86756FD
setvar 0x403E 0x0
lock
faceplayer
virtualmsgbox 0x8675708 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x6756FD
lock
faceplayer
virtualmsgbox 0x8675708 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x675708
= Thank you for using the MYSTERY\nGIFT System.\pThere appears to be a rumor about\nrare POKéMON sightings.\pThe sightings reportedly came from\nthe ALTERING CAVE on ROUTE 103.\pPerhaps it would be worthwhile for\nyou to investigate this rumor.

This script is odd as it doesn't set a certain a pokemon to appear, rather it cycles through the list of the altering cave pokemon every time you speak to the delivery man.

Seven Island/Sootpolis City Wireless Trainers
FR: 0x48903A
Spoiler:
'-----------------------
#org 0x48903A
setvirtualaddress 0x848903A
special 0xF6
compare LASTRESULT 0x0
virtualjumpif 0x1 0x8489058
lock
faceplayer
virtualmsgbox 0x8489063 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x489058
lock
faceplayer
virtualmsgbox 0x84891B0 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x489063
= Thank you for using the MYSTERY\nGIFT System.\pBy holding this WONDER CARD, you\nmay take part in a survey at a\lPOKéMON MART.\pUse these surveys to invite\nTRAINERS to the SEVII ISLANDS.\p[.]Let me give you a secret\npassword for a survey:\p["]GIVE ME\nAWESOME TRAINER"\pWrite that in on a survey and send\nit to the WIRELESS\lCOMMUNICATION SYSTEM.

#org 0x4891B0
= Thank you for using the MYSTERY\nGIFT System.\pA TRAINER has arrived in the SEVII\nISLANDS looking for you.\pWe hope you will enjoy\nbattling the visiting TRAINER.\pYou may invite other TRAINERS by\nentering other passwords.\pTry looking for other passwords\nthat may work.
LG: 0x488916
Spoiler:
'-----------------------
#org 0x488916
setvirtualaddress 0x8488916
special 0xF6
compare LASTRESULT 0x0
virtualjumpif 0x1 0x8488934
lock
faceplayer
virtualmsgbox 0x848893F '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x488934
lock
faceplayer
virtualmsgbox 0x8488A8C '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x48893F
= Thank you for using the MYSTERY\nGIFT System.\pBy holding this WONDER CARD, you\nmay take part in a survey at a\lPOKéMON MART.\pUse these surveys to invite\nTRAINERS to the SEVII ISLANDS.\p[.]Let me give you a secret\npassword for a survey:\p["]GIVE ME\nAWESOME TRAINER"\pWrite that in on a survey and send\nit to the WIRELESS\lCOMMUNICATION SYSTEM.

#org 0x488A8C
= Thank you for using the MYSTERY\nGIFT System.\pA TRAINER has arrived in the SEVII\nISLANDS looking for you.\pWe hope you will enjoy\nbattling the visiting TRAINER.\pYou may invite other TRAINERS by\nentering other passwords.\pTry looking for other passwords\nthat may work.
E: 674EC1
Spoiler:
'-----------------------
#org 0x67513C
setvirtualaddress 0x867513C
checkflag 0x1E4
virtualjumpif 0x1 0x8675179
copyvarifnotzero 0x0 0x2
special2 0x8008 0x188
compare 0x8008 0x3
virtualjumpif 0x0 0x8675179
lock
faceplayer
virtualmsgbox 0x867529C '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
giveitem 0xD 0x1 0x0
release
setflag 0x1E4
end

'-----------------------
#org 0x675179
lock
faceplayer
virtualmsgbox 0x8675184 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x67529C
= Thank you for using the MYSTERY\nGIFT System.\pCongratulations!\pYou have won a prize for winning\nthree battles!\pWe hope you will be inspired to\nbattle some more.

#org 0x675184
= Thank you for using the MYSTERY\nGIFT System.\pYour BATTLE COUNT CARD keeps\ntrack of your battle record against\lTRAINERS with the same CARD.\pLook for and battle TRAINERS who\nhave the same CARD as you.\pYou may check the overall rankings\nby reading the NEWS.\pPlease do give it a try!

Now is are a strange case as there seems to be next to no information on this event. From what I can gather, the idea was you download this wonder card, then speak to the delivery man who will give a secret phrase. You then write down the phrase on the pokemart survey and somehow a trainer will appear in the room behind the boxes in sevii island/sootopolis city (it mention something about sending sending it to a wireless communication system whatever that is)

Event Trainer Battle(?)
FR: 0x4892B9
Spoiler:
'-----------------------
#org 0x4892B9
setvirtualaddress 0x84892B9
checkflag 0x3D8
virtualjumpif 0x1 0x84892F6
copyvarifnotzero 0x0 0x2
special2 0x8008 0x186
compare 0x8008 0x3
virtualjumpif 0x0 0x84892F6
lock
faceplayer
virtualmsgbox 0x8489419 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
giveitem 0xD 0x1 0x0
release
setflag 0x3D8
end

'-----------------------
#org 0x4892F6
lock
faceplayer
virtualmsgbox 0x8489301 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x489419
= Thank you for using the MYSTERY\nGIFT System.\pCongratulations!\pYou have won a prize for winning\nthree battles!\pWe hope you will be inspired to\nbattle some more.

#org 0x489301
= Thank you for using the MYSTERY\nGIFT System.\pYour BATTLE COUNT CARD keeps\ntrack of your battle record against\lTRAINERS with the same CARD.\pLook for and battle TRAINERS who\nhave the same CARD as you.\pYou may check the overall rankings\nby reading the NEWS.\pPlease do give it a try!
LG: 0x488B95
Spoiler:
'-----------------------
#org 0x488B95
setvirtualaddress 0x8488B95
checkflag 0x3D8
virtualjumpif 0x1 0x8488BD2
copyvarifnotzero 0x0 0x2
special2 0x8008 0x186
compare 0x8008 0x3
virtualjumpif 0x0 0x8488BD2
lock
faceplayer
virtualmsgbox 0x8488CF5 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
giveitem 0xD 0x1 0x0
release
setflag 0x3D8
end

'-----------------------
#org 0x488BD2
lock
faceplayer
virtualmsgbox 0x8488BDD '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x488CF5
= Thank you for using the MYSTERY\nGIFT System.\pCongratulations!\pYou have won a prize for winning\nthree battles!\pWe hope you will be inspired to\nbattle some more.

#org 0x488BDD
= Thank you for using the MYSTERY\nGIFT System.\pYour BATTLE COUNT CARD keeps\ntrack of your battle record against\lTRAINERS with the same CARD.\pLook for and battle TRAINERS who\nhave the same CARD as you.\pYou may check the overall rankings\nby reading the NEWS.\pPlease do give it a try!
E: 0x67513C
Spoiler:
'-----------------------
#org 0x67513C
setvirtualaddress 0x867513C
checkflag 0x1E4
virtualjumpif 0x1 0x8675179
copyvarifnotzero 0x0 0x2
special2 0x8008 0x188
compare 0x8008 0x3
virtualjumpif 0x0 0x8675179
lock
faceplayer
virtualmsgbox 0x867529C '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
giveitem 0xD 0x1 0x0
release
setflag 0x1E4
end

'-----------------------
#org 0x675179
lock
faceplayer
virtualmsgbox 0x8675184 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
release
end


'---------
' Strings
'---------
#org 0x67529C
= Thank you for using the MYSTERY\nGIFT System.\pCongratulations!\pYou have won a prize for winning\nthree battles!\pWe hope you will be inspired to\nbattle some more.

#org 0x675184
= Thank you for using the MYSTERY\nGIFT System.\pYour BATTLE COUNT CARD keeps\ntrack of your battle record against\lTRAINERS with the same CARD.\pLook for and battle TRAINERS who\nhave the same CARD as you.\pYou may check the overall rankings\nby reading the NEWS.\pPlease do give it a try!

No idea what this is, the script freezes so there must be something to set, but it mentions a battle count card which doesn't exist(?)

Surfing Pichu Egg
FR: 0x488EB5
Spoiler:
'-----------------------
#org 0x488EB5
setvirtualaddress 0x8488EB5
checkflag 0x3D8
virtualjumpif 0x0 0x8488EC4
jumpram
special2 0x40B5 0x83
compare 0x40B5 0x6
virtualjumpif 0x1 0x8488EEB
setflag 0x3D8
virtualcall 0x8488EF6
lock
faceplayer
virtualmsgbox 0x8488F56 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
fanfare 0x102
waitfanfare
release
end

'-----------------------
#org 0x488EC4
special2 0x40B5 0x83
compare 0x40B5 0x6
virtualjumpif 0x1 0x8488EEB
setflag 0x3D8
virtualcall 0x8488EF6
lock
faceplayer
virtualmsgbox 0x8488F56 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
fanfare 0x102
waitfanfare
release
end

'-----------------------
#org 0x488EEB
lock
faceplayer
virtualmsgbox 0x8488FE3 '"Oh, your party appears to be full.\..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x488EF6
giveegg 0xAC
setobedience 0x40B5
setcatchlocation 0x40B5 0xFF
compare 0x40B5 0x1
virtualjumpif 0x1 0x8488F38
compare 0x40B5 0x2
virtualjumpif 0x1 0x8488F3E
compare 0x40B5 0x3
virtualjumpif 0x1 0x8488F44
compare 0x40B5 0x4
virtualjumpif 0x1 0x8488F4A
compare 0x40B5 0x5
virtualjumpif 0x1 0x8488F50
return

'-----------------------
#org 0x488F38
setpkmnpp 0x1 0x2 0x39
return

'-----------------------
#org 0x488F3E
setpkmnpp 0x2 0x2 0x39
return

'-----------------------
#org 0x488F44
setpkmnpp 0x3 0x2 0x39
return

'-----------------------
#org 0x488F4A
setpkmnpp 0x4 0x2 0x39
return

'-----------------------
#org 0x488F50
setpkmnpp 0x5 0x2 0x39
return


'---------
' Strings
'---------
#org 0x488F56
= Thank you for using the MYSTERY\nGIFT System.\pFrom the POKéMON CENTER we\nhave a gift - a POKéMON EGG!\pPlease raise it with love and\nkindness.

#org 0x488FE3
= Oh, your party appears to be full.\pPlease come see me after storing\na POKéMON on a PC.
LG: 0x488791
Spoiler:
'-----------------------
#org 0x488791
setvirtualaddress 0x8488791
checkflag 0x3D8
virtualjumpif 0x0 0x84887A0
jumpram
special2 0x40B5 0x83
compare 0x40B5 0x6
virtualjumpif 0x1 0x84887C7
setflag 0x3D8
virtualcall 0x84887D2
lock
faceplayer
virtualmsgbox 0x8488832 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
fanfare 0x102
waitfanfare
release
end

'-----------------------
#org 0x4887A0
special2 0x40B5 0x83
compare 0x40B5 0x6
virtualjumpif 0x1 0x84887C7
setflag 0x3D8
virtualcall 0x84887D2
lock
faceplayer
virtualmsgbox 0x8488832 '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
fanfare 0x102
waitfanfare
release
end

'-----------------------
#org 0x4887C7
lock
faceplayer
virtualmsgbox 0x84888BF '"Oh, your party appears to be full.\..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x4887D2
giveegg 0xAC
setobedience 0x40B5
setcatchlocation 0x40B5 0xFF
compare 0x40B5 0x1
virtualjumpif 0x1 0x8488814
compare 0x40B5 0x2
virtualjumpif 0x1 0x848881A
compare 0x40B5 0x3
virtualjumpif 0x1 0x8488820
compare 0x40B5 0x4
virtualjumpif 0x1 0x8488826
compare 0x40B5 0x5
virtualjumpif 0x1 0x848882C
return

'-----------------------
#org 0x488814
setpkmnpp 0x1 0x2 0x39
return

'-----------------------
#org 0x48881A
setpkmnpp 0x2 0x2 0x39
return

'-----------------------
#org 0x488820
setpkmnpp 0x3 0x2 0x39
return

'-----------------------
#org 0x488826
setpkmnpp 0x4 0x2 0x39
return

'-----------------------
#org 0x48882C
setpkmnpp 0x5 0x2 0x39
return


'---------
' Strings
'---------
#org 0x488832
= Thank you for using the MYSTERY\nGIFT System.\pFrom the POKéMON CENTER we\nhave a gift - a POKéMON EGG!\pPlease raise it with love and\nkindness.

#org 0x4888BF
= Oh, your party appears to be full.\pPlease come see me after storing\na POKéMON on a PC.
E: 0x674D3D
Spoiler:
'-----------------------
#org 0x674D3D
setvirtualaddress 0x8674D3D
checkflag 0x1E4
virtualjumpif 0x0 0x8674D4C
jumpram
special2 0x40DD 0x86
compare 0x40DD 0x6
virtualjumpif 0x1 0x8674D73
setflag 0x1E4
virtualcall 0x8674D7E
lock
faceplayer
virtualmsgbox 0x8674DDE '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
fanfare 0x172
waitfanfare
release
end

'-----------------------
#org 0x674D4C
special2 0x40DD 0x86
compare 0x40DD 0x6
virtualjumpif 0x1 0x8674D73
setflag 0x1E4
virtualcall 0x8674D7E
lock
faceplayer
virtualmsgbox 0x8674DDE '"Thank you for using the MYSTERY\nGI..."
waitmsgbox
waitkeypress
fanfare 0x172
waitfanfare
release
end

'-----------------------
#org 0x674D73
lock
faceplayer
virtualmsgbox 0x8674E6A '"Oh, your party appears to be full.\..."
waitmsgbox
waitkeypress
release
end

'-----------------------
#org 0x674D7E
giveegg 0xAC
setobedience 0x40DD
setcatchlocation 0x40DD 0xFF
compare 0x40DD 0x1
virtualjumpif 0x1 0x8674DC0
compare 0x40DD 0x2
virtualjumpif 0x1 0x8674DC6
compare 0x40DD 0x3
virtualjumpif 0x1 0x8674DCC
compare 0x40DD 0x4
virtualjumpif 0x1 0x8674DD2
compare 0x40DD 0x5
virtualjumpif 0x1 0x8674DD8
return

'-----------------------
#org 0x674DC0
setpkmnpp 0x1 0x2 0x39
return

'-----------------------
#org 0x674DC6
setpkmnpp 0x2 0x2 0x39
return

'-----------------------
#org 0x674DCC
setpkmnpp 0x3 0x2 0x39
return

'-----------------------
#org 0x674DD2
setpkmnpp 0x4 0x2 0x39
return

'-----------------------
#org 0x674DD8
setpkmnpp 0x5 0x2 0x39
return


'---------
' Strings
'---------
#org 0x674DDE
= Thank you for using the MYSTERY\nGIFT System.\pFrom the POKéMON CENTER we\nhave a gift--a POKéMON EGG!\pPlease raise it with love and\nkindness.

#org 0x674E6A
= Oh, your party appears to be full.\pPlease come see me after storing\na POKéMON on a PC.

This script doesn't seem to be complete i.e. once the egg is received, the delivery man says nothing when you talk to him again. The egg also doesn't match any known events at all.
__________________

Reply With Quote
  #1082   Link to this post, but load the entire thread.  
Old September 29th, 2018 (12:00 PM).
Jaizu's Avatar
Jaizu Jaizu is offline
Average rom hacker
 
Join Date: Jan 2010
Location: Europe
Gender: Male
Posts: 271
In Fire Red, the Behavior Type 93 in a block just calls a script that shows a text which says:
Quote:
It's a blueprint of some sort.
It's filled with diagrams and text.
The offset for that text is 1C0FD8 and the pointer is at 1A763E
You can look for the script a few bytes before and you will see that the script offset is 1A763C.
Just open the offset with XSE and replace it with a call, so you can make your own scripts in the tiles, like the Headbutt script.
A Headbutt script can be found here: https://www.pokecommunity.com/showthread.php?t=163607
I personally use the second one.


__________________
Reply With Quote
  #1083   Link to this post, but load the entire thread.  
Old September 29th, 2018 (10:33 PM). Edited September 29th, 2018 by Delta231.
Delta231's Avatar
Delta231 Delta231 is offline
A noob
 
Join Date: May 2016
Location: India
Gender: Male
Nature: Bold
Posts: 682
There are unused surf sprites for Players that use Lapras-like blob. More info could be found here. I found it when when finding something else. Each frame is 32x32.




Address: 35FFA8 35BFA8
Palette: 35B968

EDIT: Oops, seem like the address is 35BFA8
__________________
HGSS OWs in FR Style
Fire Red NSE Bookmarks


A supporter of


Reply With Quote
  #1084   Link to this post, but load the entire thread.  
Old October 5th, 2018 (3:10 AM). Edited October 17th, 2018 by kalarie.
kalarie kalarie is online now
 
Join Date: Jun 2008
Posts: 760
@Delta231 The correct offset is 0x35FBA8;)

Something else: The ''warp6'' (0xC4) command in XSE sets where the player will warp when using an Escape Rope or uses Dig.

Didn't see this documented anywhere, so I thought I'd share it here.
Reply With Quote
  #1085   Link to this post, but load the entire thread.  
Old October 5th, 2018 (7:26 AM).
ghoulslash's Avatar
ghoulslash ghoulslash is offline
 
Join Date: Mar 2016
Gender: Male
Posts: 238
Decided to get back into hacking recently after a brief hiatus. Here's a quick something I had been interested in a while ago but never got around to looking into until now.

Expand Trainer Class Name Length: (Fire Red)
Class Names Table Pointers:
0xd80a0, 0x11b4b4
Class Name Size (originally 13 bytes):
0xd8092, 0x11b358

The old name table will be useless, so you will have to make a completely new one (or re-structure old one)

It's been a while, so i don't think this should cause any text to run off screen anywhere, but I could be wrong.
Reply With Quote
  #1086   Link to this post, but load the entire thread.  
Old October 25th, 2018 (6:43 AM). Edited October 25th, 2018 by Jaizu.
Jaizu's Avatar
Jaizu Jaizu is offline
Average rom hacker
 
Join Date: Jan 2010
Location: Europe
Gender: Male
Posts: 271
I edited the berry script of pokémon emerald, so you can replant berries after picking one.
Code:
#dynamic 0xe00000

'---------------
#org 0x2742F9
special 0x2C
copyvar 0x8000 0x8004
compare 0x8000 0xFF
if 0x1 goto @snippet1
compare 0x8000 0x0
if 0x1 goto @snippet2
compare 0x8000 0x1
if 0x1 goto @snippet3
compare 0x8000 0x2
if 0x1 goto @snippet4
compare 0x8000 0x3
if 0x1 goto @snippet5
compare 0x8000 0x4
if 0x1 goto @snippet6
compare 0x8000 0x5
if 0x1 goto @snippet7
end

'---------------
#org @snippet1
lockall
preparemsg @string1 '"!"
waitmsg
waitkeypress
releaseall
end

'---------------
#org @snippet2
lock
faceplayer
special2 LASTRESULT 0x34
compare LASTRESULT 0x1
if 0x1 goto @snippet8
preparemsg @string2 '"It's soft, loamy soil."
waitmsg
waitkeypress
release
end

'---------------
#org @snippet3
lockall
special 0x2E
preparemsg @string3 '"One [buffer1] was planted here."
waitmsg
waitkeypress
goto @snippet9

'---------------
#org @snippet4
lockall
special 0x2D
preparemsg @string4 '"[buffer1] has sprouted."
waitmsg
waitkeypress
goto @snippet9

'---------------
#org @snippet5
lockall
special 0x2D
preparemsg @string5 '"This [buffer1] plant is growing ta..."
waitmsg
waitkeypress
goto @snippet9

'---------------
#org @snippet6
call @snippet10
lockall
special 0x2D
preparemsg @string6 '"These [buffer1] flowers are bloomi..."
waitmsg
waitkeypress
goto @snippet9

'---------------
#org @snippet7
buffernumber 0x1 0x8006
lock
faceplayer
special 0x2E
msgbox @string7 MSG_YESNO '"[player] found [buffer2] [buffer1]..."
compare LASTRESULT 0x1
if 0x1 goto @snippet11
compare LASTRESULT 0x0
if 0x1 goto @snippet12
special 0x31
compare 0x8004 0x0
if 0x1 goto @snippet13
special 0x15F
special 0x32
preparemsg @string8 '"[player] picked the [buffer2] [buf..."
fanfare 0x183
waitmsg
waitfanfare
waitkeypress
preparemsg @string9 '"[player] put away the [buffer1]\ni..."
waitmsg
waitkeypress
release
pause 0x30
call @snippet14
'---------------
#org @snippet8
msgbox @string10 MSG_YESNO '"It's soft, loamy soil.\nWant to pl..."
compare LASTRESULT 0x1
if 0x1 goto @snippet15
compare LASTRESULT 0x0
if 0x1 goto @snippet16
end

'---------------
#org @snippet9
checkitem 0x10C 0x1
compare LASTRESULT 0x0
if 0x1 goto @snippet17
special 0x2D
msgbox @string11 MSG_YESNO '"Want to water the [buffer1] with t..."
compare LASTRESULT 0x1
if 0x1 goto @snippet18
compare LASTRESULT 0x0
if 0x1 goto @snippet17
releaseall
end

'---------------
#org @snippet10
compare 0x8005 0x0
if 0x1 goto @snippet19
compare 0x8005 0x4
if 0x1 goto @snippet20
bufferstring 0x1 @string12 '"prettily"
return

'---------------
#org @snippet11
special 0x31
compare 0x8004 0x0
if 0x1 goto @snippet13
special 0x15F
special 0x32
preparemsg @string8 '"[player] picked the [buffer2] [buf..."
fanfare 0x183
waitmsg
waitfanfare
waitkeypress
preparemsg @string9 '"[player] put away the [buffer1]\ni..."
waitmsg
waitkeypress
release
pause 0x30
call @snippet21
'---------------
#org @snippet12
preparemsg @string13 '"[player] left the [buffer1]\nunpic..."
waitmsg
waitkeypress
release
end

'---------------
#org @snippet13
preparemsg @string14 '"The BAG's BERRIES POCKET is full.\..."
waitmsg
waitkeypress
release
end

'---------------
#org @snippet14
special 0x2C
copyvar 0x8000 0x8004
msgbox @string15 MSG_YESNO '"Do you want to plant another berry..."
compare LASTRESULT 0x1
if 0x1 goto @snippet15
compare LASTRESULT 0x0
if 0x1 goto @snippet16
end

'---------------
#org @snippet15
fadescreen 0x1
closeonkeypress
special 0x2F
waitstate
compare 0x800E 0x0
if 0x1 goto @snippet16
removeitem 0x800E 0x1
call @snippet22
release
end

'---------------
#org @snippet16
release
end

'---------------
#org @snippet17
releaseall
end

'---------------
#org @snippet18
special 0x2D
preparemsg @string16 '"[player] watered the [buffer1]."
waitmsg
special 0x33
special 0x61
waitstate
preparemsg @string17 '"The plant seems to be delighted."
waitmsg
waitkeypress
releaseall
end

'---------------
#org @snippet19
bufferstring 0x1 @string18 '"cutely"
return

'---------------
#org @snippet20
bufferstring 0x1 @string19 '"very beautifully"
return

'---------------
#org @snippet21
special 0x2C
copyvar 0x8000 0x8004
msgbox @string20 MSG_YESNO '"Do you want to plant another berry..."
compare LASTRESULT 0x1
if 0x1 goto @snippet15
compare LASTRESULT 0x0
if 0x1 goto @snippet16
end

'---------------
#org @snippet22
special 0x30
cmdc3 0x3
special 0x15E
special 0x2E
preparemsg @string21 '"[player] planted one [buffer1] in\..."
waitmsg
waitkeypress
return


'---------
' Strings
'---------
#org @string1
= !

#org @string2
= It's soft, loamy soil.

#org @string3
= One [buffer1] was planted here.

#org @string4
= [buffer1] has sprouted.

#org @string5
= This [buffer1] plant is growing taller.

#org @string6
= These [buffer1] flowers are blooming\n[buffer2].

#org @string7
= [player] found [buffer2] [buffer1]!\pDo you want to pick the\n[buffer1]?

#org @string8
= [player] picked the [buffer2] [buffer1].

#org @string9
= [player] put away the [buffer1]\nin the BAG's BERRIES POCKET.\pThe soil returned to its soft and\nloamy state.

#org @string10
= It's soft, loamy soil.\nWant to plant a BERRY?

#org @string11
= Want to water the [buffer1] with the\nWAILMER PAIL?

#org @string12
= prettily

#org @string13
= [player] left the [buffer1]\nunpicked.

#org @string14
= The BAG's BERRIES POCKET is full.\pThe [buffer1] couldn't be taken.

#org @string15
= Do you want to plant another berry?

#org @string16
= [player] watered the [buffer1].

#org @string17
= The plant seems to be delighted.

#org @string18
= cutely

#org @string19
= very beautifully

#org @string20
= Do you want to plant another berry?

#org @string21
= [player] planted one [buffer1] in\nthe soft, loamy soil.
Edited: Fixed it. Tomorrow I will add the wailmer pail stuff. Sometimes when you compile text breaks. Just open your script and replace the texts with the original ones, and it will get fixed.
__________________
Reply With Quote
  #1087   Link to this post, but load the entire thread.  
Old October 26th, 2018 (9:39 PM). Edited February 13th, 2020 by Zeturic.
Zeturic's Avatar
Zeturic Zeturic is offline
 
Join Date: Mar 2007
Posts: 787
Evolution Moves [FR]

I apparently forgot to post this here when I finished it a few months back.

Basically, it adds in support for Gen VII-style evolution moves. These are moves that are learned upon evolution, regardless of what level the evolution happens on. A Pokemon can have multiple evolution moves (like Lanturn).
Reply With Quote
  #1088   Link to this post, but load the entire thread.  
Old October 29th, 2018 (11:09 AM).
UltimaSoul UltimaSoul is offline
 
Join Date: May 2018
Posts: 53
Selphy's Random Items [FR]

At 0x83F5B30 is an array of 6 item indexes of items that Lady Selphy may give away when you show her a Pokemon.

This does not include the Luxury Ball. special 0x15D looks at this array if the Luxury Ball isn't chosen and randomly picks one and puts it into var 0x403B.
Reply With Quote
  #1089   Link to this post, but load the entire thread.  
Old October 31st, 2018 (4:08 PM).
UltimaSoul UltimaSoul is offline
 
Join Date: May 2018
Posts: 53
The very well-known tall grass fix found here had a minor bug involving the Cycling Road/Route 17 grass have the tall grass animation as well.

The problem was that it was looping back to comparing the grass with D1 as its behaviour byte right after comparing 03 for the tall grass. This resulted in D1 grass taking on the tall grass behaviour byte. The correct loop is the one where 1 is put into r0 and then returns to its callee.

The completely fixed tall grass fix is:

Code:
00 21 00 06 00 0E 02 28 01 D0 D1 28 01 D1 01 20 00 E0 00 20 00 21 70 47 03 28 FB D0
pasted at 0x8059F34.

The fix was actually the last two bytes being changed from F5 E7 to FB D0 to fix the looping back only when the behaviour byte is 03.
Reply With Quote
  #1090   Link to this post, but load the entire thread.  
Old November 7th, 2018 (12:24 AM). Edited November 12th, 2018 by RoadToCerulean.
RoadToCerulean's Avatar
RoadToCerulean RoadToCerulean is offline
A Ordinary Kanto Lover
 
Join Date: Oct 2016
Location: Route 1 (Kanto)
Gender: Male
Nature: Modest
Posts: 205
Personal Researches
1. Bug fixes and improvements in "Making the 'seen' amount of Pokédex displayed in the 'Continue' screen and the save screen instead of the caught numbers":
Spoiler:
(a) In addition to Jambo51's post, to make things work in a Trainer's Card in FireRed, make such modifications:
Code:
0x808A0EA: 00 20 @ 01 20 originally
0x808A0F2: 00 20 @ 01 20 originally
(b) In Ruby, make such modifications:
Code:
0x808C43E: 00 20 @ 01 20 originally (Edit: Sorry, don't change this value or the caught amount will be displayed as the seen amount.)
0x80948D6: 00 20 @ 01 20 originally
0x810D450: 00 20 @ 01 20 originally
Credits to Jambo51, Xencleamas and MWisBest.

2. Adding the Fairy type into Ruby without replacing or damaging contests:
Spoiler:
Step 1: Read destinedjagold's original thread of inserting the Fairy type into Ruby; (It is flawed because some contest conditions are overwritten)

Step 2: Read MrDollSteak's original thread of inserting the Fairy type into Emerald;

Step 3: Obtain the type chart in MrDollSteak's tutorial. Insert it into free space as a 16-color compressed image;

Step 4: Repoint the icon position table (in Ruby, it is at 0x83C115C). Follow Parts 1-5 to 1-8 in MrDollSteak's tutorial, but remember you are hacking Ruby instead of Emerald, hehe;

Step 5: Modify strength and weakness chart and repoint in-battle type names. Follow the instructions in either tutorial;

Edited 11/13: Need an extra Step 6: Expand and repoint the table at 0x83F59C8 for Pokédex search functions (by type). There is not such a table in Ruby as that at 0x82F029C in Emerald so just ignore it.

Credits to destinedjagold and MrDollSteak.


3. Implementing a "Town Map" item in Ruby and Emerald:
Spoiler:
Step 1: Read Chaos Rush's thread of "Useful Emerald Stuff". Step 3A is taken from this;

Step 2: Load the ROM LSA - Complete Item Editor;

Step 3A: In Emerald, navigate to item 0x169 (Town Map). In the "Field Effect" function of the "Usage" tab, select "custom" and put 08138C95 in the address box. Save;

Step 3B: In Ruby, we must choose an unused item, e. g. 0x34. Rename it to "Town Map" and insert its description. Then, In the "Field Effect" function of the "Usage" tab, select "custom" and put 0810E415 in the address box. Save;

Step 4: Test it out! (Note: After the map is viewed, the screen will revert to the overworld instead of the bag)

Explanation: Calling special 0xFB in Ruby or special 0xFE in Emerald will bring up the Town Map.

Credits to Chaos Rush.


4. Extending Trainer Class name length limit in Ruby and Emerald:
Spoiler:
Quote:
Originally Posted by ghoulslash View Post
Decided to get back into hacking recently after a brief hiatus. Here's a quick something I had been interested in a while ago but never got around to looking into until now.

Expand Trainer Class Name Length: (Fire Red)
Class Names Table Pointers:
0xd80a0, 0x11b4b4
Class Name Size (originally 13 bytes):
0xd8092, 0x11b358

The old name table will be useless, so you will have to make a completely new one (or re-structure old one)

It's been a while, so i don't think this should cause any text to run off screen anywhere, but I could be wrong.
(a) In Ruby, the Trainer Class name table is at 0x81F0208, and the length limit byte is at 0x812171C.

(b) In Emerald, the Trainer Class name table is at 0x830FCD4, and the length limit byte is at 0x814F15C.

Screenshots:
Spoiler:


Credits to ghoulslash for originally finding the FireRed offsets;
__________________

You are challenged by Pokémon Trainers Red, Blue & Leaf!
My remixed music list: Here
My deviantART page: Here
Reply With Quote
  #1091   Link to this post, but load the entire thread.  
Old November 11th, 2018 (9:12 AM). Edited November 11th, 2018 by igorfs10.
igorfs10's Avatar
igorfs10 igorfs10 is offline
 
Join Date: Dec 2015
Location: Brazil
Gender: Male
Nature: Calm
Posts: 53
I changed Jaizu's script to ask the player to use wailmer pail after planting.
Thanks Jaizu for script.
Code:
#dynamic 0xe00000

'---------------
#org 0x2742F9
special 0x2C
copyvar 0x8000 0x8004
compare 0x8000 0xFF
if 0x1 goto @snippet1
compare 0x8000 0x0
if 0x1 goto @snippet2
compare 0x8000 0x1
if 0x1 goto @snippet3
compare 0x8000 0x2
if 0x1 goto @snippet4
compare 0x8000 0x3
if 0x1 goto @snippet5
compare 0x8000 0x4
if 0x1 goto @snippet6
compare 0x8000 0x5
if 0x1 goto @snippet7
end

'---------------
#org @snippet1
lockall
preparemsg @string1 '"!"
waitmsg
waitkeypress
releaseall
end

'---------------
#org @snippet2
lock
faceplayer
special2 LASTRESULT 0x34
compare LASTRESULT 0x1
if 0x1 goto @snippet8
preparemsg @string2 '"It's soft, loamy soil."
waitmsg
waitkeypress
release
end

'---------------
#org @snippet3
lockall
special 0x2E
preparemsg @string3 '"One [buffer1] was planted here."
waitmsg
waitkeypress
goto @snippet9

'---------------
#org @snippet4
lockall
special 0x2D
preparemsg @string4 '"[buffer1] has sprouted."
waitmsg
waitkeypress
goto @snippet9

'---------------
#org @snippet5
lockall
special 0x2D
preparemsg @string5 '"This [buffer1] plant is growing ta..."
waitmsg
waitkeypress
goto @snippet9

'---------------
#org @snippet6
call @snippet10
lockall
special 0x2D
preparemsg @string6 '"These [buffer1] flowers are bloomi..."
waitmsg
waitkeypress
goto @snippet9

'---------------
#org @snippet7
buffernumber 0x1 0x8006
lock
faceplayer
special 0x2E
msgbox @string7 MSG_YESNO '"[player] found [buffer2] [buffer1]..."
compare LASTRESULT 0x1
if 0x1 goto @snippet11
compare LASTRESULT 0x0
if 0x1 goto @snippet12
special 0x31
compare 0x8004 0x0
if 0x1 goto @snippet13
special 0x15F
special 0x32
preparemsg @string8 '"[player] picked the [buffer2] [buf..."
fanfare 0x183
waitmsg
waitfanfare
waitkeypress
preparemsg @string9 '"[player] put away the [buffer1]\ni..."
waitmsg
waitkeypress
release
pause 0x30
call @snippet14
'---------------
#org @snippet8
msgbox @string10 MSG_YESNO '"It's soft, loamy soil.\nWant to pl..."
compare LASTRESULT 0x1
if 0x1 goto @snippet15
compare LASTRESULT 0x0
if 0x1 goto @snippet16
end

'---------------
#org @snippet9
checkitem 0x10C 0x1
compare LASTRESULT 0x0
if 0x1 goto @snippet17
special 0x2D
msgbox @string11 MSG_YESNO '"Want to water the [buffer1] with t..."
compare LASTRESULT 0x1
if 0x1 goto @snippet18
compare LASTRESULT 0x0
if 0x1 goto @snippet17
releaseall
end

'---------------
#org @snippet10
compare 0x8005 0x0
if 0x1 goto @snippet19
compare 0x8005 0x4
if 0x1 goto @snippet20
bufferstring 0x1 @string12 '"prettily"
return

'---------------
#org @snippet11
special 0x31
compare 0x8004 0x0
if 0x1 goto @snippet13
special 0x15F
special 0x32
preparemsg @string8 '"[player] picked the [buffer2] [buf..."
fanfare 0x183
waitmsg
waitfanfare
waitkeypress
preparemsg @string9 '"[player] put away the [buffer1]\ni..."
waitmsg
waitkeypress
release
goto @snippet21
'---------------
#org @snippet12
preparemsg @string13 '"[player] left the [buffer1]\nunpic..."
waitmsg
waitkeypress
release
end

'---------------
#org @snippet13
preparemsg @string14 '"The BAG's BERRIES POCKET is full.\..."
waitmsg
waitkeypress
release
end

'---------------
#org @snippet14
special 0x2C
copyvar 0x8000 0x8004
msgbox @string15 MSG_YESNO '"Do you want to plant another berry..."
compare LASTRESULT 0x1
if 0x1 goto @snippet15
compare LASTRESULT 0x0
if 0x1 goto @snippet16
end

'---------------
#org @snippet15
fadescreen 0x1
closeonkeypress
special 0x2F
waitstate
compare 0x800E 0x0
if 0x1 goto @snippet16
removeitem 0x800E 0x1
goto @snippet22
release
end

'---------------
#org @snippet16
release
end

'---------------
#org @snippet17
releaseall
end

'---------------
#org @snippet18
special 0x2D
preparemsg @string16 '"[player] watered the [buffer1]."
waitmsg
special 0x33
special 0x61
waitstate
preparemsg @string17 '"The plant seems to be delighted."
waitmsg
waitkeypress
releaseall
end

'---------------
#org @snippet19
bufferstring 0x1 @string18 '"cutely"
return

'---------------
#org @snippet20
bufferstring 0x1 @string19 '"very beautifully"
return

'---------------
#org @snippet21
special 0x2C
copyvar 0x8000 0x8004
msgbox @string20 MSG_YESNO '"Do you want to plant another berry..."
compare LASTRESULT 0x1
if 0x1 goto @snippet15
compare LASTRESULT 0x0
if 0x1 goto @snippet16
end

'---------------
#org @snippet22
special 0x30
cmdc3 0x3
special 0x15E
special 0x2E
preparemsg @string21 '"[player] planted one [buffer1] in\..."
waitmsg
waitkeypress
goto @snippet9


'---------
' Strings
'---------
#org @string1
= !

#org @string2
= It's soft, loamy soil.

#org @string3
= One [buffer1] was planted here.

#org @string4
= [buffer1] has sprouted.

#org @string5
= This [buffer1] plant is growing taller.

#org @string6
= These [buffer1] flowers are blooming\n[buffer2].

#org @string7
= [player] found [buffer2] [buffer1]!\pDo you want to pick the\n[buffer1]?

#org @string8
= [player] picked the [buffer2] [buffer1].

#org @string9
= [player] put away the [buffer1]\nin the BAG's BERRIES POCKET.\pThe soil returned to its soft and\nloamy state.

#org @string10
= It's soft, loamy soil.\nWant to plant a BERRY?

#org @string11
= Want to water the [buffer1] with the\nWAILMER PAIL?

#org @string12
= prettily

#org @string13
= [player] left the [buffer1]\nunpicked.

#org @string14
= The BAG's BERRIES POCKET is full.\pThe [buffer1] couldn't be taken.

#org @string15
= Do you want to plant another berry?

#org @string16
= [player] watered the [buffer1].

#org @string17
= The plant seems to be delighted.

#org @string18
= cutely

#org @string19
= very beautifully

#org @string20
= Do you want to plant another berry?

#org @string21
= [player] planted one [buffer1] in\nthe soft, loamy soil.
Reply With Quote
  #1092   Link to this post, but load the entire thread.  
Old November 13th, 2018 (5:36 AM).
eMMe97 eMMe97 is offline
 
Join Date: Jan 2015
Posts: 51
Quote:
Originally Posted by Sagiri View Post
Wonder Trade with NPC Trainers [FR]

Basically, this is a WT system that uses the NPC trainer data as the pool of potential trades. It picks a random trainer, and a random slot from that trainer's party, and that's what you get traded.

The repo is here.

In case it's not obvious, this includes the actual trade animation, and the Pokemon in question will keep the NPC trainer's OT ID and OT Name, as well as any held item and custom moves it may have assigned to it.

Additionally, if the Pokemon you receive evolves by trade, it will evolve when you get it. Trade + Held Item evolutions would work as well, but I doubt there are many NPC trainers that have Scythers with Metal Coats (for example).

A few things to keep in mind if you decide to use this:
  • You could end up with a Nat'l Dex Pokemon early. You'll probably want to enable foreign Pokemon trading and evolution, assuming you aren't simply giving out the Nat'l Dex at the beginning of the game.
  • Some NPC trainers such as Giovanni have names that are too long to fit in the OT Name field. These trainers are excluded from the pool.
  • Any Pokemon that isn't included in a team of an eligible trainer can't be received at all.
  • It is possible to get the same Pokemon multiple times.
  • You'll probably trade with a lot of people named GRUNT.
When I edit the tdan with the command python scripts/makinoa I recived this error message :S

Code:
Traceback (most recent call last):
  File "C:\Python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "scripts/makinoa\__main__.py", line 94, in <module>
    os.path.join(build_src, srcfile.replace(".c", ".o"))
  File "C:\Python37\lib\subprocess.py", line 466, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\Python37\lib\subprocess.py", line 769, in __init__
    restore_signals, start_new_session)
  File "C:\Python37\lib\subprocess.py", line 1172, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] Impossibile trovare il file specificato

I have installed
python 3.7.1 (with vars)
devkitARM (with vars)
ARMIPS.exe in the folder
Reply With Quote
  #1093   Link to this post, but load the entire thread.  
Old November 22nd, 2018 (6:56 PM).
Super Versekr Dark Super Versekr Dark is offline
 
Join Date: Jan 2017
Gender: Male
Posts: 79
Help plis:

Spoiler:

/****** NEW GEN EXP SHARE + EGG EXP FIX *******
************** Ruby VERSION ********************
Es necesario realizar las siguientes ediciones en el rom:
- Ve a 0x080201E2 y escribe los bytes "02 21"
- Ve a 0x08020336 y escribe los bytes "01 20"
- Ve a 0x08020278 y escribe lo siguiente:
"C0 46 00 4A 10 47 [XX+1 XX XX 08] 04 BC"
siendo [XX+1 XX XX 08] el pointer permutado a esta rutina
************************************************
Es también importante recalcar que debéis escoger el flag que
vais a utilizar para activar/desactivar la rutina.
De la misma forma debéis escoger una variable que utilizará
está rutina para almacenar un valor de control.
************************************************
************************************************
************************************************
Créditos a BluRose, Lunos and samus *********************
************************************************
************************************************/

.align 2
.thumb

no_crash:
ldr r0, [r5]
mov r1, r0
add r1, #0x53
ldrb r0, [r1]

flag_check:
push {r0-r2}
ldr r0, flag_number
ldr r2, flag_routine
push {r1-r3}
bl linker
pop {r1-r3}
cmp r0, #0x1
bne routine_off
pop {r0-r2}

main:
push {r3-r6}
ldr r6, slot_var
ldrb r3, [r6]
ldr r4, is_egg_party
mov r5, #0x64
mul r5, r5, r3
ldrb r4, [r4, r5]
cmp r4, #0x6
beq pokemonIsEgg
mov r2, #0x1
b update_slot

pokemonIsEgg:
mov r2, #0x0

update_slot:
add r3, #0x1
cmp r3, #0x6
bne end
mov r3, #0x0

end:
strh r3, [r6]
pop {r3-r6}

return:
push {r2}
ldr r2, return_dir
bx r2

routine_off:
pop {r0-r2}
mov r2, #0x1
and r2, r0
b return

linker:
bx r2

.align 2
flag_number:
.word 0x00000[XXX]
flag_routine:
.word 0x08069340 +1
slot_var:
.word 0x02025280 + (0x400[X] * 2)
is_egg_party:
.word 0x02022928 + 0x13
return_dir:
.word 0x08020284 + 1



The routine does not give experience when using movements like absorbs, mega drain or giga drain, in addition to giving experience without having the active flag, also I do not know if the var is the correct one.
Reply With Quote
  #1094   Link to this post, but load the entire thread.  
Old November 25th, 2018 (11:04 AM).
pikachux2's Avatar
pikachux2 pikachux2 is offline
Never Evolve
 
Join Date: Mar 2010
Location: USA
Gender: Male
Nature: Jolly
Posts: 115
I'm confused on hex locations here. We all know the game doesn't code past a certain part in its allotted space (roughly 0x700000-0x800000, or whatever). Can someone help me make sense of the locations mentioned in this quote?

Quote:
Originally Posted by esperance View Post
For anyone that wants to change the badge required for surf, the offset of the flag is 0806D59C. Also, I'm pretty sure that 0806D5D0 is waterfall, but I haven't tested it. (FireRed)
0806D5D0? Is this just 06D5D0? Or am I missing something here because I feel like I see these large offsets that I can't CTRL+G often. Thanks.
Reply With Quote
  #1095   Link to this post, but load the entire thread.  
Old November 25th, 2018 (12:04 PM).
Koople's Avatar
Koople Koople is offline
 
Join Date: Nov 2016
Nature: Relaxed
Posts: 88
Quote:
Originally Posted by pikachux2 View Post
I'm confused on hex locations here. We all know the game doesn't code past a certain part in its allotted space (roughly 0x700000-0x800000, or whatever). Can someone help me make sense of the locations mentioned in this quote?



0806D5D0? Is this just 06D5D0? Or am I missing something here because I feel like I see these large offsets that I can't CTRL+G often. Thanks.
The 08 prefix says that it is part of read-only memory (ROM). So if you see 08xxxxxx, it means you can find the offset in your hex editor by dropping the 08 in front. So you are correct, 06D5D0 would be the correct offset.
Reply With Quote
  #1096   Link to this post, but load the entire thread.  
Old November 25th, 2018 (12:24 PM).
pikachux2's Avatar
pikachux2 pikachux2 is offline
Never Evolve
 
Join Date: Mar 2010
Location: USA
Gender: Male
Nature: Jolly
Posts: 115
Quote:
Originally Posted by Koople View Post
The 08 prefix says that it is part of read-only memory (ROM). So if you see 08xxxxxx, it means you can find the offset in your hex editor by dropping the 08 in front. So you are correct, 06D5D0 would be the correct offset.
Thanks!
Reply With Quote
  #1097   Link to this post, but load the entire thread.  
Old November 28th, 2018 (3:13 AM).
pikachux2's Avatar
pikachux2 pikachux2 is offline
Never Evolve
 
Join Date: Mar 2010
Location: USA
Gender: Male
Nature: Jolly
Posts: 115
Anyone know how to go about giving Pokémon a chance to flee when in the wild, like they would in the safari zone, where it checks the Pokémon's 'run rate'?
Reply With Quote
  #1098   Link to this post, but load the entire thread.  
Old November 29th, 2018 (6:41 PM).
Lance Koijer 2.0 Lance Koijer 2.0 is offline
Lance Koijer
 
Join Date: Apr 2018
Location: Criscanto Town
Gender: Male
Nature: Adamant
Posts: 104
Quote:
Originally Posted by MrDollSteak View Post
I've located a table that is possibly useful for ASM hackers (certainly those doing abilities). It controls the end of turn effects that tend to do damage such as Leech Seed, Burn, Poison and Nightmare (among other things).

In Fire Red it is located at 0182FC, and in Emerald at 0409C8.

I'm compiling a list of effects that will correspond to the relevant 4 byte entries (they're just pointers that get loaded).

Spoiler:
Entry 3 - Leech Seed Damage
Entry 4 - Poison Damage
Entry 5 - Toxic Poison Damage
Entry 6 - Burn Damage
Entry 7 - Nightmare Damage
Entry 8 - Curse Damage
Entry 9 - Wrap, Fire Spin, Whirlpool, etc. Damage
Can we expand and repoint thi table so we can add new one? If so, does it have any limiter?
Reply With Quote
  #1099   Link to this post, but load the entire thread.  
Old November 29th, 2018 (7:29 PM).
Noodlewhiz's Avatar
Noodlewhiz Noodlewhiz is offline
 
Join Date: Apr 2017
Posts: 71
Quote:
Originally Posted by Lance Koijer 2.0 View Post
Can we expand and repoint thi table so we can add new one? If so, does it have any limiter?
https://www.pokecommunity.com/showpost.php?p=8772423&postcount=597
Reply With Quote
  #1100   Link to this post, but load the entire thread.  
Old December 16th, 2018 (12:24 PM).
Squeetz's Avatar
Squeetz Squeetz is offline
ROM Hacker
 
Join Date: Jun 2013
Location: Norway
Age: 25
Gender: Male
Nature: Quiet
Posts: 236
To make the bike's usability in Firered be based on map type instead of the 18th byte in the map header structure, paste-write at 0x55C9C:
Code:
00200449C97D052902D0082900D0012070470000FC6D0302
Source:
Spoiler:

.org 0x55C9C
mov r0, #0x0
ldr r1, =(gMapHeader)
ldrb r1, [r1, #0x17] @mapType
cmp r1, #0x5 @underwater
beq bike_return
cmp r1, #0x8 @inside
beq bike_return
mov r0, #0x1
bike_return:
bx lr
.align 2, 0
gMapHeader: .word 0x02036DFC

After this, instead of having to set the 18th byte manually in the map header each time you create a new map, you just need to set the correct map type.
As far as I know, this doesn't affect any bike-able maps already in the game except for the Underground Path which is set to Inside, but you can change that easily.
__________________
Reply With Quote
Reply

Quick Reply

Join the conversation!

Create an account to post a reply in this thread, participate in other discussions, and more!

Create a PokéCommunity Account
Ad Content
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 8:53 AM.