The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Research & Development
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. 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!
Research & Development programs in this forum are subject to moderator approval before they are displayed.


Advertise here

Reply
Click here to go to the first staff post in this thread.  
Thread Tools
  #226    
Old November 14th, 2013, 05:21 AM
Hound of Justice
Banned
 
Join Date: Aug 2012
Location: Stealing Ash's Pikachu with Meowth
Age: 21
Gender: Male
Nature: Naughty

Advertise here
Lol i want to see a hack with a hg ss type follow me some day
Reply With Quote
  #227    
Old November 22nd, 2013, 08:45 PM
jsierra008
 
Join Date: May 2011
Gender: Male
Hi there, maybe the last advance about the ram data are usefull but maybe we can study the system used on the script of RPGMaKeR pokemon games on it are created mulriple events (because on it can follow thru 6 pokemon) but esentially an event are created on the map; if i'm not remember too bad its on map at once, my knowledge un Ruby is't closely to Zero but maybe somebody can study and compare the posible syntax comon fuction.

Its only an idea ;P
Reply With Quote
  #228    
Old November 22nd, 2013, 09:16 PM
Shiny Quagsire's Avatar
Shiny Quagsire
どないやねん, ヤドン
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
Quote:
Originally Posted by jsierra008 View Post
Hi there, maybe the last advance about the ram data are usefull but maybe we can study the system used on the script of RPGMaKeR pokemon games on it are created mulriple events (because on it can follow thru 6 pokemon) but esentially an event are created on the map; if i'm not remember too bad its on map at once, my knowledge un Ruby is't closely to Zero but maybe somebody can study and compare the posible syntax comon fuction.

Its only an idea ;P
__________________




Last edited by Shiny Quagsire; November 24th, 2013 at 05:00 PM.
Reply With Quote
  #229    
Old November 26th, 2013, 11:08 PM
Adura's Avatar
Adura
 
Join Date: Oct 2012
Gender: Male
It's been awhile since I looked at it, but here's my attempt at a follow script. It works nice, for some things, but has serious limitations.

Here's the video of it in action:


Limitations:

1) The sprite doesn't follow when changing areas, including changing routes. I bypassed this by setting up sprites in 'unseeable' areas, then teleporting them as needed when the player enters new areas. (This is seen when the player leaves buildings in the video)

2) Tests showed that battles work as normal....until I edited the code forever ago >.<. I think they still work, but haven't tested it. The code should support normal battle functions.

3) Requires the hacked FireRed Engine/

4) Doesn't currently track swimming or jumping. It does take into account running, but I don't remember if the current version does. (A past version does, but I lost that one.)

Here's the code snippets. It's been forever, so I don't remember if this is all of it or not.

Spoiler:
Loading the Follower Script Information:

'---------------
#dynamic 0x00900220
#org 0x00900220
loadpointer 0x0 0x00900000
special 0x81
setvar 0x5000 0x1
checkflag 0x1005
if 0x1 call @end
getplayerpos 0x5018 0x5019
getplayerpos 0x5020 0x5021
movesprite 0xFE 0x5018 0x5019
getplayerpos 0x5014 0x5015
getplayerpos 0x5016 0x5017
release
end

#org @end
release
end


Spoiler:
The follow script itself:


'---------
' Strings
'---------
#dynamic 0x00900000
#org 0x900000
release
checkflag 0x1005
if 0x1 call @end
copyvar 0x5010 0x5018
copyvar 0x5011 0x5019
copyvar 0x5012 0x5020
copyvar 0x5013 0x5021
copyvar 0x5006 0x5014
copyvar 0x5007 0x5015
copyvar 0x5008 0x5016
copyvar 0x5009 0x5017
subvar 0x5011 0x5007
compare 0x5011 0x1
if 0x1 call @MoveDown
subvar 0x5009 0x5013
compare 0x5009 0x1
if 0x1 call @MoveUp
subvar 0x5010 0x5006
compare 0x5010 0x1
if 0x1 call @MoveRight
subvar 0x5008 0x5012
compare 0x5008 0x1
if 0x1 call @MoveLeft
copyvar 0x5014 0x5018
copyvar 0x5015 0x5019
copyvar 0x5016 0x5020
copyvar 0x5017 0x5021
getplayerpos 0x5018 0x5019
getplayerpos 0x5020 0x5021
call 0x00905000

