* some rename
* type menu
* continue rename and place const
* Renames and doc
* more
* buffer vars
* clang format
* continue rename
* some rename and get it compile (but don't match for obscure reason)
* get it match again and fix some warning
* fix all warning
* Match 6 functions
* continue rename
* load img renames and first step or label menu items
* MenuItem struct names and some rename
* rename around
* rename code_80091750 to menu_item
* clean up a little
* Update menu_item.h
* document waypoint and more
* Revert "document waypoint and more"
This reverts commit 5e6eb4fbcc.
* apply review
* Update menu_item.c
* fix some review
* rename func_8009E620 to clear_menus
* do a rename
* apply review
* finish rename normally
* more small rename
* few fix of name
* few more fix
* minor fix
* Update menus.c
* last rename normally
* Update render_menus.s
* Update menu_items.c
* Renames seg2 textures.c
* MENU_ITEMtype --> MENU_ITEM_TYPE
* remove a useless parameter
* func_80099110 --> clear_menu_textures
---------
Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
Co-authored-by: AloXado320 <david.albujar.s.30@gmail.com>
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 |
Progress
Total progress consists of all code segments together.
Game code progress consists of main, ending and racing.
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