News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

[SM] [ENEMY] Torizo question [solved]

Started by JAM, March 14, 2011, 06:01:23 PM

Previous topic - Next topic

JAM

I have a question. How to make Torizo work in every area. I looked up into the Torizo code a bit and saw a lot of checks for area, mostly
if the area have index $00 or not (actually, BEQ or BNE without comparing with $0000). But I have no clue, why Golden Torizo will not works in Brinstar, for example. Any ideas?

Lunaria

Read the tool tip for Torizo.

JAM

Crys
But it was done in Redesign somehow. Yeah, I know, the best answer will be "find certain code in Redesign and rip it". Just thought that someone may already did this also.

Zknight7126

Quote from: JAM on March 15, 2011, 10:42:32 PM
Crys
But it was done in Redesign somehow. Yeah, I know, the best answer will be "find certain code in Redesign and rip it". Just thought that someone may already did this also.

I read something about keeping it in the area, but making it appear on the map somewhere else, but sadly that is all I remember...

begrimed

I remember reading about that Zknight, which is basically connecting a boss room's door from another area to whatever room you want. It works, but pausing the game looks all kinds of glitchy or something.

Scyzer

Except that Torizo was only in 2 places in SMR... Crateria and Norfair. What a surprise! Inorite! :O

Zknight7126

Quote from: Grime on March 16, 2011, 12:55:00 AM
I remember reading about that Zknight, which is basically connecting a boss room's door from another area to whatever room you want. It works, but pausing the game looks all kinds of glitchy or something.

FirePheonix did that with SporeSpawn in Volta, the only problem was it showed the boss defeated thing in a random location in another area, at least I think it was SporeSpawn...

Quote from: Sadiztyk Fish on March 16, 2011, 01:32:19 PM
Except that Torizo was only in 2 places in SMR... Crateria and Norfair. What a surprise! Inorite! :O

If you put bomb torizo in norfair it turns into golden torizo, or so I have heard...

Quietus

Sadiz was saying that there's no point in looking at Redesign for answers because the two Torizos are in the same areas - Crateria and Norfair - that they are in the original game, so nothing was changed.

Zknight7126

Quote from: Quietus on March 16, 2011, 07:05:29 PM
Sadiz was saying that there's no point in looking at Redesign for answers because the two Torizos are in the same areas - Crateria and Norfair - that they are in the original game, so nothing was changed.

Was a value changed to make bomb torizo to enter like golden torizo?

Quietus

I don't believe so.  I believe that Torizo (either one) automatically falls upon activation until he hits a normal, solid floor.  I suspect he was simply placed off screen for a more dramatic entrance.

Tyjet66

Quote from: Quietus on March 16, 2011, 07:09:27 PM
I don't believe so.  I believe that Torizo (either one) automatically falls upon activation until he hits a normal, solid floor.  I suspect he was simply placed off screen for a more dramatic entrance.
Yes, that is pretty much how it is set. Although, placing him in the ceiling just makes him stand up in the ceiling and them fall, unlike in Redesign where he falls and then stands. I'm not quite sure how to do that.

Zknight7126

Quote from: Tyjet66 on March 16, 2011, 07:21:24 PM
Quote from: Quietus on March 16, 2011, 07:09:27 PM
I don't believe so.  I believe that Torizo (either one) automatically falls upon activation until he hits a normal, solid floor.  I suspect he was simply placed off screen for a more dramatic entrance.
Yes, that is pretty much how it is set. Although, placing him in the ceiling just makes him stand up in the ceiling and them fall, unlike in Redesign where he falls and then stands. I'm not quite sure how to do that.

In Silver Skree's Sigma Boss Rush there is a wall that crabs can't go through, but samus can, it could be the other way around...

Scyzer

The ONLY change to Torizo in SMR is that it can be placed anywhere. The bomb room is actually 2x2 screens, with the room on the lower 2. The torizo is above the bombs on the 2nd screen, and instant falls upon being awakened. There were no changes made to make him fall, that's what he does. Try it in a clean rom if you like.

Getting Torizo into any area is probably just changing the area checks around.

X-tradyte

Quote from: Zknight7126 on March 16, 2011, 08:26:56 PM
Quote from: Tyjet66 on March 16, 2011, 07:21:24 PM
Quote from: Quietus on March 16, 2011, 07:09:27 PM
I don't believe so.  I believe that Torizo (either one) automatically falls upon activation until he hits a normal, solid floor.  I suspect he was simply placed off screen for a more dramatic entrance.
Yes, that is pretty much how it is set. Although, placing him in the ceiling just makes him stand up in the ceiling and them fall, unlike in Redesign where he falls and then stands. I'm not quite sure how to do that.
In Silver Skree's Sigma Boss Rush there is a wall that crabs can't go through, but samus can, it could be the other way around...
In Ice Metal it does that in the Tourian place. All it is a a type of air that enemies can't pass through(I'm thinking bombable air, but some that might be wrong) and that all....Enemies can pass through most things Samus can't.

Zknight7126

@DarkSamus, that is good to know, and what kind of blocks would that be?

(Note: This was done to not make endless quote tunnels)

X-tradyte

I don't know them right off the bat, but I'm sure someone else does.

JAM

Sadiztyk Fish
Ah, there were multiple guardians, but they are statues, not Torizos. My memory fails me a bit. Then it's time to make it =)

Quote from: Sadiztyk Fish on March 16, 2011, 10:45:42 PM
Getting Torizo into any area is probably just changing the area checks around.
I saw the code a little bit more. The game is checking only for area $00. Equal, or not. But there are several things like loading currect area into X, loading data from $AA:xxxx+X to A and then using A as a pointer to subroutine or something like that.

Grime
Zknight7126
Hell yeah!!!
Thanks for pushing me in right direction. I've found a non-standart (I'd say even tricky, corrupted or perverted) solution and it's dead simple. You'll be surpised how easy it can be done...


What we have:
Torizo and Golden Torizo should be in Crateria or Norfair to operate properly. But problem is in Initiation code only, and Torizos can funtionate in other areas.

[spoiler=Solution]So, here's the deal. You can have Torizo in each area. You'll need a room with one alternate state (events or bosses). Room must be psysically in Area 00 or 02 and it should be moved during battle with using a special code. You'll need to write a code now.

Open your ROM in hex editor at 154886.
Change 90 to 80.
Save.
This one allows to use the same Torizo mulpiple amount of times. We don't really need it to use it in normal way, but this one allows to enable Torizos in other areas.


Now write a code in bank $8F. Find a free space there. You'll need 7 bytes.
The code is:
[A9 XX 00] [8D 9F 07] [60]
XX -- is the number of area, in where Torizo supposed to be.
Separate code should be written for each area.
Remember (or better write somewhere) location of each code.


Now about the room.
As I said before, it be psysically in Area 00 or 02.
If it is in area 00, Torizo will acts like bomb Torizo.
In area 02 your Torizo will acts like Golden Torizo.
To evade problems with map, set bitflag to 40 for the door to the room with Torizo.
Don't do this with door outside of Torizo room as you'll be in same area in 1 frame after entering the room.
There also must be an empty sector in a place where room psycally be (I mean, in area 00 or 02, depening on your choice).
As for Torizo, place him where you want in original state.
In both states FX2 should be changed to address of subroutine that will change the area instantly.
In second state Enemy Pop should lead to first state +$10 bytes to prevent Torizo from ressurection (or to any room without enemies).
Second state must have event type. Number of event must be $42 + area * 8. I mean, $42 for Crateria, $4A for Brinstar, $5A for Wrecked Ship etc.
After Torizo is killed, he'll not reappear in the same room if you did everything correctly. Grey doors related to Torizo in current area will flash, as it should be.

That's all =)[/spoiler]

Zknight7126


Scyzer

Nice fix JAM, even if it's just a big kick in Torizo code's face =P
Though, it might be easier to use Layer1_2, as this is only run once (and is only needed to run once) since the code that sets up area only runs during room transitions. Free's up FX2 which can be used for shaking or something.

JAM

#19
Quote from: Sadiztyk Fish on March 17, 2011, 10:31:45 PM
Nice fix JAM, even if it's just a big kick in Torizo code's face =P
Thanks =)

