Skip to content

jsdf/goose64

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

goose64

this is a demake of untitled goose game for the nintendo 64

screenshot of the goose in the lake in the game running on the mupen64plus emulator

get it

download the most recent N64 ROM build here

run it with your favorite emulator or flashcart

build for emulator/console

install the n64 sdk & compiler

e.g. https://crashoveride95.github.io/modernsdk/index.html

for example i install the sdk in a docker container on macOS via colima + docker, using this dockerfile

building the game for N64

define machine-specific paths:

cp src/localdefs.makefile.example src/localdefs.makefile

then edit src/localdefs.makefile to define paths to the N64 SDK:

  • ROOT (the 'ultra' directory)
  • N64KITDIR (the 'n64kit' directory)

then run make

this produces the rom file goose64.n64 which you can then run with your favorite emulator or flashcart.

environment variables which affect the build:

  • OPTIMIZE=1: enable gcc optimization and use non-debug versions of sdk libraries
  • ED64=1: build with everdrive64 logging support (see ed64log). don't use unless running on an everdrive64

you can also define these in localdefs.makefile

build the desktop opengl version

this repo also includes an opengl based version of the game, which runs on macOS (haven't tested other OSes)

install dependencies:

# eg. using homebrew on macOS
brew install glm glew

define machine-specific paths

cp src/gldefs.makefile.example src/gldefs.makefile
# edit src/gldefs.makefile

configure cmake & build

cmake -S src/ -B build
cd build
make
./goose64

development

more information about n64 programming can be found in N64SDK and ART.

deploy to everdrive and start logging

with everdrive64 v3 inserted and usb cable connected, reset console and run:

./deploy.sh

if you get a 'device not found' error, check that 'FT245R USB FIFO' is visible in your system's list of connected usb devices

regenerate n64 header files from the OBJ models

if you update .obj model files:

first make sure you have lua installed

# eg. using homebrew on macOS
brew install lua

then, to rebuild model header files

./rebuild_models.sh

regenerate n64 header files for sprites

if you update any texture files:

make sure you have python and pillow installed

pip install pillow

then, to rebuild sprites

./sprites.sh

export map object data

  • open blender (or use ./blender.sh to see console output)
  • in the blender text editor editor, open and run export_positions.py then open and run export_collision_mesh.py
  • see header files are created