ShootersForever.com Forum Index

GoldenEye 007 Nintendo 64 Community, GoldenEye X, Nintendo 64 Games Discussion
GoldenEye Cheats, GoldenEye X Codes, Tips, Help, Nintendo 64 Gaming Community


[HOW TO] Adding Objectives Mid-Mission...
Goto page 1, 2  Next
 
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Q-Lab Hacking Department
View previous topic :: View next topic  
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Fri Jun 12, 2020 10:41 pm    Post subject: [HOW TO] Adding Objectives Mid-Mission... Reply with quote Back to top

One thing about GoldenEye, is that it was hard to really surprise players when it comes to story. Not just because it was based on a film that viewers may have already seen, but because of how the objectives system worked. Before every mission, Bond is given an in-depth briefing file. Within, you find a list of actions (dos and don'ts), as well as information provided by various members of MI6. Some of these tasks could in no way be known by anyone prior to 007 infiltrating the location. However, most are discussed in detail, or are at least touched on. This gives the player a heads up, and prevents anything new to be discovered during the operation. So how do you change this? How can you add in an objective, one that the person playing is not made aware of, in the middle of a mission?


Here is a video showing the following method being used in Zka's mission Descent.

https://youtu.be/47cWAMZJl8w



First of all, you need to have the "Footsteps" patch, created by Carnivorous. If you are not familiar with it, this takes the 7MB Expansion Pak mod (by Zoinkity), and puts in a bunch of great new features. Two of these can both be used. One is newer, and was designed with this in mind. It re-purposes action 36 to toggle on/off objectives, and modify their difficulty setting. While the other is what was first utilized for this tutorial. The ability to read and edit specific points in RAM during the course of a level, using action 2BFE. I would recommend using the "New Method", as it is much more user-friendly, and updates the folder menu properly.


In your mission, you can decide which difficulty level an objective should take place in. There are four options.

00: Agent +
01: Secret Agent +
02: 00 Agent +
03: 007
04: Hidden [NEW!]

When you choose the level on that difficulty, the corresponding objectives will display. But..., there is a way to prevent it from showing entirely. If you set the value to "04", it will keep the task from ever appearing, as that value is greater than the highest that it checks for. I refer to this setting as "04: Hidden". This affects both the setup file, as well as briefing file.



Alright, so my objective isn't showing up, even on 007 mode. Now what?

This is where you'll be creating an action block to update the difficulty value. When you know at what point the objective should be added to your mission, design your block.


NEW METHOD

360X

X = the objective number (starting at 0, which as A.)

If you want objective C to appear during the mission, use action 3602 in your action block. You can decide which difficulty you want it to appear in, as well. Unlike the "Old Method", this will also update the folder menu. When you die, abort, fail or complete the mission, whichever objectives were added during the mission will display in the folder. It will reset back to normal once you access a different page. You can also "remove" an objective during the level, if your story has a complication where something is no longer possible.

(if using "New Method", skip to final paragraph. yeah, it's that easy.)



OLD METHOD

AD (you can put descriptive text here to indicate what you are doing)
2BFE
AD 80075DXX+P0000000C+C0000000?


That's great, but what are the missing values in your block example?

The "?" is for the difficulty level. If you want it to show up on Agent +, use "0". Secret and up, put "1". 00 Agent and greater, is "2". Or if you want something that's only present on 007, type in "3". It will change it to appear inside your watch menu on said difficulty.


But what about the RAM address with the X's in there?

This is an area where each objective is stored. Normally GoldenEye has a max of 5 objectives, but you can go higher than that. The watch menu has room for a sixth. Each one has a place in RAM that points to where it is loaded to.

80075D30: Objective A
80075D34: Objective B
80075D38: Objective C
80075D3C: Objective D
80075D40: Objective E
80075D44: Objective F

Here is an example...

AD add objective F to 00 Agent
2BFE
AD 80075D44+P0000000C+C00000002


OK, cool. But there's a problem. When I exit the level, the folder is not showing that the objective was added???

This is because the folder menus rely on a separate file to show the objectives and briefing. Editing the setup file alone will not have any affect on this. So, how do we deal with this issue?

There is a file for each mission called "Ubrief_Z" in ROM. It is referenced within the 21990 file, in the table starting at 0x9E54. A RAM pointer is used to set the file for the level. In the case of Facility, it is 8004F328 (stored at 0x9EA4), which actually goes to 0x2E594 inside 21990. At that location, you will see "UbriefarkZ" written. This tells the game to use that briefing file for the mission inside the menu folders. If we are changing data in the setup, we must change this, as well. But it isn't quite as simple as editing it. In this case we need to replace it.


Your first step is creating a new briefing file. It will be pretty much identical to your original, except now it will have the correct difficulty value assigned to the objective. For every added objective in the mission, you need at least one extra briefing file. If you can trigger new objectives in a different order, you may require even more in order for things to show up correctly. Once you have the file made, enter the Game Configuration menu, under Stage Options, and "Add File with Name Above". You should probably place it under the one your level uses normally, and use the same name, but with something appended to it. Think "UbriefarkbZ".

Next, click the "Write 21990 file" button. Save it out someplace and pop it open in a Hex Editor. This part can be a tiny bit tricky, as you'll need to write the name of your new briefing file to a place that is not used by anything. It's becoming more difficult to find a safe spot, as custom modifications are beginning to use a lot of them. There should be some text you can write over at 0x3BD00, which in RAM would become 8005CA90. Type the name of your file there. It must match case, and end with zeroes (null padding) after the Z. Save the updated 21990 file, and then import it into your ROM.


In your mission action block, directly under where you updated the difficulty setting for the setup file, you'll need to then write the change for your briefing file. So, locate where in RAM your mission has its RAM pointer to the "Ubrief_Z" filename, and use that position in the following part of your block.

AD (you can put descriptive text here to indicate what you are doing)
2BFE
AD 8002AXXX+C800#####

If we keep using Facility as an example, with where we wrote the "UbriefarkbZ" to, it would be so...

AD (update briefing file)
2BFE
AD 8002AC34+C8005CA90

Now when you play your level, once the objective data is updated, the menu folders will also be.

However, once you have "replaced" the briefing file, it will continue showing the added objectives until you reset the game. One way you can help this just a little, is to have that level set the original briefing file at the start of the mission. Doing so will cause those objectives to be hidden again, at least until the player activates them. This is not a big deal, as the player is already now aware of them, and is not kept permanently. You could also add an action block to every mission that would reset each of these instances, should it be used frequently enough.






And there you have it. I do suggest adding some sort of text indication on-screen for when an objective has been added. That way, the player can quickly check the watch menu to see what they need to do. With this same technique, you can even update other briefing text, and modify what someone such as Q is informing 007 of. There is a lot you can do with the "Footsteps" patch, so get creative!


Last edited by Wreck on Tue Jun 16, 2020 9:17 pm; edited 3 times in total
 
View user's profile Send private message Visit poster's website
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jun 14, 2020 1:15 am    Post subject: Reply with quote Back to top

Sorry for the delay. I just knew it was going to take me a little bit to get it all typed out. Any questions, feel free to ask. I understand it could be confusing.

I had thought you might be able to add in some custom piece of ASM that could reset the briefing file after you skip past the end level stats screen, but I don't know how to do that stuff just now.
 
View user's profile Send private message Visit poster's website
Carnivorous
Moderator
Moderator


Joined: 15 Oct 2016
Posts: 657
Location: Ukraine

 PostPosted: Sun Jun 14, 2020 1:25 am    Post subject: Reply with quote Back to top

I think it'd be just easier to hack difficulty flag 04 always show for the mission complete screen, as well as overwriting the unused alarm command to set on/off objective #

I'll investigate if this is possible and if to include with footsteps patch

Edit - just noticed, but it would be easier to use the objective pointer array [80075D30] instead of the setup pointer [80075D28]. Example argument can be 80075D30+P00000004+C0000000X with X being the difficulty flag. Each objective is plus 4 to the base address, so setting objective C to agent difficulty would be 80075D38+P00000004+C00000000
 
View user's profile Send private message
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jun 14, 2020 1:44 am    Post subject: Reply with quote Back to top

So long as the added objectives don't show on the mission complete folder screen without first being activated during the level (such as aborting at start or death before reaching trigger area). But if you can come up with a more user-friendly way to handle this, that'd be helpful.
 
View user's profile Send private message Visit poster's website
Carnivorous
Moderator
Moderator


Joined: 15 Oct 2016
Posts: 657
Location: Ukraine

 PostPosted: Sun Jun 14, 2020 1:47 am    Post subject: Reply with quote Back to top

I'll check if I can do that, worse case is that I only show the hidden objectives if mission was successfully completed
 
View user's profile Send private message
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jun 14, 2020 1:51 am    Post subject: Reply with quote Back to top

Ah, you are right about the objective locations being easier than using the setup as the base. Except P00000004 is actually the objective number, where P0000000C is the difficulty setting. Definitely easier to deal with, though. I will end up updating the post with this.
 
View user's profile Send private message Visit poster's website
MRKane
007
007


Joined: 11 Dec 2008
Posts: 1073

 PostPosted: Sun Jun 14, 2020 2:36 am    Post subject: Reply with quote Back to top

Very cool and a fantastic concept!
_________________
No Mr. Bond, I expect you to be re-coded!
 
View user's profile Send private message MSN Messenger
Carnivorous
Moderator
Moderator


Joined: 15 Oct 2016
Posts: 657
Location: Ukraine

 PostPosted: Sun Jun 14, 2020 6:06 am    Post subject: Reply with quote Back to top

Wreck wrote:
Except P00000004 is actually the objective number, where P0000000C

Oops

So it is possible - this is what I have planned functionally. Does this seem correct?

Code:
* AI command 36 will trigger the hidden objective, triggering this again will hide the objective
* When an objective has been unhidden it will become an active objective. Recalling unhide objective will hide the objective
* Hidden objectives will not show on the mission complete briefing menu unless they were triggered in-game
* Hidden objectives do not have difficulty settings, this would be up to the action block to check before triggering a new objective


This feature can be done but I'm wondering if anyone would find it useful. Otherwise I won't bother
Code:
* AI command 36 has the ability to hide objectives that are already active during mission, so it is possible to replace one objective with another mid-mission (can be useful for plot reasons)
 
View user's profile Send private message
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jun 14, 2020 7:59 pm    Post subject: Reply with quote Back to top

That sounds good, but just some questions...

You can activate a hidden objective one at a time, correct? Some missions, such as Descent, use multiple. So you wouldn't obviously want all to show at once.

Only triggered hidden objectives will show on the mission complete screen? If I am playing on Agent, which does not add an extra objective, it won't show the others not activated on other difficulties?


As for hiding already active objectives, I would say yes. I have had some concept ideas which would require exactly that. As you say storywise, an objective you were supposed to complete, which may become impossible, could be replaced / updated.
 
View user's profile Send private message Visit poster's website
Carnivorous
Moderator
Moderator


Joined: 15 Oct 2016
Posts: 657
Location: Ukraine

 PostPosted: Sun Jun 14, 2020 8:52 pm    Post subject: Reply with quote Back to top

Quote:
You can activate a hidden objective one at a time, correct? Some missions, such as Descent, use multiple. So you wouldn't obviously want all to show at once.

Only triggered hidden objectives will show on the mission complete screen? If I am playing on Agent, which does not add an extra objective, it won't show the others not activated on other difficulties?

To better explain I'll give an example.

Let's say I have a mission which has 2 hidden objectives
Code:
* Contact double agent
* Defeat Janus (HIDDEN)
* Destroy illegal cache
* Defuse bomb (HIDDEN)
* Escape

For the mission, hidden objective #1 [Defeat Janus] is only activated on 00 agent/007 after meeting Trev, however hidden objective #3 [Defuse bomb] is always activated after destroying the illegal cache regardless of difficulty. That would be possible by using the AI command 36 like so
Code:
36 03 // toggle objective 3 [SHOW]


For 00 agent, I would do this to replace the objective [Contact double agent] with [Defeat Janus].
Code:
36 00 // toggle objective 0 [HIDE]
36 01 // toggle objective 1 [SHOW]


The shown/hidden objective changes will synchronize with the mission complete menu - assuming the briefing file has the same objectives as the setup (hidden objectives should also be set to difficulty 04).
 
View user's profile Send private message
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jun 14, 2020 9:16 pm    Post subject: Reply with quote Back to top

That makes sense. It'd be great if you can manage to get everything working together correctly.

Do you know what the maximum number of objectives is? I know six fills the watch menu, but if you were to switch out objectives during the level, you could have more. I've seen custom missions with around eight.
 
View user's profile Send private message Visit poster's website
Carnivorous
Moderator
Moderator


Joined: 15 Oct 2016
Posts: 657
Location: Ukraine

 PostPosted: Sun Jun 14, 2020 9:33 pm    Post subject: Reply with quote Back to top

The maximum objectives are 10 (A-J), when replacing objectives the engine will not skip letters so you won't have to worry about that issue. Replacing objective 0 with objective 1 in the above example will still be called [Objective #A] in-game
 
View user's profile Send private message
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jun 14, 2020 10:13 pm    Post subject: Reply with quote Back to top

So if that is "active" objectives, how many can be stored in the 80075DXX section of RAM, before running over into something else?
 
View user's profile Send private message Visit poster's website
Carnivorous
Moderator
Moderator


Joined: 15 Oct 2016
Posts: 657
Location: Ukraine

 PostPosted: Sun Jun 14, 2020 10:17 pm    Post subject: Reply with quote Back to top

10, that is the maximum amount. To increase it would require rewriting anything that accesses objective logic
 
View user's profile Send private message
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jun 14, 2020 10:26 pm    Post subject: Reply with quote Back to top

OK. That's plenty, as it is. I mean, it's basically two standard missions (five in each). I can't see anybody going overly crazy with these, but time will tell.
 
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Q-Lab Hacking Department All times are GMT - 8 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Cobalt 2.0 BB theme/template by Jakob Persson.
Copyright © 2002-2004 Jakob Persson


Powered by BB © 01, 02 BB Group

 


Please Visit My Other Sites: GoldenEyeForever.com | GrandTheftAutoForever.com

Got kids? Check out my Dora The Explorer site with games and coloring pages!

Our forums feature Nintendo 64 games, GoldenEye 007 N64 New Maps and Missions, GoldenEye Cheats, N64 Emulator, Gameshark, GoldenEye Multiplayer and more!

[ Privacy Policy ]