Jump to content

Utilizing En_Arow_Trap


Jason777
 Share

Recommended Posts

ovl_en_arow_trap_util v1 -- 26 June 2013
 
To turn actor 0x0081 into something useful, I have released the following custom 
or modified actors (the following are folder names where the actors reside):

  • [*]En_Arow_Trap_Mod : A modification of actor 0x0081 with a few bugs and checks removed [*]En_Vase_Mod : An actor which utilizes actor 0x0081 (highly modified actor 0x0082) [*]Unused_C : A custom actor which was meant to replace actor 0x0081, but was not used

The actor within En_Vase_Mod (En_EAT_Util.S or ovl_En_EAT_Util.ovl) is basically an
assembly rewrite of the custom actor within Unused_C (ovl_en_arow_trap_util.c) since
I was having trouble with the mips-gcc compiler when using C.
 
To use it, basically apply the PPF patch (it patches actor 0x0081 to 0x00D6CE00 and
actor 0x0082 to 0x035CE040 in the ROM). If you're interested in only the actor
files then look at ovl_En_Arow_Trap.ovl and ovl_En_EAT_Util.ovl.
 
When you want to use the hack, just place actor 0x0082 and object 0x0086 on a map,
walk over to where the actor is (if you haven't replaced the model then it is a pot)
and then fire an arrow. The result is "Ouch!"
 
Things for future releases:

  • [*]Need to implement collision [*]Need to make a new model for actor 0x0082 (if there is demand) [*]Possibly decrease/increase/remove the proximity check in actor 0x0081

If you don't understand all the files that are included in this source, don't worry;
it was mainly included for those that do. Here's a hint though: everything is mainly
for use with mips-gcc, nOVL, nOVLIns, and zOVLDis. Devs, look at the Makefiles if
you're curious on how to compile these things yourself.
 
nOVL was made by ZZT32
nOVLIns was made by spinout
zOVLDis was made by ZZT32 and spinout
I don't think I have to explain who all people made GCC
 
If you're interested in making stuff like this, then follow these links for related
stuff and tools:

  • [*]
https://bitbucket.org/mbr [*]https://bitbucket.org/ottehr [*]https://code.google.com/p/gzrt/wiki/Nintendo64ToolchainSetup

Download: http://www.mediafire.com/download/57cyt6mu92zmg6t/ovl_en_arow_trap_util.7z

 

 

EDIT: I realize now that it would've been ten times more efficient if I had just modified actor 0x0081 instead of modifying 0x0082 to spawn 0x0081.. Herp derp :P Next release (if there is one)! 

Edited by Jason777
  • Like 2
Link to comment
Share on other sites

The way it works is that arrows are continually spawned from the custom actor's position by spawning en_arow_trap once (en_arow_trap constantly spawns arrows). In the custom actor's code, it also calls a function to have en_arow_trap constantly facing Link. The thing is, en_arow_trap does not shoot them; it relies on Link's code to deliver the final touches. In Link's code, I believe there is a place where it clears a flag that makes all arrows that are currently spawned fire.

 

If I remove the proximity check then you can fire an arrow from anywhere in the map and you'll see that an arrow still fires from the pot's location and travels in your general direction. Trying this out in a large map will demonstrate this result quite clearly.

 

Another thing is that it only has Y rotation that is constantly changing to have the actor face Link's general direction. This means that you could be a about 100 meters above the actor and fire an arrow to see that the attacking arrow will shoot and miss by going below Link (this is where some puzzle ideas come to mind).

 

If you want, I can make another release where you can give the custom actor a certain variable to make it have a set rotation to shoot arrows normally and not constantly aim at Link.

Link to comment
Share on other sites

Hmm, that does sound like a neat idea, mainly because I'm picturing this as possibly a way for enemies to shoot projectiles by calling a routine that would shoot an arrow in the direction they're facing, towards Link.

That is definitely possible; I would just have to adapt code from this actor to work another one. The only thing is that it would require Link to fire an arrow first. Unless, of course, we find a way to shoot arrows (I've been looking for this for the past year and a half).

Link to comment
Share on other sites

The checks are not difficult to find at least... there's not too many to worry about. I believe the proximity check was something like BNEC1 or something... can't remember. I haven't been able to get Nemu64 to work to check, and it's not like it really matters as long as you find it.

 

More to the point was getting the arrow to point at Link.

 

Perhaps using the Beamos eye is a good start since the Beamos likely continuously spawns that laser beam it shoots.

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.