Special 0x8f /*the trainer position special*/
Special2 0x800d 0x7f /*returns 1 if ground battles, 2 if water battles*/
Compare 0x800d 0x1
If 0x1 call @grass
Compare 0x800d 0x2
If 0x1 call @water
return



#org @WentDown
applymovement 0xFE @Move1
return

#org @WentUp
applymovement 0xFE @Move2
return

#org @WentLeft
applymovement 0xFE @Move3
return

#org @WentRight
applymovement 0xFE @Move4
return

#org @WentDownRun
applymovement 0xFE @Move5
return

#org @WentUpRun
applymovement 0xFE @Move6
return

#org @WentLeftRun
applymovement 0xFE @Move7
return

#org @WentRightRun
applymovement 0xFE @Move8
return

#org @grass
Special 0x97 /*generates a random grass battle*/
return

#org @water
Special 0x98 /*generates a random water battle*/
return

'-----------
' Movements
'-----------
#org @Move1
#raw 0x10 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move2
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move3
#raw 0x12 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move4
#raw 0x13 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move5
#raw 0x1D 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move6
#raw 0x1E 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move7
#raw 0x1F 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move8
#raw 0x20 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @MoveDown
checkflag 0x82F
if 0x0 call @WentDown
if 0x1 call @CheckRunDown
return

#org @CheckRunDown
special2 0x8006 0x2b
compare 0x8006 0x3
if 0x1 call @WentDownRun
compare 0x8006 0x2
if 0x1 call @WentDownRun
if 0x0 call @WentDown
return

#org @MoveUp
checkflag 0x82F
if 0x0 call @WentUp
if 0x1 call @CheckRunUp
return

#org @CheckRunUp
special2 0x8006 0x2b
compare 0x8006 0x3
if 0x1 call @WentUpRun
compare 0x8006 0x2
if 0x1 call @WentUpRun
if 0x0 call @WentUp
return

#org @MoveLeft
checkflag 0x82F
if 0x0 call @WentLeft
if 0x1 call @CheckRunLeft
return

#org @CheckRunLeft
special2 0x8006 0x2b
compare 0x8006 0x3
if 0x1 call @WentLeftRun
compare 0x8006 0x2
if 0x1 call @WentLeftRun
if 0x0 call @WentLeft
return

#org @MoveRight
checkflag 0x82F
if 0x0 call @WentRight
if 0x1 call @CheckRunRight
return

#org @CheckRunRight
special2 0x8006 0x2b
compare 0x8006 0x3
if 0x1 call @WentRightRun
compare 0x8006 0x2
if 0x1 call @WentRightRun
if 0x0 call @WentRight
return


#org @end
call 0x00905000
Special 0x8f /*the trainer position special*/
Special2 0x800d 0x7f /*returns 1 if ground battles, 2 if water battles*/
Compare 0x800d 0x1
If 0x1 call @grass
Compare 0x800d 0x2
If 0x1 call @water
end


If I remember correctly, this script only needs to be enacted once. Then it will work so long as the follower is within the same map. (Thus, when changing maps, the follower needs to be placed behind or at the player).

Hope this helps some of you =/ I've left Pokemon hacking and went back to Skyrim >_<.

To those who sent me PMs. Sorry, didn't see them >_< But here you go! :D
__________________
Aspiring to greatness~
Reply With Quote
  #230    
Old December 27th, 2013, 01:35 AM
luke9631
 
