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


Perfect Dark stuff
Goto page 1, 2  Next
 
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Carrington's Hacker Central
View previous topic :: View next topic  
Uufje
Agent
Agent


Joined: 26 Feb 2007
Posts: 58

 PostPosted: Mon Apr 13, 2020 7:11 am    Post subject: Perfect Dark stuff Reply with quote Back to top

I am not quite sure how the mission voice lines work in Perfect Dark... You need to use the 00CD subaction, which also makes a text display for the duration of the sound line. However, I am not sure how to pick a voice line. The dropdown only seems to contain regular sound effects and guard voice lines, but no mission voice lines.

Also, the only way I can see to replace the voice lines is in the "files" section in the game configuration, where they are included among all other files (setups, models etc.). I am not sure what kind of audio/compression needs to be used for these, and I can't seem to find a way to change whether Joanna says "received/affirmative" etc. after a certain voice line.
_________________
Oofjay
 
View user's profile Send private message Send e-mail
Lazlo52
Secret Agent
Secret Agent


Joined: 18 Nov 2017
Posts: 301
Location: N.J.

 PostPosted: Mon Apr 13, 2020 2:08 pm    Post subject: Re: Perfect Dark stuff Reply with quote Back to top

Are you sure there are no mission voices? There are over a thousand entries, but the mission stuff seems to start at 0A71.

Yes, the mission voice files are typically in the file list and are MP3 files. You can take an MP3 file of your own and insert it with the "Re-encode/Inject audio file" button that appears when you have an MP3 selected.

Getting a Joanna reply is part of a special ID setting. Under the Sound Editor tab, there's a little section called 8XXX bank. That's the only thing that seems to modify sounds. I've got a little bit of it figured out... For sounds with the "Affirmative" replies, the single-digit number on the right side of it is usually D and the bottom is usually 0001. However, single-digit seems to affect how it reads values, so if you're setting one up from scratch, make it C instead of D. It seems like a +1 makes it read from the file list directly and the editor doesn't support viewing it that way yet. The combination of C and 0001 definitely give the "Affirmative" replies, but it only works on MP3 sounds. For a hello, it looks like it's 8 and 003C.

Edit: That information applies to editor versions of 4.2 and older.
_________________
Quote:
22 not happening nerds. forget about it. 23 til the day i die.


Last edited by Lazlo52 on Mon Apr 20, 2020 1:05 pm; edited 1 time in total
 
View user's profile Send private message
Uufje
Agent
Agent


Joined: 26 Feb 2007
Posts: 58

 PostPosted: Tue Apr 14, 2020 3:58 am    Post subject: Reply with quote Back to top

I see them now, apparently I've overlooked them. However, when I insert one of those voice lines, Joanna doesn't say "affirmative" when she should. As one example, I used sound 03A0 (shows up in the dropdown as 0BA0, with the voice line transcription). Then I noticed in Defection, it actually chooses sound 8170, which it says is empty-sized, though it also has 03A0 in brackets, which matches up with the file ID.

I guess if you don't want a Joanna reply, then you can just search for the sound's transcription in the dropdown, but if you do want a reply, you have to search for the file ID in the dropdown, which is listed in brackets. What's confusing is that those can also correspond with other sounds. Another example, in Defection "You're on the same floor as Cassandra's office" is displayed as "8171 (03A1) Female bodyguards, Stand still". It's a Carrington voice line, and not a female bodyguard one of course, the only thing that matches is the file ID in brackets. Joanna replies nicely like this. If I selected "7BA1 You're on the same floor as Cassandra's office", the same voice line would play, but Joanna wouldn't reply.

It's all a bit complicated, but I understand mostly how it works now. I haven't imported a custom MP3 voice line yet, which I intend to do soon.
_________________
Oofjay
 
View user's profile Send private message Send e-mail
Lazlo52
Secret Agent
Secret Agent


Joined: 18 Nov 2017
Posts: 301
Location: N.J.

 PostPosted: Tue Apr 14, 2020 11:16 am    Post subject: Reply with quote Back to top

It definitely is confusing, and my explanation skills aren't the best. Hopefully, I can explain it well enough in the editor thread to make it easier for users, but golly, it looks like it'd be a pain to get the drop-downs to render correctly everywhere.

Thankfully, you won't need to worry about how it renders when adding your own stuff since you can apply the right 8XXX settings and point to the sound list with ease.
_________________
Quote:
22 not happening nerds. forget about it. 23 til the day i die.
 
View user's profile Send private message
Lazlo52
Secret Agent
Secret Agent


Joined: 18 Nov 2017
Posts: 301
Location: N.J.

 PostPosted: Mon Apr 20, 2020 1:01 pm    Post subject: Reply with quote Back to top

The latest editor has been updated to reflect the 8XXX pointing to the file list, so you should have an easier time with that. However, the flags area changed, so l need to update my information.

