readme: update ubuntu and arch dependencies and small fixes (#1507)

- Ubuntu: Added `libpulse-dev` as a dependency for audio support
- Arch: Removed `gcc`, `make` and `g++` as those are all already contained in the `base-devel` group, replaced `taskfile-git` with `go-task` as the former is outdated and added `libpulse` for audio
- Removed the section about the files in `goal_src` being placeholders as the game is mostly complete now.
- Added missing description for `iso_data` contents
- Added `discord-rpc` to the third-party library list
This commit is contained in:
Hat Kid 2022-06-22 00:26:36 +02:00 committed by GitHub
parent 80f4b2d02e
commit d373b08e2f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -46,7 +46,7 @@ This project is to port Jak 1 (NTSC, "black label" version) to PC. Over 98% of t
- create tools to repack game assets into a format that our port uses.
Our objectives are:
- make the port a "native application" on x86-64, with high performance. It shouldn't emulated, interpreted, or transpiled.
- make the port a "native application" on x86-64, with high performance. It shouldn't be emulated, interpreted, or transpiled.
- Our GOAL compiler's performance should be around the same as unoptimized C.
- try to match things from the original game and development as possible. For example, the original GOAL compiler supported live modification of code while the game is running, so we do the same, even though it's not required for just porting the game.
- support modifications. It should be possible to make edits to the code without everything else breaking.
@ -85,7 +85,7 @@ We don't save any assets from the game - you must bring your own copy of the gam
Install packages and init repository:
```sh
sudo apt install gcc make cmake build-essential g++ nasm clang-format libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev python
sudo apt install gcc make cmake build-essential g++ nasm clang-format libxrandr-dev libxinerama-dev libxcursor-dev libpulse-dev libxi-dev python
sudo sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin
```
@ -118,10 +118,12 @@ cmake -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" -DCMAKE_EXE_LINKER_FLAGS="-fuse
Install packages and init repository:
```sh
sudo pacman -S gcc make cmake base-devel g++ nasm python
yay -S taskfile-git
sudo pacman -S cmake libpulse base-devel nasm python
yay -S go-task
```
For Arch only, replace `task` with `go-task` in the rest of the instructions.
Compile:
```sh
@ -293,7 +295,7 @@ The second component to the project is the decompiler. You must have a copy of t
Then run `decomp.sh` (Linux) or `decomp-jak1.bat` (Windows) to run the decompiler. The decompiler will extract assets to the `assets` folder. These assets will be used by the compiler when building the port, and you may want to turn asset extraction off after running it once. The decompiler will output code and other data intended to be inspected by humans in the `decompiler_out` folder. Stuff in this folder will not be used by the compiler.
The third is the game source code, written in OpenGOAL. This is located in `goal_src`. All GOAL and GOOS code should be in this folder. Right now most of this is placeholders or incomplete, but you can take a look at `kernel/gcommon.gc` or `goal-lib.gc` to see some in-progress source code.
The third is the game source code, written in OpenGOAL. This is located in `goal_src`. All GOAL and GOOS code should be in this folder.
The final component is the "runtime", located in `game`. This is the part of the game that's written in C++. In the port, that includes:
- The "C Kernel", which contains the GOAL linker and some low-level GOAL language features. GOAL has a completely custom dynamically linked object file format so in order to load the first GOAL code, you need a linker written in C++. Some low-level functions for memory allocation, communicating with the I/O Processor, symbol table, strings, and the type system are also implemented in C, as these are required for the linker. It also listens for incoming messages from the compiler and passes them to the running game. This also initializes the game, by initializing the PS2 hardware, allocating the GOAL heaps, loading the GOAL kernel off of the DVD, and executing the kernel dispatcher function. This is in the `game/kernel` folder. This should be as close as possible to the game, and all differences should be noted with a comment.
@ -357,7 +359,7 @@ The final component is the "runtime", located in `game`. This is the part of the
- `listener`: The OpenGOAL listener, which connects the compiler to a running GOAL program for the interactive REPL.
- `make`: The OpenGOAL build system, builds both code and data files.
- `regalloc`: Register allocator.
- `iso_data`:
- `iso_data`: Location of the user-provided DVD contents of the game that the decompiler extracts game assets and code from.
- `out`: Outputs from the build process. Only the `iso` subfolder should contain assets used by the game.
- `iso`: Final outputs that are used by the game.
- `obj`: Object files generated by the compiler.
@ -366,7 +368,8 @@ The final component is the "runtime", located in `game`. This is the part of the
- `test`: Unit tests (run on GitHub Actions).
- `third-party`: Third party libraries.
- CMake Code Coverage. For code coverage statistics on GitHub builds.
- `fmt`. String formatting library.
- `discord-rpc`: Discord Rich Presence library.
- `fmt`: String formatting library.
- `googletest`: Test framework.
- `inja`: templating library used for generating test code for compiler tests.
- `lzokay`: decompression code for Jak 2 and later DGOs.