Java cube

This commit is contained in:
Zack Buhman 2024-12-29 02:00:15 -06:00
parent a6830aea78
commit 88318fde35
70 changed files with 644 additions and 675 deletions

View File

@ -1,6 +1,5 @@
#include "example/DreamcastVideo2.class.h"
#include "example/DreamcastVideo.class.h"
#include "example/Vec2.class.h"
#include "java/io/PrintStream.class.h"
#include "java/lang/Integer.class.h"
#include "java/lang/Math.class.h"
@ -8,7 +7,8 @@
#include "java/lang/String.class.h"
#include "java/lang/System.class.h"
#include "java/misc/Memory.class.h"
#include "model/FacePNT.class.h"
#include "java/misc/Resource.class.h"
#include "model/FacePTN.class.h"
#include "model/ModelObject.class.h"
#include "model/UntitledModel.class.h"
#include "model/Vec2.class.h"

View File

@ -1,6 +1,5 @@
(const uint8_t *)&_binary_example_DreamcastVideo2_class_start,
(const uint8_t *)&_binary_example_DreamcastVideo_class_start,
(const uint8_t *)&_binary_example_Vec2_class_start,
(const uint8_t *)&_binary_java_io_PrintStream_class_start,
(const uint8_t *)&_binary_java_lang_Integer_class_start,
(const uint8_t *)&_binary_java_lang_Math_class_start,
@ -8,7 +7,8 @@
(const uint8_t *)&_binary_java_lang_String_class_start,
(const uint8_t *)&_binary_java_lang_System_class_start,
(const uint8_t *)&_binary_java_misc_Memory_class_start,
(const uint8_t *)&_binary_model_FacePNT_class_start,
(const uint8_t *)&_binary_java_misc_Resource_class_start,
(const uint8_t *)&_binary_model_FacePTN_class_start,
(const uint8_t *)&_binary_model_ModelObject_class_start,
(const uint8_t *)&_binary_model_UntitledModel_class_start,
(const uint8_t *)&_binary_model_Vec2_class_start,

View File

@ -10,7 +10,7 @@ void op_aaload(struct vm * vm)
{
int32_t index = operand_stack_pop_u32(vm->current_frame);
int32_t * arrayref = (int32_t *)operand_stack_pop_u32(vm->current_frame);
assert(arrayref[0] > 0 && index < arrayref[0]);
assertvm(vm, arrayref[0] > 0 && index < arrayref[0]);
uint32_t * referencearray = (uint32_t *)&arrayref[1];
uint32_t value = referencearray[index];
operand_stack_push_u32(vm->current_frame, value);

View File

@ -283,6 +283,24 @@ void vm_native_method_call(struct vm * vm, struct class_entry * class_entry, str
}
}
int java_misc_resource_length = 18;
bool java_misc_resource =
class_name_constant->utf8.length == java_misc_resource_length &&
hash_table_key_equal(class_name_constant->utf8.bytes, (const uint8_t *)"java/misc/Resource", class_name_constant->utf8.length);
if (java_misc_resource) {
int getresource_length = 11;
bool getresource =
method_name_constant->utf8.length == getresource_length &&
hash_table_key_equal(method_name_constant->utf8.bytes, (const uint8_t *)"getResource", method_name_constant->utf8.length);
if (getresource) {
assert(nargs == 1);
assert(return_type == '[');
uint32_t value = java_misc_resource_getresource_1(args);
operand_stack_push_u32(vm->current_frame, value);
return;
}
}
int java_io_printstream_length = 19;
bool java_io_printstream =
class_name_constant->utf8.length == java_io_printstream_length &&

View File

@ -3,7 +3,7 @@
void native_java_io_printstream_write(uint32_t * arrayref)
{
uint32_t length = arrayref[0];
int32_t length = arrayref[0];
char * buf = (char *)&arrayref[1];
print_string(buf, length);
}
@ -103,3 +103,21 @@ native_java_lang_math_cos_1(uint32_t * args)
float value = __builtin_cosf(arg);
return *((uint32_t *)&value);
}
#if defined(__dreamcast__)
#include "resources.inc.c"
#endif
uint32_t java_misc_resource_getresource_1(uint32_t * args)
{
uint32_t * objectref = (uint32_t *)args[0];
int32_t * arrayref = (int32_t *)objectref[1];
int32_t name_length = (int32_t)arrayref[0];
uint8_t * name = (uint8_t *)&arrayref[1];
#if defined(__dreamcast__)
uint32_t resource = find_resource(name, name_length);
return resource;
#else
return 0;
#endif
}

View File

@ -14,3 +14,4 @@ uint32_t native_java_misc_memory_getU1_1(uint32_t * args);
void native_java_misc_memory_putSQ1_2(uint32_t * args);
uint32_t native_java_lang_math_sin_1(uint32_t * args);
uint32_t native_java_lang_math_cos_1(uint32_t * args);
uint32_t java_misc_resource_getresource_1(uint32_t * args);

56
c/resources.inc.c Normal file
View File

@ -0,0 +1,56 @@
#include "images/java_text.data.h"
#include "images/java_cup.data.h"
#include "images/java_powered.data.h"
#include "hash_table.h"
#include "assert.h"
struct resource {
const uint8_t * name;
int32_t name_length;
const int32_t * buf;
int32_t buf_length;
};
static struct resource resources[] = {
{
.name = (const uint8_t *)"images/java_text",
.name_length = 16,
.buf = (const int32_t *)&_binary_images_java_text_data_start,
.buf_length = (int32_t)&_binary_images_java_text_data_size
},
{
.name = (const uint8_t *)"images/java_cup",
.name_length = 15,
.buf = (const int32_t *)&_binary_images_java_cup_data_start,
.buf_length = (int32_t)&_binary_images_java_cup_data_size
},
{
.name = (const uint8_t *)"images/java_powered",
.name_length = 19,
.buf = (const int32_t *)&_binary_images_java_powered_data_start,
.buf_length = (int32_t)&_binary_images_java_powered_data_size
},
};
static int resources_length = (sizeof (resources)) / (sizeof (resources[0]));
static uint32_t find_resource(const uint8_t * name, int32_t name_length)
{
for (int i = 0; i < resources_length; i++) {
struct resource * resource = &resources[i];
if (resource->name_length != name_length)
continue;
if (hash_table_key_equal(resource->name, name, name_length)) {
//debugf("resource match: ");
//print_string((const char *)name, name_length);
//debugc('\n');
uint32_t buf = (uint32_t)resource->buf;
// alignment check
assert((resource->buf_length & (~3)) == resource->buf_length);
assert((buf & ~(3)) == buf);
return buf;
}
}
return 0;
}

