Jump to content
  • 0

Item hacking halp.


SanguinettiMods
 Share

Question

I'm not exactly sure how to word this, so I'll give an example.

 

Remember in Spinout's "Zelda's Birthday" hack? Link gets the Megaton Hammer. Normally in any other game, a model wouldn't load when you equip it. But it does in Zelda's Birthday.

 

Can anyone help me figure out how to do that? Specifically with the Master Sword, and/or Biggoron's sword. Link isn't going to get the master sword, but rather a more powerful sword than the Kokiri Sword, and I would like to know how to:

 

>When Link receives the Item, the Master Sword (Not the Master Sword in this game) Becomes Available on the sub-screen.

>When Link Equips that, the Item model actually loads.

>Achieve Happiness.

Link to comment
Share on other sites

25 answers to this question

Recommended Posts

  • 0

> This is easy enough to understand, but doesn't quite answer my question.

> I don't quite get what this is... EDIT: Nevermind.

> Haha, Alright.

 

EDIT AGAIN

 

Basically, What I want, when Child Link has the Master Sword Equipped, 0x15540 loads instead of 0x13F38, but as you said, the Master Sword Requires a hack.

Link to comment
Share on other sites

  • 0

Tools Needed : HxD

First open in HxD

Obj_link_Boy

copy >10EE8 - 1175D

length 876

>Paste in Obj_link-child

>D690 - Df05

{all this does is flip the model to be the same position as the adult Link Master Sword.}

 

then goto 0x15540

>Select block 0x15540

then for the length put 410 copy it

>then goto 13f38 then paste it at that address.

>Next after you paste it you should see E6, change that to DF.

at the address 14350 put E7 00 00 00 00 00 00 00

save and your done

