From 18e71d2aaa7b5862c5f41507f441dd2596605082 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Fri, 27 Dec 2024 10:01:15 -0600 Subject: [PATCH] add TAVertexParameter/TAGlobalParameter --- generate.sh | 3 + regs/sparse_struct.py | 94 +++ regs/sparse_struct_java.py | 54 ++ regs/ta_parameters.py | 69 ++ sega/dreamcast/holly/TAGlobalParameter.java | 311 +++++++++ sega/dreamcast/holly/TAVertexParameter.java | 677 ++++++++++++++++++++ 6 files changed, 1208 insertions(+) create mode 100644 regs/sparse_struct.py create mode 100644 regs/sparse_struct_java.py create mode 100644 regs/ta_parameters.py create mode 100644 sega/dreamcast/holly/TAGlobalParameter.java create mode 100644 sega/dreamcast/holly/TAVertexParameter.java diff --git a/generate.sh b/generate.sh index bbeb371..eb0a38f 100644 --- a/generate.sh +++ b/generate.sh @@ -5,3 +5,6 @@ python regs/holly.py ../dreamcast/regs/holly.csv > sega/dreamcast/holly/Holly.ja python regs/bits_gen.py ../dreamcast/regs/core_bits.csv holly CoreBits > sega/dreamcast/holly/CoreBits.java python regs/bits_gen.py ../dreamcast/regs/ta_bits.csv holly TABits > sega/dreamcast/holly/TABits.java python regs/bits_gen.py ../dreamcast/regs/isp_tsp.csv holly ISPTSP > sega/dreamcast/holly/ISPTSP.java + +python regs/ta_parameters.py ../dreamcast/regs/vertex_parameter_format.csv holly TAVertexParameter > sega/dreamcast/holly/TAVertexParameter.java +python regs/ta_parameters.py ../dreamcast/regs/global_parameter_format.csv holly TAGlobalParameter > sega/dreamcast/holly/TAGlobalParameter.java diff --git a/regs/sparse_struct.py b/regs/sparse_struct.py new file mode 100644 index 0000000..0f7b97e --- /dev/null +++ b/regs/sparse_struct.py @@ -0,0 +1,94 @@ +from dataclasses import dataclass + +class EndOfInput(Exception): + pass + +def next_row(ix, rows, advance): + if ix >= len(rows): + raise EndOfInput + + if advance: + while rows[ix][0] == "": + ix += 1 + if ix >= len(rows): + raise EndOfInput + row = rows[ix] + ix += 1 + return ix, row + +@dataclass +class FieldDeclaration: + offset: int + name: str + default: int + array_length: str + +@dataclass +class StructDeclaration: + name: str + fields: list[FieldDeclaration] + size: int + +def parse_type_declaration(ix, rows, expected_offset, expected_sizes): + ix, row = next_row(ix, rows, advance=True) + assert len(row) in {2, 3}, row + struct_name, *empty = row + assert all(e == "" for e in empty) + fields = [] + last_offset = 0 - expected_offset + res_ix = 0 + + def terminate(): + size = last_offset + expected_offset + assert size in expected_sizes, size + return ix, StructDeclaration( + struct_name, + fields, + size + ) + + seen_names = set() + + while True: + try: + ix, row = next_row(ix, rows, advance=False) + except EndOfInput: + return terminate() + if row[0] == "": + return terminate() + else: + default = None + if len(row) == 2: + _offset, name = row + elif len(row) == 3: + _offset, name, _default = row + if _default.strip() != "": + default = int(_default, 16) + else: + assert False, row + offset = int(_offset, 16) + assert offset == last_offset + expected_offset, (hex(offset), hex(last_offset)) + last_offset = offset + if name == "": + name = f"_res{res_ix}" + res_ix += 1 + + if fields and fields[-1].name == name: + assert offset == fields[-1].offset + (fields[-1].array_length * expected_offset) + fields[-1].array_length += 1 + else: + assert name not in seen_names, row + seen_names.add(name) + fields.append(FieldDeclaration(offset, name, default, 1)) + +def parse(rows, expected_offset, expected_sizes): + ix = 0 + declarations = [] + while True: + try: + ix, declaration = parse_type_declaration(ix, rows, expected_offset, expected_sizes) + except EndOfInput: + break + declarations.append(declaration) + + return declarations diff --git a/regs/sparse_struct_java.py b/regs/sparse_struct_java.py new file mode 100644 index 0000000..a40a987 --- /dev/null +++ b/regs/sparse_struct_java.py @@ -0,0 +1,54 @@ +def render_fields(get_type, fields): + for field in fields: + field_type = get_type(field.name) + assert field.array_length == 1 + yield f"public {field_type} {field.name};" + +def render_constructor(get_type, declaration): + initializer = f"public {declaration.name}(" + padding = " " * len(initializer) + def start(i): + if i == 0: + return initializer + else: + return padding + constructor_fields = [f for f in declaration.fields + if (not f.name.startswith('_res') + and f.default is None + )] + for i, field in enumerate(constructor_fields): + s = start(i) + assert field.array_length <= 4, field + type = get_type(field.name) if field.array_length == 1 else "uint32_t" + comma = ',' if i + 1 < len(constructor_fields) else '' + yield s + f"{type} {field.name}" + comma + + if constructor_fields: + yield padding + ') {' + else: + yield initializer + ') {' + + for i, field in enumerate(declaration.fields): + value = field.name if not field.name.startswith('_res') else '0' + value = hex(field.default) if field.default is not None else value + s = ':' if i == 0 else ',' + yield f"this.{field.name} = {value};" + + yield "}" + + array_fields = [f for f in declaration.fields + if f.array_length > 1] + +def render_declaration(get_type, declaration): + yield f"public class {declaration.name} {{" + yield from render_fields(get_type, declaration.fields) + yield from render_constructor(get_type, declaration) + yield "}" + +def render_declarations(get_type, package_name, class_name, declarations): + yield f"package sega.dreamcast.{package_name};" + yield "" + yield f"public class {class_name} {{" + for declaration in declarations: + yield from render_declaration(get_type, declaration) + yield "}" diff --git a/regs/ta_parameters.py b/regs/ta_parameters.py new file mode 100644 index 0000000..c9dc4c8 --- /dev/null +++ b/regs/ta_parameters.py @@ -0,0 +1,69 @@ +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)) + sys.stdout.write(out.getvalue()) diff --git a/sega/dreamcast/holly/TAGlobalParameter.java b/sega/dreamcast/holly/TAGlobalParameter.java new file mode 100644 index 0000000..8fdc593 --- /dev/null +++ b/sega/dreamcast/holly/TAGlobalParameter.java @@ -0,0 +1,311 @@ +package sega.dreamcast.holly; + + +public class TAGlobalParameter { + public class end_of_list { + public int parameter_control_word; + public int _res0; + public int _res1; + public int _res2; + public int _res3; + public int _res4; + public int _res5; + public int _res6; + public end_of_list(int parameter_control_word + ) { + this.parameter_control_word = parameter_control_word; + this._res0 = 0; + this._res1 = 0; + this._res2 = 0; + this._res3 = 0; + this._res4 = 0; + this._res5 = 0; + this._res6 = 0; + } + } + public class user_tile_clip { + public int parameter_control_word; + public int _res0; + public int _res1; + public int _res2; + public int user_clip_x_min; + public int user_clip_y_min; + public int user_clip_x_max; + public int user_clip_y_max; + public user_tile_clip(int parameter_control_word, + int user_clip_x_min, + int user_clip_y_min, + int user_clip_x_max, + int user_clip_y_max + ) { + this.parameter_control_word = parameter_control_word; + this._res0 = 0; + this._res1 = 0; + this._res2 = 0; + this.user_clip_x_min = user_clip_x_min; + this.user_clip_y_min = user_clip_y_min; + this.user_clip_x_max = user_clip_x_max; + this.user_clip_y_max = user_clip_y_max; + } + } + public class object_list_set { + public int parameter_control_word; + public int object_pointer; + public int _res0; + public int _res1; + public int bounding_box_x_min; + public int bounding_box_y_min; + public int bounding_box_x_max; + public int bounding_box_y_max; + public object_list_set(int parameter_control_word, + int object_pointer, + int bounding_box_x_min, + int bounding_box_y_min, + int bounding_box_x_max, + int bounding_box_y_max + ) { + this.parameter_control_word = parameter_control_word; + this.object_pointer = object_pointer; + this._res0 = 0; + this._res1 = 0; + this.bounding_box_x_min = bounding_box_x_min; + this.bounding_box_y_min = bounding_box_y_min; + this.bounding_box_x_max = bounding_box_x_max; + this.bounding_box_y_max = bounding_box_y_max; + } + } + public class polygon_type_0 { + public int parameter_control_word; + public int isp_tsp_instruction_word; + public int tsp_instruction_word; + public int texture_control_word; + public int _res0; + public int _res1; + public int data_size_for_sort_dma; + public int next_address_for_sort_dma; + public polygon_type_0(int parameter_control_word, + 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 + ) { + this.parameter_control_word = parameter_control_word; + this.isp_tsp_instruction_word = isp_tsp_instruction_word; + this.tsp_instruction_word = tsp_instruction_word; + this.texture_control_word = texture_control_word; + this._res0 = 0; + this._res1 = 0; + this.data_size_for_sort_dma = data_size_for_sort_dma; + this.next_address_for_sort_dma = next_address_for_sort_dma; + } + } + public class polygon_type_1 { + public int parameter_control_word; + public int isp_tsp_instruction_word; + public int tsp_instruction_word; + public int texture_control_word; + public float face_color_alpha; + public float face_color_r; + public float face_color_g; + public float face_color_b; + public polygon_type_1(int parameter_control_word, + int isp_tsp_instruction_word, + int tsp_instruction_word, + int texture_control_word, + float face_color_alpha, + float face_color_r, + float face_color_g, + float face_color_b + ) { + this.parameter_control_word = parameter_control_word; + this.isp_tsp_instruction_word = isp_tsp_instruction_word; + this.tsp_instruction_word = tsp_instruction_word; + this.texture_control_word = texture_control_word; + this.face_color_alpha = face_color_alpha; + this.face_color_r = face_color_r; + this.face_color_g = face_color_g; + this.face_color_b = face_color_b; + } + } + public class polygon_type_2 { + public int parameter_control_word; + public int isp_tsp_instruction_word; + public int tsp_instruction_word; + public int texture_control_word; + public int _res0; + public int _res1; + public int data_size_for_sort_dma; + public int next_address_for_sort_dma; + public float face_color_alpha; + public float face_color_r; + public float face_color_g; + public float face_color_b; + public float face_offset_color_alpha; + public float face_offset_color_r; + public float face_offset_color_g; + public float face_offset_color_b; + public polygon_type_2(int parameter_control_word, + 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, + float face_color_alpha, + float face_color_r, + float face_color_g, + float face_color_b, + float face_offset_color_alpha, + float face_offset_color_r, + float face_offset_color_g, + float face_offset_color_b + ) { + this.parameter_control_word = parameter_control_word; + this.isp_tsp_instruction_word = isp_tsp_instruction_word; + this.tsp_instruction_word = tsp_instruction_word; + this.texture_control_word = texture_control_word; + this._res0 = 0; + this._res1 = 0; + this.data_size_for_sort_dma = data_size_for_sort_dma; + this.next_address_for_sort_dma = next_address_for_sort_dma; + this.face_color_alpha = face_color_alpha; + this.face_color_r = face_color_r; + this.face_color_g = face_color_g; + this.face_color_b = face_color_b; + this.face_offset_color_alpha = face_offset_color_alpha; + this.face_offset_color_r = face_offset_color_r; + this.face_offset_color_g = face_offset_color_g; + this.face_offset_color_b = face_offset_color_b; + } + } + public class polygon_type_3 { + public int parameter_control_word; + public int isp_tsp_instruction_word; + public int tsp_instruction_word_0; + public int texture_control_word_0; + public int tsp_instruction_word_1; + public int texture_control_word_1; + public int data_size_for_sort_dma; + public int next_address_for_sort_dma; + public polygon_type_3(int parameter_control_word, + int isp_tsp_instruction_word, + int tsp_instruction_word_0, + int texture_control_word_0, + int tsp_instruction_word_1, + int texture_control_word_1, + int data_size_for_sort_dma, + int next_address_for_sort_dma + ) { + this.parameter_control_word = parameter_control_word; + this.isp_tsp_instruction_word = isp_tsp_instruction_word; + this.tsp_instruction_word_0 = tsp_instruction_word_0; + this.texture_control_word_0 = texture_control_word_0; + this.tsp_instruction_word_1 = tsp_instruction_word_1; + this.texture_control_word_1 = texture_control_word_1; + this.data_size_for_sort_dma = data_size_for_sort_dma; + this.next_address_for_sort_dma = next_address_for_sort_dma; + } + } + public class polygon_type_4 { + public int parameter_control_word; + public int isp_tsp_instruction_word; + public int tsp_instruction_word_0; + public int texture_control_word_0; + public int tsp_instruction_word_1; + public int texture_control_word_1; + public int data_size_for_sort_dma; + public int next_address_for_sort_dma; + public float face_color_alpha_0; + public float face_color_r_0; + public float face_color_g_0; + public float face_color_b_0; + public float face_color_alpha_1; + public float face_color_r_1; + public float face_color_g_1; + public float face_color_b_1; + public polygon_type_4(int parameter_control_word, + int isp_tsp_instruction_word, + int tsp_instruction_word_0, + int texture_control_word_0, + int tsp_instruction_word_1, + int texture_control_word_1, + int data_size_for_sort_dma, + int next_address_for_sort_dma, + float face_color_alpha_0, + float face_color_r_0, + float face_color_g_0, + float face_color_b_0, + float face_color_alpha_1, + float face_color_r_1, + float face_color_g_1, + float face_color_b_1 + ) { + this.parameter_control_word = parameter_control_word; + this.isp_tsp_instruction_word = isp_tsp_instruction_word; + this.tsp_instruction_word_0 = tsp_instruction_word_0; + this.texture_control_word_0 = texture_control_word_0; + this.tsp_instruction_word_1 = tsp_instruction_word_1; + this.texture_control_word_1 = texture_control_word_1; + this.data_size_for_sort_dma = data_size_for_sort_dma; + this.next_address_for_sort_dma = next_address_for_sort_dma; + this.face_color_alpha_0 = face_color_alpha_0; + this.face_color_r_0 = face_color_r_0; + this.face_color_g_0 = face_color_g_0; + this.face_color_b_0 = face_color_b_0; + this.face_color_alpha_1 = face_color_alpha_1; + this.face_color_r_1 = face_color_r_1; + this.face_color_g_1 = face_color_g_1; + this.face_color_b_1 = face_color_b_1; + } + } + public class sprite { + public int parameter_control_word; + public int isp_tsp_instruction_word; + public int tsp_instruction_word; + public int texture_control_word; + public int base_color; + public int offset_color; + public int data_size_for_sort_dma; + public int next_address_for_sort_dma; + public sprite(int parameter_control_word, + int isp_tsp_instruction_word, + int tsp_instruction_word, + int texture_control_word, + int base_color, + int offset_color, + int data_size_for_sort_dma, + int next_address_for_sort_dma + ) { + this.parameter_control_word = parameter_control_word; + this.isp_tsp_instruction_word = isp_tsp_instruction_word; + this.tsp_instruction_word = tsp_instruction_word; + this.texture_control_word = texture_control_word; + this.base_color = base_color; + this.offset_color = offset_color; + this.data_size_for_sort_dma = data_size_for_sort_dma; + this.next_address_for_sort_dma = next_address_for_sort_dma; + } + } + public class modifier_volume { + public int parameter_control_word; + public int isp_tsp_instruction_word; + public int _res0; + public int _res1; + public int _res2; + public int _res3; + public int _res4; + public int _res5; + public modifier_volume(int parameter_control_word, + int isp_tsp_instruction_word + ) { + this.parameter_control_word = parameter_control_word; + this.isp_tsp_instruction_word = isp_tsp_instruction_word; + this._res0 = 0; + this._res1 = 0; + this._res2 = 0; + this._res3 = 0; + this._res4 = 0; + this._res5 = 0; + } + } +} diff --git a/sega/dreamcast/holly/TAVertexParameter.java b/sega/dreamcast/holly/TAVertexParameter.java new file mode 100644 index 0000000..03e7824 --- /dev/null +++ b/sega/dreamcast/holly/TAVertexParameter.java @@ -0,0 +1,677 @@ +package sega.dreamcast.holly; + + +public class TAVertexParameter { + public class polygon_type_0 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public int _res0; + public int _res1; + public int base_color; + public int _res2; + public polygon_type_0(int parameter_control_word, + float x, + float y, + float z, + int base_color + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this._res0 = 0; + this._res1 = 0; + this.base_color = base_color; + this._res2 = 0; + } + } + public class polygon_type_1 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public float base_color_alpha; + public float base_color_r; + public float base_color_g; + public float base_color_b; + public polygon_type_1(int parameter_control_word, + float x, + float y, + float z, + float base_color_alpha, + float base_color_r, + float base_color_g, + float base_color_b + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.base_color_alpha = base_color_alpha; + this.base_color_r = base_color_r; + this.base_color_g = base_color_g; + this.base_color_b = base_color_b; + } + } + public class polygon_type_2 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public int _res0; + public int _res1; + public float base_intensity; + public int _res2; + public polygon_type_2(int parameter_control_word, + float x, + float y, + float z, + float base_intensity + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this._res0 = 0; + this._res1 = 0; + this.base_intensity = base_intensity; + this._res2 = 0; + } + } + public class polygon_type_3 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public float u; + public float v; + public int base_color; + public int offset_color; + public polygon_type_3(int parameter_control_word, + float x, + float y, + float z, + float u, + float v, + int base_color, + int offset_color + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u = u; + this.v = v; + this.base_color = base_color; + this.offset_color = offset_color; + } + } + public class polygon_type_4 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public int u_v; + public int _res0; + public int base_color; + public int offset_color; + public polygon_type_4(int parameter_control_word, + float x, + float y, + float z, + int u_v, + int base_color, + int offset_color + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u_v = u_v; + this._res0 = 0; + this.base_color = base_color; + this.offset_color = offset_color; + } + } + public class polygon_type_5 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public float u; + public float v; + public int _res0; + public int _res1; + public float base_color_alpha; + public float base_color_r; + public float base_color_g; + public float base_color_b; + public float offset_color_alpha; + public float offset_color_r; + public float offset_color_g; + public float offset_color_b; + public polygon_type_5(int parameter_control_word, + float x, + float y, + float z, + float u, + float v, + float base_color_alpha, + float base_color_r, + float base_color_g, + float base_color_b, + float offset_color_alpha, + float offset_color_r, + float offset_color_g, + float offset_color_b + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u = u; + this.v = v; + this._res0 = 0; + this._res1 = 0; + this.base_color_alpha = base_color_alpha; + this.base_color_r = base_color_r; + this.base_color_g = base_color_g; + this.base_color_b = base_color_b; + this.offset_color_alpha = offset_color_alpha; + this.offset_color_r = offset_color_r; + this.offset_color_g = offset_color_g; + this.offset_color_b = offset_color_b; + } + } + public class polygon_type_6 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public int u_v; + public int _res0; + public int _res1; + public int _res2; + public float base_color_alpha; + public float base_color_r; + public float base_color_g; + public float base_color_b; + public float offset_color_alpha; + public float offset_color_r; + public float offset_color_g; + public float offset_color_b; + public polygon_type_6(int parameter_control_word, + float x, + float y, + float z, + int u_v, + float base_color_alpha, + float base_color_r, + float base_color_g, + float base_color_b, + float offset_color_alpha, + float offset_color_r, + float offset_color_g, + float offset_color_b + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u_v = u_v; + this._res0 = 0; + this._res1 = 0; + this._res2 = 0; + this.base_color_alpha = base_color_alpha; + this.base_color_r = base_color_r; + this.base_color_g = base_color_g; + this.base_color_b = base_color_b; + this.offset_color_alpha = offset_color_alpha; + this.offset_color_r = offset_color_r; + this.offset_color_g = offset_color_g; + this.offset_color_b = offset_color_b; + } + } + public class polygon_type_7 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public float u; + public float v; + public float base_intensity; + public float offset_intensity; + public polygon_type_7(int parameter_control_word, + float x, + float y, + float z, + float u, + float v, + float base_intensity, + float offset_intensity + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u = u; + this.v = v; + this.base_intensity = base_intensity; + this.offset_intensity = offset_intensity; + } + } + public class polygon_type_8 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public int u_v; + public int _res0; + public float base_intensity; + public float offset_intensity; + public polygon_type_8(int parameter_control_word, + float x, + float y, + float z, + int u_v, + float base_intensity, + float offset_intensity + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u_v = u_v; + this._res0 = 0; + this.base_intensity = base_intensity; + this.offset_intensity = offset_intensity; + } + } + public class polygon_type_9 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public int base_color_0; + public int base_color_1; + public int _res0; + public int _res1; + public polygon_type_9(int parameter_control_word, + float x, + float y, + float z, + int base_color_0, + int base_color_1 + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.base_color_0 = base_color_0; + this.base_color_1 = base_color_1; + this._res0 = 0; + this._res1 = 0; + } + } + public class polygon_type_10 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public int base_intensity_0; + public int base_intensity_1; + public int _res0; + public int _res1; + public polygon_type_10(int parameter_control_word, + float x, + float y, + float z, + int base_intensity_0, + int base_intensity_1 + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.base_intensity_0 = base_intensity_0; + this.base_intensity_1 = base_intensity_1; + this._res0 = 0; + this._res1 = 0; + } + } + public class polygon_type_11 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public float u_0; + public float v_0; + public int base_color_0; + public int offset_color_0; + public float u_1; + public float v_1; + public int base_color_1; + public int offset_color_1; + public int _res0; + public int _res1; + public int _res2; + public int _res3; + public polygon_type_11(int parameter_control_word, + float x, + float y, + float z, + float u_0, + float v_0, + int base_color_0, + int offset_color_0, + float u_1, + float v_1, + int base_color_1, + int offset_color_1 + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u_0 = u_0; + this.v_0 = v_0; + this.base_color_0 = base_color_0; + this.offset_color_0 = offset_color_0; + this.u_1 = u_1; + this.v_1 = v_1; + this.base_color_1 = base_color_1; + this.offset_color_1 = offset_color_1; + this._res0 = 0; + this._res1 = 0; + this._res2 = 0; + this._res3 = 0; + } + } + public class polygon_type_12 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public int u_v_0; + public int _res0; + public int base_color_0; + public int offset_color_0; + public int u_v_1; + public int _res1; + public int base_color_1; + public int offset_color_1; + public int _res2; + public int _res3; + public int _res4; + public int _res5; + public polygon_type_12(int parameter_control_word, + float x, + float y, + float z, + int u_v_0, + int base_color_0, + int offset_color_0, + int u_v_1, + int base_color_1, + int offset_color_1 + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u_v_0 = u_v_0; + this._res0 = 0; + this.base_color_0 = base_color_0; + this.offset_color_0 = offset_color_0; + this.u_v_1 = u_v_1; + this._res1 = 0; + this.base_color_1 = base_color_1; + this.offset_color_1 = offset_color_1; + this._res2 = 0; + this._res3 = 0; + this._res4 = 0; + this._res5 = 0; + } + } + public class polygon_type_13 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public float u_0; + public float v_0; + public int base_intensity_0; + public float offset_intensity_0; + public float u_1; + public float v_1; + public int base_intensity_1; + public float offset_intensity_1; + public int _res0; + public int _res1; + public int _res2; + public int _res3; + public polygon_type_13(int parameter_control_word, + float x, + float y, + float z, + float u_0, + float v_0, + int base_intensity_0, + float offset_intensity_0, + float u_1, + float v_1, + int base_intensity_1, + float offset_intensity_1 + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u_0 = u_0; + this.v_0 = v_0; + this.base_intensity_0 = base_intensity_0; + this.offset_intensity_0 = offset_intensity_0; + this.u_1 = u_1; + this.v_1 = v_1; + this.base_intensity_1 = base_intensity_1; + this.offset_intensity_1 = offset_intensity_1; + this._res0 = 0; + this._res1 = 0; + this._res2 = 0; + this._res3 = 0; + } + } + public class polygon_type_14 { + public int parameter_control_word; + public float x; + public float y; + public float z; + public int u_v_0; + public int _res0; + public int base_intensity_0; + public float offset_intensity_0; + public int u_v_1; + public int _res1; + public int base_intensity_1; + public float offset_intensity_1; + public int _res2; + public int _res3; + public int _res4; + public int _res5; + public polygon_type_14(int parameter_control_word, + float x, + float y, + float z, + int u_v_0, + int base_intensity_0, + float offset_intensity_0, + int u_v_1, + int base_intensity_1, + float offset_intensity_1 + ) { + this.parameter_control_word = parameter_control_word; + this.x = x; + this.y = y; + this.z = z; + this.u_v_0 = u_v_0; + this._res0 = 0; + this.base_intensity_0 = base_intensity_0; + this.offset_intensity_0 = offset_intensity_0; + this.u_v_1 = u_v_1; + this._res1 = 0; + this.base_intensity_1 = base_intensity_1; + this.offset_intensity_1 = offset_intensity_1; + this._res2 = 0; + this._res3 = 0; + this._res4 = 0; + this._res5 = 0; + } + } + public class sprite_type_0 { + public int parameter_control_word; + public float a_x; + public float a_y; + public float a_z; + public float b_x; + public float b_y; + public float b_z; + public float c_x; + public float c_y; + public float c_z; + public float d_x; + public float d_y; + public int _res0; + public int _res1; + public int _res2; + public int _res3; + public sprite_type_0(int parameter_control_word, + float a_x, + float a_y, + float a_z, + float b_x, + float b_y, + float b_z, + float c_x, + float c_y, + float c_z, + float d_x, + float d_y + ) { + this.parameter_control_word = parameter_control_word; + this.a_x = a_x; + this.a_y = a_y; + this.a_z = a_z; + this.b_x = b_x; + this.b_y = b_y; + this.b_z = b_z; + this.c_x = c_x; + this.c_y = c_y; + this.c_z = c_z; + this.d_x = d_x; + this.d_y = d_y; + this._res0 = 0; + this._res1 = 0; + this._res2 = 0; + this._res3 = 0; + } + } + public class sprite_type_1 { + public int parameter_control_word; + public float a_x; + public float a_y; + public float a_z; + public float b_x; + public float b_y; + public float b_z; + public float c_x; + public float c_y; + public float c_z; + public float d_x; + public float d_y; + public int _res0; + public int a_u_a_v; + public int b_u_b_v; + public int c_u_c_v; + public sprite_type_1(int parameter_control_word, + float a_x, + float a_y, + float a_z, + float b_x, + float b_y, + float b_z, + float c_x, + float c_y, + float c_z, + float d_x, + float d_y, + int a_u_a_v, + int b_u_b_v, + int c_u_c_v + ) { + this.parameter_control_word = parameter_control_word; + this.a_x = a_x; + this.a_y = a_y; + this.a_z = a_z; + this.b_x = b_x; + this.b_y = b_y; + this.b_z = b_z; + this.c_x = c_x; + this.c_y = c_y; + this.c_z = c_z; + this.d_x = d_x; + this.d_y = d_y; + this._res0 = 0; + this.a_u_a_v = a_u_a_v; + this.b_u_b_v = b_u_b_v; + this.c_u_c_v = c_u_c_v; + } + } + public class modifier_volume { + public int parameter_control_word; + public float a_x; + public float a_y; + public float a_z; + public float b_x; + public float b_y; + public float b_z; + public float c_x; + public float c_y; + public float c_z; + public int _res0; + public int _res1; + public int _res2; + public int _res3; + public int _res4; + public int _res5; + public modifier_volume(int parameter_control_word, + float a_x, + float a_y, + float a_z, + float b_x, + float b_y, + float b_z, + float c_x, + float c_y, + float c_z + ) { + this.parameter_control_word = parameter_control_word; + this.a_x = a_x; + this.a_y = a_y; + this.a_z = a_z; + this.b_x = b_x; + this.b_y = b_y; + this.b_z = b_z; + this.c_x = c_x; + this.c_y = c_y; + this.c_z = c_z; + this._res0 = 0; + this._res1 = 0; + this._res2 = 0; + this._res3 = 0; + this._res4 = 0; + this._res5 = 0; + } + } +}