jak-project/test/goalc
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
..
framework [jak 2] ETIE (#2326) 2023-03-17 20:35:26 -04:00
source_generated Final polish on the integer tests, time to start converting the rest 2020-10-03 18:32:01 -04:00
source_templates deftype and defmethod syntax major changes (#3094) 2023-10-30 03:20:02 +00:00
CMakeLists.txt Cleanup goalc tests, fix jak2 kernel bugs (#1669) 2022-07-17 14:12:11 -04:00
README.md Create new categorized test classes, for the most part just a copy of current tests into new framework 2020-10-08 00:06:48 -04:00
test_arithmetic.cpp Cleanup goalc tests, fix jak2 kernel bugs (#1669) 2022-07-17 14:12:11 -04:00
test_collections.cpp Cleanup goalc tests, fix jak2 kernel bugs (#1669) 2022-07-17 14:12:11 -04:00
test_compiler.cpp Cleanup goalc tests, fix jak2 kernel bugs (#1669) 2022-07-17 14:12:11 -04:00
test_control_statements.cpp Cleanup goalc tests, fix jak2 kernel bugs (#1669) 2022-07-17 14:12:11 -04:00
test_debugger.cpp ci: update chocolately syntax and update nasm to 2.16.1 (#2710) 2023-06-09 00:01:50 -04:00
test_game_no_debug.cpp [jak2] goalc supports multiple projects (#1619) 2022-07-06 21:18:08 -04:00
test_goal_kernel.cpp Cleanup goalc tests, fix jak2 kernel bugs (#1669) 2022-07-17 14:12:11 -04:00
test_goal_kernel2.cpp Cleanup goalc tests, fix jak2 kernel bugs (#1669) 2022-07-17 14:12:11 -04:00
test_jak2_compiler.cpp [goalc] Fix error when putting #f in an array of symbols (#1804) 2022-08-26 15:54:29 -04:00
test_type_consistency.cpp [jak3] Set up ckernel (#3308) 2024-01-16 19:24:02 -05:00
test_variables.cpp Cleanup goalc tests, fix jak2 kernel bugs (#1669) 2022-07-17 14:12:11 -04:00
test_vector_float.cpp Cleanup goalc tests, fix jak2 kernel bugs (#1669) 2022-07-17 14:12:11 -04:00
test_with_game.cpp deps: update zydis to latest commit (#3306) 2024-01-15 16:56:14 -05:00

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?