Poly hack issue.

Meh.

Midcard
Joined
Mar 28, 2013
Messages
451
Reaction score
0
Hey chaps - Got a little problem here, the following hack is a poly hack to the Ring bell base that stretches it up to be a 'block'/'cube'. However, this hack only works in Nemu64, when I stick it in PJ64 which is my main emulator, it doesn't work. Does PJ64 require an activator for weapons? Would love some advice - don't be too harsh, I'm just getting back into the poly hacking heh!

<blockquote class='code_blockquote'><dl><dt>Code: </dt><dd> </dd></dl><code>8123CE52 0025
8123CE62 0025
8123CE72 0025
8123CE82 0025</code></blockquote>
 

jazz

Midcard
Joined
Nov 26, 2010
Messages
266
Reaction score
0
Hey man. Nice to see other people getting into poly hacking. To answer your question, it's not an emulator issue, but rather, the nature of how polygon hacks work. The reason that hack won't work, is that those addies you're changing (8123CE52) are part of a memory area (roughly from 8010000~8030000) that changes depending on what polygons are currently loaded. If you run that addy in your memory editor in a different arena, or in another menu, then you'll notice the data will change. So the reason it doesn't work is that address 8123CE52 is affecting other polygons in the menus or if you're using it in a different arena than where you found those addies.
For another example, you'll notice that the Summerslam stage uses 15 polygons, whereas the Smackdown stage uses 8. Since the Summerslam arena requires more memory data space, the weapon polygons are moved further on down in memory to make room for the polygon data for the stage polygons, whereas the Smackdown arena uses less polygons and thus the weapon data will be moved up accordingly. In other words, this kind of data is not hard coded.

So how to get around this? You'll not only need activators, but more than that too. I'll explain below, but first explain the activation system:

(credit WldFb)
<blockquote class='quote\\_blockquote'><dl><dt>Quote:</dt><dd> </dd></dl><div>
D00A2621 000X If arena is
D115A71E 0001 and match is starting
8138EA00 0002 activator = 2 (in-match)
D015A5D1 0015 If you're in-match
D138EA00 0002 and the activator is 'in-match'
8138EA00 0000 reset activator (stop writing the values)
D138EA00 0002 While in-match
(8123CE52) *insert your poly hack addies here, each line preceded by a D138EA00 0002 activator*
[/quote]

Basically, 8138EA00 is a very handy address where you can temporarily write data to and it will stay there as long as you need it. So what's going on here is that we use this addy to activate the 812 polygon hack addresses at the beginning of the match, and then change it back to 0000 to revert all the 812 addresses back to normal so it doesn't conflict with other arenas/menus.

Now, here's the tedious part; As you notice above, this only works for a specific arena. As I explained before, weapon polygon point data is loaded in a different memory location depending on what arena you're using, so a universal code is not really possible. If you want to only use it on one arena, use the activators above and you'll be fine. But if you want to use it elsewhere, then you'll need to create codes for each arena, and then if you want it to be useable in a ladder match then that could be another set of arena-specific codes (this I haven't checked, so you'll want to see about this first). Another thing to keep in mind is that if you're using any arena hacks, the data location might change and cause problems with your weapon code. Or vice versa, if you coded it with the arena hacks on, it won't work unless you keep those codes on, or if you share it with other people, they have to use the same arena hacks. It's that specific!

If you got as far as actually editing the polygon points, then you should be familiar with data pointers. (you can pick 'em up here http://s4.zetaboards.com/Old_Skool_Reunion?topic=8678141/1/ ). What you need to do is start a match in each of the arenas, go to the pointer for the weapon that you're editing and get the proper addies.

The next step is to create new activators too. Remember that handy 8138EA00 address? You'll need to assign a different value for each arena. You can actually assign any (hex) value you want for the 'Y' field below, except for 0 (that's the default value, so it might cause issues). For simplicity's sake, I'd recommending just using '0001' for Raw and then work your way up to '000A' for Armaggedon.

<blockquote class='quote\\_blockquote'><dl><dt>Quote:</dt><dd> </dd></dl><div>D00A2621 000X If arena is
D115A71E 0001 and match is starting
8138EA00 000Y activator = Y (in-match)
D015A5D1 0015 If you're in-match
D138EA00 0002 and the activator is 'in-match'
8138EA00 0000 reset activator (stop writing the values)
D138EA00 000Y While in-match
(8123CE52) *insert your poly hack addies here, each line preceded by a D138EA00 0002 activator*[/quote]

I hope that help! If not, just lemme know and I'll try to explain better.

Good luck!
 

Meh.

