You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
476 lines
19 KiB
C
476 lines
19 KiB
C
// The Digital Grove Codebase
|
|
// Copyright (c) Ryan Fleury. All rights reserved.
|
|
|
|
#include "base/base_inc.h"
|
|
#include "n64/n64.h"
|
|
#include "render/render_inc.h"
|
|
|
|
#include "base/base_inc.c"
|
|
#include "n64/n64.c"
|
|
#include "render/render_inc.c"
|
|
|
|
typedef struct SubModel SubModel;
|
|
struct SubModel
|
|
{
|
|
U16 material_num;
|
|
U16 *idxs;
|
|
UAddr idxs_count;
|
|
U64 id;
|
|
};
|
|
|
|
typedef struct Model Model;
|
|
struct Model
|
|
{
|
|
Vec3F32 *vtx;
|
|
UAddr vtx_count;
|
|
SubModel *sub_models;
|
|
UAddr sub_models_count;
|
|
};
|
|
|
|
R_Material materials[] =
|
|
{
|
|
{{1, 0.5f, 0, 1}}, // yellow
|
|
{{0, 1, 0, 1}}, // green
|
|
{{1, 0, 0, 1}}, // red
|
|
{{0, 0, 1, 1}}, // blue
|
|
};
|
|
|
|
extern Model n64_logo_model;
|
|
extern Model dg_logo_model;
|
|
|
|
function B32
|
|
Run(U64 tick_idx, Arena *permanent_arena, GamePad game_pads[GAME_PAD_SLOT_COUNT])
|
|
{
|
|
B32 keep_running = 1;
|
|
|
|
//- rjf: get/update camera state
|
|
local_persist F32 yaw = 0.125f;
|
|
local_persist F32 pitch = 0.125f;
|
|
local_persist F32 zoom = 5.f;
|
|
{
|
|
// rjf: stick -> adjust yaw/pitch
|
|
yaw += 0.1f * game_pads[0].sticks[0].x;
|
|
pitch += 0.1f * game_pads[0].sticks[0].y;
|
|
pitch = Clamp(-0.24f, pitch, +0.24f);
|
|
|
|
// rjf: z -> zoom in
|
|
if(BitArrayGet(game_pads[0].buttons, GamePadButtonKind_Z))
|
|
{
|
|
zoom -= 0.1f;
|
|
}
|
|
|
|
// rjf: r -> zoom out
|
|
else if(BitArrayGet(game_pads[0].buttons, GamePadButtonKind_RightBumper))
|
|
{
|
|
zoom += 0.1f;
|
|
}
|
|
}
|
|
|
|
//- rjf: camera state -> view projection
|
|
F32 cos_pitch = CosF32(pitch);
|
|
F32 cos_pitch_zoom = cos_pitch*zoom;
|
|
Vec3F32 eye = V3F32(cos_pitch_zoom*CosF32(yaw),
|
|
cos_pitch_zoom*SinF32(yaw),
|
|
zoom*SinF32(pitch));
|
|
Mat4x4F32 view = MakeLookAt4x4F32(eye, V3F32(0, 0, 0), V3F32(0, 0, 1));
|
|
Mat4x4F32 projection = MakePerspective4x4F32(0.25f, (F32)N64_FB_WIDTH/N64_FB_HEIGHT, 0.01f, 50.f);
|
|
|
|
//- rjf: get/update selected model
|
|
local_persist S32 model_num = 0;
|
|
if(BitArrayGet(n64_state.game_pads[0].buttons, GamePadButtonKind_CRight) && !BitArrayGet(n64_state.game_pads[0].last_buttons, GamePadButtonKind_CRight))
|
|
{
|
|
model_num += 1;
|
|
if(model_num > 2)
|
|
{
|
|
model_num = 0;
|
|
}
|
|
}
|
|
if(BitArrayGet(n64_state.game_pads[0].buttons, GamePadButtonKind_CLeft) && !BitArrayGet(n64_state.game_pads[0].last_buttons, GamePadButtonKind_CLeft))
|
|
{
|
|
model_num -= 1;
|
|
if(model_num < 0)
|
|
{
|
|
model_num = 2;
|
|
}
|
|
}
|
|
Model *model = &n64_logo_model;
|
|
switch(model_num)
|
|
{
|
|
default:
|
|
case 0:
|
|
{}break;
|
|
case 1:
|
|
{
|
|
model = &dg_logo_model;
|
|
}break;
|
|
case 2:
|
|
{
|
|
// model = &n64_controller_model;
|
|
}break;
|
|
}
|
|
|
|
//- rjf: set up render pass
|
|
R_PassParams pass_params =
|
|
{
|
|
view,
|
|
projection,
|
|
V3F32(+0.5f, +0.1f, -1),
|
|
};
|
|
R_Pass(&pass_params);
|
|
|
|
//- rjf: draw model
|
|
R_BufferHandle vtx_buffer = R_BufferHandleFromData(model->vtx, model->vtx_count, sizeof(model->vtx[0]));
|
|
for EachIndex(sub_model_idx, model->sub_models_count)
|
|
{
|
|
SubModel *sub_model = &model->sub_models[sub_model_idx];
|
|
R_Material material = materials[sub_model->material_num-1];
|
|
R_BufferHandle idx_buffer = R_BufferHandleFromData(sub_model->idxs, sub_model->idxs_count, sizeof(sub_model->idxs[0]));
|
|
R_SubModelHandle handle = R_SubModelHandleFromBuffers(vtx_buffer, idx_buffer);
|
|
R_SubModel(handle, material, MakeMat4x4F32(1.f));
|
|
}
|
|
|
|
//- rjf: gradient test
|
|
#if 0
|
|
#if 0
|
|
{
|
|
U16 *p = N64_Framebuffer();
|
|
int midpoint = N64_FB_WIDTH - (tick_idx%N64_FB_WIDTH);
|
|
for(int i = 0; i < N64_FB_WIDTH*N64_FB_HEIGHT; i += 1)
|
|
{
|
|
// NOTE(rjf): RGBA5551 (R5 G5 B5 A1)
|
|
//
|
|
// - 0xF801 = bright red
|
|
// - 0x07C1 = bright green
|
|
// - 0x003F = bright blue
|
|
// - 0xFFFF = white
|
|
// - 0x0001 = black (with alpha)
|
|
//
|
|
F32 pct = (F32)(i%N64_FB_WIDTH) / N64_FB_WIDTH;
|
|
U16 red = (U16)(pct * 0x1f);
|
|
U16 color = 0x0001 | (red<<11);
|
|
if((i%N64_FB_WIDTH) > midpoint)
|
|
{
|
|
F32 pct = (F32)(N64_FB_WIDTH - (i%N64_FB_WIDTH)) / N64_FB_WIDTH;
|
|
U16 green = (U16)(pct * 0x1f);
|
|
color |= (green<<6);
|
|
}
|
|
{
|
|
F32 pct = ((F32)(i / N64_FB_WIDTH) / N64_FB_HEIGHT);
|
|
U16 blue = (U16)(pct * 0x1f);
|
|
color |= (blue<<1);
|
|
}
|
|
p[i] = color;
|
|
}
|
|
}
|
|
#endif
|
|
#if 1
|
|
U16 *p = N64_Framebuffer();
|
|
for(int i = 0; i < N64_FB_WIDTH*N64_FB_HEIGHT; i += 1)
|
|
{
|
|
if(i%N64_FB_WIDTH > tick_idx%N64_FB_WIDTH)
|
|
{
|
|
p[i] = 0xf801;
|
|
}
|
|
else
|
|
{
|
|
p[i] = 0x0001;
|
|
}
|
|
}
|
|
#endif
|
|
Temp scratch = ScratchBegin(0);
|
|
#if 0
|
|
Vec2F32 text_pos = {150, 64 + 32.f};
|
|
text_pos.y += N64_DrawDebugString(0, text_pos, V4F32(1, 1, 1, 1), SF("DP status_flags: %ib", N64_DP_REGS->status_flags)).y;
|
|
text_pos.y += N64_DrawDebugString(0, text_pos, V4F32(1, 1, 1, 1), SF("MI_VERSION: %ix", *N64_MI_VERSION)).y;
|
|
text_pos.y += N64_DrawDebugString(0, text_pos, V4F32(1, 1, 1, 1), S("ABCDEFGHIJKLMNOPQRSTUVWXYZ")).y;
|
|
text_pos.y += N64_DrawDebugString(0, text_pos, V4F32(1, 1, 1, 1), S("abcdefghijklmnopqrstuvwxyz")).y;
|
|
text_pos.y += N64_DrawDebugString(0, text_pos, V4F32(1, 1, 1, 1), S("0123456789")).y;
|
|
text_pos.y += N64_DrawDebugString(0, text_pos, V4F32(1, 1, 1, 1), S("`~!@#$%^&*()-_=+[]{};:'\"|\\.,<>?/")).y;
|
|
text_pos.y += 4;
|
|
text_pos.y += N64_DrawDebugString(1, text_pos, V4F32(1, 0.8f, 0, 1), S("Hello, N64!")).y;
|
|
text_pos.y += N64_DrawDebugString(0, text_pos, V4F32(1, 1, 1, 1), SF("Memory Size = %i", N64_BOOT_INFO->memory_size)).y;
|
|
text_pos.y += N64_DrawDebugString(0, text_pos, V4F32(1, 0, 0, 1), SF("DP STATUS = %ib", N64_DP_REGS->status_flags)).y;
|
|
N64_DrawMonochromeBitmap(V2F32(320 - 32, 240 - 48), V4F32(1, 1, 0, 1), n64_dgtlgrove_logo_32x48, 32, 48);
|
|
#endif
|
|
|
|
Vec2F32 button_pos = {16, 48};
|
|
for(U64 idx = 0; idx < 4; idx += 1)
|
|
{
|
|
B32 controller_is_connected = (n64_state.joybus_port_states[idx].id == N64_JoyBus_ID_N64Controller);
|
|
Vec4F32 color = controller_is_connected ? V4F32(1, 1, 1, 1) : V4F32(1, 0, 0, 1);
|
|
N64_DrawMonochromeBitmap(V2F32(16 + 32*idx, 16), color, n64_controller_icon_32x32, 32, 32);
|
|
if(controller_is_connected)
|
|
{
|
|
N64_DrawDebugString(0,
|
|
V2F32(16 + 32*idx + 16 - N64_SMALL_DEFAULT_FONT_GLYPH_WIDTH/2 + 8*game_pads[idx].sticks[0].x,
|
|
16 + 16 - N64_SMALL_DEFAULT_FONT_GLYPH_HEIGHT/2 + -8*game_pads[idx].sticks[0].y),
|
|
V4F32(1, 1, 0, 1), S("*"));
|
|
}
|
|
if(controller_is_connected)
|
|
{
|
|
// button_pos.y += N64_DrawDebugString(0, button_pos, V4F32(1, 1, 1, 1), SF("Stick")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_A))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(0, 0, 1, 1), S("A")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_B))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(0, 1, 0, 1), S("B")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_Start))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(1, 0, 0, 1), S("Start")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_CLeft))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(1, 1, 0, 1), S("C<")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_CUp))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(1, 1, 0, 1), S("C^")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_CRight))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(1, 1, 0, 1), S("C>")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_CDown))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(1, 1, 0, 1), S("Cv")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_DLeft))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(0.5f, 0.5f, 0.5f, 1), S("D<")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_DUp))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(0.5f, 0.5f, 0.5f, 1), S("D^")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_DRight))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(0.5f, 0.5f, 0.5f, 1), S("D>")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_DDown))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(0.5f, 0.5f, 0.5f, 1), S("Dv")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_Z))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(0.5f, 0.5f, 0.5f, 1), S("Z")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_LeftBumper))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(0.5f, 0.5f, 0.5f, 1), S("L")).y;
|
|
}
|
|
if(BitArrayGet(game_pads[idx].buttons, GamePadButtonKind_RightBumper))
|
|
{
|
|
button_pos.y += N64_DrawDebugString(1, button_pos, V4F32(0.5f, 0.5f, 0.5f, 1), S("R")).y;
|
|
}
|
|
}
|
|
|
|
ScratchEnd(scratch);
|
|
#endif
|
|
|
|
//- rjf: digital grove splash test
|
|
#if 0
|
|
F32 t_pct = (F32)tick_idx / 80.f;
|
|
if(t_pct > 1.f)
|
|
{
|
|
t_pct = 1.f;
|
|
}
|
|
{
|
|
U16 *p = N64_Framebuffer();
|
|
U8 bayer[16] =
|
|
{
|
|
0, 8, 2, 10,
|
|
12, 4, 14, 6,
|
|
3, 11, 1, 9,
|
|
15, 7, 13, 5
|
|
};
|
|
F32 dither_step = 1.f / 31.f;
|
|
for(U32 off = 0; off < N64_FB_WIDTH*N64_FB_HEIGHT; off += 1)
|
|
{
|
|
U32 x = off%N64_FB_WIDTH;
|
|
U32 y = off/N64_FB_WIDTH;
|
|
F32 x_pct = (F32)x/N64_FB_WIDTH;
|
|
F32 y_pct = (F32)y/N64_FB_HEIGHT;
|
|
Vec4F32 color = V4F32(t_pct * (0.04f + 0.08f*x_pct - 0.03f*y_pct),
|
|
t_pct * (0.15f - 0.04f*y_pct),
|
|
t_pct * (0.03f + 0.04f*y_pct),
|
|
1.f);
|
|
U32 x_bayer = x%4;
|
|
U32 y_bayer = y%4;
|
|
F32 bayer_f = (bayer[y_bayer*4 + x_bayer] / 16.f);
|
|
Vec4F32 color_dithered = color;
|
|
color_dithered.x += (bayer_f - 0.5f) * dither_step;
|
|
color_dithered.y += (bayer_f - 0.5f) * dither_step;
|
|
color_dithered.z += (bayer_f - 0.5f) * dither_step;
|
|
p[off] = RGBA5551From4F32(color_dithered);
|
|
}
|
|
}
|
|
// Vec4F32 logo_color = V4F32(1*t_pct, 0.8f*t_pct, 0, 1);
|
|
// N64_DrawMonochromeBitmap(V2F32(160 - 16, 120 - 24 + 32*(1-t_pct)), logo_color, n64_dgtlgrove_logo_32x48, 32, 48);
|
|
// N64_DrawDebugString(1, V2F32(160 - 6.5f*N64_BIG_DEFAULT_FONT_GLYPH_WIDTH, 120+30 + 32*(1-t_pct)), logo_color, S("Digital Grove 64"));
|
|
#endif
|
|
|
|
return keep_running;
|
|
}
|
|
|
|
global Vec3F32 n64_logo_model_vtx[] =
|
|
{
|
|
{ -0.319213, -0.322617, 0.083041 }, { -0.319213, -0.671946, 0.719425 }, { -0.319213, 0.332592, -0.051930 }, { -0.691264, 0.339679, -0.737678 },
|
|
{ -0.691264, -0.321049, -0.737678 }, { -0.691264, -0.319959, 0.719425 }, { -0.691264, 0.689761, 0.087923 }, { -0.319213, 0.339679, -0.737678 },
|
|
{ -0.691264, -0.322617, 0.083041 }, { -0.319213, -0.321049, -0.737678 }, { -0.691264, -0.671946, -0.737678 }, { -0.319213, -0.671946, -0.737678 },
|
|
{ -0.691264, -0.671946, 0.719425 }, { -0.319213, -0.319959, 0.719425 }, { -0.691264, 0.332592, -0.051930 }, { -0.691264, 0.332592, 0.087923 },
|
|
{ -0.319213, 0.332592, 0.087923 }, { -0.319213, 0.689761, 0.087923 }, { -0.691264, 0.689761, -0.737678 }, { -0.319213, 0.689761, -0.737678 },
|
|
{ -0.319213, -0.671946, 0.086702 }, { -0.691264, 0.689761, -0.049576 }, { -0.319213, 0.689761, -0.051523 }, { -0.691264, 0.689761, 0.726424 },
|
|
{ -0.691264, 0.332592, 0.726424 }, { -0.319213, 0.332592, 0.726424 }, { -0.319213, 0.689761, 0.726424 }, { 0.328262, 0.332592, -0.731953 },
|
|
{ 0.328262, 0.689761, -0.731953 }, { 0.328262, 0.332592, -0.040641 }, { 0.328262, 0.689761, -0.040641 }, { 0.663334, 0.332592, -0.731953 },
|
|
{ 0.663334, 0.689761, -0.731953 }, { 0.663334, 0.332592, -0.040641 }, { 0.663334, 0.689761, -0.040641 }, { 0.328262, 0.332592, 0.089613 },
|
|
{ 0.328262, 0.689761, 0.089613 }, { 0.663334, 0.332592, 0.089613 }, { 0.663334, 0.689761, 0.089613 }, { 0.328262, 0.332592, 0.726182 },
|
|
{ 0.328262, 0.689761, 0.726182 }, { 0.663334, 0.332592, 0.726182 }, { 0.663334, 0.689761, 0.726182 }, { 0.663334, -0.324375, -0.734938 },
|
|
{ 0.328262, -0.324375, -0.734938 }, { 0.663333, -0.324375, -0.039661 }, { 0.328262, -0.324375, -0.039662 }, { 0.663334, -0.677543, -0.734938 },
|
|
{ 0.328262, -0.677543, -0.734938 }, { 0.663333, -0.677543, -0.039661 }, { 0.328262, -0.677543, -0.039662 }, { 0.663333, -0.324375, 0.099964 },
|
|
{ 0.328262, -0.324375, 0.099964 }, { 0.663333, -0.677543, 0.099964 }, { 0.328262, -0.677543, 0.099964 }, { 0.663333, -0.324375, 0.720610 },
|
|
{ 0.328261, -0.324375, 0.720610 }, { 0.663333, -0.677543, 0.720610 }, { 0.328261, -0.677543, 0.720610 }, { -0.691264, -0.671946, 0.086713 },
|
|
{ -0.691264, -0.671946, -0.042679 }, { -0.319213, -0.671946, -0.040508 }, { -0.319213, -0.322617, -0.040018 }, { -0.691264, -0.322617, -0.044321 },
|
|
};
|
|
|
|
global U16 n64_logo_model_tri_faces__yellow[] =
|
|
{
|
|
14, 13, 2, 27, 25, 26, 40, 43, 41, 57, 58, 56,
|
|
14, 6, 13, 27, 24, 25, 40, 42, 43, 57, 59, 58,
|
|
};
|
|
global U16 n64_logo_model_tri_faces__green[] =
|
|
{
|
|
15, 8, 3, 9, 14, 1, 63, 9, 1, 12, 5, 10,
|
|
12, 61, 11, 3, 16, 15, 7, 27, 18, 18, 22, 7,
|
|
8, 19, 20, 47, 1, 14, 23, 19, 22, 25, 63, 26,
|
|
29, 32, 28, 37, 8, 20, 23, 37, 20, 31, 33, 29,
|
|
34, 36, 30, 31, 39, 35, 36, 3, 8, 37, 43, 39,
|
|
46, 53, 52, 48, 51, 49, 44, 49, 45, 50, 55, 51,
|
|
55, 58, 59, 57, 34, 30, 60, 2, 13, 62, 60, 61,
|
|
21, 51, 2, 1, 49, 21, 47, 44, 45, 38, 40, 36,
|
|
15, 4, 8, 9, 6, 14, 63, 64, 9, 12, 11, 5,
|
|
12, 62, 61, 3, 17, 16, 7, 24, 27, 18, 23, 22,
|
|
8, 4, 19, 47, 45, 1, 23, 20, 19, 25, 64, 63,
|
|
29, 33, 32, 37, 36, 8, 23, 41, 37, 31, 35, 33,
|
|
34, 38, 36, 31, 37, 39, 36, 40, 3, 37, 41, 43,
|
|
46, 47, 53, 48, 50, 51, 44, 48, 49, 50, 54, 55,
|
|
55, 54, 58, 57, 56, 34, 60, 21, 2, 62, 21, 60,
|
|
21, 49, 51, 1, 45, 49, 47, 46, 44, 38, 42, 40,
|
|
};
|
|
global U16 n64_logo_model_tri_faces__red[] =
|
|
{
|
|
10, 16, 17, 40, 23, 3, 2, 47, 14, 52, 28, 32,
|
|
10, 5, 16, 40, 41, 23, 2, 51, 47, 52, 53, 28,
|
|
};
|
|
global U16 n64_logo_model_tri_faces__blue[] =
|
|
{
|
|
17, 23, 18, 11, 64, 5, 22, 4, 15, 1, 62, 63,
|
|
63, 17, 26, 22, 16, 7, 12, 63, 62, 16, 24, 7,
|
|
27, 17, 18, 33, 34, 32, 34, 52, 32, 35, 38, 34,
|
|
30, 37, 31, 39, 42, 38, 46, 48, 44, 52, 58, 54,
|
|
51, 53, 47, 46, 54, 50, 59, 53, 55, 60, 6, 9,
|
|
28, 31, 29, 16, 64, 25, 61, 9, 64, 53, 30, 28,
|
|
17, 3, 23, 11, 61, 64, 22, 19, 4, 1, 21, 62,
|
|
63, 10, 17, 22, 15, 16, 12, 10, 63, 16, 25, 24,
|
|
27, 26, 17, 33, 35, 34, 34, 56, 52, 35, 39, 38,
|
|
30, 36, 37, 39, 43, 42, 46, 50, 48, 52, 56, 58,
|
|
51, 55, 53, 46, 52, 54, 59, 57, 53, 60, 13, 6,
|
|
28, 30, 31, 16, 5, 64, 61, 60, 9, 53, 57, 30,
|
|
};
|
|
|
|
SubModel n64_logo_submodels[] =
|
|
{
|
|
{1, ArrayAndCount(n64_logo_model_tri_faces__yellow)},
|
|
{2, ArrayAndCount(n64_logo_model_tri_faces__green)},
|
|
{3, ArrayAndCount(n64_logo_model_tri_faces__red)},
|
|
{4, ArrayAndCount(n64_logo_model_tri_faces__blue)},
|
|
};
|
|
|
|
Model n64_logo_model =
|
|
{
|
|
ArrayAndCount(n64_logo_model_vtx),
|
|
ArrayAndCount(n64_logo_submodels),
|
|
};
|
|
|
|
global Vec3F32 dg_logo_model_vtx[] =
|
|
{
|
|
{ 0.085057, 0.094957, -2.584146 }, { 0.084919, -0.027923, -2.658362 }, { 0.083808, -0.171746, -2.550864 }, { 0.083306, -0.107028, -2.394031 },
|
|
{ 0.084125, 0.080334, -2.405339 }, { 0.086326, 0.278994, -2.690513 }, { 0.086225, 0.063105, -2.850055 }, { 0.084853, -0.226452, -2.810704 },
|
|
{ 0.083159, -0.367724, -2.581724 }, { 0.082095, -0.334552, -2.335907 }, { 0.082196, -0.118662, -2.176362 }, { 0.083569, 0.170893, -2.215714 },
|
|
{ 0.085262, 0.312166, -2.444695 }, { 0.082318, -0.135191, -2.215159 }, { 0.075256, -0.133749, -0.766794 }, { 0.068438, -0.894210, -0.004996 },
|
|
{ 0.060581, -0.892605, 1.606462 }, { 0.059976, -0.130628, 2.366775 }, { 0.056730, -0.025024, 3.120139 }, { 0.061291, 0.084822, 2.277215 },
|
|
{ 0.062657, -0.607715, 1.418925 }, { 0.068886, -0.608987, 0.141494 }, { 0.075700, 0.081880, -0.677655 }, { 0.083340, 0.080320, -2.244440 },
|
|
{ 0.064875, -0.875355, 0.740968 }, { 0.057463, -1.609634, 1.646470 }, { 0.065358, -0.664627, 0.818029 }, { 0.078421, 0.011302, -1.294146 },
|
|
{ 0.077959, 0.627437, -0.684809 }, { 0.068811, 0.750083, 1.292086 }, { 0.071499, 0.844370, 0.820083 }, { 0.079242, 0.843008, -0.767747 },
|
|
{ 0.079871, 0.049410, -1.559573 }, { 0.074583, 0.687116, 0.056670 }, { 0.074556, 1.285580, 0.562082 }, { 0.075410, 0.757468, -0.054058 },
|
|
{ 0.056820, -0.262075, 2.903636 }, { 0.056290, -0.354120, 2.935505 }, { 0.054757, -0.443627, 3.174871 }, { 0.056529, -0.201492, 3.013897 },
|
|
{ 0.071368, 0.941992, 0.928360 }, { 0.070890, 0.941275, 1.025741 }, { 0.070886, 1.137012, 1.190092 }, { 0.071973, 1.066184, 0.908125 },
|
|
{ -0.027071, 0.095414, -2.584693 }, { -0.027210, -0.027466, -2.658910 }, { -0.028321, -0.171288, -2.551411 }, { -0.028822, -0.106571, -2.394578 },
|
|
{ -0.028003, 0.080791, -2.405887 }, { -0.025802, 0.279451, -2.691060 }, { -0.025903, 0.063562, -2.850603 }, { -0.027276, -0.225994, -2.811251 },
|
|
{ -0.028969, -0.367267, -2.582272 }, { -0.030033, -0.334095, -2.336454 }, { -0.029932, -0.118205, -2.176909 }, { -0.028560, 0.171350, -2.216261 },
|
|
{ -0.026866, 0.312623, -2.445242 }, { -0.029810, -0.134734, -2.215707 }, { -0.036872, -0.133292, -0.767341 }, { -0.043690, -0.893753, -0.005543 },
|
|
{ -0.051548, -0.892148, 1.605915 }, { -0.052152, -0.130171, 2.366227 }, { -0.055398, -0.024567, 3.119591 }, { -0.050837, 0.085279, 2.276668 },
|
|
{ -0.049471, -0.607258, 1.418378 }, { -0.043242, -0.608530, 0.140947 }, { -0.036429, 0.082337, -0.678202 }, { -0.028789, 0.080777, -2.244987 },
|
|
{ -0.047254, -0.874897, 0.740421 }, { -0.054666, -1.609177, 1.645923 }, { -0.046771, -0.664170, 0.817482 }, { -0.033708, 0.011759, -1.294693 },
|
|
{ -0.034170, 0.627894, -0.685356 }, { -0.043318, 0.750540, 1.291539 }, { -0.040630, 0.844827, 0.819536 }, { -0.032886, 0.843465, -0.768294 },
|
|
{ -0.032257, 0.049867, -1.560121 }, { -0.037545, 0.687573, 0.056123 }, { -0.037572, 1.286037, 0.561534 }, { -0.036718, 0.757925, -0.054605 },
|
|
{ -0.055308, -0.261618, 2.903088 }, { -0.055839, -0.353663, 2.934958 }, { -0.057372, -0.443170, 3.174324 }, { -0.055599, -0.201035, 3.013350 },
|
|
{ -0.040760, 0.942449, 0.927813 }, { -0.041238, 0.941732, 1.025193 }, { -0.041243, 1.137469, 1.189545 }, { -0.040155, 1.066641, 0.907578 },
|
|
};
|
|
|
|
global U16 dg_logo_model_tri_faces[] =
|
|
{
|
|
1, 13, 5, 2, 6, 1, 18, 20, 19, 17, 20, 18,
|
|
17, 21, 20, 16, 21, 17, 16, 22, 21, 16, 23, 22,
|
|
15, 23, 16, 15, 24, 23, 14, 24, 15, 1, 6, 13,
|
|
3, 4, 10, 2, 3, 8, 5, 13, 12, 4, 11, 10,
|
|
3, 9, 8, 2, 7, 6, 4, 5, 11, 5, 12, 11,
|
|
3, 10, 9, 2, 8, 7, 45, 49, 57, 46, 45, 50,
|
|
62, 63, 64, 61, 62, 64, 61, 64, 65, 60, 61, 65,
|
|
60, 65, 66, 60, 66, 67, 59, 60, 67, 59, 67, 68,
|
|
58, 59, 68, 45, 57, 50, 47, 54, 48, 46, 52, 47,
|
|
49, 56, 57, 48, 54, 55, 47, 52, 53, 46, 50, 51,
|
|
48, 55, 49, 49, 55, 56, 47, 53, 54, 46, 51, 52,
|
|
53, 8, 9, 54, 9, 10, 67, 22, 23, 55, 10, 11,
|
|
60, 15, 16, 63, 18, 19, 56, 11, 12, 57, 12, 13,
|
|
68, 23, 24, 64, 19, 20, 49, 1, 5, 62, 17, 18,
|
|
59, 14, 15, 45, 2, 1, 58, 24, 14, 46, 3, 2,
|
|
47, 4, 3, 65, 20, 21, 48, 5, 4, 61, 16, 17,
|
|
50, 13, 6, 51, 6, 7, 52, 7, 8, 66, 21, 22,
|
|
53, 52, 8, 54, 53, 9, 67, 66, 22, 55, 54, 10,
|
|
60, 59, 15, 63, 62, 18, 56, 55, 11, 57, 56, 12,
|
|
68, 67, 23, 64, 63, 19, 49, 45, 1, 62, 61, 17,
|
|
59, 58, 14, 45, 46, 2, 58, 68, 24, 46, 47, 3,
|
|
47, 48, 4, 65, 64, 20, 48, 49, 5, 61, 60, 16,
|
|
50, 57, 13, 51, 50, 6, 52, 51, 7, 66, 65, 21,
|
|
25, 27, 26, 69, 70, 71, 70, 25, 26, 71, 26, 27,
|
|
69, 27, 25, 70, 69, 25, 71, 70, 26, 69, 71, 27,
|
|
29, 31, 30, 29, 32, 31, 29, 33, 32, 28, 33, 29,
|
|
73, 74, 75, 73, 75, 76, 73, 76, 77, 72, 73, 77,
|
|
76, 31, 32, 77, 32, 33, 73, 28, 29, 72, 33, 28,
|
|
75, 30, 31, 74, 29, 30, 76, 75, 31, 77, 76, 32,
|
|
73, 72, 28, 72, 77, 33, 75, 74, 30, 74, 73, 29,
|
|
34, 36, 35, 78, 79, 80, 80, 35, 36, 79, 34, 35,
|
|
78, 36, 34, 80, 79, 35, 79, 78, 34, 78, 80, 36,
|
|
38, 40, 39, 38, 37, 40, 82, 83, 84, 82, 84, 81,
|
|
82, 37, 38, 84, 39, 40, 83, 38, 39, 81, 40, 37,
|
|
82, 81, 37, 84, 83, 39, 83, 82, 38, 81, 84, 40,
|
|
42, 44, 43, 41, 44, 42, 86, 87, 88, 85, 86, 88,
|
|
88, 43, 44, 87, 42, 43, 86, 41, 42, 85, 44, 41,
|
|
88, 87, 43, 87, 86, 42, 86, 85, 41, 85, 88, 44,
|
|
};
|
|
|
|
SubModel dg_logo_submodels[] =
|
|
{
|
|
{1, ArrayAndCount(dg_logo_model_tri_faces)},
|
|
};
|
|
|
|
Model dg_logo_model =
|
|
{
|
|
ArrayAndCount(dg_logo_model_vtx),
|
|
ArrayAndCount(dg_logo_submodels),
|
|
};
|