Join Date: Jan 2013
Gender: Male
First of all, thanks for sharing the code.
Anyway, I really don't like copy-pasting and I was wondering if you can add some comments or explain me all these "copyvar, subvar, getplayerpos...". I mean, I know what they does, but how did you choose the parameters and so?
Furthermore, what do I have to do whit the "Loading the Follower Script Information" script?
Thenks a lot and sorry for bad english
Reply With Quote
  #231    
Old December 27th, 2013, 02:35 AM
Flower's Avatar
Flower
ワイルドフラワー
 
Join Date: Nov 2013
Location: Void
Gender: Male
Nature: Quiet
Send a message via Skype™ to Flower
Quote:
Originally Posted by Adura View Post
It's been awhile since I looked at it, but here's my attempt at a follow script. It works nice, for some things, but has serious limitations.

Here's the video of it in action:


Limitations:

1) The sprite doesn't follow when changing areas, including changing routes. I bypassed this by setting up sprites in 'unseeable' areas, then teleporting them as needed when the player enters new areas. (This is seen when the player leaves buildings in the video)

2) Tests showed that battles work as normal....until I edited the code forever ago >.<. I think they still work, but haven't tested it. The code should support normal battle functions.

3) Requires the hacked FireRed Engine/

4) Doesn't currently track swimming or jumping. It does take into account running, but I don't remember if the current version does. (A past version does, but I lost that one.)

Here's the code snippets. It's been forever, so I don't remember if this is all of it or not.

Spoiler:
Loading the Follower Script Information:

'---------------
#dynamic 0x00900220
#org 0x00900220
loadpointer 0x0 0x00900000
special 0x81
setvar 0x5000 0x1
checkflag 0x1005
if 0x1 call @end
getplayerpos 0x5018 0x5019
getplayerpos 0x5020 0x5021
movesprite 0xFE 0x5018 0x5019
getplayerpos 0x5014 0x5015
getplayerpos 0x5016 0x5017
release
end

#org @end
release
end


Spoiler:
The follow script itself:


'---------
' Strings
'---------
#dynamic 0x00900000
#org 0x900000
release
checkflag 0x1005
if 0x1 call @end
copyvar 0x5010 0x5018
copyvar 0x5011 0x5019
copyvar 0x5012 0x5020
copyvar 0x5013 0x5021
copyvar 0x5006 0x5014
copyvar 0x5007 0x5015
copyvar 0x5008 0x5016
copyvar 0x5009 0x5017
subvar 0x5011 0x5007
compare 0x5011 0x1
if 0x1 call @MoveDown
subvar 0x5009 0x5013
compare 0x5009 0x1
if 0x1 call @MoveUp
subvar 0x5010 0x5006
compare 0x5010 0x1
if 0x1 call @MoveRight
subvar 0x5008 0x5012
compare 0x5008 0x1
if 0x1 call @MoveLeft
copyvar 0x5014 0x5018
copyvar 0x5015 0x5019
copyvar 0x5016 0x5020
copyvar 0x5017 0x5021
getplayerpos 0x5018 0x5019
getplayerpos 0x5020 0x5021
call 0x00905000

Special 0x8f /*the trainer position special*/
Special2 0x800d 0x7f /*returns 1 if ground battles, 2 if water battles*/
Compare 0x800d 0x1
If 0x1 call @grass
Compare 0x800d 0x2
If 0x1 call @water
return



#org @WentDown
applymovement 0xFE @Move1
return

#org @WentUp
applymovement 0xFE @Move2
return

#org @WentLeft
applymovement 0xFE @Move3
return

#org @WentRight
applymovement 0xFE @Move4
return

#org @WentDownRun
applymovement 0xFE @Move5
return

#org @WentUpRun
applymovement 0xFE @Move6
return

#org @WentLeftRun
applymovement 0xFE @Move7
return

#org @WentRightRun
applymovement 0xFE @Move8
return

