jvm/regs/ta_parameters.py
2025-01-20 19:53:23 -06:00

72 lines
2.0 KiB
Python

import sys
from generate import renderer
from csv_input import read_input_headerless
from sparse_struct import parse
from sparse_struct_java import render_declarations
from pprint import pprint
_field_types = {
"parameter_control_word": "int",
"user_clip_": "int",
"object_pointer": "int",
"bounding_box_": "int",
"isp_tsp_instruction_word": "int",
"tsp_instruction_word": "int",
"texture_control_word": "int",
"data_size_for_sort_dma": "int",
"next_address_for_sort_dma": "int",
"face_color_": "float",
"face_offset_color_": "float",
"x": "float",
"y": "float",
"z": "float",
"base_color_": "float",
"base_color_0": "int",
"base_color_1": "int",
"offset_color_0": "int",
"offset_color_1": "int",
"base_intensity_": "int",
"u": "float",
"v": "float",
"u_v": "int",
"base_color": "int",
"offset_color": "int",
"offset_color_": "float",
"base_intensity": "float",
"offset_intensity": "float",
"a_": "float",
"b_": "float",
"c_": "float",
"d_": "float",
"a_u_a_v": "int",
"b_u_b_v": "int",
"c_u_c_v": "int",
"_res": "int"
}
def get_type(field_name: str):
match = None
match_len = 0
for name, type in _field_types.items():
if field_name.startswith(name) and len(name) >= match_len:
match = type
assert match_len != len(name), (name, match)
match_len = len(name)
assert match != None, field_name
return match
if __name__ == "__main__":
rows = read_input_headerless(sys.argv[1])
package_name = sys.argv[2]
class_name = sys.argv[3]
declarations = parse(rows,
expected_offset=4,
expected_sizes={32, 64})
render, out = renderer(indent_length=4)
render(render_declarations(get_type, package_name, class_name, declarations,
store_queue_buffer=True,
get_byte=False))
sys.stdout.write(out.getvalue())