mirror of https://github.com/PrimeDecomp/prime.git
Add vscode settings, update CONTRIBUTING.md
This commit is contained in:
parent
19b6768179
commit
e6639bf20e
|
@ -12,5 +12,4 @@ tools/mwcc_compiler/*
|
||||||
*.bat
|
*.bat
|
||||||
include/lmgr326b.dll
|
include/lmgr326b.dll
|
||||||
.idea/
|
.idea/
|
||||||
.vscode/
|
versions/
|
||||||
versions/
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Linux",
|
||||||
|
"includePath": [
|
||||||
|
"${workspaceFolder}/include",
|
||||||
|
"${workspaceFolder}/libc"
|
||||||
|
],
|
||||||
|
"cStandard": "c99",
|
||||||
|
"cppStandard": "c++98",
|
||||||
|
"intelliSenseMode": "linux-clang-x86",
|
||||||
|
"compilerPath": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 4
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"ms-vscode.cpptools",
|
||||||
|
"xaver.clang-format"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"[c]": {
|
||||||
|
"files.encoding": "shiftjis",
|
||||||
|
"editor.defaultFormatter": "xaver.clang-format"
|
||||||
|
},
|
||||||
|
"[cpp]": {
|
||||||
|
"files.encoding": "shiftjis",
|
||||||
|
"editor.defaultFormatter": "xaver.clang-format"
|
||||||
|
},
|
||||||
|
"editor.tabSize": 2,
|
||||||
|
"files.associations": {
|
||||||
|
"source_location": "cpp"
|
||||||
|
},
|
||||||
|
"files.autoSave": "onFocusChange",
|
||||||
|
"files.insertFinalNewline": true,
|
||||||
|
"files.trimFinalNewlines": true,
|
||||||
|
}
|
|
@ -14,8 +14,23 @@ There are several useful resources you can use for this decomp:
|
||||||
|
|
||||||
Visual Studio Code is recommended.
|
Visual Studio Code is recommended.
|
||||||
|
|
||||||
[objdiff](https://github.com/encounter/objdiff) will be your primary diffing tool. // TODO more info
|
### Diffing
|
||||||
|
|
||||||
|
[objdiff](https://github.com/encounter/objdiff) will be your primary diffing tool. You can fetch a binary from the latest GitHub Actions build, or build from source with `cargo run --release`.
|
||||||
|
|
||||||
|
objdiff configuration:
|
||||||
|
- Project dir: `prime`
|
||||||
|
- Target build dir: `prime/build/mp1.0/asm`
|
||||||
|
- Base build dir: `prime/build/mp1.0/src`
|
||||||
|
- Obj: Whatever .o you're currently working on (can select from asm or src build dirs)
|
||||||
|
- [x] Build target
|
||||||
|
- [x] Reverse function order (deferred)
|
||||||
|
|
||||||
|
objdiff will automatically rebuild and reload the object on source changes, so you can quickly iterate on functions.
|
||||||
|
|
||||||
|
With CodeWarrior, the `-inline deferred` flag reverses the function order in a translation unit. You'll work bottom-up in most asm files. Dolphin SDK files do **not** use `-inline deferred`, so their function order is top-down.
|
||||||
|
|
||||||
|
### Sharing
|
||||||
When you have a function mismatch that you want help on, you can upload a scratch to [decomp.me](https://decomp.me):
|
When you have a function mismatch that you want help on, you can upload a scratch to [decomp.me](https://decomp.me):
|
||||||
- Use `tools/decompctx.py src/path/to/file.cpp` to generate `ctx.c` which you can put in the "Context" field.
|
- Use `tools/decompctx.py src/path/to/file.cpp` to generate `ctx.c` which you can put in the "Context" field.
|
||||||
- Set preset to `Metroid Prime (USA)`.
|
- Set preset to `Metroid Prime (USA)`.
|
||||||
|
@ -33,6 +48,7 @@ Metaforce -> decomp
|
||||||
- Any other `zeus::` class has the prefixed removed, i.e. `zeus::CVector3f` -> `CVector3f`
|
- Any other `zeus::` class has the prefixed removed, i.e. `zeus::CVector3f` -> `CVector3f`
|
||||||
- `std::vector` -> `rstl::vector`
|
- `std::vector` -> `rstl::vector`
|
||||||
- `std::optional` -> `rstl::optional_object`
|
- `std::optional` -> `rstl::optional_object`
|
||||||
|
- `std::pair` -> `rstl::pair`
|
||||||
- `std::unique_ptr` -> `rstl::single_ptr` or `rstl::auto_ptr` (`auto_ptr` has an adjacent boolean)
|
- `std::unique_ptr` -> `rstl::single_ptr` or `rstl::auto_ptr` (`auto_ptr` has an adjacent boolean)
|
||||||
- `std::shared_ptr` -> `rstl::rc_ptr` or `rstl::ncrc_ptr`
|
- `std::shared_ptr` -> `rstl::rc_ptr` or `rstl::ncrc_ptr`
|
||||||
- `std::array<T, N> var` -> `T var[N]`
|
- `std::array<T, N> var` -> `T var[N]`
|
||||||
|
@ -186,4 +202,4 @@ However, in retail, the standard is to use `GetX()` for const and `X()` for non-
|
||||||
```c++
|
```c++
|
||||||
CWorld* World() { return x850_world.get(); }
|
CWorld* World() { return x850_world.get(); }
|
||||||
const CWorld* GetWorld() const { return x850_world.get(); }
|
const CWorld* GetWorld() const { return x850_world.get(); }
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in New Issue