#org @grass
Special 0x97 /*generates a random grass battle*/
return

#org @water
Special 0x98 /*generates a random water battle*/
return

'-----------
' Movements
'-----------
#org @Move1
#raw 0x10 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move2
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move3
#raw 0x12 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move4
#raw 0x13 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move5
#raw 0x1D 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move6
#raw 0x1E 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move7
#raw 0x1F 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @Move8
#raw 0x20 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @MoveDown
checkflag 0x82F
if 0x0 call @WentDown
if 0x1 call @CheckRunDown
return

#org @CheckRunDown
special2 0x8006 0x2b
compare 0x8006 0x3
if 0x1 call @WentDownRun
compare 0x8006 0x2
if 0x1 call @WentDownRun
if 0x0 call @WentDown
return

#org @MoveUp
checkflag 0x82F
if 0x0 call @WentUp
if 0x1 call @CheckRunUp
return

#org @CheckRunUp
special2 0x8006 0x2b
compare 0x8006 0x3
if 0x1 call @WentUpRun
compare 0x8006 0x2
if 0x1 call @WentUpRun
if 0x0 call @WentUp
return

#org @MoveLeft
checkflag 0x82F
if 0x0 call @WentLeft
if 0x1 call @CheckRunLeft
return

#org @CheckRunLeft
special2 0x8006 0x2b
compare 0x8006 0x3
if 0x1 call @WentLeftRun
compare 0x8006 0x2
if 0x1 call @WentLeftRun
if 0x0 call @WentLeft
return

#org @MoveRight
checkflag 0x82F
if 0x0 call @WentRight
if 0x1 call @CheckRunRight
return

#org @CheckRunRight
special2 0x8006 0x2b
compare 0x8006 0x3
if 0x1 call @WentRightRun
compare 0x8006 0x2
if 0x1 call @WentRightRun
if 0x0 call @WentRight
return


#org @end
call 0x00905000
Special 0x8f /*the trainer position special*/
Special2 0x800d 0x7f /*returns 1 if ground battles, 2 if water battles*/
Compare 0x800d 0x1
If 0x1 call @grass
Compare 0x800d 0x2
If 0x1 call @water
end


If I remember correctly, this script only needs to be enacted once. Then it will work so long as the follower is within the same map. (Thus, when changing maps, the follower needs to be placed behind or at the player).

Hope this helps some of you =/ I've left Pokemon hacking and went back to Skyrim >_<.

To those who sent me PMs. Sorry, didn't see them >_< But here you go! :D
Don't come back to Skyrim!! D:
Anyways.. Nice work. Still need a lot of fixes and tweaks though.
But maybe someday a follow script like HG/SS will surely be find.
__________________
PM | Flower | VM
Reply With Quote
  #232    
Old January 2nd, 2014, 12:37 AM
~Pokedude~
 
Join Date: Nov 2013
Gender: Male
The ARM7-CPU of GBA doesnt support multithreading, so you need to check special events etc via getplayerpos to execute them via ;cmp <register> <position> ; beq trainerbattle;(for example)
Maybe I will try to do one in the next time.

Quote:
Originally Posted by Saturnus
But maybe someday a follow script like HG/SS will surely be find.
That will probably be never possible as the GBA has limits.
Reply With Quote
  #233    
Old January 2nd, 2014, 08:39 AM
karatekid552's Avatar
karatekid552
What happens if I push it?....
 
Join Date: Nov 2012
Location: Do you really want to know? Really?
Gender: Male
Nature: Bold
Send a message via AIM to karatekid552 Send a message via Windows Live Messenger to karatekid552 Send a message via Skype™ to karatekid552
Quote:
Originally Posted by ~Pokedude~ View Post
That will probably be never possible as the GBA has limits.
It is, there is only one problem left to solve, and that is warping. We have a few ideas for solutions, and one of them is using the createsprite command, which is a useless command that creates a useless sprite. However, this sprite doesn't take up an NPC space, making it perfect for this.
__________________

