jak-project/game/kernel/common
water111 4f537d4a71
[jak3] Set up ckernel (#3308)
This sets up the C Kernel for Jak 3, and makes it possible to build and
load code built with `goalc --jak3`.

There's not too much interesting here, other than they switched to a
system where symbol IDs (unique numbers less than 2^14) are generated at
compile time, and those get included in the object file itself.

This is kind of annoying, since it means all tools that produce a GOAL
object file need to work together to assign unique symbol IDs. And since
the symbol IDs can't conflict, and are only a number between 0 and 2^14,
you can't just hash and hope for no collisions.

We work around this by ignoring the IDs and re-assigning our own. I
think this is very similar to what the C Kernel did on early builds of
Jak 3 which supported loading old format level files, which didn't have
the IDs included.

As far as I can tell, this shouldn't cause any problems. It defeats all
of their fancy tricks to save memory by not storing the symbol string,
but we don't care.
2024-01-16 19:24:02 -05:00
..
fileio.cpp [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
fileio.h [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
kboot.cpp [ckernel] split by game version (#1559) 2022-06-26 18:17:11 -04:00
kboot.h [extractor] fix territory being set to wrong value (#2946) 2023-08-30 18:36:10 +01:00
kdgo.cpp [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
kdgo.h [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
kdsnetm.cpp [ckernel] split by game version (#1559) 2022-06-26 18:17:11 -04:00
kdsnetm.h [ckernel] split by game version (#1559) 2022-06-26 18:17:11 -04:00
kernel_types.h Fix small buzz motor not vibrating correctly (#2846) 2023-07-27 10:46:40 +01:00
klink.cpp [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
klink.h [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
klisten.cpp revamp controller LED in jak 1 + reorganize some pc-settings things + fix some jak 2 decomp (#2719) 2023-06-13 19:26:44 +01:00
klisten.h [ckernel] split by game version (#1559) 2022-06-26 18:17:11 -04:00
kmachine.cpp [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
kmachine.h game: Migrate from GLFW to SDL2 & attempt to rewrite / simplify display and input code (#2397) 2023-06-04 15:34:37 -04:00
kmalloc.cpp [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
kmalloc.h [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
kmemcard.cpp jak2: overlord rework (#2544) 2023-04-29 16:13:57 -04:00
kmemcard.h decompiler: allow jak 3 texture and model extraction (#3080) 2023-10-11 19:32:12 -04:00
kprint.cpp [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
kprint.h revamp controller LED in jak 1 + reorganize some pc-settings things + fix some jak 2 decomp (#2719) 2023-06-13 19:26:44 +01:00
kscheme.cpp Make all project targets compile on Intel MacOS (#2780) 2023-07-01 13:30:11 -04:00
kscheme.h [ckernel] split by game version (#1559) 2022-06-26 18:17:11 -04:00
ksocket.cpp [ckernel] split by game version (#1559) 2022-06-26 18:17:11 -04:00
ksocket.h [ckernel] split by game version (#1559) 2022-06-26 18:17:11 -04:00
ksound.cpp jak2: overlord rework (#2544) 2023-04-29 16:13:57 -04:00
ksound.h [ckernel] split by game version (#1559) 2022-06-26 18:17:11 -04:00
memory_layout.h [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
Ptr.h [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
Symbol4.h [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00