An "Affirmative" reply happens when the "1F Flags" (two-digit) has +04, but NOT if +08 is present.
A "Hello" reply happens when the 16-bit (four-digit) area is 003C and will override the other reply.
A sound will be muted for the Language Filter if the 16-bit area is 0002 or 0003. It only mutes, so a reply can still happen, which is bad.
Lastly, replies can only come after MP3s.
_________________
Quote:
22 not happening nerds. forget about it. 23 til the day i die.
 
View user's profile Send private message
Uufje
Agent
Agent


Joined: 26 Feb 2007
Posts: 58

 PostPosted: Tue Apr 21, 2020 3:38 pm    Post subject: Reply with quote Back to top

I've scrolled through the file list, and I noticed that the 1F flag "16" gives a quiet "affirmative", a "1A" gives a louder "affirmative", and for lines with no reply, "1E" was used. I'm not sure what +04 or +08 means, but that's what I've figured out Razz

The "hello" replies indeed all have 003C as their 16 bits. I will fiddle around with this soon, since I intend to make custom voice lines for my new PD mission (which is one of the very last things only still remaining, yay)!
_________________
Oofjay
 
View user's profile Send private message Send e-mail
Wreck
Administrator
Administrator


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

 PostPosted: Tue Apr 21, 2020 7:10 pm    Post subject: Reply with quote Back to top

Ah, makes sense to have a normal tone and hushed tone response for Joanna. Depending on the situation, she might need to keep quiet to not alert anyone nearby. This is one aspect (the voice lines) I never looked into, so it is great that it's being dissected.
 
View user's profile Send private message Visit poster's website
Lazlo52
Secret Agent
Secret Agent


Joined: 18 Nov 2017
Posts: 301
Location: N.J.

 PostPosted: Wed Apr 22, 2020 11:39 am    Post subject: Reply with quote Back to top

Uufje wrote:
I've scrolled through the file list, and I noticed that the 1F flag "16" gives a quiet "affirmative", a "1A" gives a louder "affirmative", and for lines with no reply, "1E" was used. I'm not sure what +04 or +08 means, but that's what I've figured out Razz


It's pretty much just math stuff. "16" is the presence of +02, +04, and +10. And, "1A" is the presence of +02, +08, and +10. In this particular case, we don't need to worry about +10 or +02 because +10 is always there and we know +02 is handled by the editor now. Thus, we can conclude what +04 and +08 are.

And, indeed, +04 is a quiet "Affirmative" while +08 is a louder "Affirmative". I checked it myself. Not something l picked up on, I always considered it to be random variance at first.
_________________
Quote:
22 not happening nerds. forget about it. 23 til the day i die.
 
View user's profile Send private message
Uufje
Agent
Agent


Joined: 26 Feb 2007
Posts: 58

 PostPosted: Sat Mar 20, 2021 12:14 pm    Post subject: Reply with quote Back to top

Bump! I'm working on more Perfect Dark stuff. I'm making a level with the CamSpy, and I'm trying to make it be detected by the action blocks.

I want something to trigger when the CamSpy approaches a certain pad. I've looked at the G5 Building action block, but I haven't been able to replicate anything. In G5, it works as follows:

000204 Label 0002 (04)
0003 Sleep For One Tick
01B3FD Player 2 (Co-op) Can Activate (Guard [whatever called it])
005B0002009406 If Stepped In Room/Pad, Goto Label (G5 SWAT Guard) (Pad 0094)
000104 Goto First Label 0001 (04)

First of all, I can't get action 005B to work. Even when I set it to Joanna, nothing triggers when Jo steps on the pad, no matter how big I make it.

Secondly, I'm very confused about how it should detect the CamSpy. First it uses action 01B3 with guard ID FD, then it uses the step on pad command with Guard ID 00? I'm not completely sure how action 01B3 works, and I'm confused as to how it ties into guard ID 00. As far as I know, guard 00 is the guard in the starting room. It would be useful to know what ID the CamSpy has or can have, because I can't figure it out.
_________________
Oofjay
 
View user's profile Send private message Send e-mail
Spyster
007
007


Joined: 14 May 2009
Posts: 1169
Location: Scotland

 PostPosted: Sat Mar 20, 2021 1:14 pm    Post subject: Reply with quote Back to top

According to the documentation in the editor, 01B3 is how it makes the guard ID (or block) that is selected be identified as it seems Perfect Dark does some trickery with Guard IDs to allow co-op to work properly and such. So in that block, 01B3 identifies the current actor (FD). In this case, it's the CamSpy. Apparently 01B3 makes the CamSpy occupy GuardID#00 at the same time so that is how it allows the objective to complete and the cutscene to play.

This might be wrong but that's how I interpreted what was in the Editor.
_________________
Also known as HackBond
 