Midcard
Joined
Mar 28, 2013
Messages
451
Reaction score
0
That was incredibly helpful and very insightful, I wasn't aware that it was that specific. But, I'm struggling to understand these 'activators', are they simple a holding variable to tell it that it's in game, or what? It might be because it's 4am, but this just isn't working for me.

<blockquote class='code_blockquote'><dl><dt>Code: </dt><dd> </dd></dl><code>D00A2621 0001
D115A71E 0001
8138EA00 0001
D015A5D1 0015
D138EA00 0002
8138EA00 0000
D138EA00 0001
8123D810 0025
D138EA00 0001
8123D820 0025
D138EA00 0001
8123D830 0025
D138EA00 0001
8123D840 0025</code></blockquote>

I switched it around to work for Raw's arena. I might just be interpreting what you say wrongly, do correct me though this is incredibly helpful!
 

jazz

Midcard
Joined
Nov 26, 2010
Messages
266
Reaction score
0
Whoops! You forgot to change the '0002' in the fifth line "D138EA00 ..." Which is my fault, because I realized I forgot to point that out. And also change the D00A2621 0001 to D00A2621 0000 for the Raw arena (0001 is for No Mercy arena). But you did convert the 812 code, so good job!

Here's the breakdown:
<blockquote class='quote\\_blockquote'><dl><dt>Quote:</dt><dd> </dd></dl><div>
D00A2621 0001 If in the Raw Arena
D115A71E 0001 And match is starting
8138EA00 0001 temporary activator is '1' (Write 812 data)
D015A5D1 0015 if match has started
D138EA00 0001 and temporary activator is '1'
8138EA00 0000 reset temporary activator (Stop writing 812 data)
D138EA00 0001 If temp activator is 1...
8123D810 0025
D138EA00 0001
8123D820 0025
D138EA00 0001
8123D830 0025
D138EA00 0001
8123D840 0025
[/quote]

The temp activator is needed to write the 812 values as soon as the match is about to start, and stop writing them as soon as it has already started, to avoid the 812 values staying active in memory and cause problems when the match is over. If there was no temp activator, then the game would see the "if in Raw arena, and match has started, write 8123D840 0025"-- but then you would run into the same problem as when you input the code without any activators, because there's no activator to revert the 8123D840 address to default when the match is over. You would start the match fine, but the game would probably crash as soon as you went to anotehr menu/arena.

I hope that helps! If it doesn't work, let me know what codes/arena you're using and I'll help ya.
 

Meh.

Midcard
Joined
Mar 28, 2013
Messages
451
Reaction score
0
I see, now I understand the Activators, they act as a temporary variable to declare. That's cool. Alright, so I have it actually doing something now, but it isn't the effect I'm after. The one on the left is PJ64, and the right is Nemu64 with the same hack.

weird.png


Here's the hack:

<blockquote class='code_blockquote'><dl><dt>Code: </dt><dd> </dd></dl><code>D00A2621 0000
D115A71E 0001
8138EA00 0001
D015A5D1 0015
D138EA00 0001
8138EA00 0000
D138EA00 0001
8123D812 0025
D138EA00 0001
8123D822 0025
D138EA00 0001
8123D832 0025
D138EA00 0001
8123D842 0025</code></blockquote>

I've disabled any arena hacks that might cause conflict, it still remains the same. Perhaps there's something wrong with my 812 point data? I used the NTSC Bell Base pointer to get the point data - 80086980.
 

jazz

Midcard
Joined
Nov 26, 2010
Messages
266
Reaction score
0
I tested your code on a completely default save on PJ64 1.7 and it works perfectly. The only thing I can think of would be some other sort of conflicting code. Try testing this with all other cheat codes turned off, and make sure you're playing a normal match (not cage or ladder) and in the Raw arena.
 

Meh.

Midcard
Joined
Mar 28, 2013
Messages
451
Reaction score
0
Bloomin' heck, it was one of my other weapon hacks causing conflict my apologies! This is definitely a useful topic, which deserves to be written into some form of tutorial. :p
 

jazz

Midcard
Joined
Nov 26, 2010
Messages
266
Reaction score
0
Awesome :eek:k You did a great job coding this!! Now you have to repeat the process starting from the pointer step if you want it to work with your other weapon hacks, and/or for other arenas.

And yes, perhaps later I'll write a little tutorial on this sort of stuff. :)
 

Meh.

Midcard
Joined
Mar 28, 2013
Messages
451
Reaction score
0
Thanks, couldn't have done it without you! Here's the final product:

box.png


A box! Haha. I suppose because it's incredibly specific, that these sort of weapon mods would only work in a Full save, rather than individual release. Which is alright, considering I plan on developing an ECW save. :p
 
Top