Paired with Simba
Reply With Quote
  #234    
Old January 2nd, 2014, 08:43 PM
Shiny Quagsire's Avatar
Shiny Quagsire
どないやねん, ヤドン
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
I actually had an idea as to how to implement this a while back. So the basic follow-me algorithm is to echo the player's movement one step behind them at all times. My idea was to keep a log of the player's last movement and then apply these movements to whatever dummy sprite there is on the map.

Now obviously this is easier said than done, but I have been led to believe that all player movement uses some shape or form of the "applymovement" command, or at least the function that it is tied to. So if we can attach our logger there, and then apply it to another sprite, then we are good to go.
__________________



Reply With Quote
  #235    
Old January 3rd, 2014, 05:31 PM
Cheve_X's Avatar
Cheve_X
 
Join Date: Dec 2010
Location: Argentina
Gender: Male
Quote:
Originally Posted by Shiny Quagsire View Post
I actually had an idea as to how to implement this a while back. So the basic follow-me algorithm is to echo the player's movement one step behind them at all times. My idea was to keep a log of the player's last movement and then apply these movements to whatever dummy sprite there is on the map.

Now obviously this is easier said than done, but I have been led to believe that all player movement uses some shape or form of the "applymovement" command, or at least the function that it is tied to. So if we can attach our logger there, and then apply it to another sprite, then we are good to go.
So, meabe detecting what the player press, we can store what movement he/she does and use it in an "Dynamic Applymovement" ? That's what you're saying?
__________________
Free Your Spirit!






Reply With Quote
  #236    
Old January 4th, 2014, 01:50 AM
daniilS's Avatar
daniilS
busy trying to do stuff not done yet
 
Join Date: Aug 2013
Age: 15
Gender: Male
Quote:
Originally Posted by Shiny Quagsire View Post
I actually had an idea as to how to implement this a while back. So the basic follow-me algorithm is to echo the player's movement one step behind them at all times. My idea was to keep a log of the player's last movement and then apply these movements to whatever dummy sprite there is on the map.

Now obviously this is easier said than done, but I have been led to believe that all player movement uses some shape or form of the "applymovement" command, or at least the function that it is tied to. So if we can attach our logger there, and then apply it to another sprite, then we are good to go.
AFAIK the player doesn't move with applymovement. I've tried to trace it, but couldn't find anything.
__________________

Thanks to JPAN, Jambo51, Shiny Quagsire and knizz for teaching me almost everything I know about hacking, through tutorials or in person.
Reply With Quote
  #237    
Old January 4th, 2014, 07:18 AM
Jambo51's Avatar
Jambo51
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet
Quote:
Originally Posted by daniilS View Post
AFAIK the player doesn't move with applymovement. I've tried to trace it, but couldn't find anything.
You are correct. NPC movement in general is handled purely by ASM code mixed with a little lookup table (trust me, I checked this one out myself when I was developing my own version of this). Said lookup table has 9 entries, of which only 5 are ever used. I can't recall where this lookup table actually is (sorry) but either way, player and NPC movement is handled purely by ASM.
__________________
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
Reply With Quote
  #238    
Old January 22nd, 2014, 12:49 PM
karatekid552's Avatar
karatekid552
What happens if I push it?....
 
Join Date: Nov 2012
Location: Do you really want to know? Really?
Gender: Male
Nature: Bold
Send a message via AIM to karatekid552 Send a message via Windows Live Messenger to karatekid552 Send a message via Skype™ to karatekid552
Great news. ShinyQuagsire and I found a macro routine that controls player movement in a similar fashion to applymovement. The next step is to see if we can dump the movements and make another npc follow them. This project will be finished.:D


BTW, shiny never said that applymovement moved the player. He said a system like applymovement. and yes, that is what we found.
__________________