{This then replaces the display list(I don't the the proper term name?) of the Kokiri Sword, Then copies The Master sword at the address 0x13f38.

 

There is also a gameshark code I have that's loads the address 0x15540 Correctly with no errors over the kokiri sword I'll post it when I go back to my Dad's on Friday.

 

For some reason it comes out the right arm comes out messed up when I equip the hylian shield but perfect when I use the deku shield and have the sword drawn.

wierd?

Link to comment
Share on other sites

  • 0

Oh, did you mean receiving the item from a chest? In that case, read this.

The Master Sword is item 3C, but you'll have to make your own GI object for it. The shader should be the same as for the object you replace.

 

To make it work properly:

 

.org 0x8008EB84
	j         0x80700000
	sll       t2,t1,0x2

.org 0x80700000
	lb        t0,0x0068(v1) //get b button equip
	addiu     t0,t0,0xFFC4  //-0x3C (Master Sword value)
	bne       t0,$zero,end  //if it's not equipped then go to end
	addu      t7,t2,t6
	lui       t6,0x8012
	addiu     t6,t6,0x5E3C  //what pointer should be if sword is being used
	beql      t7,t6,end     //if equal to what pointer is
	addiu     t7,t7,0xFFF0  //-0x10 from it
end:
	j         0x8008EB8C
	nop

gameshark:

 

 

8108EB84 081C

8108EB86 0000

8108EB88 0009

8108EB8A 5080

81700000 8068

81700002 0068

81700004 2508

81700006 FFC4

81700008 1408

8170000A 0005

8170000C 014E

8170000E 7821

81700010 3C0E

81700012 8012

81700014 25CE

81700016 5E3C

81700018 51CF

8170001A 0001

8170001C 25EF

8170001E FFF0

81700020 0802

81700022 3AE3

81700024 0000

81700026 0000

 

 

That will load the (unused?) pointer from 0x10 before the pointer it usually loads if the Master Sword is equipped. You'll want to change the pointers at 0xB9CFCC and 0xB9CFD4 in ROM to point to your new model.

If you want to patch the code to ROM then I can show you how and where to put it.

Link to comment
Share on other sites

  • 0

Oh, did you mean receiving the item from a chest? In that case, read this.

The Master Sword is item 3C, but you'll have to make your own GI object for it. The shader should be the same as for the object you replace.

 

To make it work properly:

 

.org 0x8008EB84
j     	0x80700000
sll   	t2,t1,0x2

.org 0x80700000
lb        t0,0x0068(v1) //get b button equip
addiu 	t0,t0,0xFFC4  //-0x3C (Master Sword value)
bne   	t0,$zero,end  //if it's not equipped then go to end
addu      t7,t2,t6
lui   	t6,0x8012
addiu 	t6,t6,0x5E3C  //what pointer should be if sword is being used
beql      t7,t6,end 	//if equal to what pointer is
addiu 	t7,t7,0xFFF0  //-0x10 from it
end:
j     	0x8008EB8C
nop

 

gameshark:

 

 

8108EB84 081C

8108EB86 0000

8108EB88 0009

8108EB8A 5080

81700000 8068

81700002 0068

81700004 2508

81700006 FFC4

81700008 1408

8170000A 0005

8170000C 014E

8170000E 7821

81700010 3C0E

81700012 8012

81700014 25CE

81700016 5E3C

81700018 51CF

8170001A 0001

8170001C 25EF

8170001E FFF0

81700020 0802

81700022 3AE3

81700024 0000

81700026 0000

 

 

That will load the (unused?) pointer from 0x10 before the pointer it usually loads if the Master Sword is equipped. You'll want to change the pointers at 0xB9CFCC and 0xB9CFD4 in ROM to point to your new model.

If you want to patch the code to ROM then I can show you how and where to put it.

 

 

Yes, Deathbasket. I was planning on having my new sword come from a chest. If you don't mind, do you think you'd be able to get on skype, or some other place to show me how these "Shader Commands?" Work? thumbsup.gif It's probbaly immensely easy to understand, but I'm just not getting it.

Link to comment
Share on other sites

  • 0

To be honest I'm not entirely sure what they are, I just know you need to use the same one as the GI object you're replacing uses.

 

As an example, let's say you're replacing the boomerang's chest entry.

 

start byte 0x00C224c4

end byte 0x00C227AA

 

ii ff xx mm yyyy

 

Every 6 bytes is a corresponding entry on the chest actor's variable.

 

ii = item gained

ff = flag

xx = shader

mm = message #

yyyy = model

 

 

--GI_object:shader combos--

 

...

 

00E8:34 = boomerang

At 0xC224E2 we see:

0E 80 34 35 00E8

 

0E = item

80 = flag (?)

34 = shader

35 = message

00E8 = object

 

So to get the Master Sword from this you would just change the item number to 3C, then swap the boomerang's model with your sword. You'd then have:

 

3C 80 34 35 00E8

 

But if you changed the object number then you'd have to update the shader. So if your model replaced the GI object for Zelda's Letter instead for example:

 

00EF:3B = Zelda's Letter

The entry for your item would now be:

 

3C 80 3B 35 00EF

 

So then by using a chest with the variable that usually gives you the boomerang you'd get the Master Sword but Zelda's Letter would show up as the GI object and the text would be for the boomerang.

 

Sorry if what I said isn't totally correct, it's been ages since I did this.

Link to comment
Share on other sites

  • 0

Thank you so much!

 

At the same time, though, That would enable me having the Master Sword through a Chest, But what abut Child Link actually being able to use it? I can enable him to equip it, but the model for the Kokiri Sword is loaded instead. I'm not sure if that hack you posted earlier was for that or not.

Link to comment
Share on other sites

  • 0

Thank you so much!

 

At the same time, though, That would enable me having the Master Sword through a Chest, But what abut Child Link actually being able to use it? I can enable him to equip it, but the model for the Kokiri Sword is loaded instead. I'm not sure if that hack you posted earlier was for that or not.

 

Your trying to load the the sword at the Address 0x15540(Master Sword) right?. Just use this Gameshark code it only works for young Link only, sadly. If you use it as adult Link the graphics will distort.

80224717 0004 Giving credit to DeathBasket, too.

It load the Address 0x15540 and puts it over the Kokiri sword, what ever it may be. Hope's this helps.

 

or

 

If you just want to use the Master sword as young make sure you follow this method otherwise link will hold it backwards, If not you now have the code needed to load objects from the address 0x15540 http://core.the-gcn.com/public/style_emoticons/default/thumbsup.gif

 

Tools Needed : HxD

First open in HxD

Obj_link_Boy

copy >10EE8 - 1175D

length 876

>Paste in Obj_link-child

>D690 - Df05

{all this does is flip the model to be the same position as the adult Link Master Sword.}

Example

Posted Image

Link to comment
Share on other sites

  • 0

First I was like "wat" and then I remembered I posted that code over two years ago, heh. The code I posted earlier in this thread will do exactly the right thing as long as you fix the pointers in ROM that I mentioned. Give it a try. thumbsup.gif

 

Deathbasket, You mentioned patching the code to the ROM. I'm planning on using this for a mod, so do you think you could tell me how and where to put it?

Link to comment
Share on other sites

  • 0

Okay. We need a RAM address that's always going to be in the same spot and isn't going to be overwritten. We can use 0x8001CD60, which is free space at the end of the file table (thanks petrie911).

So now we need to convert these RAM addresses to ROM addresses.

 

0x8008EB84 is in code, at 0x00B05D24 in ROM. Go there and write:

0800 7358

0009 5080

 

The rest of the code will now be at 0x8001CD60, which turns out to be at 0x00018F30 in ROM so go there and write:

8068 0068

2508 FFC4

1408 0005

014E 7821

3C0E 8012

25CE 5E3C

51CF 0001

25EF FFF0

0802 3AE3

0000 0000

 

You'll now have to fix the CRC because of where the code was inserted.

Link to comment
Share on other sites

  • 0

Works fine on Nemu for me but you're right about Project 64. To get it to work on Project 64 you need to leave a blank line at the end of the file table.

 

Go back to 0x00B05D24 in ROM and write this line instead:

0800 735C

 

Then write the rest of the code at 0x00018F40 rather than 0x00018F30 and fix the CRC again.

Link to comment
Share on other sites

  • 0

PJ64 has to enable/disable game specific hacks for the games to work. When you change a ROM's CRC, PJ64 no longer enables/disables the hacks, and it runs it as an "unknown" ROM. Try setting the r3400i core to pure interpreter, and setting the game settings correctly.

 

 

Or use Nemu :D

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

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