Skip to main content

Progress Report - Oct. 2022

· 4 min read

Another month gone, we're slowing down a little bit with the end of the year drawing close. But there are still some things to share.

Jak 2 Decompilation

300 Files Started!

More files have been completed, this month we reached the 300 file started milestone. Check the progress page for more details if you are interested.

Also by the time you are reading this we may have reached our 2000th GitHub issue / pull request (1999 at the time of writing)!

Visibility Data

Visibility data has been hooked up for Jak 2 and it seems to work quite well.

Off

On

Partial Time of Day Support

Partial time of day support has been implemented for Jak 2:

Region Boundary Rendering

More debugging code implemented and region boundary rendering now works

Camera Code Running

The camera code is now functional:

Sky Renderer Functional

The sky renderer returns:

The stars are no longer particles like they were in Jak 1!

Preliminary Sound Effect Support

A early preview of Jak 2's audio working

Various Sound Effects

Ambience 1

Ambience 2

Ambience 3

Ambience 4

Work has begun on the collision code

One of the more painful and historically problematic areas has been the collision code. Additionally, in Jak 2 there are entirely new systems we will have to contend with, collide-hash was one of these and isn't well tested yet.

Here's some debugging visualizations from the collision code that has been done so far.

Bulk of the Ocean Renderer

The Ocean renderer was a painful one in Jak 1, and it has changed a bit in Jak 2 but is thankfully largely the same.

One cool thing about Jak 2 is that the ocean is different depending on the level, where as Jak 1's was always the same style and color.

Decompilation Tooling

defpart and defpartgroup Support for Jak 2

Particle related macro support added for Jak 2

defskelgroup Fixed for Jak 2

Skeleton group related macro has also been updated to support Jak 2.

Nicer Output for giftags

Giftags should decompile a lot better now:

      :gif0 (new 'static 'gif-tag64
:nloop #x4
:eop #x1
:pre #x1
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1)
:nreg #x3
)
:gif1 (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))

Instead of

:gif (new 'static 'array uint64 2 #x303e400000008004 #x412)

Offline Test Parallelization

Offline test work can now be divided amongst individual threads.

This is work done in-advance of a problem -- Jak 2 has alot of files. Currently a single file can take about 120ms on average (100ms for decompilation, 20ms for compilation). This means that Jak 2's 800-900 files would take atleast 1.5 minutes for a full test, which is too slow for fast iteration.

Now if we take that same amount of work (800 files), and divide it amongst -- let's say 32 threads (25 files per thread). We are now talking sub 10 seconds for the entire game.

Jak 1

Skip Added Back for Daxter/Naughty Dog Intro Cutscene

Was removed a while back but has been re-added.

Spanish Game Text

Spanish translation was improved by adding translations for most of the game text translations.