Paired with Simba
Reply With Quote
  #239    
Old January 22nd, 2014, 03:03 PM
Smeargle's Avatar
Smeargle
Keep it Artsy :)
 
Join Date: Nov 2012
Location: United States
Gender: Male
Nature: Gentle
Send a message via Skype™ to Smeargle
make sure to share your findings as your look into this !
__________________
Reply With Quote
  #240    
Old February 5th, 2014, 06:52 PM
Shadows's Avatar
Shadows
 
Join Date: Jul 2008
Location: Chicago, IL
Age: 19
Nature: Calm
Quote:
Originally Posted by karatekid552 View Post
Great news. ShinyQuagsire and I found a macro routine that controls player movement in a similar fashion to applymovement. The next step is to see if we can dump the movements and make another npc follow them. This project will be finished.:D


BTW, shiny never said that applymovement moved the player. He said a system like applymovement. and yes, that is what we found.
Looking forward to seeing the results. Good luck.
__________________
Reply With Quote
  #241    
Old April 10th, 2014, 01:54 PM
Mr.Mako's Avatar
Mr.Mako
 
Join Date: Apr 2014
Gender:
Um... is this still being worked on or is it dead in the water.
__________________
#Poliswag #dickbutt
Now working on a secret project.




The hacks above are now at pho
Come visit the Pokemon Rom Hacking Wiki
Reply With Quote
  #242    
Old April 10th, 2014, 05:51 PM
karatekid552's Avatar
karatekid552
What happens if I push it?....
 
Join Date: Nov 2012
Location: Do you really want to know? Really?
Gender: Male
Nature: Bold
Send a message via AIM to karatekid552 Send a message via Windows Live Messenger to karatekid552 Send a message via Skype™ to karatekid552
Quote:
Originally Posted by Mr.Mako View Post
Um... is this still being worked on or is it dead in the water.
It is gently paused because neither of us have a ton of free time right now. Don't worry, it will happen.
__________________

Paired with Simba
Reply With Quote
  #243    
Old April 11th, 2014, 02:42 AM
Mr.Mako's Avatar
Mr.Mako
 
Join Date: Apr 2014
Gender:
Yay, I know this will wind up helping a lot of people when it's done; especially the guys with Yellow version remakes and Gogo if he demakes HG/SS like he is Platinum.
__________________
#Poliswag #dickbutt
Now working on a secret project.




The hacks above are now at pho
Come visit the Pokemon Rom Hacking Wiki
Reply With Quote
  #244    
Old May 1st, 2014, 01:42 AM
Nurse Joy's Avatar
Nurse Joy
Would you like to rest your Pokémon?
 
Join Date: Nov 2013
Location: Sootopolis Pokémon Center
Gender: Female
Nature: Jolly
I don't know anything about this, and it might not be my place to post here, but...

In RSE, The Mimic Circle on Route 119 mimics all of your movements... Maybe they have the code for a proper follow-me script.

IDK. It's just an idea I had. If someone already thought of this, then disregard this post >,>''
__________________
Reply With Quote
  #245    
Old May 1st, 2014, 11:33 AM
GoGoJJTech's Avatar
GoGoJJTech
アルファ近く
 
Join Date: Nov 2012
Location: Earth
Age: 15
Gender: Male
Nature: Quiet
Quote:
Originally Posted by Efureie View Post
I don't know anything about this, and it might not be my place to post here, but...

In RSE, The Mimic Circle on Route 119 mimics all of your movements... Maybe they have the code for a proper follow-me script.

IDK. It's just an idea I had. If someone already thought of this, then disregard this post >,>''
If it mimics you you'd have to alter it since it'd just copy you. For example, you move up and he's next to you, he'll move into a tree.
__________________
Reply With Quote
  #246    
Old May 1st, 2014, 01:44 PM
Shiny Quagsire's Avatar
Shiny Quagsire
どないやねん, ヤドン
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
Quote:
Originally Posted by Efureie View Post
I don't know anything about this, and it might not be my place to post here, but...

