mirror of https://github.com/n64decomp/mk64.git
parent
7b408209af
commit
e09b3797ef
1
Makefile
1
Makefile
|
@ -396,6 +396,7 @@ endif
|
||||||
doc:
|
doc:
|
||||||
$(PYTHON) tools/doxygen_symbol_gen.py
|
$(PYTHON) tools/doxygen_symbol_gen.py
|
||||||
doxygen
|
doxygen
|
||||||
|
cp docs/basics/placeholder.png docs/html/placeholder.png
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -r $(BUILD_DIR)
|
$(RM) -r $(BUILD_DIR)
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
@page build
|
\page buildwindows Compiling for Windows
|
||||||
|
|
||||||
## Compiling mk64 Decomp In Windows
|
## Compiling mk64 Decomp In Windows
|
||||||
|
|
||||||
***This method is not recommended nor supported. However, it is the only solution to build in W7/W8. WSL is the path of least resistance, use that not this***
|
***This method is not recommended nor supported. However, it is the only solution to build in W7/W8. WSL is the path of least resistance, use that not this***
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
\page actors How Actors Work
|
||||||
|
# Actors
|
|
@ -0,0 +1,77 @@
|
||||||
|
\page actorsmenu Actors
|
||||||
|
|
||||||
|
\htmlonly
|
||||||
|
|
||||||
|
How actors in mk64 works. There are two kinds of actors.
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.pagebutton {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
.pagelink {
|
||||||
|
display: block;
|
||||||
|
background-color: rgb(40, 44, 52);
|
||||||
|
width: 320px;
|
||||||
|
}
|
||||||
|
.pageimg {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
color: white;
|
||||||
|
font-size: 1em;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.pageheading {
|
||||||
|
padding: .5em .5em;
|
||||||
|
font-size: 18px;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.pagedescription {
|
||||||
|
color: #fff;
|
||||||
|
border-color: transparent;
|
||||||
|
opacity: 0.75;
|
||||||
|
height: 84px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
margin-top: 10px;
|
||||||
|
display: block;
|
||||||
|
padding: 10px;
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 1.64em;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.pagea {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="pagebutton">
|
||||||
|
<a class="pagea" href="actors.html">
|
||||||
|
<div class="pagelink">
|
||||||
|
<div class="pageimg"><img width=320 src="placeholder.png" /></div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="pageheading">Actors</div>
|
||||||
|
<div class="pagedescription">
|
||||||
|
<p>Some actor stuff</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
\endhtmlonly
|
||||||
|
|
||||||
|
\subpage actors
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
@page concepts
|
@page concepts Basic Concepts
|
||||||
#### Definitions
|
See terminology for explanations of terms.
|
||||||
* `Jump/Branch/Function` - Tells the cpu to execute instructions somewhere else and come back here when done.
|
|
||||||
* `Hexadecimal` - A [numbering system](https://en.wikipedia.org/wiki/Hexadecimal) just like decimal (also called base-ten) or roman numerals. An easy method for programmers and computers to understand each other which groups/separates bytes of information in a readable format. Representing information as decimal results in an unreadable mess.
|
|
||||||
* `s32/word/int` - A max size for a number. Data represented as 32 bits or 4 bytes: `0x00000001`. It consists of eight digits.
|
|
||||||
* `s16/half-word/short` - A number represented as 16 bits or 2 bytes: `0x0001`. It consists of four digits. Maximum value 65,535 (0xFFFF).
|
|
||||||
* `s8/byte/char` - A number represented as 8 bits or 1 byte: `0x01`. It consists of two digits. Maximum value 255 (0xFF).
|
|
||||||
|
|
||||||
## Addresses
|
## Addresses
|
||||||
Computers use addresses to jump through code. This works similar to finding a house using its address. Except, that reaching the house is nearly instantaneous and it only contains more instructions and jumps or some data such as a texture or a text string. Also, when finished with the house, you travel back to the previous destination which may have some left-over instructions or more jumps. You can imagine this quickly becoming a spaghetti monster jumping all over the place.
|
Computers use addresses to jump through code. This works similar to finding a house using its address. Except, that reaching the house is nearly instantaneous and it only contains more instructions and jumps or some data such as a texture or a text string. Also, when finished with the house, you travel back to the previous destination which may have some left-over instructions or more jumps. You can imagine this quickly becoming a spaghetti monster jumping all over the place.
|
|
@ -0,0 +1,125 @@
|
||||||
|
\page basics Understanding the Basics
|
||||||
|
|
||||||
|
\htmlonly
|
||||||
|
|
||||||
|
Essential skills and concepts to help you get started with mk64 decomp.
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.pagebutton {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
.pagelink {
|
||||||
|
display: block;
|
||||||
|
background-color: rgb(40, 44, 52);
|
||||||
|
width: 320px;
|
||||||
|
}
|
||||||
|
.pageimg {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
color: white;
|
||||||
|
font-size: 1em;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.pageheading {
|
||||||
|
padding: .5em .5em;
|
||||||
|
font-size: 18px;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.pagedescription {
|
||||||
|
color: #fff;
|
||||||
|
border-color: transparent;
|
||||||
|
opacity: 0.75;
|
||||||
|
height: 84px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
margin-top: 10px;
|
||||||
|
display: block;
|
||||||
|
padding: 10px;
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 1.64em;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.pagea {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div class="pagebutton">
|
||||||
|
<a class="pagea" href="compiling.html">
|
||||||
|
<div class="pagelink">
|
||||||
|
<div class="pageimg"><img width=320 src="placeholder.png" /></div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="pageheading">Installing mk64 Decomp</div>
|
||||||
|
<div class="pagedescription">
|
||||||
|
<p>Steps for installing and building the game</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pagebutton">
|
||||||
|
<a class="pagea" href="test.html">
|
||||||
|
<div class="pagelink">
|
||||||
|
<div class="pageimg"><img width=320 src="placeholder.png" /></div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="pageheading">test</div>
|
||||||
|
<div class="pagedescription">
|
||||||
|
<p>test</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div class="pagebutton">
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Foundational Knowledge</h2>
|
||||||
|
<p>Become familiar with technical and low-level concepts.</p>
|
||||||
|
|
||||||
|
<div class="pagebutton">
|
||||||
|
<a class="pagea" href="basicconcepts.html">
|
||||||
|
<div class="pagelink">
|
||||||
|
<div class="pageimg"><img width=320 src="placeholder.png" /></div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="pageheading">Basic Concepts</div>
|
||||||
|
<div class="pagedescription">
|
||||||
|
<p>Decomp, hexadecimal, cpu threads, addresses, and types to provide foundation knowledge.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pagebutton">
|
||||||
|
<a class="pagea" href="terminology.html">
|
||||||
|
<div class="pagelink">
|
||||||
|
<div class="pageimg"><img width=320 src="placeholder.png" /></div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="pageheading">Decomp Terminology</div>
|
||||||
|
<div class="pagedescription">
|
||||||
|
<p>Common terms used in low-level computing and decomp.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
\endhtmlonly
|
||||||
|
|
||||||
|
\subpage compiling
|
||||||
|
\subpage concepts
|
||||||
|
\subpage test
|
||||||
|
\subpage terminology
|
||||||
|
\subpage buildwindows
|
|
@ -1,54 +1,47 @@
|
||||||
@page compiling Compiling mk64
|
@page compiling Installing mk64 Decomp
|
||||||
## Dependencies
|
## Build Instructions
|
||||||
|
|
||||||
The build system has the following package requirements:
|
The build system has the following package requirements:
|
||||||
|
|
||||||
binutils-mips >= 2.27
|
binutils-mips >= 2.27
|
||||||
python3 >= 3.6
|
python3 >= 3.6
|
||||||
libaudiofile
|
libaudiofile
|
||||||
|
|
||||||
|
* [Linux and WSL](#linux)
|
||||||
|
* [Arch](#arch)
|
||||||
|
* [Windows](#windows)
|
||||||
|
* [macOS](#macos)
|
||||||
|
* [Docker](#docker)
|
||||||
|
|
||||||
|
### Compiling
|
||||||
|
* [US](#building-us)
|
||||||
|
* [EU](#building-eu)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
To add submodules run `git submodule update --init --recursive` after cloning.
|
To add submodules run `git submodule update --init --recursive` after cloning.
|
||||||
|
|
||||||
## EU Specific Steps (All versions)
|
## Linux
|
||||||
Both EU builds first requires US to be built first:
|
|
||||||
```
|
|
||||||
make -j
|
|
||||||
```
|
|
||||||
|
|
||||||
Now build either EU 1.0 `eu-1.0` or EU 1.1 `eu-final`
|
|
||||||
```
|
|
||||||
make -j VERSION=eu-final
|
|
||||||
```
|
|
||||||
|
|
||||||
diff/first-diff commands
|
|
||||||
```
|
|
||||||
python3 first-diff.py --eu
|
|
||||||
./diff <function> -eu
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Debian / Ubuntu
|
|
||||||
```
|
```
|
||||||
sudo apt install build-essential pkg-config git binutils-mips-linux-gnu python3 zlib1g-dev libaudiofile-dev libcapstone-dev
|
sudo apt install build-essential pkg-config git binutils-mips-linux-gnu python3 zlib1g-dev libaudiofile-dev libcapstone-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Arch Linux
|
### Arch
|
||||||
|
|
||||||
To install build dependencies:
|
|
||||||
```
|
```
|
||||||
sudo pacman -S base-devel capstone python
|
sudo pacman -S base-devel capstone python
|
||||||
```
|
```
|
||||||
Install the following AUR packages:
|
Install the following AUR package:
|
||||||
* [mips64-elf-binutils](https://aur.archlinux.org/packages/mips64-elf-binutils) (AUR)
|
* [mips64-elf-binutils](https://aur.archlinux.org/packages/mips64-elf-binutils) (AUR)
|
||||||
|
|
||||||
Review the n64decomp/sm64 readme for instructions to compile in other distributions.
|
Review the [n64decomp/sm64](https://github.com/n64decomp/sm64) readme for instructions to compile in other distributions.
|
||||||
|
|
||||||
#### Windows
|
## Windows
|
||||||
|
|
||||||
Compiling on Windows requires `MSYS2 MinGW x64`. The setup process is a tad intensive.
|
Not recommended. Use WSL unless this is your only option.
|
||||||
|
|
||||||
[Instructions here](docs/BUILD_WINDOWS.md)
|
[Instructions here](docs/BUILD_WINDOWS.md)
|
||||||
|
|
||||||
#### macOS
|
## macOS
|
||||||
|
|
||||||
Install [Homebrew](https://brew.sh), then install the following dependencies:
|
Install [Homebrew](https://brew.sh), then install the following dependencies:
|
||||||
```
|
```
|
||||||
|
@ -56,9 +49,9 @@ brew update
|
||||||
brew install python3 capstone coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils
|
brew install python3 capstone coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils
|
||||||
```
|
```
|
||||||
|
|
||||||
When building, use `gmake` to ensure that homebrew `make` is used instead of the old, macOS system `make`.
|
Build using `gmake` ensuring homebrew `make` is used instead of the old macOS system `make`.
|
||||||
|
|
||||||
#### Docker
|
## Docker
|
||||||
|
|
||||||
Build the Docker image:
|
Build the Docker image:
|
||||||
```
|
```
|
||||||
|
@ -76,12 +69,35 @@ docker run --rm -v ${PWD}:/mk64 mk64 make -C tools
|
||||||
docker run --rm -v ${PWD}:/mk64 mk64 make
|
docker run --rm -v ${PWD}:/mk64 mk64 make
|
||||||
```
|
```
|
||||||
|
|
||||||
## Building
|
## Building US
|
||||||
|
|
||||||
Place a US version of Mario Kart 64 called `baserom.us.z64` into the project folder for asset extraction.
|
Place a US version of Mario Kart 64 called `baserom.us.z64` into the project folder for asset extraction.
|
||||||
|
|
||||||
Run the following commands after pulling:
|
Run the following commands after pulling:
|
||||||
```bash
|
```bash
|
||||||
make -C tools
|
make -C tools
|
||||||
make
|
make -j
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building EU
|
||||||
|
|
||||||
|
Building EU requires US to be built first. See above.
|
||||||
|
|
||||||
|
mk64 decomp supports two EU versions
|
||||||
|
* EU 1.0 `eu-1.0`
|
||||||
|
* EU 1.1 `eu-final`
|
||||||
|
|
||||||
|
Build using
|
||||||
|
```
|
||||||
|
make -j VERSION=eu-1.0
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```
|
||||||
|
make -j VERSION=eu-final
|
||||||
|
```
|
||||||
|
|
||||||
|
First-diff/diff commands for EU
|
||||||
|
```
|
||||||
|
python3 first-diff.py --eu
|
||||||
|
./diff <function> -eu
|
||||||
```
|
```
|
|
@ -0,0 +1,2 @@
|
||||||
|
\page courses Courses
|
||||||
|
# Courses
|
|
@ -0,0 +1,77 @@
|
||||||
|
\page coursesmenu Courses
|
||||||
|
|
||||||
|
\htmlonly
|
||||||
|
|
||||||
|
How courses work in mk64
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.pagebutton {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
.pagelink {
|
||||||
|
display: block;
|
||||||
|
background-color: rgb(40, 44, 52);
|
||||||
|
width: 320px;
|
||||||
|
}
|
||||||
|
.pageimg {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
color: white;
|
||||||
|
font-size: 1em;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.pageheading {
|
||||||
|
padding: .5em .5em;
|
||||||
|
font-size: 18px;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.pagedescription {
|
||||||
|
color: #fff;
|
||||||
|
border-color: transparent;
|
||||||
|
opacity: 0.75;
|
||||||
|
height: 84px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
margin-top: 10px;
|
||||||
|
display: block;
|
||||||
|
padding: 10px;
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 1.64em;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.pagea {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="pagebutton">
|
||||||
|
<a class="pagea" href="courses.html">
|
||||||
|
<div class="pagelink">
|
||||||
|
<div class="pageimg"><img width=320 src="placeholder.png" /></div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="pageheading">Courses</div>
|
||||||
|
<div class="pagedescription">
|
||||||
|
<p>Some course related stuff</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
\endhtmlonly
|
||||||
|
|
||||||
|
\subpage courses
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
Essential skills and concepts to help you get started with mk64 decomp.
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.pagelink {
|
||||||
|
background-color: rgb(40, 44, 52);
|
||||||
|
width: 320px;
|
||||||
|
margin-right: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
color: white;
|
||||||
|
padding-left: 15px;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
.pageheading {
|
||||||
|
padding: .75em .5em;
|
||||||
|
font-size: 18px;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.pagedescription {
|
||||||
|
color: #fff;
|
||||||
|
border-color: transparent;
|
||||||
|
opacity: 0.75;
|
||||||
|
height: 84;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
margin-top: 10px;
|
||||||
|
display: block;
|
||||||
|
padding: 10px;
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 1.64em;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<a href="compiling.md">
|
||||||
|
<div class="pagelink"><img src="placeholder.png" />
|
||||||
|
<div style="color: white; padding-left: 15px">
|
||||||
|
<div class="pageheading">Compiling mk64</div>
|
||||||
|
<div class="pagedescription"><p>Instructions and dependencies required to build the game</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="Basic Concepts.md">
|
||||||
|
<div class="pagelink"><img src="placeholder.png" />
|
||||||
|
<div class="content">
|
||||||
|
<div class="pageheading">Basic Concepts</div>
|
||||||
|
<div class="pagedescription">
|
||||||
|
<p>Decomp, hexadecimal, cpu threads, addresses, and types to provide foundation knowledge.</>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="test">
|
||||||
|
<div class="pagelink"><img src="placeholder.png" />
|
||||||
|
<div class="content">
|
||||||
|
<div class="pageheading">test</div>
|
||||||
|
<div class="pagedescription"><p>test</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
Binary file not shown.
After Width: | Height: | Size: 6.6 KiB |
|
@ -0,0 +1,7 @@
|
||||||
|
\page terminology Terminology
|
||||||
|
#### Definitions
|
||||||
|
* `Jump/Branch/Function` - Tells the cpu to execute instructions somewhere else and come back here when done.
|
||||||
|
* `Hexadecimal` - A [numbering system](https://en.wikipedia.org/wiki/Hexadecimal) just like decimal (also called base-ten) or roman numerals. An easy method for programmers and computers to understand each other which groups/separates bytes of information in a readable format. Representing information as decimal results in an unreadable mess.
|
||||||
|
* `s32/word/int` - A max size for a number. Data represented as 32 bits or 4 bytes: `0x00000001`. It consists of eight digits.
|
||||||
|
* `s16/half-word/short` - A number represented as 16 bits or 2 bytes: `0x0001`. It consists of four digits. Maximum value 65,535 (0xFFFF).
|
||||||
|
* `s8/byte/char` - A number represented as 8 bits or 1 byte: `0x01`. It consists of two digits. Maximum value 255 (0xFF).
|
Loading…
Reference in New Issue