View File

@ -1,7 +1,6 @@
CLASS_PATH = \
example/DreamcastVideo2.class.o \
example/DreamcastVideo.class.o \
example/Vec2.class.o \
java/io/PrintStream.class.o \
java/lang/Integer.class.o \
java/lang/Math.class.o \
@ -9,7 +8,8 @@ CLASS_PATH = \
java/lang/String.class.o \
java/lang/System.class.o \
java/misc/Memory.class.o \
model/FacePNT.class.o \
java/misc/Resource.class.o \
model/FacePTN.class.o \
model/ModelObject.class.o \
model/UntitledModel.class.o \
model/Vec2.class.o \

View File

@ -12,31 +12,25 @@ import sega.dreamcast.holly.TextureMemoryAllocation;
import sega.dreamcast.holly.ISPTSP;
import sega.dreamcast.holly.TAVertexParameter;
import sega.dreamcast.holly.TAGlobalParameter;
import sega.dreamcast.systembus.Systembus;
import sega.dreamcast.systembus.SystembusBits;
import sega.dreamcast.MemoryMap;
import model.UntitledModel;
import model.Vec3;
import model.FacePNT;
import model.Vec2;
import model.FacePTN;
import model.ModelObject;
import java.misc.Memory;
/*
class Vec2 {
float x;
float y;
}
*/
import java.misc.Resource;
class DreamcastVideo2 {
static final int framebuffer_width = 640;
static final int framebuffer_height = 480;
static TAGlobalParameter.polygon_type_0 gt0;
static TAVertexParameter.polygon_type_0 vt0;
static TAGlobalParameter.polygon_type_0[] gt0;
static TAVertexParameter.polygon_type_3 vt0;
static TAGlobalParameter.end_of_list eol;
//static Vec2[] vtx;
static Vec2[] quad;
static Vec2[] quad_uv;
static float theta;
@ -49,66 +43,102 @@ class DreamcastVideo2 {
static {
int parameter_control_word = TAParameter.para_control__para_type__polygon_or_modifier_volume
| TAParameter.para_control__list_type__opaque
| TAParameter.obj_control__col_type__packed_color;
| TAParameter.para_control__list_type__translucent
| TAParameter.obj_control__col_type__packed_color
| TAParameter.obj_control__texture;
int isp_tsp_instruction_word = ISPTSP.isp_tsp_instruction_word__depth_compare_mode__greater
| ISPTSP.isp_tsp_instruction_word__culling_mode__no_culling;
int tsp_instruction_word = ISPTSP.tsp_instruction_word__src_alpha_instr__one
| ISPTSP.tsp_instruction_word__dst_alpha_instr__zero
| ISPTSP.tsp_instruction_word__fog_control__no_fog;
int tsp_instruction_word = ISPTSP.tsp_instruction_word__src_alpha_instr__src_alpha
| ISPTSP.tsp_instruction_word__dst_alpha_instr__inverse_src_alpha
| ISPTSP.tsp_instruction_word__fog_control__no_fog
| ISPTSP.tsp_instruction_word__texture_u_size__512
| ISPTSP.tsp_instruction_word__texture_v_size__1024
| ISPTSP.tsp_instruction_word__use_alpha;
int texture_address = TextureMemoryAllocation.texture_regions[1][0] + 512;
int texture_control_word = ISPTSP.texture_control_word__pixel_format__4444
| ISPTSP.texture_control_word__scan_order__non_twiddled
| ISPTSP.texture_control_word__texture_address(texture_address / 8);
int texture_control_word = 0;
int data_size_for_sort_dma = 0;
int next_address_for_sort_dma = 0;
gt0 = new TAGlobalParameter.polygon_type_0(parameter_control_word,
isp_tsp_instruction_word,
tsp_instruction_word,
texture_control_word,
data_size_for_sort_dma,
next_address_for_sort_dma);
gt0 = new TAGlobalParameter.polygon_type_0[2];
gt0[0] = new TAGlobalParameter.polygon_type_0(parameter_control_word,
isp_tsp_instruction_word,
tsp_instruction_word,
texture_control_word,
data_size_for_sort_dma,
next_address_for_sort_dma);
vt0 = new TAVertexParameter.polygon_type_0(0, // parameter_control_word
tsp_instruction_word = ISPTSP.tsp_instruction_word__src_alpha_instr__src_alpha
| ISPTSP.tsp_instruction_word__dst_alpha_instr__inverse_src_alpha
| ISPTSP.tsp_instruction_word__fog_control__no_fog
| ISPTSP.tsp_instruction_word__texture_u_size__128
| ISPTSP.tsp_instruction_word__texture_v_size__64
| ISPTSP.tsp_instruction_word__use_alpha;
texture_address = TextureMemoryAllocation.texture_regions[1][0] + 512 + (512 * 512 * 2 * 2);
texture_control_word = ISPTSP.texture_control_word__pixel_format__4444
| ISPTSP.texture_control_word__scan_order__non_twiddled
| ISPTSP.texture_control_word__texture_address(texture_address / 8);
gt0[1] = new TAGlobalParameter.polygon_type_0(parameter_control_word,
isp_tsp_instruction_word,
tsp_instruction_word,
texture_control_word,
data_size_for_sort_dma,
next_address_for_sort_dma);
vt0 = new TAVertexParameter.polygon_type_3(0, // parameter_control_word
0.0f, // x
0.0f, // y
0.1f, // z
0); // color
0.0f, // z
0.0f, // u
0.0f, // v
0, // color
0); // offset_color
eol = new TAGlobalParameter.end_of_list(TAParameter.para_control__para_type__end_of_list);
/*
vtx = new Vec2[3];
for (int i = 0; i < 3; i++)
vtx[i] = new Vec2();
vtx[0].x = 0.0f;
vtx[0].y = 1.0f;
vtx[1].x = 0.866025f;
vtx[1].y = -0.5f;
vtx[2].x = -0.866025f;
vtx[2].y = -0.5f;
*/
float x = 256.0f;
float y = 208.0f;
quad = new Vec2[4];
quad[0] = new Vec2(x + 0.0f, y + 0.0f);
quad[1] = new Vec2(x + 128.0f, y + 0.0f);
quad[2] = new Vec2(x + 128.0f, y + 64.0f);
quad[3] = new Vec2(x + 0.0f, y + 64.0f);
quad_uv = new Vec2[4];
quad_uv[0] = new Vec2(0.0f, 0.0f);
quad_uv[1] = new Vec2(1.0f, 0.0f);
quad_uv[2] = new Vec2(1.0f, 1.0f);
quad_uv[3] = new Vec2(0.0f, 1.0f);
}
public static void transform_vertex(Vec3[] position, FacePNT pnt) {
float px = position[pnt.position].x;
float py = position[pnt.position].y;
float pz = position[pnt.position].z;
public static void transform_vertex(Vec3[] position, Vec2[] texture, FacePTN ptn) {
float px = position[ptn.position].x;
float py = position[ptn.position].y;
float pz = position[ptn.position].z;
//px *= 0.5;
//py *= 0.5;
//pz *= 0.5;
float theta2 = theta * 2.0f;
float scale = (Math.sin(theta2) + 3.0f) * 0.3f;
px *= scale;
py *= scale;
pz *= scale;
float x0 = px * Math.cos(theta) - py * Math.sin(theta);
float y0 = px * Math.sin(theta) + py * Math.cos(theta);
float z0 = pz;
float theta2 = theta / 2.0f;
float theta05 = theta * 0.5f;
float x1 = x0 * Math.cos(theta2) - z0 * Math.sin(theta2);
float x1 = x0 * Math.cos(theta05) - z0 * Math.sin(theta05);
float y1 = y0;
float z1 = x0 * Math.sin(theta2) + z0 * Math.cos(theta2);
float z1 = x0 * Math.sin(theta05) + z0 * Math.cos(theta05);
// camera transform
float z2 = 3f + z1;
@ -122,67 +152,197 @@ class DreamcastVideo2 {
float y = -y2 * 240f + 240f;
float z = 1.0f / z2;
DreamcastVideo2.vt0.x = x;
DreamcastVideo2.vt0.y = y;
DreamcastVideo2.vt0.z = z;
vt0.x = x;
vt0.y = y;
vt0.z = z;
vt0.u = texture[ptn.texture].x;
vt0.v = texture[ptn.texture].y;
}
public static void transform_triangle(int n, Vec3[] position, FacePNT[] face) {
public static void transform_triangle(int n, Vec3[] position, Vec2[] texture, FacePTN[] face) {
for (int i = 0; i < 3; i++) {
DreamcastVideo2.vt0.parameter_control_word = TAParameter.para_control__para_type__vertex_parameter;
vt0.parameter_control_word = TAParameter.para_control__para_type__vertex_parameter;
if (i == 2)
DreamcastVideo2.vt0.parameter_control_word |= TAParameter.para_control__end_of_strip;
transform_vertex(position, face[i]);
DreamcastVideo2.vt0.base_color = colors[n];
vt0.parameter_control_word |= TAParameter.para_control__end_of_strip;
transform_vertex(position, texture, face[i]);
vt0.base_color = colors[n];
Memory.putSQ1(DreamcastVideo2.vt0, MemoryMap.ta_fifo_polygon_converter);
Memory.putSQ1(vt0, MemoryMap.ta_fifo_polygon_converter);
}
}
public static void transfer_scene() {
// global parameter
Memory.putSQ1(DreamcastVideo2.gt0, MemoryMap.ta_fifo_polygon_converter);
public static void transform_quad() {
// strip order:
// 0 1 3 2
// vertex parameters
vt0.z = 0.1f;
vt0.parameter_control_word = TAParameter.para_control__para_type__vertex_parameter;
vt0.x = quad[0].x;
vt0.y = quad[0].y;
vt0.u = quad_uv[0].x;
vt0.v = quad_uv[0].y;
Memory.putSQ1(vt0, MemoryMap.ta_fifo_polygon_converter);
vt0.parameter_control_word = TAParameter.para_control__para_type__vertex_parameter;
vt0.x = quad[1].x;
vt0.y = quad[1].y;
vt0.u = quad_uv[1].x;
vt0.v = quad_uv[1].y;
Memory.putSQ1(vt0, MemoryMap.ta_fifo_polygon_converter);
vt0.parameter_control_word = TAParameter.para_control__para_type__vertex_parameter;
vt0.x = quad[3].x;
vt0.y = quad[3].y;
vt0.u = quad_uv[3].x;
vt0.v = quad_uv[3].y;
Memory.putSQ1(vt0, MemoryMap.ta_fifo_polygon_converter);
vt0.parameter_control_word = TAParameter.para_control__para_type__vertex_parameter
| TAParameter.para_control__end_of_strip;
vt0.x = quad[2].x;
vt0.y = quad[2].y;
vt0.u = quad_uv[2].x;
vt0.v = quad_uv[2].y;
Memory.putSQ1(vt0, MemoryMap.ta_fifo_polygon_converter);
}
public static void transfer_cube_scene() {
// global parameters
Memory.putSQ1(gt0[0], MemoryMap.ta_fifo_polygon_converter);
// triangle parameters
ModelObject obj = UntitledModel.objects[0];
for (int i = 0; i < obj.faces.length; i ++) {
transform_triangle(i, UntitledModel.position, obj.faces[i]);
transform_triangle(i, UntitledModel.position, UntitledModel.texture, obj.faces[i]);
}
// end of list
Memory.putSQ1(DreamcastVideo2.eol, MemoryMap.ta_fifo_polygon_converter);
Memory.putSQ1(eol, MemoryMap.ta_fifo_polygon_converter);
}
public static void transfer_splash_scene() {
// global parameters
Memory.putSQ1(gt0[1], MemoryMap.ta_fifo_polygon_converter);
// quad parameters
transform_quad();
// end of list
Memory.putSQ1(eol, MemoryMap.ta_fifo_polygon_converter);
}
public static void transfer_textures() {
int texture = TextureMemoryAllocation.texture_regions[1][0] + 512;
// java_cup
int[] java_cup = Resource.getResource("images/java_cup");
int java_cup_length = (java_cup == null) ? 0 : java_cup.length;
//System.out.print("images/java_cup length: ");
//System.out.println(java_cup_length);
for (int i = 0; i < java_cup_length; i++) {
Memory.putU4(MemoryMap.texture_memory64 + texture, java_cup[i]);
texture += 4;
}
// java_text
int[] java_text = Resource.getResource("images/java_text");
int java_text_length = (java_text == null) ? 0 : java_text.length;
//System.out.print("images/java_text length: ");
//System.out.println(java_text_length);
for (int i = 0; i < java_text_length; i++) {
Memory.putU4(MemoryMap.texture_memory64 + texture, java_text[i]);
texture += 4;
}
}
public static void transfer_java_powered() {
int texture = TextureMemoryAllocation.texture_regions[1][0] + 512 + (512 * 512 * 2 * 2);
// java_powered
int[] java_powered = Resource.getResource("images/java_powered");
int java_powered_length = (java_powered == null) ? 0 : java_powered.length;
//System.out.print("images/java_powered length: ");
//System.out.println(java_powered_length);
for (int i = 0; i < java_powered_length; i++) {
Memory.putU4(MemoryMap.texture_memory64 + texture, java_powered[i]);
texture += 4;
}
}
public static void boot_splash(int ta_alloc, int opb_size_total) {
// unpipelined render loop
TAFIFOPolygonConverter.init(TextureMemoryAllocation.isp_tsp_parameters_start[0],
TextureMemoryAllocation.isp_tsp_parameters_end[0],
TextureMemoryAllocation.object_list_start[0],
TextureMemoryAllocation.object_list_end[0],
opb_size_total,
ta_alloc,
framebuffer_width / 32,
framebuffer_height / 32);
transfer_splash_scene();
TAFIFOPolygonConverter.wait_translucent_list();
Core.start_render(TextureMemoryAllocation.region_array_start[0],
TextureMemoryAllocation.isp_tsp_parameters_start[0],
TextureMemoryAllocation.background_start[0],
TextureMemoryAllocation.framebuffer_start[0],
framebuffer_width);
Core.wait_end_of_render_tsp();
while ((CoreBits.spg_status__vsync(Memory.getU4(Holly.SPG_STATUS)) != 0));
Core.fb_r_enable();
Memory.putU4(Holly.FB_R_SOF1, TextureMemoryAllocation.framebuffer_start[0]);
}
public static void main() {
Core.init();
Core.fb_init(framebuffer_width, framebuffer_height);
System.out.println(Memory.getU4(Holly.FB_R_SOF1));
int ta_alloc =
TABits.ta_alloc_ctrl__opb_mode__increasing_addresses
| TABits.ta_alloc_ctrl__pt_opb__no_list
| TABits.ta_alloc_ctrl__tm_opb__no_list
| TABits.ta_alloc_ctrl__t_opb__no_list
| TABits.ta_alloc_ctrl__t_opb__8x4byte
| TABits.ta_alloc_ctrl__om_opb__no_list
| TABits.ta_alloc_ctrl__o_opb__8x4byte
| TABits.ta_alloc_ctrl__o_opb__no_list
;
RegionArray.OPBSize[] opb_size = {
new RegionArray.OPBSize(8 * 4, // opaque
new RegionArray.OPBSize(0, // opaque
0, // opaque_modifier_volume
0, // translucent
8 * 4, // translucent
0, // translucent_modifier_volume
0) // punch_through
};
int opb_size_total = opb_size[0].total();
int num_render_passes = opb_size.length;
transfer_java_powered();
Background.background(TextureMemoryAllocation.background_start[0],
0x00c0c0c0); // sega white
int num_render_passes = opb_size.length;
RegionArray.region_array(framebuffer_width / 32,
framebuffer_height / 32,
opb_size,
num_render_passes,
TextureMemoryAllocation.region_array_start[0],
TextureMemoryAllocation.object_list_start[0]);
Core.init();
Core.fb_init(framebuffer_width, framebuffer_height);
boot_splash(ta_alloc, opb_size_total);
transfer_textures();
int background_color = 0xff100a00;
Background.background(TextureMemoryAllocation.background_start[1],
background_color);
RegionArray.region_array(framebuffer_width / 32,
framebuffer_height / 32,
opb_size,
@ -190,12 +350,6 @@ class DreamcastVideo2 {
TextureMemoryAllocation.region_array_start[1],
TextureMemoryAllocation.object_list_start[1]);
int background_color = 0xff443300;
Background.background(TextureMemoryAllocation.background_start[0],
background_color);
Background.background(TextureMemoryAllocation.background_start[1],
background_color);
int core = 0;
int ta = 0;
while (true) {
@ -208,12 +362,12 @@ class DreamcastVideo2 {
ta_alloc,
framebuffer_width / 32,
framebuffer_height / 32);
transfer_scene();
TAFIFOPolygonConverter.wait_opaque_list();
transfer_cube_scene();
TAFIFOPolygonConverter.wait_translucent_list();
Core.start_render(TextureMemoryAllocation.region_array_start[ta],
TextureMemoryAllocation.isp_tsp_parameters_start[ta],
TextureMemoryAllocation.background_start[ta],
TextureMemoryAllocation.background_start[1],
TextureMemoryAllocation.framebuffer_start[core],
framebuffer_width);
Core.wait_end_of_render_tsp();

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_example_Vec2_class_start __asm("_binary_example_Vec2_class_start");
extern uint32_t _binary_example_Vec2_class_end __asm("_binary_example_Vec2_class_end");
extern uint32_t _binary_example_Vec2_class_size __asm("_binary_example_Vec2_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -13,4 +13,9 @@ python regs/bits_gen.py ../dreamcast/regs/systembus_bits.csv systembus Systembus
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
PYTHONPATH=./regs/ python ../model_generator/generate_java.py ../untitled.obj UntitledModel > ./models/UntitledModel.java
PYTHONPATH=./regs/ python ../model_generator/generate_java.py ../untitled.obj UntitledModel > ./model/UntitledModel.java
python images/color_convert.py images/java_cup.png argb4444 images/java_cup.data
python images/color_convert.py images/java_text.png argb4444 images/java_text.data
python images/color_convert.py images/java_powered.png argb4444 images/java_powered.data

96
images/color_convert.py Normal file
View File

@ -0,0 +1,96 @@
import struct
import sys
from PIL import Image
class color_format:
def gbgr1555(r, g, b, a): # nintendo ds
r5 = (r >> 3) & 31
g6 = (g >> 3) & 31
g6_l = (g >> 2) & 1
b5 = (b >> 3) & 31
return (g6_l << 15) | (b5 << 10) | (g6 << 5) | (r5 << 0)
def argb4444(r, g, b, a):
a4 = (a >> 4) & 15
r4 = (r >> 4) & 15
g4 = (g >> 4) & 15
b4 = (b >> 4) & 15
return (a4 << 12) | (r4 << 8) | (g4 << 4) | (b4 << 0)
def argb1555(r, g, b, a):
a1 = (a >> 7) & 1
r5 = (r >> 3) & 31
g5 = (g >> 3) & 31
b5 = (b >> 3) & 31
return (a1 << 15) | (r5 << 10) | (g5 << 5) | (b5 << 0)
def rgb565(r, g, b, a):
r5 = (r >> 3) & 31
g6 = (g >> 2) & 63
b5 = (b >> 3) & 31
return (r5 << 11) | (g5 << 5) | (b5 << 0)
def axxx4444(r, g, b, a):
a4 = (a >> 4) & 15
return (a4 << 12)
def from_string(s):
return dict([
("gbgr1555", color_format.gbgr1555),
("argb4444", color_format.argb4444),
("argb1555", color_format.argb1555),
("rgb565", color_format.rgb565),
("axxx4444", color_format.axxx4444),
])[s]
def convert_colors(f, convert, colors):
assert len(colors) % 2 == 0, len(colors)
f.write(struct.pack("<I", (len(colors) * 2) // 4))
for color in colors:
value = convert(*color)
f.write(struct.pack("<H", value))
def convert_indices(f, palette, pixels):
if len(palette) <= 4:
for i in range(len(pixels) // 4):
a = pixels[i * 4 + 0]
b = pixels[i * 4 + 1]
c = pixels[i * 4 + 2]
d = pixels[i * 4 + 3]
assert a <= 3 and b <= 3 and c <= 3 and d <= 3, (a, b, c, d)
pixel = (d << 6) | (c << 4) | (b << 2) | (a << 0)
f.write(struct.pack("<B", pixel))
elif len(palette) <= 16:
for i in range(len(pixels) // 2):
a = pixels[i * 2 + 0]
b = pixels[i * 2 + 1]
assert a <= 15 and b <= 15, (a, b)
pixel = (b << 4) | (a << 0)
f.write(struct.pack("<B", pixel))
elif len(palette) <= 256:
for pixel in pixels:
assert pixel <= 255
f.write(struct.pack("<B", pixel))
else:
assert False, len(palette)
if __name__ == "__main__":
in_file = sys.argv[1]
format = sys.argv[2]
out_file = sys.argv[3]
convert = color_format.from_string(format)
with Image.open(in_file) as im:
if not im.palette:
pixels = list(im.convert("RGBA").getdata())
with open(out_file, 'wb') as f:
convert_colors(f, convert, pixels)
else:
pixels = list(im.convert("P").getdata())
palette = list(im.palette.colors)
with open(out_file, 'wb') as f:
convert_indices(f, palette, pixels)
with open(out_file + '.pal', 'wb') as f:
convert_colors(f, convert, [(*c, 255) for c in palette])

BIN
images/java_cup.data Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 KiB

15
images/java_cup.data.h Normal file
View File

@ -0,0 +1,15 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_images_java_cup_data_start __asm("_binary_images_java_cup_data_start");
extern uint32_t _binary_images_java_cup_data_end __asm("_binary_images_java_cup_data_end");
extern uint32_t _binary_images_java_cup_data_size __asm("_binary_images_java_cup_data_size");
#ifdef __cplusplus
}
#endif

BIN
images/java_cup.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
images/java_cup.xcf Normal file

Binary file not shown.

BIN
images/java_powered.data Normal file

Binary file not shown.

View File

@ -0,0 +1,15 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_images_java_powered_data_start __asm("_binary_images_java_powered_data_start");
extern uint32_t _binary_images_java_powered_data_end __asm("_binary_images_java_powered_data_end");
extern uint32_t _binary_images_java_powered_data_size __asm("_binary_images_java_powered_data_size");
#ifdef __cplusplus
}
#endif

BIN
images/java_powered.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/java_powered.xcf Normal file

Binary file not shown.

BIN
images/java_text.data Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 KiB

15
images/java_text.data.h Normal file
View File

@ -0,0 +1,15 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_images_java_text_data_start __asm("_binary_images_java_text_data_start");
extern uint32_t _binary_images_java_text_data_end __asm("_binary_images_java_text_data_end");
extern uint32_t _binary_images_java_text_data_size __asm("_binary_images_java_text_data_size");
#ifdef __cplusplus
}
#endif

BIN
images/java_text.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
images/java_text.xcf Normal file

Binary file not shown.

View File

@ -21,7 +21,10 @@ OBJ = \
MAIN_DREAMCAST_OBJ = \
c/sh7091_scif.o \
c/main_dreamcast.o
c/main_dreamcast.o \
images/java_text.data.o \
images/java_cup.data.o \
images/java_powered.data.o
MAIN_HOSTED_OBJ = \
c/file.o \

View File

@ -0,0 +1,15 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_java_misc_Resource_class_start __asm("_binary_java_misc_Resource_class_start");
extern uint32_t _binary_java_misc_Resource_class_end __asm("_binary_java_misc_Resource_class_end");
extern uint32_t _binary_java_misc_Resource_class_size __asm("_binary_java_misc_Resource_class_size");
#ifdef __cplusplus
}
#endif

8
java/misc/Resource.java Normal file
View File

@ -0,0 +1,8 @@
package java.misc;
public class Resource {
private Resource() {
}
public static native int[] getResource(String name);
}

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_model_FacePNT_class_start __asm("_binary_model_FacePNT_class_start");
extern uint32_t _binary_model_FacePNT_class_end __asm("_binary_model_FacePNT_class_end");
extern uint32_t _binary_model_FacePNT_class_size __asm("_binary_model_FacePNT_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,13 +0,0 @@
package model;
public class FacePNT {
public int position;
public int normal;
public int texture_coordinate;
FacePNT(int position, int normal, int texture_coordinate) {
this.position = position;
this.normal = normal;
this.texture_coordinate = texture_coordinate;
}
}

15
model/FacePTN.class.h Normal file
View File

@ -0,0 +1,15 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_model_FacePTN_class_start __asm("_binary_model_FacePTN_class_start");
extern uint32_t _binary_model_FacePTN_class_end __asm("_binary_model_FacePTN_class_end");
extern uint32_t _binary_model_FacePTN_class_size __asm("_binary_model_FacePTN_class_size");
#ifdef __cplusplus
}
#endif

13
model/FacePTN.java Normal file
View File

@ -0,0 +1,13 @@
package model;
public class FacePTN {
public int position;
public int texture;
public int normal;
FacePTN(int position, int texture, int normal) {
this.position = position;
this.texture = texture;
this.normal = normal;
}
}

View File

@ -1,5 +1,5 @@
package model;
public class ModelObject {
public FacePNT[][] faces;
public FacePTN[][] faces;
}

View File

@ -10,7 +10,7 @@ public class UntitledModel {
static {
position = new Vec3[8];
normal = new Vec3[6];
texture = new Vec2[4];
texture = new Vec2[6];
objects = new ModelObject[1];
position[0] = new Vec3(1.0f, 1.0f, -1.0f);
position[1] = new Vec3(1.0f, -1.0f, -1.0f);
@ -27,46 +27,48 @@ public class UntitledModel {
normal[4] = new Vec3(1.0f, 0.0f, 0.0f);
normal[5] = new Vec3(0.0f, 0.0f, -1.0f);
texture[0] = new Vec2(1.0f, 0.0f);
texture[1] = new Vec2(0.0f, 1.0f);
texture[1] = new Vec2(0.0f, 0.5f);
texture[2] = new Vec2(0.0f, 0.0f);
texture[3] = new Vec2(1.0f, 1.0f);
texture[3] = new Vec2(1.0f, 0.5f);
texture[4] = new Vec2(0.0f, 1.0f);
texture[5] = new Vec2(1.0f, 1.0f);
objects[0] = new ModelObject();
objects[0].faces = new FacePNT[12][3];
objects[0].faces[0][0] = new FacePNT(4, 0, 0);
objects[0].faces[0][1] = new FacePNT(2, 1, 0);
objects[0].faces[0][2] = new FacePNT(0, 2, 0);
objects[0].faces[1][0] = new FacePNT(2, 0, 1);
objects[0].faces[1][1] = new FacePNT(7, 1, 1);
objects[0].faces[1][2] = new FacePNT(3, 2, 1);
objects[0].faces[2][0] = new FacePNT(6, 0, 2);
objects[0].faces[2][1] = new FacePNT(5, 1, 2);
objects[0].faces[2][2] = new FacePNT(7, 2, 2);
objects[0].faces[3][0] = new FacePNT(1, 0, 3);
objects[0].faces[3][1] = new FacePNT(7, 1, 3);
objects[0].faces[3][2] = new FacePNT(5, 2, 3);
objects[0].faces[4][0] = new FacePNT(0, 0, 4);
objects[0].faces[4][1] = new FacePNT(3, 1, 4);
objects[0].faces[4][2] = new FacePNT(1, 2, 4);
objects[0].faces[5][0] = new FacePNT(4, 0, 5);
objects[0].faces[5][1] = new FacePNT(1, 1, 5);
objects[0].faces[5][2] = new FacePNT(5, 2, 5);
objects[0].faces[6][0] = new FacePNT(4, 0, 0);
objects[0].faces[6][1] = new FacePNT(6, 3, 0);
objects[0].faces[6][2] = new FacePNT(2, 1, 0);
objects[0].faces[7][0] = new FacePNT(2, 0, 1);
objects[0].faces[7][1] = new FacePNT(6, 3, 1);
objects[0].faces[7][2] = new FacePNT(7, 1, 1);
objects[0].faces[8][0] = new FacePNT(6, 0, 2);
objects[0].faces[8][1] = new FacePNT(4, 3, 2);
objects[0].faces[8][2] = new FacePNT(5, 1, 2);
objects[0].faces[9][0] = new FacePNT(1, 0, 3);
objects[0].faces[9][1] = new FacePNT(3, 3, 3);
objects[0].faces[9][2] = new FacePNT(7, 1, 3);
objects[0].faces[10][0] = new FacePNT(0, 0, 4);
objects[0].faces[10][1] = new FacePNT(2, 3, 4);
objects[0].faces[10][2] = new FacePNT(3, 1, 4);
objects[0].faces[11][0] = new FacePNT(4, 0, 5);
objects[0].faces[11][1] = new FacePNT(0, 3, 5);
objects[0].faces[11][2] = new FacePNT(1, 1, 5);
objects[0].faces = new FacePTN[12][3];
objects[0].faces[0][0] = new FacePTN(4, 0, 0);
objects[0].faces[0][1] = new FacePTN(2, 1, 0);
objects[0].faces[0][2] = new FacePTN(0, 2, 0);
objects[0].faces[1][0] = new FacePTN(2, 0, 1);
objects[0].faces[1][1] = new FacePTN(7, 1, 1);
objects[0].faces[1][2] = new FacePTN(3, 2, 1);
objects[0].faces[2][0] = new FacePTN(6, 3, 2);
objects[0].faces[2][1] = new FacePTN(5, 4, 2);
objects[0].faces[2][2] = new FacePTN(7, 1, 2);
objects[0].faces[3][0] = new FacePTN(1, 0, 3);
objects[0].faces[3][1] = new FacePTN(7, 1, 3);
objects[0].faces[3][2] = new FacePTN(5, 2, 3);
objects[0].faces[4][0] = new FacePTN(0, 3, 4);
objects[0].faces[4][1] = new FacePTN(3, 4, 4);
objects[0].faces[4][2] = new FacePTN(1, 1, 4);
objects[0].faces[5][0] = new FacePTN(4, 0, 5);
objects[0].faces[5][1] = new FacePTN(1, 1, 5);
objects[0].faces[5][2] = new FacePTN(5, 2, 5);
objects[0].faces[6][0] = new FacePTN(4, 0, 0);
objects[0].faces[6][1] = new FacePTN(6, 3, 0);
objects[0].faces[6][2] = new FacePTN(2, 1, 0);
objects[0].faces[7][0] = new FacePTN(2, 0, 1);
objects[0].faces[7][1] = new FacePTN(6, 3, 1);
objects[0].faces[7][2] = new FacePTN(7, 1, 1);
objects[0].faces[8][0] = new FacePTN(6, 3, 2);
objects[0].faces[8][1] = new FacePTN(4, 5, 2);
objects[0].faces[8][2] = new FacePTN(5, 4, 2);
objects[0].faces[9][0] = new FacePTN(1, 0, 3);
objects[0].faces[9][1] = new FacePTN(3, 3, 3);
objects[0].faces[9][2] = new FacePTN(7, 1, 3);
objects[0].faces[10][0] = new FacePTN(0, 3, 4);
objects[0].faces[10][1] = new FacePTN(2, 5, 4);
objects[0].faces[10][2] = new FacePTN(3, 4, 4);
objects[0].faces[11][0] = new FacePTN(4, 0, 5);
objects[0].faces[11][1] = new FacePTN(0, 3, 5);
objects[0].faces[11][2] = new FacePTN(1, 1, 5);
}
}

View File

@ -4,7 +4,7 @@ public class Vec2 {
public float x;
public float y;
Vec2(float x, float y) {
public Vec2(float x, float y) {
this.x = x;
this.y = y;
}

View File

@ -5,7 +5,7 @@ public class Vec3 {
public float y;
public float z;
Vec3(float x, float y, float z) {
public Vec3(float x, float y, float z) {
this.x = x;
this.y = y;
this.z = z;

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
extern uint32_t _binary_p_Multiply_class_start __asm("_binary_p_Multiply_class_start");
extern uint32_t _binary_p_Multiply_class_end __asm("_binary_p_Multiply_class_end");
extern uint32_t _binary_p_Multiply_class_size __asm("_binary_p_Multiply_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
extern uint32_t _binary_p_Native_class_start __asm("_binary_p_Native_class_start");
extern uint32_t _binary_p_Native_class_end __asm("_binary_p_Native_class_end");
extern uint32_t _binary_p_Native_class_size __asm("_binary_p_Native_class_size");
#ifdef __cplusplus
}
#endif

12
p/TestResource.java Normal file
View File

@ -0,0 +1,12 @@
package p;
import java.misc.Resource;
class TestResource {
public static void test() {
Resource.getResource("foo");
}
public static void main() {
test();
}
}

View File

@ -64,11 +64,6 @@ public class Core {
| CoreBits.fb_r_size__fb_y_size(y_size - 3)
| CoreBits.fb_r_size__fb_x_size((x_size * 16) / 32 - 1);
int fb_r_ctrl =
CoreBits.fb_r_ctrl__vclk_div__pclk_vclk_1
| CoreBits.fb_r_ctrl__fb_depth__565_rgb_16bit
| CoreBits.fb_r_ctrl__fb_enable;
int fb_w_ctrl = CoreBits.fb_w_ctrl__fb_dither
| CoreBits.fb_w_ctrl__fb_packmode__565_rgb_16bit;
@ -78,10 +73,22 @@ public class Core {
Memory.putU4(Holly.FB_X_CLIP, fb_x_clip);
Memory.putU4(Holly.FB_Y_CLIP, fb_y_clip);
Memory.putU4(Holly.FB_R_SIZE, fb_r_size);
Memory.putU4(Holly.FB_R_CTRL, fb_r_ctrl);
Memory.putU4(Holly.FB_W_CTRL, fb_w_ctrl);
}
public static void fb_r_disable() {
Memory.putU4(Holly.FB_R_CTRL, 0);
}
public static void fb_r_enable() {
int fb_r_ctrl =
CoreBits.fb_r_ctrl__vclk_div__pclk_vclk_1
| CoreBits.fb_r_ctrl__fb_depth__565_rgb_16bit
| CoreBits.fb_r_ctrl__fb_enable;
Memory.putU4(Holly.FB_R_CTRL, fb_r_ctrl);
}
public static void start_render(int region_array_start,
int isp_tsp_parameters_start,
int background_start,

View File

@ -54,18 +54,6 @@ public class ISPTSP {
public static int tsp_instruction_word__mip_map_d_adjust(int n) {
return (n & 15) << 8;
}
public static int tsp_instruction_word__palette_selector4(int n) {
return (n & 63) << 21;
}
public static int tsp_instruction_word__palette_selector8(int n) {
return (n & 3) << 25;
}
public static int tsp_instruction_word__stride_select(int n) {
return (n >> 25) & 1;
}
public static int tsp_instruction_word__texture_address(int n) {
return (n & 2097151) << 0;
}
public static final int tsp_instruction_word__flip_uv__none = 0 << 17;
public static final int tsp_instruction_word__flip_uv__v = 1 << 17;
public static final int tsp_instruction_word__flip_uv__u = 2 << 17;
@ -98,15 +86,27 @@ public class ISPTSP {
public static final int tsp_instruction_word__texture_v_size__256 = 5 << 0;
public static final int tsp_instruction_word__texture_v_size__512 = 6 << 0;
public static final int tsp_instruction_word__texture_v_size__1024 = 7 << 0;
public static final int tsp_instruction_word__pixel_format__1555 = 0 << 27;
public static final int tsp_instruction_word__pixel_format__565 = 1 << 27;
public static final int tsp_instruction_word__pixel_format__4444 = 2 << 27;
public static final int tsp_instruction_word__pixel_format__yuv422 = 3 << 27;
public static final int tsp_instruction_word__pixel_format__bump_map = 4 << 27;
public static final int tsp_instruction_word__pixel_format__4bpp_palette = 5 << 27;
public static final int tsp_instruction_word__pixel_format__8bpp_palette = 6 << 27;
public static final int tsp_instruction_word__scan_order__twiddled = 0 << 26;
public static final int tsp_instruction_word__scan_order__non_twiddled = 1 << 26;
public static final int texture_control_word__mip_mapped = 1 << 31;
public static final int texture_control_word__vq_compressed = 1 << 30;
public static int texture_control_word__palette_selector4(int n) {
return (n & 63) << 21;
}
public static int texture_control_word__palette_selector8(int n) {
return (n & 3) << 25;
}
public static int texture_control_word__stride_select(int n) {
return (n >> 25) & 1;
}
public static int texture_control_word__texture_address(int n) {
return (n & 2097151) << 0;
}
public static final int texture_control_word__pixel_format__1555 = 0 << 27;
public static final int texture_control_word__pixel_format__565 = 1 << 27;
public static final int texture_control_word__pixel_format__4444 = 2 << 27;
public static final int texture_control_word__pixel_format__yuv422 = 3 << 27;
public static final int texture_control_word__pixel_format__bump_map = 4 << 27;
public static final int texture_control_word__pixel_format__4bpp_palette = 5 << 27;
public static final int texture_control_word__pixel_format__8bpp_palette = 6 << 27;
public static final int texture_control_word__scan_order__twiddled = 0 << 26;
public static final int texture_control_word__scan_order__non_twiddled = 1 << 26;
}

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_RegionArray_OPBSize_class_start __asm("_binary_sega_dreamcast_holly_RegionArray_OPBSize_class_start");
extern uint32_t _binary_sega_dreamcast_holly_RegionArray_OPBSize_class_end __asm("_binary_sega_dreamcast_holly_RegionArray_OPBSize_class_end");
extern uint32_t _binary_sega_dreamcast_holly_RegionArray_OPBSize_class_size __asm("_binary_sega_dreamcast_holly_RegionArray_OPBSize_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -3,6 +3,8 @@ package sega.dreamcast.holly;
import sega.dreamcast.holly.Holly;
import sega.dreamcast.holly.CoreBits;
import sega.dreamcast.holly.TABits;
import sega.dreamcast.systembus.Systembus;
import sega.dreamcast.systembus.SystembusBits;
import java.misc.Memory;
public class TAFIFOPolygonConverter {
@ -45,14 +47,21 @@ public class TAFIFOPolygonConverter {
public static void wait_opaque_list()
{
//while ((system.ISTNRM & istnrm::end_of_transferring_opaque_list) == 0) {
//};
//system.ISTNRM = istnrm::end_of_transferring_opaque_list;
while (true) {
int istnrm = Memory.getU4(0xa05f6900);
if ((istnrm & (1 << 7)) != 0)
int istnrm = Memory.getU4(Systembus.ISTNRM);
if ((istnrm & SystembusBits.istnrm__end_of_transferring_opaque_list) != 0)
break;
}
Memory.putU4(0xa05f6900, (1 << 7));
Memory.putU4(Systembus.ISTNRM, SystembusBits.istnrm__end_of_transferring_opaque_list);
}
public static void wait_translucent_list()
{
while (true) {
int istnrm = Memory.getU4(Systembus.ISTNRM);
if ((istnrm & SystembusBits.istnrm__end_of_transferring_translucent_list) != 0)
break;
}
Memory.putU4(Systembus.ISTNRM, SystembusBits.istnrm__end_of_transferring_translucent_list);
}
}

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_end_of_list_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_end_of_list_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_end_of_list_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_end_of_list_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_end_of_list_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_end_of_list_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_modifier_volume_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_modifier_volume_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_modifier_volume_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_modifier_volume_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_modifier_volume_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_modifier_volume_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_object_list_set_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_object_list_set_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_object_list_set_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_object_list_set_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_object_list_set_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_object_list_set_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_0_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_0_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_0_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_0_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_0_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_0_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_1_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_1_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_1_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_1_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_1_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_1_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_2_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_2_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_2_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_2_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_2_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_2_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_3_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_3_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_3_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_3_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_3_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_3_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_4_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_4_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_4_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_4_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_4_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_polygon_type_4_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_sprite_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_sprite_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_sprite_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_sprite_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_sprite_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_sprite_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_user_tile_clip_class_start __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_user_tile_clip_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_user_tile_clip_class_end __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_user_tile_clip_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAGlobalParameter_user_tile_clip_class_size __asm("_binary_sega_dreamcast_holly_TAGlobalParameter_user_tile_clip_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_modifier_volume_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_modifier_volume_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_modifier_volume_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_modifier_volume_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_modifier_volume_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_modifier_volume_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_0_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_0_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_0_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_0_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_0_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_0_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_1_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_1_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_1_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_1_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_1_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_1_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_10_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_10_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_10_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_10_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_10_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_10_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_11_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_11_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_11_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_11_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_11_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_11_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_12_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_12_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_12_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_12_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_12_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_12_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_13_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_13_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_13_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_13_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_13_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_13_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_14_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_14_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_14_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_14_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_14_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_14_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_2_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_2_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_2_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_2_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_2_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_2_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_3_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_3_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_3_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_3_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_3_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_3_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_4_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_4_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_4_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_4_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_4_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_4_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_5_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_5_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_5_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_5_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_5_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_5_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_6_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_6_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_6_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_6_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_6_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_6_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_7_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_7_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_7_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_7_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_7_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_7_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_8_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_8_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_8_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_8_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_8_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_8_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_9_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_9_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_9_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_9_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_9_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_polygon_type_9_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_0_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_0_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_0_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_0_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_0_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_0_class_size");
#ifdef __cplusplus
}
#endif

View File

@ -1,15 +0,0 @@
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern C {
#endif
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_1_class_start __asm("_binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_1_class_start");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_1_class_end __asm("_binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_1_class_end");
extern uint32_t _binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_1_class_size __asm("_binary_sega_dreamcast_holly_TAVertexParameter_sprite_type_1_class_size");
#ifdef __cplusplus
}
#endif