From 0d7b7da116db9696f40ea9837b37b5ae7b37b390 Mon Sep 17 00:00:00 2001
From: ManDude <7569514+ManDude@users.noreply.github.com>
Date: Sat, 4 Dec 2021 17:32:53 +0000
Subject: [PATCH] readme fixes (#985)
* Create logo-text-colored-new.png
* move image
* Update logo
* Update README.md
* add screenshots
* fix images...
* Update README.md
* fix `code_progress.png` as well
* playing around lol
---
README.md | 166 +++++++++----------
docs/markdown/imgs/code_progress.png | Bin 0 -> 10861 bytes
docs/markdown/imgs/logo-text-colored-new.png | Bin 0 -> 106948 bytes
docs/markdown/imgs/screenshot_hut.png | Bin 0 -> 1360026 bytes
docs/markdown/imgs/screenshot_vi1.png | Bin 0 -> 758386 bytes
5 files changed, 82 insertions(+), 84 deletions(-)
create mode 100644 docs/markdown/imgs/code_progress.png
create mode 100644 docs/markdown/imgs/logo-text-colored-new.png
create mode 100644 docs/markdown/imgs/screenshot_hut.png
create mode 100644 docs/markdown/imgs/screenshot_vi1.png
diff --git a/README.md b/README.md
index 6f0ef70d8..eb13621d9 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
@@ -25,7 +25,7 @@
- [Directory Layout](#directory-layout)
- [More Documentation](#more-documentation)
- [ASan Build](#asan-build)
- - [On Windows / Visual Studio](#on-windows--visual-studio)
+ - [On Windows / Visual Studio](#on-windows--visual-studio)
## Project Description
@@ -45,24 +45,22 @@ Our objectives are:
We support both Linux and Windows on x86-64.
## Current Status
-So far, we've decompiled around 341,233 lines of GOAL code, out of an estimated 500,000 total lines and we've started work on an OpenGL renderer. Currently, the main display process (`*dproc*`) runs and sends data to our renderer. We can load textures, text files, and level files. Using keyboard controls, we can open the debug menu and turn on some simple debug visualizations.
+So far, we've decompiled around 341,233 lines of GOAL code, out of an estimated 500,000 total lines and we've started work on an OpenGL renderer. Currently, the main display process (`*dproc*`) runs and sends data to our renderer. We can load textures, text files, and level files. Using keyboard controls, we can open the debug menu and turn on some simple debug visualizations.
Here are some screenshots of the renderer:
-![](./docs/img/screenshot_hut.jpg)
-![](./docs/img/screenshot_vi1.jpg)
+![](./docs/markdown/imgs/screenshot_hut.png)
+![](./docs/markdown/imgs/screenshot_vi1.png)
YouTube playlist:
https://www.youtube.com/playlist?list=PLWx9T30aAT50cLnCTY1SAbt2TtWQzKfXX
-To help with decompiling, we've built a decompiler that can process GOAL code and unpack game assets. We manually specify function types and locations where the original code had type casts until the decompiler succeeds, then we clean up the output of the decompiled code by adding comments and adjusting formatting, then save it in `goal_src`. Our decompiler is designed specifically for processing the output of the original GOAL compiler. As a result, when given correct casts, it often produces code that can be directly fed into a compiler and works perfectly. This is tested as part of our unit tests, and so far we have around 130,000 lines (220 files) that pass.
+To help with decompiling, we've built a decompiler that can process GOAL code and unpack game assets. We manually specify function types and locations where the original code had type casts until the decompiler succeeds, then we clean up the output of the decompiled code by adding comments and adjusting formatting, then save it in `goal_src`. Our decompiler is designed specifically for processing the output of the original GOAL compiler. As a result, when given correct casts, it often produces code that can be directly fed into a compiler and works perfectly. This is tested as part of our unit tests, and so far we have around 300,000 lines (380 files) that pass.
We don't save any assets from the game - you must bring your own copy of the game and use the decompiler to extract assets.
## What's Next
-
-- Continue decompilation of GOAL code. We've made huge progress recently in decompiling gameplay code. We're finishing that up and also working on the some of the rendering and collision code. Here's our decompilation progress over the past year:
-![](./docs/img/code_progress.png)
+- Continue decompilation of GOAL code. We've made huge progress recently in decompiling gameplay code. We're finishing that up and also working on the some of the rendering and collision code. Here's our decompilation progress over the past year: ![](./docs/markdown/imgs/code_progress.png)
- Start running gameplay code! We can now spawn simple actors like particle effects and collectables.
- Improve the decompiler. We are always finding new features and macros in the GOAL language.
- Investigate more complicated renderers. We have an in-progress port of the "tfrag" background renderer, shown in the screenshots above.
@@ -88,12 +86,12 @@ Run tests:
./test.sh
```
-Note: we have found that `clang` and `lld` are significantly faster to compile and link than `gcc`, generate faster code, and have better warning messages. To install these:
-```
+Note: we have found that `clang` and `lld` are significantly faster to compile and link than `gcc`, generate faster code, and have better warning messages. To install these:
+```sh
sudo apt install lld clang
```
and run `cmake` (in a fresh build directory) with:
-```
+```sh
cmake -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
```
@@ -138,7 +136,6 @@ nix-shell -A packages.x86_64-linux.jak-asan-dev # development environment with C
nix-build -A packages.x86_64-linux.jak-asan # package with Clang ASan build
```
-
## Getting Started - Windows
Install Visual Studio 2019 and get the C++ and CMake tools via the Visual Studio Installer
@@ -183,13 +180,13 @@ Running the decompiler on the entire game is slow and not needed, so it is recom
"decompile_code": false, // change this to false, don't decompile code
```
-Place a copy of the game's files in `iso_data`, then run the decompiler with the `scripts/decomp.sh` script.
+Place a copy of the game's files in `iso_data` (on Windows, make a `jak1` subfolder and place the files there), then run the decompiler with the `scripts/shell/decomp.sh` (Linux) or `scripts/batch/decomp-jak1.bat` (Windows) script.
### Build Game
-Run the OpenGOAL compiler `build/goalc/goalc`. Enter `(mi)` to build the `"iso"` target, which contains everything we have so far.
+Run the OpenGOAL compiler `build/goalc/goalc`, or use one of the `gc` scripts. Enter `(mi)` to build the `"iso"` target, which contains everything we have placed in the build system so far.
### Run Game
-In a separate terminal, start the runtime with `build/game/gk -fakeiso -debug`. Then, in the OpenGOAL window, run `(mi)` to create the data for the game and give the REPL information for running code, `(lt)` to connect, `(lg)` to load the game engine and `(test-play)` to start the game engine. If it all works right, it will look something like this:
+In a separate terminal, start the runtime with `build/game/gk -fakeiso -debug`. Then, in the OpenGOAL window, run `(mi)` to create the data for the game and give the REPL information for running code, `(lt)` to connect, `(lg)` to load the game engine and `(test-play)` to start the game engine. If it all works right, it will look something like this:
```
g > (lt)
[Listener] Socket connected established! (took 0 tries). Waiting for version...
@@ -205,99 +202,100 @@ gc> (test-play)
gc>
```
-Then, in the graphics window, you can use the period key to bring up the debug menu.
+Then, in the graphics window, you can use the period key to bring up the debug menu. Controllers also work, using the same mapping as the original game.
-Check out the `pc_debug` and `examples` folder under `goal_src` for some examples of GOAL code we wrote. They have instructions for how to run them.
+Check out the `pc_debug` and `examples` folder under `goal_src` for some examples of GOAL code we wrote. They have instructions for how to run them.
## Project Layout
There are four main components to the project.
-The first is `goalc`, which is a GOAL compiler for x86-64. Our implementation of GOAL is called OpenGOAL. All of the compiler source code is in `goalc`. To run the compiler on Linux, there is a script `gc.sh`. The compiler is controlled through a prompt which can be used to enter commands to compile, connect to a running GOAL program for interaction, run the OpenGOAL debugger, or, if you are connected to a running GOAL program, can be used as a REPL to run code interactively. In addition to compiling code files, the compiler has features to pack and build data files.
+The first is `goalc`, which is a GOAL compiler for x86-64. Our implementation of GOAL is called OpenGOAL. All of the compiler source code is in `goalc`. To run the compiler on Linux, there is a script `gc.sh`. On Windows, there is a `gc.bat` scripts and a `gc-no-lt.bat` script, the latter of which will not attempt to automatically attach to a running target. The compiler is controlled through a prompt which can be used to enter commands to compile, connect to a running GOAL program for interaction, run the OpenGOAL debugger, or, if you are connected to a running GOAL program, can be used as a REPL to run code interactively. In addition to compiling code files, the compiler has features to pack and build data files.
The second component to the project is the decompiler. You must have a copy of the PS2 game and place all files from the DVD into the `iso_data` folder. Then run `decomp.sh` (Linux) to run the decompiler. For Windows, it is the `decomp-jak1.bat` file, and it wants your game's DVD files in a `jak1` folder inside `iso_data`. The decompile 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, 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. 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 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.
-
+- 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.
- Implementation of Sony's standard library. GOAL code can call C library functions, and Naughty Dog used some Sony library functions to access files, memory cards, controllers, and communicate with the separate I/O Processor. The library functions are in `game/sce`. Implementations of library features specific to the PC port are located in `game/system`.
-
- The I/O Processor driver, Overlord. The PS2 had a separate CPU called the I/O Processor (IOP) that was directly connected to the DVD drive hardware and the sound hardware. Naughty Dog created a custom driver for the IOP that handled streaming data off of the DVD. It is much more complicated than I first expected. It's located in `game/overlord`. Like the C kernel, we try to keep this as close as possible to the actual game.
-
- Sound Code. Naughty Dog used a third party library for sound. We have not started on this yet.
-
-- PC specific graphics stuff. We have not started on this yet.
+- PC specific graphics stuff. We have a functional OpenGL renderer and context that can create a game window and display graphics on it. The specific renderers used by the game however are mostly unimplemented. We have a debug, sprite and tfrag renderers, which is enough to render most of the game world, on-screen text and sprites like the progress menu. This is located in `game/graphics`. Many liberties will be taken to make this work, but the end result should closely match the actual game.
## Directory Layout
- `assets`: extracted assets (textures, translated game text, audio) generated by the decompiler. Not included in the repository. This data is used when building the PC port.
-- `build`: C++ CMake build folder
+- `build`: C++ CMake build folder.
- `common`: common C++ code shared between the compiler, decompiler, and game.
- - `audio`: tools for decoding the audio files
- - `cross_os_debug`: platform-independent library for implementing the OpenGOAL debugger. Linux-only currently
- - `cross_sockets`: platform-independent library for sockets. Used to connect the compiler to a running game. Linux and Windows.
- - `goos`: the compiler-time macro language and parser for OpenGOAL.
- - `type_system`: the OpenGOAL type system
- - `texture`: texture unpacking and format conversion
- - `util`, `math`, `log`: Random utility functions for accessing files, timers, etc.
-- `decompiler`: Source code for the decompiler
- - `analysis`: analysis algorithms
- - `config`: JSON config files for the decompiler and type definition file.
- - `data`: utilities to extract assets from the game
- - `Disasm`: MIPS disassembler
- - `Function`: Tools for analyzing GOAL functions
- - `gui`: an early prototype of a Python GUI for reading the output of the decompiler
- - `IR2`: the "Intermediate Representation" for GOAL functions and expressions
- - `ObjectFile`: Utilities for processing the GOAL object file format.
- - `scripts`: Useful scripts for setting up the decompilation
- - `util`: random utilities
- - `VuDisasm`: disassembler for VU code
+ - `audio`: tools for decoding the audio files.
+ - `cross_os_debug`: platform-independent library for implementing the OpenGOAL debugger. Linux and Windows.
+ - `cross_sockets`: platform-independent library for sockets. Used to connect the compiler to a running game. Linux and Windows.
+ - `goos`: the compiler-time macro language and parser for OpenGOAL.
+ - `type_system`: the OpenGOAL type system.
+ - `texture`: texture unpacking and format conversion.
+ - `dma`: utilities for handling the transfer of PS2 DMA packets.
+ - `util`, `math`, `log`: Random utility functions for accessing files, timers, etc.
+- `decompiler`: Source code for the decompiler.
+ - `analysis`: analysis algorithms.
+ - `config`: JSON config files for the decompiler and type definition file.
+ - `data`: utilities to extract assets from the game.
+ - `Disasm`: MIPS disassembler.
+ - `Function`: Tools for analyzing GOAL functions.
+ - `gui`: an early prototype of a Python GUI for reading the output of the decompiler.
+ - `IR2`: the "Intermediate Representation" for GOAL functions and expressions.
+ - `ObjectFile`: Utilities for processing the GOAL object file format.
+ - `scripts`: Useful scripts for setting up the decompilation.
+ - `util`: random utilities.
+ - `VuDisasm`: disassembler for VU code.
- `decompiler_out`: output of the decompiler that's not automatically used by the compiler. This is for humans to read and use. Not included in the repository.
- `docs`: more documentation!
-- `game`: the source code for the game executable
- - `common`: shared stuff between the `kernel` (EE) and `overlord` (IOP)
- - `graphic`: PC Port graphics
- - `kernel`: the part of the GOAL kernel written in C. The entry point for the game is in `kboot.cpp`.
- - `overlord`: the I/O processor driver used to get data off of the DVD
- - `sce`: the Sony library implementation
- - `system`: PC-port specific OS-level stuff, like file I/O, threads, controllers, debug network connection
+- `game`: the source code for the game executable.
+ - `common`: shared stuff between the `kernel` (EE) and `overlord` (IOP).
+ - `graphics`: PC Port graphics.
+ - `kernel`: the part of the GOAL kernel written in C. The entry point for the game is in `kboot.cpp`.
+ - `overlord`: the I/O processor driver used to get data off of the DVD.
+ - `sce`: the Sony library implementation.
+ - `system`: PC-port specific OS-level stuff, like file I/O, threads, controllers, debug network connection.
- `goal_src`: The GOAL code for the game.
- - `build`: info related to the GOAL build system.
- - `engine`: the game engine
- - `kernel`: The GOAL kernel
- - `levels`: Level specific code.
-- `goalc`: The OpenGOAL compiler
- - `compiler`: The implementation of the OpenGOAL language
- - `data_compiler`: Tools for packing data
- - `debugger`: The OpenGOAL debugger (part of the compiler)
- - `emitter`: x86-64 emitter and object file generator
- - `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
+ - `build`: info related to the GOAL build system.
+ - `engine`: the game engine.
+ - `kernel`: The GOAL kernel.
+ - `levels`: Level specific code.
+ - `old`: Unused or deleted files from the original game.
+ - `dgos`: File lists for DGOs in the build system.
+ - `examples`: Example GOAL code we have written.
+ - `test`: Test code we have written.
+ - `pc_debug`: GOAL code for PC-specific debugging. Also written by us.
+ - `user`: User sandboxes. Written by you! And anyone else that wishes to share their user code.
+- `goalc`: The OpenGOAL compiler.
+ - `compiler`: The implementation of the OpenGOAL language.
+ - `data_compiler`: Tools for packing data.
+ - `debugger`: The OpenGOAL debugger (part of the compiler).
+ - `emitter`: x86-64 emitter and object file generator.
+ - `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`:
- `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.
+ - `iso`: Final outputs that are used by the game.
+ - `obj`: Object files generated by the compiler.
- `resources`: To be removed. Contains fake versions of some files required to get things booting.
- `scripts`: Utility scripts. Windows-specific batch files are in a `batch` folder while Unix shell scripts are in a `shell` folder.
-- `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
- - `googletest`: Test framework
- - `inja`: templating library used for generating test code for compiler tests
- - `lzokay`: decompression code for Jak 2 and later DGOs
- - `mman`: Windows library used to emulate `mmap` on Linux
- - `run-clang-format`: Utility to check and enforce code formatting
- - `run-clang-tidy`
- - `zydis`: x86-64 disassembler used in the OpenGOAL debugger
- - `json`: A JSON library
- - `replxx`: Used for the REPL input. Supports history and useful editing shortcuts.
- - `svpng`: Save a PNG file
-
+- `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.
+ - `googletest`: Test framework.
+ - `inja`: templating library used for generating test code for compiler tests.
+ - `lzokay`: decompression code for Jak 2 and later DGOs.
+ - `mman`: Windows library used to emulate `mmap` on Linux.
+ - `run-clang-format`: Utility to check and enforce code formatting.
+ - `run-clang-tidy`
+ - `zydis`: x86-64 disassembler used in the OpenGOAL debugger.
+ - `json`: A JSON library.
+ - `replxx`: Used for the REPL input. Supports history and useful editing shortcuts.
+ - `svpng`: Save a PNG file.
### On Windows / Visual Studio
-Until 16.9 Preview 4, when attaching a debugger to the ASan build, you must disable breaking on Win32 Access Violation exceptions. See the relevant section `Debugging - Exceptions` here https://devblogs.microsoft.com/cppblog/asan-for-windows-x64-and-debug-build-support/#known-issues
-
+Until 16.9 Preview 4, when attaching a debugger to the ASan build, you must disable breaking on Win32 Access Violation exceptions. See the relevant section `Debugging - Exceptions` here https://devblogs.microsoft.com/cppblog/asan-for-windows-x64-and-debug-build-support/#known-issues
diff --git a/docs/markdown/imgs/code_progress.png b/docs/markdown/imgs/code_progress.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d6032424c7397c216443b596bf67ab0c720323b
GIT binary patch
literal 10861
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
literal 0
HcmV?d00001
diff --git a/docs/markdown/imgs/logo-text-colored-new.png b/docs/markdown/imgs/logo-text-colored-new.png
new file mode 100644
index 0000000000000000000000000000000000000000..66e53df991be7d7c1be96c8af2ae0a9f9243f4d2
GIT binary patch
literal 106948
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