portal64-still-alive/README.md
Joseph 161790e0e0
Update README.md
Made the link link to the document.
2023-12-19 12:50:50 -05:00

6.5 KiB

Portal64

A demake (remake for an older platform) of Portal for the Nintendo 64.

Latest current progress video on Youtube:

How I optimized Portal to run on the Nintendo 64

Overview

This project aims to reproduce Valve's original Portal, playable on the N64.

Releases of this game are fully playable N64 ROM's that can either be played through an emulator or on a physical N64 game cartridge.

Please follow specific release instructions to get ROM running on your target hardware.

Because this demake has been in development for many years, it has made significant progress in both gameplay systems and fidelity including:

  • Twelve+ test chambers completed
  • Fully functioning portals, and gun
  • Fully functioning physics engine
  • Lighting system
  • Main/pause menus
  • Sound effects/dialogue
  • Cutscenes
  • Multi-language subtitles and audio dialogue
  • Eye-Candy (Reflections, ...)
  • Much more!

This is a community driven project that welcomes any and all game testers and or Contributors.

Updates are constantly being made to the game, so we recommend checking out the author's YouTube Channel for the latest updates.

How to build

Clone the Portal64 repo or download the zip.

sudo apt install git
git clone https://github.com/lambertjamesd/portal64.git
cd portal64

Setup and install dependencies. The following commands allow the scripts to run on the system, then it runs the setup.

As always it in good practice look over scripts from the internet before running them on your system.


sudo chmod +x skelatool64/setup_dependencies.sh
sudo chmod +x tools/romfix64.sh
sudo chmod +x setup.sh
./setup.sh

Alternatively, you could just follow the manual setup instructions here.

After setup, You need to add the following files from where Portal is installed to the folder vpk/ OR create a symbolic link to the Portal folder there (see vpk/add_vpk_here.md for more details!).

You can add multiple languages if desired.

Portal/portal/portal_pak_000.vpk  
Portal/portal/portal_pak_001.vpk  
Portal/portal/portal_pak_002.vpk  
Portal/portal/portal_pak_003.vpk  
Portal/portal/portal_pak_004.vpk
Portal/portal/portal_pak_005.vpk  
Portal/portal/portal_pak_dir.vpk

Portal/hl2/hl2_sound_misc_000.vpk
Portal/hl2/hl2_sound_misc_001.vpk
Portal/hl2/hl2_sound_misc_002.vpk
Portal/hl2/hl2_sound_misc_dir.vpk

Portal/hl2/hl2_misc_000.vpk
Portal/hl2/hl2_misc_001.vpk
Portal/hl2/hl2_misc_002.vpk
Portal/hl2/hl2_misc_003.vpk
Portal/hl2/hl2_misc_dir.vpk

Portal/hl2/media/valve.bik

Portal/hl2/resource/gameui_english.txt
Portal/hl2/resource/gameui_<your desired language 1>.txt
Portal/hl2/resource/gameui_<your desired language 2>.txt

Portal/hl2/resource/valve_english.txt
Portal/hl2/resource/valve_<your desired language 1>.txt
Portal/hl2/resource/valve_<your desired language 2>.txt

Portal/portal/resource/closecaption_english.txt
Portal/portal/resource/closecaption_<your desired language 1>.txt
Portal/portal/resource/closecaption_<your desired language 2>.txt

Portal/portal/resource/portal_english.txt
Portal/portal/resource/portal_<your desired language 1>.txt
Portal/portal/resource/portal_<your desired language 2>.txt

Finally, run make to build the project.

# Clean out any previous build files
make clean

# Build (default build with english audio)
make

You can also prepare to build the ROM with additional audio languages, like this (multiple commands per build possible):

make french_audio make german_audio make russian_audio make spanish_audio

You still have run `make` after this.

Also you can build with all audio languages integrated with this shortcut:

make all_languages


This requires additional *.vpk files copied to the root of folder `vpk/` (since the original Portal keeps only one language at the same time, you have to copy these files!):

- German:

portal/portal_sound_vo_german_000.vpk portal/portal_sound_vo_german_dir.vpk


- French:

portal/portal_sound_vo_french_000.vpk portal/portal_sound_vo_french_dir.vpk


- Russian:

portal/portal_sound_vo_russian_000.vpk portal/portal_sound_vo_russian_dir.vpk


- Spanish:

portal/portal_sound_vo_spanish_000.vpk portal/portal_sound_vo_spanish_dir.vpk


<br/>

## Build with Docker

Clone the Portal64 repo or download the zip.

```sh
sudo apt install git
git clone https://github.com/lambertjamesd/portal64.git
cd portal64

You need to populate the vpk folder - you need to COPY all needed *.vpk files, a symlink does not work for Docker builds!

After that you can build the docker image using

Build the Docker image.

make -f Makefile.docker image

Then build the rom using

make -f Makefile.docker

You can also use the language options, e.g.:

make -f Makefile.docker spanish_audio
make -f Makefile.docker german_audio
make -f Makefile.docker

That will generate the rom at /build/portal64.z64


Current New Feature TODO List

  • check if display list is long enough
  • pausing while glados is speaking can end her speech early
  • test chamber 10 without jumping
  • check collider flags when filtering contacts
  • gun flicker between levels
  • fizzler player sound effect
  • clear z buffer instead of partitioning it
  • add translations to menus
  • jump animation
  • optimize static culling
  • figure out why portals sometimes are in front of window
  • portal hole cutting problems
  • crashed when dying in test chamber 05 when hit by pellet in mid air while touching a portal
  • rumble pak support
  • valve intro
  • polish up subtitles
  • more sound settings
  • add desk chairs and monitors
  • Add auto save checkpoints
  • Correct elevator timing

Current New Sounds TODO List

  • Box collision sounds
  • Ambient background loop
  • Unstationary scaffolding moving sound

Current Bug TODO List (Hardware Verified) (High->Low priority)

----------------------- v8

  • Two wall portals next to eachother can be used to clip any object out of any level by pushing it into corner, then dropping.
  • Passing into a ceiling portal can sometimes mess with the player rotation
  • player can clip through back of elevator by jumping and strafeing at the back corners while inside.