Quote from: Sadiztyk Fish on March 17, 2011, 10:31:45 PM
Though, it might be easier to use Layer1_2, as this is only run once (and is only needed to run once) since the code that sets up area only runs during room transitions. Free's up FX2 which can be used for shaking or something.
I've tried this at first, but Layer1_2 using isn't working. Looks like, it executes before Initiation AI of Golden Torizo is running and FX2 is running by the first time in 1 frame after Initiation is complete. So, FX2 is the only way. But, it can be freed up by extending the code by replacing [60] by this:
[A9 YY YY] [8D DF 07] [60]
where YY YY -- address of new FX2 in bank $8F.

FX2 can be changed several times.

Black Falcon

There's actually another solution: since the game checks if the area value is either equal or not, you could replace $079F with either $0FB4,x (enemy Speed in SMILE) or $0FB6,x (enemy Speed2 in SMILE) with x being the enemy index, of course.
For example, set the Torizo's 'speed' value to 0000, then it'll act like a BT, wereas any other value makes it act like GT.
This way all the region checks can be tweaked without using free space.

Some 'lill more effort 'n hijacks and then you should even be able to create your own Torizo, with abilities from both GT and BT. You just need to know what check enables what ability.
Example:
Speed 1 = 0000 >> bomb torizo hp, color, damage etc. (Values from the BT enemy DNA, 0001 would be GT DNA.)
and speed 2 = 0001, 0002, 0003 ... >> enable/disable certain abilities/moves BT/GT normally would not be able to do.
Tons of possibilities here.

Got what I mean? :wink:

JAM

#21
Quote from: Black Falcon on March 19, 2011, 06:14:12 AM
There's actually another solution: since the game checks if the area value is either equal or not, you could replace $079F with either $0FB4,x (enemy Speed in SMILE) or $0FB6,x (enemy Speed2 in SMILE) with x being the enemy index, of course.
For example, set the Torizo's 'speed' value to 0000, then it'll act like a BT, wereas any other value makes it act like GT.
This way all the region checks can be tweaked without using free space.

Some 'lill more effort 'n hijacks and then you should even be able to create your own Torizo, with abilities from both GT and BT. You just need to know what check enables what ability.
Example:
Speed 1 = 0000 >> bomb torizo hp, color, damage etc. (Values from the BT enemy DNA, 0001 would be GT DNA.)
and speed 2 = 0001, 0002, 0003 ... >> enable/disable certain abilities/moves BT/GT normally would not be able to do.
Tons of possibilities here.

Got what I mean? :wink:

This comes to my mind too. But Speed and Speed 2 are changing during battle. I think, Orientation should be used for this. Maybe, some bits of it should be used to determine what event to set (Main boss event, mini-boss one, Torizo one or any of 5 unused). This allows to have up to 8 different Torizos per area =)

My solution with area warping should be done anyway or I can't be able to place Torizo in each area.

RealRed

#22
:archie:

I've done everything JAM told me to do in his solution. Bomb Torizo works just fine in Brinstar. Unfortunately, I can't get Event2 (4A: Brinstar Torizo is dead) to activate. Bomb Torizo returns every time I reenter the room. Dang. What do I do about this? Am I missing something?

Mettyk25jigsaw

I think I can help you Bloodsonic.
    What I think you would have to do is patch Jam's 'FF events and tubes ' patch from the main site. Now once patched you will be instructed to put PLM 'DB44'  inside plm folder in smile file folder and then this PLM is what you can use inside the room you have torizo in. Make sure in enemy editor you have '01' enemies to clear room marked, set the DB44 Plm high to '00' and the low as the event bit you want to set (in your case it is the event bit used for brinstar's torizo-4a).
    Inside the event state, you also must have enemy population pointer set to a location pointing to  a set of 'FF FF  00' (in other words 0 enemies inside room). Of course with the standard state you must have torizo inside room...
    If you decide to use the patch, remember to make sure wether the patch uses free space or not and if so make sure that in your rom, there is free data at the location the patch is pasting the data to, otherwise if you have already written data there with something, that data will be overwritten and whatever the data was being used for will now be stuffed. However if they are all "FF FF FF FF.....' you are fine to patch. That's also considering wether the patch uses free space, if it doesn't, you are safe to patch...I will write back in a second with confirmation of the free space...

Mettyk25jigsaw

Ok, I've looked up the IPS file inside hex editor---No free space is used, it's fine to patch.
  Also with the event, you would want to use the 'E6 12' (12 E6 IN ROM) EVENT, Not the boss event...