Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 2 additions & 15 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:

jobs:
build:
container: ghcr.io/swarejonge/mkdd-build:main
container: ghcr.io/doldecomp/mkdd-build:main

runs-on: ubuntu-latest
strategy:
Expand Down Expand Up @@ -34,20 +34,7 @@ jobs:
run: |
python configure.py --map --version ${{ matrix.version }} \
--binutils /binutils --compilers /compilers
ninja all_source build/${{ matrix.version }}/progress.json \
build/${{ matrix.version }}/report.json

# Upload progress if we're on the main branch
- name: Upload progress
if: github.ref == 'refs/heads/main'
continue-on-error: true
env:
PROGRESS_SLUG: mkdd
PROGRESS_API_KEY: ${{ secrets.PROGRESS_API_KEY }}
run: |
python tools/upload_progress.py -b https://progress.decomp.club/ \
-p $PROGRESS_SLUG -v ${{ matrix.version }} \
build/${{ matrix.version }}/progress.json
ninja all_source progress build/${{ matrix.version }}/report.json

# Upload map files
- name: Upload map
Expand Down
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
[submodule "tools/ppcdis"]
path = tools/ppcdis
url = https://github.com/SeekyCt/ppcdis
6 changes: 4 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"[c]": {
"files.encoding": "shiftjis",
"files.encoding": "utf8",
"editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"
},
"[cpp]": {
"files.encoding": "shiftjis",
"files.encoding": "utf8",
"editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"
},
"[python]": {
Expand All @@ -14,6 +14,8 @@
"files.trimFinalNewlines": true,
"files.associations": {
"*.inc": "c",
"*.pch": "c",
"*.pch++": "cpp",
".clangd": "yaml"
},
// Disable C/C++ IntelliSense, use clangd instead
Expand Down
105 changes: 86 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,100 @@
Mario Kart Double Dash!!
[![Build Status]][actions] [![Code Progress]][progress]
[![Build Status]][actions] [![Code Progress]][progress] [![Data Progress]][progress] [![Discord Badge]][discord]
=============

[Build Status]: https://github.com/SwareJonge/mkdd/actions/workflows/build.yml/badge.svg
[actions]: https://github.com/SwareJonge/mkdd/actions/workflows/build.yml
[Code Progress]: https://decomp.dev/SwareJonge/mkdd.svg?mode=shield&measure=code&label=Code
[progress]: https://decomp.dev/SwareJonge/mkdd
[Build Status]: https://github.com/doldecomp/mkdd/actions/workflows/build.yml/badge.svg
[actions]: https://github.com/doldecomp/mkdd/actions/workflows/build.yml
[Code Progress]: https://decomp.dev/doldecomp/mkdd.svg?mode=shield&measure=code&label=Code
[Data Progress]: https://decomp.dev/doldecomp/mkdd.svg?mode=shield&measure=data&label=Data
[progress]: https://decomp.dev/doldecomp/mkdd
[Discord Badge]: https://img.shields.io/discord/727908905392275526?color=%237289DA&logo=discord&logoColor=%23FFFFFF
[discord]: https://discord.gg/hKx3FJJgrV

WIP 1:1 Decompilation of Mario Kart Double Dash!!

This repository does **not** contain any game assets or assembly whatsoever. An existing copy of the game is required.

Currently only the debug version is supported
Currently only the debug version is supported.

## Building
### Requirements
- [Ninja](https://github.com/ninja-build/ninja/releases/tag/v1.11.1)
- [Python 3.8+](https://www.python.org/downloads/release/python-3104/)
Dependencies
============

### Initial setup
- Install python, 3.10.4 is recommended as it gets installed by default on most recent Linux distros
- Add the path where ninja is located to your environment variables under `PATH`
- Clone the repository using `git clone https://github.com/SwareJonge/mkdd`
- Dump a copy of the Debug version and copy the disc image to `orig/MarioClub_us`
- After the initial build, the disc image can be removed to save space
Windows
--------

### Instructions
- run `python configure.py`
- run `ninja`
On Windows, it's **highly recommended** to use native tooling. WSL or msys2 are **not** required.
When running under WSL, [objdiff](#diffing) is unable to get filesystem notifications for automatic rebuilds.

- Install [Python](https://www.python.org/downloads/) and add it to `%PATH%`.
- Also available from the [Windows Store](https://apps.microsoft.com/store/detail/python-311/9NRWMJP3717K).
- Download [ninja](https://github.com/ninja-build/ninja/releases) and add it to `%PATH%`.
- Quick install via pip: `pip install ninja`

macOS
------

- Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages):

```sh
brew install ninja
```

- Install [wine-crossover](https://github.com/Gcenx/homebrew-wine):

```sh
brew install --cask --no-quarantine gcenx/wine/wine-crossover
```

After OS upgrades, if macOS complains about `Wine Crossover.app` being unverified, you can unquarantine it using:

```sh
sudo xattr -rd com.apple.quarantine '/Applications/Wine Crossover.app'
```

Linux
------

- Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages).
- For non-x86(_64) platforms: Install wine from your package manager.
- For x86(_64), [wibo](https://github.com/decompals/wibo), a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used.

Building
========

- Clone the repository:

```sh
git clone https://github.com/doldecomp/mkdd.git
```

- Copy your game's disc image to `orig/MarioClub_us`.
- Supported formats: ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ, TGC
- After the initial build, the disc image can be deleted to save space.

- Configure:

```sh
python configure.py
```

To use a version other than `MarioClub_us` (USA), specify it with `--version`.

- Build:

```sh
ninja
```

Diffing
=======

Once the initial build succeeds, an `objdiff.json` should exist in the project root.

Download the latest release from [encounter/objdiff](https://github.com/encounter/objdiff). Under project settings, set `Project directory`. The configuration should be loaded automatically.

Select an object from the left sidebar to begin diffing. Changes to the project will rebuild automatically: changes to source files, headers, `configure.py`, `splits.txt` or `symbols.txt`.

![](assets/objdiff.png)

## Credits
- [Seeky](https://github.com/SeekyCt) for ppcdis, without it this project wouldn't have been where it is now
Expand Down
Binary file added assets/objdiff.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
86 changes: 0 additions & 86 deletions calcprogress.py

This file was deleted.

Loading