mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 11:26:18 -04:00
4f537d4a71
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. |
||
---|---|---|
.. | ||
framework | ||
source_generated | ||
source_templates | ||
CMakeLists.txt | ||
README.md | ||
test_arithmetic.cpp | ||
test_collections.cpp | ||
test_compiler.cpp | ||
test_control_statements.cpp | ||
test_debugger.cpp | ||
test_game_no_debug.cpp | ||
test_goal_kernel.cpp | ||
test_goal_kernel2.cpp | ||
test_jak2_compiler.cpp | ||
test_type_consistency.cpp | ||
test_variables.cpp | ||
test_vector_float.cpp | ||
test_with_game.cpp |
Some Documentation
TODO!
TODO
- If it can't make the file successfully, currently the tests just hang
- How do i share the same fixture (compiler/thread instance), but with different Params. I don't think this is possible...maybe with templates?