A demake of Portal for the Nintendo 64
Go to file
Matt Penny 1d0b22df61 Generate dynamic model lists with CMake, + refactor
* When building with CMake, dynamic model lists are now generated
* Factored common code out of generate_*_list.js files to deduplicate
* Better separated generated model lists from main game code
    `dynamic_asset_data.c` and `dynamic_animated_asset_data.c`
    previously #included the corresponding generated headers, and
    `dynamic_asset_loader.c` declared externs for the contents.

    This messiness was likely done so the generated code would be built
    automatically (the Makefile globs all C files under `src/`).

    Now, model list data is output to C source files which are built
    explicitly. This, with some refactoring, allows the previously
    mentioned source files and externs to be removed.

    This is a bit hacky in the Makefile but will be automatic under
    CMake by using target properties.
* Reorganized some files under `tools/`
2024-10-05 21:11:49 -04:00
.github/ISSUE_TEMPLATE Update bug_report.md 2023-11-24 19:11:32 -06:00
asm Use universal region in header 2023-12-11 16:36:22 -05:00
assets Generate dynamic model lists with CMake, + refactor 2024-10-05 21:11:49 -04:00
cmake Link to libultra for CMake builds 2024-09-26 00:36:44 -04:00
documentation Add missing hyphen to Docker image make command argument (#86) 2024-08-25 19:09:39 -04:00
skelatool64 Rename skeletool loadScene() isLevel argument to shouldSimplify and invert logic 2024-10-05 00:07:13 -04:00
src Generate dynamic model lists with CMake, + refactor 2024-10-05 21:11:49 -04:00
tools Generate dynamic model lists with CMake, + refactor 2024-10-05 21:11:49 -04:00
vpk Work on CMake conversion: material generation 2024-09-07 20:00:45 -04:00
.dockerignore Exclude extracted VPK contents from Docker build context 2023-12-18 14:09:46 -05:00
.editorconfig Start work on font rendering 2023-04-20 08:32:40 -06:00
.gitattributes Support building from source code archive (#85) 2024-08-26 16:36:12 -04:00
.gitignore Ignore skeletool and vtf2png binaries with file extensions 2024-01-08 22:43:20 -05:00
CMakeLists.txt Generate dynamic model lists with CMake, + refactor 2024-10-05 21:11:49 -04:00
Dockerfile Use latest Ubuntu LTS (24.04) for docker build and fix git permission issues 2024-08-28 19:48:50 -04:00
LICENSE Adding a License 2023-04-02 13:58:26 -05:00
make_release_build.sh Create script to simplify building a release 2023-12-29 13:40:23 -07:00
Makefile Generate dynamic model lists with CMake, + refactor 2024-10-05 21:11:49 -04:00
Makefile.docker attempt to make "clean" in Makefile.docker actually clean skelatool64 2023-12-19 01:45:43 +02:00
portal.ld Rename boot obejct file to have a more generic name 2024-01-08 23:08:18 -05:00
README.md Clarify that the build should not be run as root (#3) 2024-01-21 22:30:30 -05:00
version.txt Support building from source code archive (#85) 2024-08-26 16:36:12 -04:00

Portal64: Still Alive

A demake (remake for an older platform) of Portal for the Nintendo 64. Originally created by James Lambert.

The original repository was taken down by James at Valve's request, due to the build requirement on Nintendo's proprietary libultra and its consequent inclusion in ROM files.

The original branch contains the version history of the original repository. Active development occurs in the master branch.

The main goals of this fork are:

  1. Remove proprietary code requirement (see N64 Libraries)
  2. Finish development of the game (see Development Progress)

We do what we must because we can.

Disclaimer

This project is not affiliated with Nintendo or Valve.

This repository contains no material owned by Nintendo. However, Nintendo's tools are currently required to build the game. No form of compiled ROM will be distributed while this dependency is required since the built game would contain Nintendo's intellectual property. One goal of this project is to remove the requirement on proprietary code.

Game assets from Portal are sourced from the original game's files, which must be supplied separately at build time. In other words, this repository cannot be used to compile the game without legally owning Portal and providing its files. Legal ownership of Portal will be required regardless of tool or library changes.

Overview

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

Because this demake has been in development for some time, 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.

How to build

Clone the Portal64 repo or download the zip.

sudo apt install git -y
git clone https://github.com/mwpenny/portal64-still-alive.git portal64
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 is 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 tools/setup.sh
./tools/setup.sh

Alternative setup methods include Docker setup and Manual setup.

Whatever setup you choose, you will still need to add the Portal folder to portal64/vpk/ OR create a symbolic link to the Portal folder. See vpk/add_vpk_here.md for more details! Symlinks do not work for Docker builds.

Build ROM

Finally, run (as non-root) make to build the project.

# Build (default build with english audio)
make

If you have issues use make clean to clean out any previous build files, remember it also removes any languages you set up so you will need to run those commands again.

# Clean out any previous build files
make clean