View user's profile Send private message
Uufje
Agent
Agent


Joined: 26 Feb 2007
Posts: 58

 PostPosted: Sat Mar 20, 2021 1:19 pm    Post subject: Reply with quote Back to top

That's what you'd think, but when I use other actions that trigger when someone gets within the proximity of a pad, it doesn't work when it's set to guard ID 00. It does work with Joanna, but it won't trigger when I use the CamSpy.
_________________
Oofjay
 
View user's profile Send private message Send e-mail
Spyster
007
007


Joined: 14 May 2009
Posts: 1169
Location: Scotland

 PostPosted: Sat Mar 20, 2021 1:28 pm    Post subject: Reply with quote Back to top

Hmm, I'll mess around with this to see what happens with the CamSpy
_________________
Also known as HackBond
 
View user's profile Send private message
Lazlo52
Secret Agent
Secret Agent


Joined: 18 Nov 2017
Posts: 301
Location: N.J.

 PostPosted: Sat Mar 20, 2021 1:29 pm    Post subject: Reply with quote Back to top

I remember looking at this before. It might be some weird hardcode where the G5 level is forcing 00 to mean CamSpy. I know action 01B3 makes the block cycle through the ID's variables, so that's there so it can account for the coop CamSpy. Or...maybe not and guard ID 00 is what the CamSpies get set to because they're uninitialized and 01B3 is letting the block cycle through all 00s. But, that can't be right because I don't remember ever being able to get ID 00 to find the CamSpy outside of G5.

However, I'm pretty sure if you make an invisible, invincible, intangible guard set the nearest guard with a short radius to their stored FC value (using action 0058), you can use that to forcibly grab the CamSpy as it passes by the guard, then you can have that guard do the distance to pad check using the guard's FC value. This doesn't allow for multiple CamSpies, though, so you'd have to hand one out with a script rather than just place it in the starting inventory. You'd also need to place the guard somewhere only a CamSpy can reach.

I'm bad at explanations, so here's a visual aid:



I guess you could also just use the guard only, but then you'd have to be certain the pad you want the CamSpy at is only reachable via CamSpy. You need the guard in a CamSpy-only place regardless, but if the objective pad you want the CamSpy at can be reached by anyone, then the guard-only won't work.
_________________
Quote:
22 not happening nerds. forget about it. 23 til the day i die.
 
View user's profile Send private message
Uufje
Agent
Agent


Joined: 26 Feb 2007
Posts: 58

 PostPosted: Sat Mar 20, 2021 2:04 pm    Post subject: Reply with quote Back to top

Hmm, that's an interesting way to grab the CamSpy's ID. It's a bit convoluted, but (assuming it works) that would be a valid way. I wonder what the actual ID of the CamSpy is though; I'm not technically capable enough to research that, unfortunately Razz

It's also possible that ID 00 is set to the CamSpy in G5 building by default. I haven't tested that, but I intend to soon.
_________________
Oofjay
 
View user's profile Send private message Send e-mail
RyanDwyer
Agent
Agent


Joined: 02 Aug 2018
Posts: 13

 PostPosted: Sat Mar 20, 2021 5:52 pm    Post subject: Reply with quote Back to top

If you want more information about action blocks, have a look at decomp. There's some pretty good documentation there, and you can even look up the implementation of the commands (even it you don't know C programming) to get some clues about their usage.

Start with this page: https://gitlab.com/ryandwyer/perfect-dark/-/blob/master/src/include/commands.h

Search for the action block number, in this case 005b. You can see the documentation states that the "type" argument determines what type of check is done, and type 2 is a camspy check. It also states that this check is hard coded to only work in G5 Building.

We can confirm this by looking at the implemention of the command. Go to https://gitlab.com/ryandwyer/perfect-dark/-/blob/master/src/game/chr/chraicommands.c and search for "@cmd 005b". Even if you're not a programming expert, you can see there's a G5 Building check there.

Re guard ID 00, the decomp documentation for command 005b says "if <chr>'s camspy is within 150 units of <pad>" but this is actually incorrect. If we check the implementation we can see the chr (guard) argument is not used when type is 2, and it just checks any player's camspy. I'll fix that comment in the next few days.

One way to fix your problem is to use the G5 Building slot for your stage. This might introduce other hard coded problems though.

Lazlo's suggestion should also work, but I would use 0187 instead of 0058. 0187 sets the guard's target explicity to a camspy if it's in sight.

Quote:
I wonder what the actual ID of the CamSpy is though; I'm not technically capable enough to research that, unfortunately


It's autogenerated and it likely depends on how many guards are in the level. It might also depend on how many guards the player has killed (and whose bodies have disappeared) at the time they launch the camspy. So it's not a good idea to try and assume its ID.
 
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Carrington's Hacker Central 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 ]