In RSE, The Mimic Circle on Route 119 mimics all of your movements... Maybe they have the code for a proper follow-me script.

IDK. It's just an idea I had. If someone already thought of this, then disregard this post >,>''
Actually, you aren't too off on this idea. I recently had the inspiration to utilize this little mechanic, but with a few modifications:

First off, it's on Fire Red's engine because that's just where I'm comfortable pioneering things at. Secondly, the mimicing code it's quite exactly what you think it is. In A-Map it states it as being a "Copy Player" function, when in reality it actually rotates based on where you entered the sprite's view. So the first thing I did was fix that. Next I basically took the movement that the sprite originally wanted to do, stored it, and pulled the last movement they wanted. Here's a video of the result:

As you can see it's a bit rough, but it's a good proof-of-concept. Best part is that it only took about 0x30 bytes to implement, and it's still a fully functional NPC.

EDIT: I should probably also mention that the video is a bit dated, ledges actually work now (to a point, it's possible to create a gap while the NPC is jumping so I need to find a way to prevent movement while they jump) and it doesn't copy the player's looking direction.
__________________



Reply With Quote
  #247    
Old May 9th, 2014, 04:09 PM
Shiny Hilbert's Avatar
Shiny Hilbert
 
Join Date: Feb 2013
Location: -Mossdeep City, Hoenn
Gender: Male
Nature: Jolly
So there is a posibility that we can see this fully implemented and working before the end of 2014?
Reply With Quote
  #248    
Old May 9th, 2014, 05:10 PM
Shiny Quagsire's Avatar
Shiny Quagsire
どないやねん, ヤドン
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
Quote:
Originally Posted by Shiny Hilbert View Post
So there is a posibility that we can see this fully implemented and working before the end of 2014?
Most definitely. Very very likely that this will happen. As of now, since we have a person following properly, all that would be needed is the proper interventions between certain events and stuff. Although in it's current state it would work nice for events like the following people in DPPt. Minus the double battles and stuff.
__________________



Reply With Quote
  #249    
Old May 9th, 2014, 06:01 PM
HidoranBlaze's Avatar
HidoranBlaze
 
Join Date: Apr 2013
Age: 18
Gender: Male
Quote:
Originally Posted by Shiny Quagsire View Post
Most definitely. Very very likely that this will happen. As of now, since we have a person following properly, all that would be needed is the proper interventions between certain events and stuff. Although in it's current state it would work nice for events like the following people in DPPt. Minus the double battles and stuff.
Do you mind posting the ASM routines you've developed so far for this then? That way people could experiment with the routines, find ways to fix them, and port them to R/S/E. (I definitely want to port this to Emerald lol)
Reply With Quote
  #250    
Old May 22nd, 2014, 12:18 PM
GoGoJJTech's Avatar
GoGoJJTech
アルファ近く
 
Join Date: Nov 2012
Location: Earth
Age: 15
Gender: Male
Nature: Quiet
Quote:
Originally Posted by Ghostr4z3r View Post
i have a very good idea its simple but should work good if i think so its just a bit hard to do it. (sisifus) but it works with XSE why we don't use simply the mapscript if you enter a map and a movesprite on player position and a getplayerposition command and some flag and vars so we need to add the sprite on every map and hide it until the flag is getten and then use a spritebehaviour to make it follow you over the map until you go on another map and the enter map script start a new getplayerpos and movesprite and spritebehaviour and showsprite and so on why this could not work?
this wouldn't work for many reasons.
First it would cause a delay in each move you make
second it doesn't support ledges or scripts that move you
third surfing isn't supported
fourth it takes too much space.
fifth it wouldn't work on changing maps
__________________
Reply With Quote
Reply
Quick Reply

Sponsored Links


Advertise here
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
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 06:09 AM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.