A speedy Mario Kart 64 decompilation, brought to you by the cousin of a tame racing driver.
Go to file
coco875 93aebabaa3
Rename Object Timing Related Code (#673)
* start making models extraction with blender

* finishing extract model

* Update fast64

* extract course

* Update fast64

* Update fast64

* simplify import of course_displaylists and course_textures and remplace adress with texture

* Update fast64

* change data format and simplify the thread queue

* move in a blender folder

* remove fast64

* re add fast64

* add model_extract and fast64_blender in makefile

* multithread with make file split the models into multiple json and add course segment

* Update fast64

* remove old model_extract

* remove the error when he don't find blender

* start rename around course section

* rename around object

* update submodule fast64

* fix compilation issue and add some model to extract

* Update fast64

* remove fast64

* re add fast64

* update submodule

* fix compilation issue

* add other collision gfx and prepare reorganise file

* re arrange json

* Create README.MD

* Update README.MD

* Update README.MD

* update fast64

* rename to initiate_next_state

* Revert "Merge branch '3d-objects' into general-object"

This reverts commit f5347b38cc, reversing
changes made to a353c4d954.

* revert the revert...

* revert 3d-models PR

* finish some revert

* Update code_80005FD0.c

* fix code_80091750.c

* Update code_80091750.c

* rename isTimerRunning to isTimerActive and set_object_timer_running to set_object_timer_state

* rename to initialize_next_state

* rename to object_next_state

---------

Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
2024-09-15 15:03:40 -06:00
.github/workflows Clang pr (#679) 2024-09-11 16:30:23 -06:00
asm Rename Object Timing Related Code (#673) 2024-09-15 15:03:40 -06:00
assets reduce verbose of command (#614) 2024-04-19 20:37:39 -06:00
courses update clang and add action (#664) 2024-08-24 15:27:53 -06:00
data
docs add fedora instruciton (#666) 2024-08-20 18:30:54 -06:00
doxygen-awesome-css@df88fe4fdd
enhancements change bool (#644) 2024-07-21 21:42:14 -06:00
include Rename Object Timing Related Code (#673) 2024-09-15 15:03:40 -06:00
src Rename Object Timing Related Code (#673) 2024-09-15 15:03:40 -06:00
tools Update linkonly_generator.py (#670) 2024-08-24 15:36:12 -06:00
yamls Update common_data.yml (#635) 2024-06-15 12:00:41 -06:00
.clang-format update clang and add action (#664) 2024-08-24 15:27:53 -06:00
.clang-tidy update clang and add action (#664) 2024-08-24 15:27:53 -06:00
.editorconfig
.gitattributes
.gitignore use github actions instead (#605) 2024-04-12 18:54:59 -06:00
.gitmodules Fix torch (#600) 2024-04-09 22:24:11 -06:00
Dockerfile Update Dockerfile to latest Ubuntu LTS + fixed missing cmake (#674) 2024-09-04 17:36:21 -06:00
Doxyfile use github actions instead (#605) 2024-04-12 18:54:59 -06:00
Makefile Fix some libultra struct types (#677) 2024-09-06 12:20:19 -06:00
Makefile.split
README.md update clang and add action (#664) 2024-08-24 15:27:53 -06:00
addr_to_sym.py
assets.json Add ymls for Torch code generator (#497) 2024-04-09 21:29:57 -06:00
config.yml Add ymls for Torch code generator (#497) 2024-04-09 21:29:57 -06:00
ctx_includes.c start documenting animation (#668) 2024-08-22 13:40:13 -06:00
diff
diff_settings.py
extract_assets.py
first-diff.py Action more info when it doesn't match and fix first diff (#662) 2024-08-16 15:45:32 -06:00
import
m2c_helper.sh
mk64.eu-1.0.sha1
mk64.eu-final.sha1
mk64.ld Fix some libultra struct types (#677) 2024-09-06 12:20:19 -06:00
mk64.us.sha1
permute
permuter_settings.toml Turn D_802BFB80 into a union (#582) 2024-03-25 13:25:13 -04:00
progress.py Action Renames (#606) 2024-04-12 19:16:13 -06:00
python_convert.py
rename_sym.sh
safe_gcc.mk Label a save info loop (#645) 2024-08-22 23:59:04 -06:00
safe_gcc_old.mk Label a save info loop (#645) 2024-08-22 23:59:04 -06:00
undefined_syms.txt update libultra asm (#648) 2024-08-22 23:31:24 -06:00
util.mk

README.md

Mario Kart 64

This work-in-progress decompilation of Mario Kart 64 pursues historical and educational elements within the game found via taking it apart and putting it back together. Inspiration to do so not only emanates from the game's hardware and technology but also its immensely positive effects on the cultures and families of nearly every nationality.

This repository does not contain assets. Compiling requires asset extraction from a prior copy of the game.

It supports and builds the following versions:

ROM Output Revision SHA-1 Checksum
mk64.us.z64 USA 579c48e211ae952530ffc8738709f078d5dd215e
mk64.eu-1.0.z64 EUR 1.0 a729039453210b84f17019dda3f248d5888f7690
mk64.eu-final.z64 EUR 1.1 f6b5f519dd57ea59e9f013cc64816e9d273b2329

Linux Compile

Progress

Total progress consists of all code segments together.

Game code progress consists of main, ending and racing.

Build Status Build Status

Build Status Build Status Build Status

  • Build Status
  • Build Status
  • Build Status
  • Build Status
  • Build Status

Quick Start

git submodule update --init --recursive

Extract assets

make assets -j
make -j

Building

Build instructions located in the API docs
See also, the comprehensive API and documentation which includes an overview of the code-base while also discussing significant concepts, features, and modding.

Current State

The code-base may change significanty overtime as naming and documentation continues. The code-base is shiftable.

Some menu textures are compressed using a format called tkmk00. A byte-matching compressor/decompressor does not yet exist.

Project Structure

mk64
├── asm: Handwritten assembly code, rom header and boot
│   ├── non_matchings: Assembly for non-matching sections
│   └── os: Libultra handwritten assembly code
├── assets: Textures
├── courses: Course data, geography, display lists and staff ghosts
├── build: Output directory
├── data: Misc data, text, audio banks, and instrument sets
├── docs: Build guides
├── include: Header files
├── music: Sequences
├── src: C source code for the game
|   ├── actors: Individual actors split out from other files
│   ├── audio: Sample tables and audio code
│   ├── data: Misc data referenced in other C files
|   ├── debug: Custom debug code
|   ├── ending: Podium ceremony and credits code
│   ├── os: Libultra C code
|   └── racing: Race and game engine code
├── textures: Texture data, bitmaps
|   ├── common: Textures common to many courses
|   ├── courses: Course specific textures
|   ├── crash screen: Crash screen font image
│   ├── raw: Raw textures
│   ├── standalone: Whole textures
|   ├── startup_logo: Reflection map
|   └── trophy: Ceremony cutscene podium and trophy textures
└── tools: build tools

Documentation

Documentation available online at https://n64decomp.github.io/mk64/.

Documentation generated using Doxygen. Run make doc to test locally. Documentation resides in docs/html. Open index.html to view the site.

Contributing

Pull requests are welcome. For major changes, please discuss in the Discord.

Run make format to ensure it meets the project's coding standards. If code needs to avoid formatting place // clang-format off before the code and // clang-format on after.

Official Discord: discord.gg/DuYH3Fh