Ultimate Weapon Project

Main Page
Back to PSX Codes
Ultimate Weapon Project
Post One
--------------------------------------------------
Ultimate
--------------------------------------------------
Coordinates (above Chocobo Farm) -
(X)
8010A480 AEBE
8010A482 0003
(Y)
8010A488 17C1
8010A48A 0002
(Z)
8010A484 04E2
Graphic Mod - 8010A4C4 220B
Stance Mod - 8010A4D0 0X0Y
Changing X from 0 to an actual value causes Ultimate to start slowly falling as he does when you finally defeat him. Increasing the number increases the speed, and dropping it back to 0 halts it. Modifying Y changes Ultimate's stance.
--------------------------------------------------
Airship
--------------------------------------------------
Coordinates (above Chocobo Farm) -
(X)
8010A560 AEBE
8010A562 0003
(Y)
8010A568 17C1
8010A56A 0002
(Z)
8010A564 04E2
Graphic Mod - 8010A5A4 8203 (Rainsphere)
--------------------------------------------------
Cloud
--------------------------------------------------
Coordinates (above Chocobo Farm) -
(X)
8010A640 AEBE
8010A642 0003
(Y)
8010A648 17C1
8010A64A 0002
(Z)
8010A644 04E2
Graphic Mod - 8010A684 ????
--------------------------------------------------
World Map Sprite Control Mod (Rainsphere) - 8010AD40 ????
A474 - Ultimate
A554 - Airship
A634 - Cloud
--------------------------------------------------
If the GSCCC enemy mod is used to change the enemy you fight when the battle with Ultimate initiates, Ultimate just goes crazy after battle and flies everywhere. When you hit him, Cid freaks out and says "What're you trying to do, break the Highwind? Let's fight on the ground!".
Universal enemy mod (LM's code) digits for Ultimate are - 0119, then 011F
(800707BC).
Ultimate can be called on the world map for the event of one of the first battles (although the battle seems somewhat different, the game treats it as one of the first battles) at the address 8010A59A (my world map event mod) with the digits 18EF. This only counts as one of the first battles, not the final one, but after using it as one of the first battles, the final battle doesn't work as the final battle, but like one of the first. However, Ultimate stays in place, and the next battle after that counts as the final battle. Whew, that was a mouthful.
When the GSCCC enemy mod is used with Ultimate's digits on a regular enemy, it counts as the first Ultimate, but never the second. Moreover, when other digits are used on the second, it doesn't act like the second, and Ultimate just sits there after battle.
When the graphic of Ultimate is changed (even if it's changed back), the triggering effect of running into him and battling him is disabled. After leaving the world map and returning, the trigger will work again. You'll note that this has also erased the game's memory of you having fought Ultimate, and reset Ultimate's behavior to that of the first battle, so that he'll run away after one hit, even if he's above Cosmo Canyon. He'll remain in the same spot if this is the case; fight him again for the second battle.
What lies directly ahead...
Let me start by explaining that there are quite a few invisible sprites on the world map, with no graphics assigned to them. Most of these are at what I call the "zero point", a point on the map where all coordinate values equal zero. This point is in the top left corner of the map, and is where you end up if something really glitches your introduction to the world map from a battle or town scene, and your point on the map cannot be determined by the memory. Anyway, there are about 9 to 10 invisible, unused sprites there at any given time. My theory, and what would generally be assumed, is that these sprites, or sprite slots rather, lie waiting until they are used up periodically, whenever the need for a new sprite on the map arises. That said, you should better understand the next idea.
When Ultimate is eliminated entirely, the digits for the sprite you are controlling changes, while you continue to control the airship. Your new digits are the ones previously used by Ultimate. This leads me to believe that Ultimate's sprite slot did not turn dormant, but was rather eliminated entirely. So now, in comparison to when Ultimate was on the map, there are no longer "x" amount of sprite slots, but "x-1". I don't know exactly how many sprite slots there are at any given time, and cannot think of a way to determine the number as there are digits that glitch between digits that send me to the zero point or yield control of another visible sprite; sometimes there are as many as ten before another working digit - you can never really determine when you've reached the end of the working digits for sure - and it would be inconceivable to test 65,535 possible combinations of digits when a little more than 99% of them would require a reset after testing.
Now, all this may sound a bit odd, and perhaps unfounded and arbitrarily used as a stop-gap for the way I've decided to think of things, but it's not. My in-town sprite control mod frequently yielded control of graphic-less sprites. These were, I assume, simply slots left in reserve for events in which, for example, a member of your party walks out of you in a town to say something, or you chase someone through a cave. Each room in a town (or cave, etc) also usually has a zero point, where most or all empty sprite slots are, although I've never really looked into this to find whether or not these points are actually at a value of zero in coordinates. I assume they are. Anyway, more so than the empty sprite slots that can be observed, I found more support for the way I believe the sprites on the world map are working by looking at something I happened to have stumbled upon a few weeks ago when hacking for in-town sprite action triggers: the address that modifies the amount of sprites, visible or not, in the present room in a town.
8009AC1C 00??
If, using the Mem. Editor, you drop the value at this address by one or two, it's likely nothing will appear to happen. This is because unused slots are being eliminated. After a few more, you'll see some people or other sprites around you disappear, and eventually, if you drop the value to "0000", you'll disappear. Note that when you disappear, you can't even move around as an invisible sprite, as you could if you used the sprite control mod to control an unused slot. This is because your entire sprite slot, with triggers and all, has been eliminated. The same, I believe, is happening to Ultimate after he's defeated.
This said, it's obvious that in order to bring Ultimate back properly, I need to first increase the number of sprites by one, back to what it used to be. So I need to find the address which controls the amount of sprite slots there are on the world map. If I don't do this, and decide I'd rather bring him back improperly (heh) by simply patching him into one of the empty slots, I'll be assuming that at whatever point the code will be used, the conditions concerning sprites will be the same as they were when I hacked the code; that Ruby Weapon, Diamond Weapon, the submarine, the Rocket (at Rocket Town), the Mako Cannon (at Midgar), that dome that appears over the Northern Crater, the Buggy, a chocobo, and the Tiny Bronco are all not around, and that the Condor still is. This would be a ridiculous stretch, and the code could only be used during a very retracted window of time. Therefore, I'm resigned to the task of finding that address. Once that is found, I'll still need to find the address that controls the coordinates of the trigger for battle with Ultimate, and set them to correspond with Ultimate's coordinates; a simple "copy bytes" code would work for this. Next, I have to take into consideration that the two types of battles with Ultimate on the world map, the first fights and the final, are reached by two different triggers. I'll have to create a system by which, after the first battles, the first trigger will be turned off completely, and the second one will be set to the same coordinates as Ultimate. And that being the case, I'll need to find not only coordinates for the needed triggers, but also the addresses that turn them on and off.
The good news is that I think Ultimate will be the hardest Weapon to bring back, and the others will be relatively easy after I finish him...or her...or whatever.
Post 2
OK, I've found a bit more that adds a little to the combined confusion of things, heh.
--------------------------------------------------
Whatever You Control
--------------------------------------------------
Coordinates (above Chocobo Farm) -
(X)
801FEE90 AEBE
801FEE92 0003
(Y)
801FEE98 17C1
801FEE9A 0002
(Z)
801FEE94 04E2
For some reason, whatever (sprite) you're controlling, these addresses control your coordinates. I wonder what the hell the memory uses these for...
And two more notes:
If you change the graphic of the sprite you're controlling, you then get the new graphic's controls. If you become the airship, pressing Triangle will bring you onto the deck of the Highwind; if you become Cloud, pressing Triangle will bring up your menu.
You cannot initiate a battle with Ultimate by running into him with anything but the airship.
These may be helpful at some point, and they may not. I'm just compiling facts, that's all...it helps me think clearly, so I don't go off on tangents.
Post 3
OK, first off, I've noticed that those graphic mods work a little differently than I thought they did. Here's an example; Ultimate:
Graphic Mod - 8010A4C4 XXYY
XX - Sprite behavior
YY - Graphic Mod
And here're all possibilities for YY digits in three situations I decided to record. "?" indicates an invisible graphic or sprite.
--------------------------------------------------
YY of graphic mods (Ultimate still around)
--------------------------------------------------
00 - Cloud
01 - Tifa
02 - Cid
03 - Airship
04 - Chocobo
05 - ? (stuck in a small cube of movement)
06 - ? (moves at the speed of a chocobo)
07 - ? (moves at the speed of Cloud)
08 - ? (stuck in a small cube of movement)
09 - Highwind's propellers
0A - ? (moves at the speed of Cloud)
0B - Ultimate Weapon
0C - Condor
0D - Submarine
0E - Gold Saucer
0F - Rocket
10 - Rocket holder thingy
11 - ? (moves at the speed of Cloud)
12 - ? (moves at the speed of Cloud)
13 - Chocobo
14 - Mako Cannon
15 - ? (moves at the speed of Cloud)
16 - ? (moves at the speed of Cloud)
17 - ? (moves at the speed of Cloud)
18 - Sphere over North Crater
19 - Hidden Forest
1A
|
28 - ? (moves at the speed of Cloud)
29 - ? (moves at the speed of a chocobo)
2A - ? (moves at the speed of a chocobo)
2B
|
FF - Cloud
--------------------------------------------------
Ultimate is gone
--------------------------------------------------
00 - Cloud
01 - Tifa
02 - Cid
03 - Airship
04 - Chocobo
05 - ? (stuck in a small cube of movement)
06 - ? (moves at the speed of a chocobo)
07 - ? (moves at the speed of Cloud)
08 - ? (stuck in a small cube of movement)
09 - Highwind's propellers
0A - ? (moves at the speed of Cloud)
0B - ? (moves at the speed of Cloud)
0C - Condor
0D - Submarine
0E - Gold Saucer
0F - Rocket
10 - Rocket holder thingy
11 - ? (moves at the speed of Cloud)
12 - ? (moves at the speed of Cloud)
13 - Chocobo
14 - Mako Cannon
15
|
18 - ? (moves at the speed of Cloud)
19 - Hidden Forest
1A
|
1C - ? (moves at the speed of Cloud)
1D - Ruby Weapon
1E
|
28 - ? (moves at the speed of Cloud)
29 - ? (moves at the speed of a chocobo)
2A - ? (moves at the speed of a chocobo)
2B
|
FF - Cloud
--------------------------------------------------
Ultimate is gone and Ruby exists
--------------------------------------------------
00 - Cloud
01 - Tifa
02 - Cid
03 - Airship
04 - Chocobo
05 - ? (stuck in a small cube of movement)
06 - ? (moves at the speed of a chocobo)
07 - ? (moves at the speed of Cloud)
08 - ? (stuck in a small cube of movement)
09 - Highwind's propellers
0A - ? (moves at the speed of Cloud)
0B - ? (moves at the speed of Cloud)
0C - Condor
0D - Submarine
0E - Gold Saucer
0F - Rocket
10 - Rocket holder thingy
11 - ? (moves at the speed of Cloud)
12 - ? (moves at the speed of Cloud)
13 - Chocobo
14 - Mako Cannon
15
|
18 - ? (moves at the speed of Cloud)
19 - Hidden Forest
1A
|
1C - ? (moves at the speed of Cloud)
1D - Ruby Weapon
1E
|
28 - ? (moves at the speed of Cloud)
29 - ? (moves at the speed of a chocobo)
2A - ? (moves at the speed of a chocobo)
2B
|
FF - Cloud
----------------------------------------------------------------------------------------------------
--------------------------------------------------
Underwater - 2nd Disc
--------------------------------------------------
Dropping down underwater in the submarine, I realized that under the sea is simply an extention of the world map, with different graphics and a different number of sprites. I did a bit of work there, just for fun, and it was worth it.
Submarine Graphic Mod - 8010A304 XXYY
YY -
00 - Cloud
01 - Tifa
02 - Cid
03
|
0C - ?
0D - Submarine
11 - Crashed Airship
12 - Underwater Reactor
13
|
19 - ?
1A - "Key to the Ancients"
1B - Some kind of...patch of coral...or something
1C - Red Plane thingy
1D - ?
1E - Emerald Weapon
Item 1A can be taken over somehow (I can't remember) through the debug room. I've never seen item 1B before...I assume it was taken out of the game at some point.
I also found that Rainsphere's old world map sprite control mod works underwater.
Underwater Sprite Control Mod - 8010AD40 (Rainsphere) (Same as on map)
A394 - ?
A2B4 - Submarine
A1D4 - Crashed airship
--------------------------------------------------
Moving on...
I was sitting and pondering over how exactly the triggers of each sprite on the world map worked, ...wait, let me explain a bit.
My old theory was that triggers had independent coordinates, and were seperate entities from sprites. This allowed me to understand how at certain times there were places where you would suddenly have an event occur, with no sprite involved, such as Yuffie running off with the party's materia south of Wutai, which happens as you reach a certain point on a hill. To patch this theory up, I assumed that the triggers of sprites (such as the fact that you battle Ultimate when you run into him with the Highwind) must simply have coordinates that perfectly mirror those of the sprite they're assigned to; a programmed version of a few GS Copy Bytes codes, if you will. There was still a problem with this theory, however. What happened when a sprite's trigger changed?
To be able to continue on with my work, I consoled myself that one of two things would happen:
A - The original trigger would move off somewhere else, and the new one would move to the same spot as the sprite, taking its place. Obviously the spot to which the old trigger would be moved to wouldn't be random, and it couldn't be sent to the zero point to sit on top of the ocean, or I would have already set off dozens of old triggers the first time I was sent to the zero point trying to control an unused sprite slot. So it must be moved to the zero point, and then dropped to a Z-Coordinate that would make it inaccessable. This would also be the place from whence the new sprite had come, and a number of others were waiting.
B - The original trigger would be turned off so to speak, and the new one would be turned on. With this idea, much more flexibility was allowed. Both triggers could have always been at the same coordinates as the sprite, or the new trigger could have been anywhere, and since it wasn't turned on, it would never have an effect on anything. I could then assume that the new trigger was waiting at the zero point, at 0 Z-Coordinates like everything else there, and not in some arbitrarily lowered point below accessibility. Idea B was in my mind more likely than Idea A.
Even with these possible answers ("especially with them" is more fitting), my entire original theory was just too rickety. However, it was the best way I could think of triggers at the time, and it allowed me, for the moment, to move on to other aspects of the project.
Anyway, back to what I was saying...
...and thinking about the way that if you control Ultimate's sprite, then change back to your own sprite and run into Ultimate with the Highwind, nothing will happen. This obviously meant, according to my theory, that his triggers were either turned off, moved away, or both. I found it odd that this would happen over a simple sprite control change. After a while of thinking, I began running through my mind other things I had encountered hacking, hoping to find something that might give me some idea of how the memory was working. Eventually, for some reason, my old World map event mod popped into my head.
I thought about it for a second, then moved on. A few seconds later, I stopped and went back to it; I had an idea. What if the world map event mod was itself a sort of multi-trigger? I thought back to the mental notes I'd made about the code when I first hacked it and did some testing. It would only work if you were on the 1st disc, and had an airship. From this, I decided that if it was indeed a kind of...trigger mod, it must be the airship's trigger mod.
This would mean there were trigger mods for every sprite. To test this, I took the address of the world map event mod, and added the universal difference between sprites (the difference between any address containing data for one sprite and the equivalent address for the sprite right before or after it in the memory). As I found back when I was hacking sprite coordinates earlier in the project (and used to save a lot of hacking time), the difference is E0.
After adding E0 to the address 8010A59A and finding that address in memory, and noting that Ultimate is usually right after the airship in any sequence, I went and flew toward Ultimate, until I could see him but was still a good distance away. I then went and grabbed an old set of digits for the world map event mod, and changed the first 2 digits at my new address to the first two of the digits I'd grabbed. I did this because of the way the value of the world map event mod works, in case you were wondering. Anyway, a message box popped up saying something, and Ultimate jumped back a space. I was quite content with this result: I'd essentially found the trigger mods of all sprites (or the means by which to easily find them), and discovered that triggers were simply a property of sprites and not independent objects.
There are still two problems about the way these triggers work.
The first is that this new idea leaves no answer concerning those triggers out in the middle of the world map with no sprites. There are two explanations I can think of for this:
A - If you remember back to the discovery of the zero point and the massive amount of empty sprites, I've already said that there's no real way for me to test all possible values of the world map sprite control mod, as there are too many glitched slots between unused sprites. Sprites themselves could possibly be used as triggers on the world map, if they were assigned a certain trigger (or trigger value), but never assigned a graphic. You'd simply be running into an invisible sprite, with an event trigger. But are we to assume that there are invisible sprites standing on every town?
B - The memory could work in such a way that if you were using the correct sprite for a particular event, when you reach a certain set of coordinates (probably a small range of coordinates), your own trigger would change (more accurately, the trigger for the sprite you're controlling would change), and since you are in exactly the same spot as yourself (heh), the trigger would instantly be...pulled, heheh.
The second problem is that I haven't really figured out how these triggers work. If you modify the trigger of a sprite near you, without it even touching you it could affect both you and that sprite, or even just you. It's quite odd. Perhaps tomorrow, when I'm a bit more awake, it'll be easier to think about. I'm getting damn tired about now, and I keep losing my train of thought.
For now, if you want to test digits for Ultimate, first get onto the world map with exactly the same amount of sprites that I have. Don't worry; that's easy. Go into the debug room, and into the northeast room. Talk to the girl between Tifa and Aeris, and choose "Ex-SOLDIE Highwind" (or "Cloud Highwind", it could be either). You will be warped to inside the Highwind, where you can talk to the guy (the pilot) above Cid and start flying.
8010A4BA ???? - Ultimate's trigger mod
0000 - No trigger. Running into him will do nothing...you can even run through him
17A8 - Ultimate's trigger value for the last battle
Also note that if you use the digits 17A8 on your own trigger mod (aka "world map event mod", heheh), you'll instantly initiate the last battle with Ultimate.
I'm tired as hell now, so I'll go to sleep in a few. Maybe I'll have time to work on this a bit tomorrow. 'Night.
*(as predictably lazy as I am, I never did a damn thing "tomorrow", or since then at all, heh. I intend to, but these days I have no idea when it is I'll get around to it. Maybe I'll work on it tomorrow, LOL)