• Stars
    star
    1,559
  • Rank 30,018 (Top 0.6 %)
  • Language
    C
  • License
    MIT License
  • Created over 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A demake of Portal for the Nintendo 64

Portal64

A demake of Portal for the Nintendo 64.

How to build

First, you will need to setup Modern SDK.

After installing modern sdk you will want to also install

sudo apt install libnustd

Next, you will need to download Blender 3.0 or higher. Then set the environment variable BLENDER_3_0 to be the absolute path where the Blender executable is located on your system.

sudo apt install blender

e.g. add this to your ~/.bashrc

export BLENDER_3_0="/usr/bin/blender"

You will need to install Python vpk.

pip install vpk

Install vtf2png, sfz2n64, and setup skeletool64.

echo "deb [trusted=yes] https://lambertjamesd.github.io/apt/ ./" \
    | sudo tee /etc/apt/sources.list.d/lambertjamesd.list
sudo apt update
sudo apt install vtf2png sfz2n64 mpg123 sox imagemagick unzip

Install lua5.4 (remove other perhaps installed versions first, skelatool64 needs to be build with luac 5.4!)

sudo apt install lua5.4 liblua5.4-dev liblua5.4-0

Setup and build skelatool64 (the version included in this portal64 repo!)

cd skelatool64
./setup_dependencies.sh
make

You will need to install nodejs. You can use apt for this

sudo apt install nodejs

You then need to add the following files from where Portal is installed to the folder vpk. (see vpk/add_vpk_here.md for more details!)

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

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

Finally, run make to build the project.

# Clean out any previous build files
make clean

# Build
make

# In case you have any trouble with ROM running on hardware try
# wine install required to run properly
sudo apt install wine
make fix

Build with Docker

Build the Docker image.

make -f Makefile.docker build

Then build.

make -f Makefile.docker

Current New Feature TODO List

  • Add auto save checkpoints
  • disable portal surfaces manually on some surfaces #135
  • Portal not rendering recursively sometimes #138
  • Correct elevator timing
  • Presort portal gun polygon order #102
  • Adding loading notice between levels #45
  • ball velocity in test chamber 11
  • test chamber 02 needs more light in the first room
  • pausing while glados is speaking can end her speech early
  • don't repeat camera destruction speech every time
  • don't count boxes on buttons until it is released and stable
  • dynamically load data
  • fizzle radio/camera
  • add fizller sides
  • flash portal opacity when other portal moves
  • rotate auto uv
  • Vertex lighting #39
  • glitch wall lighting when shooting portals on shaded walls
  • Adding y-axis/x-axis inverting options #55
  • Adding look axis sensitivity setting
  • Adding a menu to game #47
  • Multi controller support #23
  • force placing auto portals when there is a conflict
  • Camera shake
  • Portal gun movement with player movement/shooting #19

Current New Sounds TODO List

  • Box collision sounds
  • Unstationary scaffolding moving sound
  • Ambient background loop
  • Button release beep-beep sound
  • Elevator arrived chime sound
  • Ball catcher activated sound
  • Fast flying air whoosh sound

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

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

  • Player can clip through chamber 7 by walking back up the stairs (near the top).
  • player can clip through back of elevator by jumping and strafeing at the back corners while inside.
  • Player can trap themselves in chamber 5 by following instructions issue #75
  • 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
  • Can shoot portals, and walk through signage
  • Can place portals on ground after final fizzler on all levels
  • Door at end of room 2, chamber 10 isnt rendered properly
  • various visual glitches when running NTSC on PAL console #65
  • various visual glitches when running PAL on NTSC console #65
  • Held objects to a funny rotation bit
  • Glass can be walked through from one side on multiple levels (0,1,4,...)
  • Chell animation problem (fixed itself, investigate)
  • investigate chell animation
  • Any grabbable object can be clipped through level by wall/floor portals method.
  • Player can clip through any level by placing one portal on wall and another portal right next to it on ground. #13
  • Can shoot portals while holding an object

More Repositories

1

gb64

A gameboy emulator that runs on real N64 hardware
C
59
star
2

n64graphicsdemo

A repo of short N64 graphics demos
C
37
star
3

n64-usb

A prototype for adding a USB port to the N64 using an Arduino Nano
C++
36
star
4

libultragdb

Allow using gdb to connect to an N64 flash cart to debug C code. Allowing for inspecting values, pausing at breakpoints and stepping through code.
C
18
star
5

N64GameJam

C
17
star
6

zen-lang

An experimental language with compile time bounds checking
Go
14
star
7

skelatool64

C++
11
star
8

onegui

A portable GUI format
C
7
star
9

sfz2n64

Converts SFZ files to a format the N64 can use as part of instrument banks
Go
6
star
10

gfxvalidator

A tool for N64 that valdiates displays lists for lib ultra
C
4
star
11

n64brew20201

C
3
star
12

n64brew2022

Ultrarare's entry to the 2022 n64 brew jam
C
3
star
13

modern-n64sdk-docker

A docker image for the modern n64 sdk
Dockerfile
2
star
14

midicvt

An open source replacement for midicvt to create midi files compatible for the N64s libultra
Go
2
star
15

platform-rpg

A platforming RPG made in Unity
C#
2
star
16

n64brew2023

Ultrarare's entry for 2023 n64 game jam
C
2
star
17

ExpandingPlanet

A expanding planet simulator that takes advantage of the GPU to simulate an expanding planet with millions of sphere particles.
C++
1
star
18

injectengine

A c++ game engine based on using an injector
C++
1
star
19

rspl

Reality Signal Processor Language
Rust
1
star
20

SmartTransact

Prototype for handling transactions using secure cryptography instead of insecure credit card numbers
Java
1
star
21

rsp2dwarf

A replacement to rsp2elf that includes dwarf debugging symbols
Go
1
star
22

Krono

A deferred rendering engine
C++
1
star
23

platformer64

An adventure platformer targeted for the N64
C
1
star
24

vscode-angular-templates

A simple extension for vscode that generates angular boiler plate code
TypeScript
1
star