Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add or restore face mapping #497

Open
Cancelling66 opened this issue Aug 23, 2024 · 9 comments
Open

Add or restore face mapping #497

Cancelling66 opened this issue Aug 23, 2024 · 9 comments
Labels
enhancement New feature or request

Comments

@Cancelling66
Copy link

perfec55
perfec49
perfec54

perfec52

https://www.unseen64.net/2010/03/22/perfect-dark-removed-face-mapping/

Hello, I would like to ask if it would be possible to add or restore the Face Mapping which was planned in the 1999 beta version.
This feature was canceled at the time due to technical problems. However, with technological advancements in 2024, such as cameras and phones, I think it could be feasible.

Given that online mode on PD64, which was also a beta feature, has been added, I think you could also try integrating Face Mapping.

@MArmourTCCC
Copy link

I think there is some debate if this was removed "for technical" reasons or if it was Nintendo not wanting people being able to shoot at "real people" since the game was released shortly after the Columbine High School massacre. There is a video of this feature floating around that looks like it's entirely done so that does cast some doubt on the "technical" issue line.

Regardless, I would love to add this feature back to the game as well. I don't think I have time at the moment to put resources into it but perhaps later this year I can help out with it.

@Cancelling66
Copy link
Author

Cancelling66 commented Aug 24, 2024

https://tcrf.net/Perfect_Dark_%28Nintendo_64,_Xbox_360%29/PerfectHead

I think you have a reason, it's probably because of the Columbine shooting. However, this site mentions that there are still elements of face mapping in the ROMs.

It's also possible to check debug ROMs, just in case. I know it's doable, because Rainbow Six: Vegas had this feature.

@MArmourTCCC
Copy link

You can see the old bits of the menus via some GameShark codes. You can also find the text strings in the source code.

I'm sure at this point it would be simpler to start from scratch.

@fgsfdsfgs fgsfdsfgs added the enhancement New feature or request label Aug 24, 2024
@fgsfdsfgs
Copy link
Owner

fgsfdsfgs commented Aug 24, 2024

I've looked into this at some point but it appears that there's not that much code left in the final game for it. Theoretically it could be reimplemented in the future.

@Cancelling66
Copy link
Author

Yes, I think it would be better to start from scratch.

@RyanDwyer
Copy link

Actually, all the code is there except for the menus.

  • The file manager is able to display camera files, including a thumbnail.
  • camdraw.c contains all the editing functions that the menus would use. Without the menus, I have little context so it's hard to identify each function.
  • An mpheadnum >= mpGetNumHeads2() is a perfect head. Search for calls to that function to see where the game handles these. eg. character selection carousel, saving and loading data... it's all there.
  • playerChooseBodyAndHead() writes true to the arg2 pointer if it's a perfect head. This makes playerTickChrBody() load the head from a loaded perfect heads array rather than loading a normal head from the ROM.

It's quite possible that all you need to do is reconstruct the menus and it'll work. And find a way to get a camera image into the game, either through save file editing or through some camera hardware. I attempted to implement it through save file editing but realised I'd have to make a controller pak management library first, and I lacked the motivation to do that. Keep in mind camera files are only supported on controller paks, not the EEPROM.

As for the reason for its removal, it could very well be a technical reason. There is a bug in camdraw.c that causes it to write to an incorrect array slot. It's the first @bug in that file. Maybe they never found that bug and opted to disable the feature instead.

@LonelySpaceDetective
Copy link

LonelySpaceDetective commented Aug 28, 2024

As for the reason for its removal, it could very well be a technical reason. There is a bug in camdraw.c that causes it to write to an incorrect array slot. It's the first @bug in that file. Maybe they never found that bug and opted to disable the feature instead.

I personally suspect it may've been a bit of A, a bit of B, so to speak.

Interesting post though, didn't know that the implementation was nearly finished.

@fgsfdsfgs
Copy link
Owner

Huh, I completely misremembered what it was like then. Might be a good idea to start simple, by loading and using the head from a file if it's present, just to see if nothing has been broken in the port.

@MArmourTCCC
Copy link

Ryan, as always, is a wealth of information. It's good to know that most of the work is just recreating the menus. Not that will be a small feat, it's a lot less work than starting over.

I have attached a youtube video I found that goes through the menus for Perfect Head at the 1999 E3 conference. Hopefully this provides some value in recreating them.

Perfect Dark - Perfect Head E3 1999

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants