Merge remote-tracking branch 'upstream/master' into ExternalGame

This commit is contained in:
Elliptic Ellipsis
2021-12-20 20:33:13 +00:00
7 changed files with 188 additions and 29 deletions
@@ -4,7 +4,10 @@
<mat-card-title>
{{ data.title }}
</mat-card-title>
<mat-card-subtitle>Code decompiled: <strong>{{ total }}</strong></mat-card-subtitle>
<mat-card-subtitle>
<ng-container *ngIf="total != undefined">Code decompiled: <strong>{{ total }}</strong></ng-container>
&nbsp;
</mat-card-subtitle>
</mat-card-header>
</a>
<mat-card-actions>
@@ -22,7 +22,7 @@ export class GameSummaryComponent implements OnChanges {
/**
* The percentage to display for completion.
*/
total: string;
total?: string;
/**
* Icon definition.
*/
+13 -1
View File
@@ -133,7 +133,7 @@
"slug": "tmc",
"title": "The Minish Cap",
"links": {
"github": "https://www.github.com/zeldaret/mm"
"github": "https://www.github.com/zeldaret/tmc"
},
"shieldURL": "assets/csv/progress-tmc-shield.json",
"faq": "tmc_faq",
@@ -174,5 +174,17 @@
]
}
]
},
{
"slug": "tp",
"title": "Twilight Princess",
"links": {
"github": "https://www.github.com/zeldaret/tp"
},
"faq": "tp_faq",
"csvs": {
},
"progressMeta": [
]
}
]
+34 -13
View File
@@ -1,3 +1,5 @@
- [What is Decompilation? What is matching
decompilation?](#what-is-decompilation-what-is-matching-decompilation)
- [What language was this game written
in?](#what-language-was-this-game-written-in)
- [What is this project's goal?](#what-is-this-projects-goal)
@@ -36,6 +38,9 @@
method?](#are-ocarina-of-time-and-majoras-mask-using-the-same-decompilation-method)
- [Why is Majora\'s Mask harder to match than Ocarina of
Time?](#why-is-majoras-mask-harder-to-match-than-ocarina-of-time)
- [What is asset analysis, and why is it not mentioned on Ocarina
of Time's
page?](#what-is-asset-analysis-and-why-is-it-not-mentioned-on-ocarina-of-times-page)
- [Why is there no assembly code in the Majora\'s Mask repo? What
is transient
ASM?](#why-is-there-no-assembly-code-in-the-majoras-mask-repo-what-is-transient-asm)
@@ -146,7 +151,7 @@ How do I set up the decompilation on my computer?
-------------------------------------------------
See the instructions in the
[README.md](https://github.com/zeldaret/mm/\#readme)
[README.md](https://github.com/zeldaret/mm/#readme)
Why does the progress graph move so inconsistently?
---------------------------------------------------
@@ -205,18 +210,17 @@ our custom decompiler `mips_to_c`.
How can I help?
---------------
- Ocarina of Time has no more code decompilation work to do, at least
on the first version.
- Most code still needs a lot of documentation.
- Object decompilation is analysis and identification of the content
of the asset files used in code (textures, 3D models, animations,
collision data, etc.). There is plenty of this still to do.
- If you want to do code decompilation now, Majora\'s Mask is similar
to Ocarina of Time, but a bit more difficult. It has plenty of
simple actor files available that are suitable for beginners.
- If you would like to help but not in a code-related way, we are very
happy to talk to anyone who would like to publish articles or videos
about the project.
Majora's Mask has lots of code available to work on, much of it
beginner-friendly. We also have [a
tutorial](https://github.com/zeldaret/mm/blob/master/docs/tutorial/contents.md),
which will explain how to get started. The codebases are similar enough
that you may also find [the Ocarina of Time
tutorial](https://github.com/zeldaret/oot/blob/master/docs/tutorial/contents.md)
useful.
But above all, if you want to help, join [the
Discord](http://discord.zelda64.dev/) and we can help with anything you
have trouble with.
Where can I get more information?
---------------------------------
@@ -280,6 +284,23 @@ retail versions of Ocarina of Time are also compiled with `-O2 -g3`, so
it too will have this problem when that project moves to supporting
retail versions.
What is asset analysis, and why is it not mentioned on Ocarina of Time's page?
------------------------------------------------------------------------------
This means taking the asset files extracted from the ROM, that contain
images, models, animations, audio, text, etc., and
- splitting them into their individual components (individual images,
animations, etc.), which we refer to as *debinarisation*. A
debinarised object's components will have automatically generated
names.
- labelling and documenting each of these components according to
their use (this is the identification part).
Ocarina of Time does not track this, mainly because no one thought to
set up tracking when assets started being worked on, or fancied
rebuilding the history to account for it subsequently.
Why is there no assembly code in the Majora\'s Mask repo? What is transient ASM?
--------------------------------------------------------------------------------
+2 -2
View File
@@ -139,8 +139,8 @@ Can decomp be used to make mods?
It is possible to use it in its current state (indeed, a number of mods
have already used it), but not recommended unless you are *very*
familiar with the codebase. It will be much better in future, it is a
high priority to improve the codebase's suitability for modding.
familiar with the codebase. It is a high priority to improve the
codebase's suitability for modding, so it will be better in the future.
Who can contribute? What do I need to know?
-------------------------------------------
+24 -11
View File
@@ -40,7 +40,7 @@ the language the Gameboy Advance uses.
What compiler does it use?
--------------------------
abgcc, a standard C compiler for GameBoy Advance games (also used by
agbcc, a standard C compiler for GameBoy Advance games (also used by
Pokemon, for example)
Do you have a decompiler like mips2c? How hard is it to match?
@@ -61,8 +61,13 @@ workings for curiosity, and also for applications in speedrunning.
How many versions are there? Are all of them going to be decompiled?
--------------------------------------------------------------------
There are 5 versions: - US retail - EU retail - JP retail - US demo - JP
demo
There are 5 versions:
- US retail
- EU retail
- JP retail
- US demo
- JP demo
All will eventually be decompiled, and they are being worked on
concurrently (see next question for why this is efficient).
@@ -89,18 +94,26 @@ not be making it.
Can this be used for modding?
-----------------------------
In theory, yes. The rom is already shiftable, but not everything is
decompiled yet and the repository is subject to major changes as more is
worked on, so we do not recommend it unless you really know what you are
doing.
In theory, yes: several mods have already been made using parts of decomp.
The rom is already shiftable, but not everything is decompiled yet and the
repository is subject to major changes as more is worked on, so we do not
recommend it unless you really know what you are doing.
Have you found out anything interesting?
----------------------------------------
Yes! - Unlike a lot of 2D games, some parts of TMC use 3D hit boxes -
The engine has many similarities to Four Swords' - There's some left
over development information like unused strings corresponding to game
flags, and some graphics config files.
Yes!
- Unlike a lot of 2D games, some parts of TMC use 3D hit boxes
- The engine has many similarities to Four Swords'
- There's some left over development information like unused strings
corresponding to game flags, and some graphics config files.
- Internally, the developers used flags named `DRUG_1`, `DRUG_2`,
`DRUG_3`, `DRUG_ALL` to store the state of growing pico blooms found
in Minish Village, used for producing picolyte. Additionally, the
flag `TAIMA_SAIBAI_1ST` ("cannabis farmer") is used to determine
whether or not the player has talked to the pico bloom minish for
the first time. Interpret this how you like!
Is what you find out here useful for any other games?
-----------------------------------------------------
+110
View File
@@ -0,0 +1,110 @@
- [What programming language was Twilight Princess written in?](#what-programming-language-was-twilight-princess-written-in)
- [What compiler is used?](#what-compiler-is-used)
- [What's the goal of this project?](#whats-the-goal-of-this-project)
- [How many versions are there? Are all of them going to be decompiled?](#how-many-versions-are-there-are-all-of-them-going-to-be-decompiled)
- [Why is there no progress graph?](#why-is-there-no-progress-graph)
- [PC port?](#pc-port)
- [Can this be used for modding?](#can-this-be-used-for-modding)
- [I'd like to help. How should I get started?](#id-like-to-help.-how-should-i-get-started)
- [What do I need to know to contribute?](#what-do-i-need-to-know-to-contribute)
- [What decompiler is being used?](#what-decompiler-is-being-used)
- [How similar is TP to The Wind Waker and Skyward Sword?](#how-similar-is-tp-to-the-wind-waker-and-skyward-sword)
- [Why start work on TP before TWW?](#why-start-work-on-tp-before-tww)
- [Why start with NTSCU GameCube? What about the debug version?](#why-start-with-ntscu-gamecube-what-about-the-debug-version)
Twilight Princess Decompilation Project FAQ
===========================================
What programming language was Twilight Princess written in?
-----------------------------------------------------------
Twilight Princess was originally written in C++, which is compiled to PowerPC assembly, which is the language the GameCube and Wii uses.
What compiler is used?
----------------------
Metrowerks CodeWarrior, a standard C++ compiler for GameCube / Wii games. Version 2.7 is the version we currently use, however further testing may eventually prove a different version was originally used.
What's the goal of this project?
--------------------------------
Our long-term goal is to produce a highly documented and complete C++ codebase for every version of Twilight Princess. Our current goal is to complete decompilation for the NTSC-U GameCube version of Twilight Princess. This project will help to gain a deep understanding of the game, and open up the path to more complex modding capabilities.
How many versions are there? Are all of them going to be decompiled?
--------------------------------------------------------------------
There are 12 known versions:
- NTSC-U GameCube
- PAL GameCube
- NTSC-J GameCube
- NTSC-U Wii 1.0
- NTSC-U Wii 1.2
- PAL Wii
- NTSC-J Wii
- NTSC-K Wii
- NTSC-U Wii Demo
- PAL Wii Demo
- CHN Nvidia Shield
- CHN Nvidia Shield Debug
The goal is to eventually decompile every version, starting with NTSC-U GameCube.
Why is there no progress graph?
-------------------------------
The project currently isn't set up to display a web progress graph, however in the future it will be supported. In the meantime, there is a python script within the project that will calculate current progress.
PC port?
--------
Yes, it will be possible. However our team will not be working on it.
Can this be used for modding?
-----------------------------
Currently the codebase is not fully shiftable. This means adding / changing things will break the resulting built ROM. Our goal is introduce shiftability in the near future, however modding may still be difficult until the project is in a more complete state.
I'd like to help. How should I get started?
-------------------------------------------
Great, we're always happy to get new contributors!
Most importantly, [join the Discord](https://discord.zelda64.dev/), since this is where all the discussion takes place.
You can read the project [README](https://github.com/zeldaret/tp/blob/master/README.md) for general information on setting the project up on your system.
What do I need to know to contribute?
-------------------------------------
The most important skills are some knowledge of C++, some basic knowledge of PowerPC assembly, and general knowledge about the game. Having a ton of coding experience isn't required for this project, you will learn as you go. Feel free to ask any questions in the discord!
What decompiler is being used?
------------------------------
We primarily use [Ghidra](https://ghidra-sre.org/) with plugins to support GC / Wii games for this project. However, a custom built [ppc_to_cpp](https://github.com/matt-kempster/mips_to_c) decompiler is in the works that may also be useful.
How similar is TP to The Wind Waker and Skyward Sword?
------------------------------------------------------
Twilight Princess shares some similarities to both The Wind Waker and Skyward Sword, however each game is highly modified to fit the needs of the game. Much of the `f` library is very similar to The Wind Waker, while `JSystem` is a common library amongst many GC / Wii games. However, the majority of each game is independent from each other, with only small similarities here and there.
Why start work on TP before TWW?
--------------------------------
There were simply more people interested in starting a decompilation project for Twilight Princess than for The Wind Waker, and the knowledge gained from TP will still be useful to both The Wind Waker and Skyward Sword.
Why start with NTSCU GameCube? What about the debug version?
------------------------------------------------------------
The project leads decided to start with the most common version used in speedrunning, as many contributors are from the speedrunning community and many people have access to that version. We reference the debug rom a great amount during the decompilation process however, as it offers much more insight through debug strings and less aggressive function inlining.