add covers
15
cover/clocks.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_clocks_data_start __asm("_binary_cover_clocks_data_start");
|
||||||
|
extern uint32_t _binary_cover_clocks_data_end __asm("_binary_cover_clocks_data_end");
|
||||||
|
extern uint32_t _binary_cover_clocks_data_size __asm("_binary_cover_clocks_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/clocks.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
15
cover/moonmountains.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_moonmountains_data_start __asm("_binary_cover_moonmountains_data_start");
|
||||||
|
extern uint32_t _binary_cover_moonmountains_data_end __asm("_binary_cover_moonmountains_data_end");
|
||||||
|
extern uint32_t _binary_cover_moonmountains_data_size __asm("_binary_cover_moonmountains_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/moonmountains.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
15
cover/mossycottage.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_mossycottage_data_start __asm("_binary_cover_mossycottage_data_start");
|
||||||
|
extern uint32_t _binary_cover_mossycottage_data_end __asm("_binary_cover_mossycottage_data_end");
|
||||||
|
extern uint32_t _binary_cover_mossycottage_data_size __asm("_binary_cover_mossycottage_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/mossycottage.png
Normal file
After Width: | Height: | Size: 14 KiB |
15
cover/mountain.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_mountain_data_start __asm("_binary_cover_mountain_data_start");
|
||||||
|
extern uint32_t _binary_cover_mountain_data_end __asm("_binary_cover_mountain_data_end");
|
||||||
|
extern uint32_t _binary_cover_mountain_data_size __asm("_binary_cover_mountain_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/mountain.png
Normal file
After Width: | Height: | Size: 11 KiB |
15
cover/mountainfull.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_mountainfull_data_start __asm("_binary_cover_mountainfull_data_start");
|
||||||
|
extern uint32_t _binary_cover_mountainfull_data_end __asm("_binary_cover_mountainfull_data_end");
|
||||||
|
extern uint32_t _binary_cover_mountainfull_data_size __asm("_binary_cover_mountainfull_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/mountainfull.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
15
cover/redtree.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_redtree_data_start __asm("_binary_cover_redtree_data_start");
|
||||||
|
extern uint32_t _binary_cover_redtree_data_end __asm("_binary_cover_redtree_data_end");
|
||||||
|
extern uint32_t _binary_cover_redtree_data_size __asm("_binary_cover_redtree_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/redtree.png
Normal file
After Width: | Height: | Size: 19 KiB |
15
cover/redtreefull.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_redtreefull_data_start __asm("_binary_cover_redtreefull_data_start");
|
||||||
|
extern uint32_t _binary_cover_redtreefull_data_end __asm("_binary_cover_redtreefull_data_end");
|
||||||
|
extern uint32_t _binary_cover_redtreefull_data_size __asm("_binary_cover_redtreefull_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/redtreefull.png
Normal file
After Width: | Height: | Size: 513 KiB |
15
cover/silvertrees.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_silvertrees_data_start __asm("_binary_cover_silvertrees_data_start");
|
||||||
|
extern uint32_t _binary_cover_silvertrees_data_end __asm("_binary_cover_silvertrees_data_end");
|
||||||
|
extern uint32_t _binary_cover_silvertrees_data_size __asm("_binary_cover_silvertrees_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/silvertrees.png
Normal file
After Width: | Height: | Size: 17 KiB |
15
cover/silvertreesfull.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_silvertreesfull_data_start __asm("_binary_cover_silvertreesfull_data_start");
|
||||||
|
extern uint32_t _binary_cover_silvertreesfull_data_end __asm("_binary_cover_silvertreesfull_data_end");
|
||||||
|
extern uint32_t _binary_cover_silvertreesfull_data_size __asm("_binary_cover_silvertreesfull_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/silvertreesfull.png
Normal file
After Width: | Height: | Size: 433 KiB |
15
cover/thebeach.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_thebeach_data_start __asm("_binary_cover_thebeach_data_start");
|
||||||
|
extern uint32_t _binary_cover_thebeach_data_end __asm("_binary_cover_thebeach_data_end");
|
||||||
|
extern uint32_t _binary_cover_thebeach_data_size __asm("_binary_cover_thebeach_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/thebeach.png
Normal file
After Width: | Height: | Size: 10 KiB |
15
cover/tree.data.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_cover_tree_data_start __asm("_binary_cover_tree_data_start");
|
||||||
|
extern uint32_t _binary_cover_tree_data_end __asm("_binary_cover_tree_data_end");
|
||||||
|
extern uint32_t _binary_cover_tree_data_size __asm("_binary_cover_tree_data_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
BIN
cover/tree.png
Normal file
After Width: | Height: | Size: 10 KiB |
9
demo.mk
@ -66,7 +66,14 @@ DEMO_OBJ = \
|
|||||||
xm/SpringWaltz.xm.o \
|
xm/SpringWaltz.xm.o \
|
||||||
xm/SummerDreamsDemoTrackv4.xm.o \
|
xm/SummerDreamsDemoTrackv4.xm.o \
|
||||||
xm/TheClockOfElery.xm.o \
|
xm/TheClockOfElery.xm.o \
|
||||||
xm/TheMountainsOfElmindeer.xm.o
|
xm/TheMountainsOfElmindeer.xm.o \
|
||||||
|
cover/clocks.data.o \
|
||||||
|
cover/mossycottage.data.o \
|
||||||
|
cover/mountain.data.o \
|
||||||
|
cover/thebeach.data.o \
|
||||||
|
cover/tree.data.o \
|
||||||
|
cover/redtree.data.o \
|
||||||
|
cover/silvertrees.data.o
|
||||||
|
|
||||||
demo.elf: LDSCRIPT = $(LIB)/main.lds
|
demo.elf: LDSCRIPT = $(LIB)/main.lds
|
||||||
demo.elf: $(START_OBJ) $(DEMO_OBJ) $(FONT_OBJ) $(TEXTURE_OBJ) $(LIBGCC)
|
demo.elf: $(START_OBJ) $(DEMO_OBJ) $(FONT_OBJ) $(TEXTURE_OBJ) $(LIBGCC)
|
||||||
|
@ -78,7 +78,7 @@ namespace demo {
|
|||||||
//lizard_position = {81, 100, 212};
|
//lizard_position = {81, 100, 212};
|
||||||
lizard_velocity = {0, 0, 0};
|
lizard_velocity = {0, 0, 0};
|
||||||
|
|
||||||
if (!emulator_detected) {
|
if (1 || !emulator_detected) {
|
||||||
emulator_detected_hud_frames = 60 * 30;
|
emulator_detected_hud_frames = 60 * 30;
|
||||||
playlist::next();
|
playlist::next();
|
||||||
} else {
|
} else {
|
||||||
@ -149,10 +149,10 @@ namespace demo {
|
|||||||
|
|
||||||
void lizard::y()
|
void lizard::y()
|
||||||
{
|
{
|
||||||
if (last_platform1 == nullptr)
|
|
||||||
init();
|
|
||||||
else {
|
|
||||||
lizard_velocity = {0, 0, 0};
|
lizard_velocity = {0, 0, 0};
|
||||||
|
if (last_platform1 == nullptr) {
|
||||||
|
lizard_position = {2.5, 1, 2.5};
|
||||||
|
} else {
|
||||||
lizard_position = last_platform1->position;
|
lizard_position = last_platform1->position;
|
||||||
lizard_position.y += 0.5;
|
lizard_position.y += 0.5;
|
||||||
if (last_platform->touched == true)
|
if (last_platform->touched == true)
|
||||||
@ -265,9 +265,9 @@ namespace demo {
|
|||||||
const int title_width_2 = (font::ter_u12n.hori_advance * title_length) >> 1;
|
const int title_width_2 = (font::ter_u12n.hori_advance * title_length) >> 1;
|
||||||
const int x = framebuffer_width_2 - title_width_2;
|
const int x = framebuffer_width_2 - title_width_2;
|
||||||
center_p.x = x;
|
center_p.x = x;
|
||||||
font::ter_u12n.draw_string(writer, center_p, "demo: lizard", 0xffffffff);
|
//font::ter_u12n.draw_string(writer, center_p, "demo: lizard", 0xffffffff);
|
||||||
}
|
}
|
||||||
center_p.y += font::ter_u12n.height;
|
//center_p.y += font::ter_u12n.height;
|
||||||
{
|
{
|
||||||
const int title_length = 46;
|
const int title_length = 46;
|
||||||
const int title_width_2 = (font::ter_u12n.hori_advance * title_length) >> 1;
|
const int title_width_2 = (font::ter_u12n.hori_advance * title_length) >> 1;
|
||||||
@ -380,6 +380,27 @@ namespace demo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lizard::draw_cover(ta_parameter_writer& writer, const mat4x4& trans)
|
||||||
|
{
|
||||||
|
mat4x4 t
|
||||||
|
= trans
|
||||||
|
* translate(lizard_position)
|
||||||
|
* scale(1000.f);
|
||||||
|
|
||||||
|
int texture_offset = playlist::playlist[playlist::state.playlist_ix].cover_ix;
|
||||||
|
if (cover_ix_transition >= 1.0) {
|
||||||
|
if (texture_offset != last_cover_texture_offset) {
|
||||||
|
cover_ix_transition = 0.0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cover_ix_transition += 0.001f;
|
||||||
|
if (cover_ix_transition >= 1.0) {
|
||||||
|
last_cover_texture_offset = texture_offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
draw_textured_cube2(writer, t, last_cover_texture_offset, texture_offset, cover_ix_transition);
|
||||||
|
}
|
||||||
|
|
||||||
void lizard::draw(ta_parameter_writer& writer, const mat4x4& _)
|
void lizard::draw(ta_parameter_writer& writer, const mat4x4& _)
|
||||||
{
|
{
|
||||||
// punch through
|
// punch through
|
||||||
@ -388,6 +409,13 @@ namespace demo {
|
|||||||
draw_hud(writer);
|
draw_hud(writer);
|
||||||
draw_lizard(writer, trans);
|
draw_lizard(writer, trans);
|
||||||
|
|
||||||
|
writer.append<ta_global_parameter::end_of_list>() =
|
||||||
|
ta_global_parameter::end_of_list(para_control::para_type::end_of_list);
|
||||||
|
|
||||||
|
// translucent
|
||||||
|
|
||||||
|
draw_cover(writer, trans);
|
||||||
|
|
||||||
writer.append<ta_global_parameter::end_of_list>() =
|
writer.append<ta_global_parameter::end_of_list>() =
|
||||||
ta_global_parameter::end_of_list(para_control::para_type::end_of_list);
|
ta_global_parameter::end_of_list(para_control::para_type::end_of_list);
|
||||||
|
|
||||||
|
@ -19,6 +19,9 @@ namespace demo {
|
|||||||
int platform_touch_count;
|
int platform_touch_count;
|
||||||
int end_platform_tick;
|
int end_platform_tick;
|
||||||
|
|
||||||
|
int last_cover_texture_offset;
|
||||||
|
float cover_ix_transition;
|
||||||
|
|
||||||
int emulator_detected_hud_frames;
|
int emulator_detected_hud_frames;
|
||||||
bool collided;
|
bool collided;
|
||||||
|
|
||||||
@ -50,6 +53,7 @@ namespace demo {
|
|||||||
void draw_hud(ta_parameter_writer& writer);
|
void draw_hud(ta_parameter_writer& writer);
|
||||||
void draw_platform(ta_parameter_writer& writer, const mat4x4& trans, const world::platform * p);
|
void draw_platform(ta_parameter_writer& writer, const mat4x4& trans, const world::platform * p);
|
||||||
void draw_lizard(ta_parameter_writer& writer, const mat4x4& trans);
|
void draw_lizard(ta_parameter_writer& writer, const mat4x4& trans);
|
||||||
|
void draw_cover(ta_parameter_writer& writer, const mat4x4& trans);
|
||||||
void draw(ta_parameter_writer& writer, const mat4x4& trans) override;
|
void draw(ta_parameter_writer& writer, const mat4x4& trans) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -48,14 +48,14 @@ namespace graphics {
|
|||||||
constexpr uint32_t ta_alloc
|
constexpr uint32_t ta_alloc
|
||||||
= ta_alloc_ctrl::pt_opb::_32x4byte
|
= ta_alloc_ctrl::pt_opb::_32x4byte
|
||||||
| ta_alloc_ctrl::tm_opb::no_list
|
| ta_alloc_ctrl::tm_opb::no_list
|
||||||
| ta_alloc_ctrl::t_opb::no_list
|
| ta_alloc_ctrl::t_opb::_32x4byte
|
||||||
| ta_alloc_ctrl::om_opb::no_list
|
| ta_alloc_ctrl::om_opb::no_list
|
||||||
| ta_alloc_ctrl::o_opb::_32x4byte;
|
| ta_alloc_ctrl::o_opb::_32x4byte;
|
||||||
|
|
||||||
const opb_size opb_size = {
|
const opb_size opb_size = {
|
||||||
.opaque = 32 * 4,
|
.opaque = 32 * 4,
|
||||||
.opaque_modifier = 0,
|
.opaque_modifier = 0,
|
||||||
.translucent = 0,
|
.translucent = 32 * 4,
|
||||||
.translucent_modifier = 0,
|
.translucent_modifier = 0,
|
||||||
.punch_through = 32 * 4
|
.punch_through = 32 * 4
|
||||||
};
|
};
|
||||||
@ -173,7 +173,7 @@ namespace graphics {
|
|||||||
holly.SOFTRESET = 0;
|
holly.SOFTRESET = 0;
|
||||||
|
|
||||||
background_parameter2(texture_memory_alloc.background[0].start,
|
background_parameter2(texture_memory_alloc.background[0].start,
|
||||||
0x110012);
|
0xffffff);
|
||||||
|
|
||||||
region_array_multipass(framebuffer::framebuffer.tile_width(),
|
region_array_multipass(framebuffer::framebuffer.tile_width(),
|
||||||
framebuffer::framebuffer.tile_height(),
|
framebuffer::framebuffer.tile_height(),
|
||||||
|
@ -380,6 +380,124 @@ void draw_textured_cube(ta_parameter_writer& writer,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void draw_textured_cube2(ta_parameter_writer& writer,
|
||||||
|
const mat4x4& trans,
|
||||||
|
int texture_offset1,
|
||||||
|
int texture_offset2,
|
||||||
|
float transition)
|
||||||
|
{
|
||||||
|
static const vec3 position[] = {
|
||||||
|
{-0.5, -0.5, 0.5},
|
||||||
|
{-0.5, 0.5, 0.5},
|
||||||
|
{-0.5, -0.5, -0.5},
|
||||||
|
{-0.5, 0.5, -0.5},
|
||||||
|
{ 0.5, -0.5, 0.5},
|
||||||
|
{ 0.5, 0.5, 0.5},
|
||||||
|
{ 0.5, -0.5, -0.5},
|
||||||
|
{ 0.5, 0.5, -0.5},
|
||||||
|
};
|
||||||
|
static const vec2 texture[] = {
|
||||||
|
{0.0, 0.0},
|
||||||
|
{1.0, 0.0},
|
||||||
|
{1.0, 1.0},
|
||||||
|
{0.0, 1.0},
|
||||||
|
};
|
||||||
|
const int position_length = (sizeof (position)) / (sizeof (position[0]));
|
||||||
|
|
||||||
|
struct quad {
|
||||||
|
int a, b, c, d;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const quad quads[] = {
|
||||||
|
{0, 1, 3, 2}, // front (z, y)
|
||||||
|
{2, 3, 7, 6}, // left (x, y)
|
||||||
|
{6, 7, 5, 4}, // rear (z, y)
|
||||||
|
{4, 5, 1, 0}, // right (x, y)
|
||||||
|
//{2, 6, 4, 0}, // bottom (x, z)
|
||||||
|
//{7, 3, 1, 5} // top (x, z)
|
||||||
|
};
|
||||||
|
|
||||||
|
const int quads_length = (sizeof (quads)) / (sizeof (quads[0]));
|
||||||
|
|
||||||
|
vec3 position_cache[position_length];
|
||||||
|
for (int i = 0; i < position_length; i++) {
|
||||||
|
position_cache[i] = trans * position[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
int texture_uv_size
|
||||||
|
= tsp_instruction_word::texture_shading_instruction::modulate_alpha
|
||||||
|
| tsp_instruction_word::src_alpha_instr::src_alpha
|
||||||
|
| tsp_instruction_word::dst_alpha_instr::inverse_src_alpha
|
||||||
|
| tsp_instruction_word::use_alpha
|
||||||
|
| tsp_instruction_word::texture_u_size::from_int(128)
|
||||||
|
| tsp_instruction_word::texture_v_size::from_int(128);
|
||||||
|
|
||||||
|
int pixel_format
|
||||||
|
= texture_control_word::pixel_format::_565;
|
||||||
|
|
||||||
|
const vec2 uv_scale = {72.0f / 128.0f, 72.0f / 128.0f};
|
||||||
|
|
||||||
|
for (int i = 0; i < quads_length; i++) {
|
||||||
|
const vec3& ap = position_cache[quads[i].a];
|
||||||
|
const vec3& bp = position_cache[quads[i].b];
|
||||||
|
const vec3& cp = position_cache[quads[i].c];
|
||||||
|
const vec3& dp = position_cache[quads[i].d];
|
||||||
|
|
||||||
|
bool flip = (i < 4) && (i % 2 == 0);
|
||||||
|
|
||||||
|
vec2 at;
|
||||||
|
vec2 bt;
|
||||||
|
vec2 ct;
|
||||||
|
vec2 dt;
|
||||||
|
|
||||||
|
if (flip) {
|
||||||
|
at = vec2(1.0 - texture[3].x, texture[3].y) * uv_scale;
|
||||||
|
bt = vec2(1.0 - texture[0].x, texture[0].y) * uv_scale;
|
||||||
|
ct = vec2(1.0 - texture[1].x, texture[1].y) * uv_scale;
|
||||||
|
dt = vec2(1.0 - texture[2].x, texture[2].y) * uv_scale;
|
||||||
|
} else {
|
||||||
|
at = texture[3] * uv_scale;
|
||||||
|
bt = texture[0] * uv_scale;
|
||||||
|
ct = texture[1] * uv_scale;
|
||||||
|
dt = texture[2] * uv_scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
const float base_intensity = 0.4f;
|
||||||
|
|
||||||
|
vec4 color1 = {1, 1, 1, 1.0f - transition};
|
||||||
|
|
||||||
|
global_polygon_textured_intensity(writer,
|
||||||
|
color1,
|
||||||
|
para_control::list_type::translucent,
|
||||||
|
texture_offset1,
|
||||||
|
texture_uv_size,
|
||||||
|
pixel_format);
|
||||||
|
|
||||||
|
quad_type_7_maybe_clip(writer,
|
||||||
|
ap, at,
|
||||||
|
bp, bt,
|
||||||
|
cp, ct,
|
||||||
|
dp, dt,
|
||||||
|
base_intensity);
|
||||||
|
|
||||||
|
vec4 color2 = {1, 1, 1, transition};
|
||||||
|
|
||||||
|
global_polygon_textured_intensity(writer,
|
||||||
|
color2,
|
||||||
|
para_control::list_type::translucent,
|
||||||
|
texture_offset2,
|
||||||
|
texture_uv_size,
|
||||||
|
pixel_format);
|
||||||
|
|
||||||
|
quad_type_7_maybe_clip(writer,
|
||||||
|
ap, at,
|
||||||
|
bp, bt,
|
||||||
|
cp, ct,
|
||||||
|
dp, dt,
|
||||||
|
base_intensity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
constexpr inline float pow(float x, int n)
|
constexpr inline float pow(float x, int n)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
|
@ -87,6 +87,12 @@ void draw_textured_cube(ta_parameter_writer& writer,
|
|||||||
const vec3& base_color,
|
const vec3& base_color,
|
||||||
float intensity_offset);
|
float intensity_offset);
|
||||||
|
|
||||||
|
void draw_textured_cube2(ta_parameter_writer& writer,
|
||||||
|
const mat4x4& trans,
|
||||||
|
int texture_offset1,
|
||||||
|
int texture_offset2,
|
||||||
|
float transition);
|
||||||
|
|
||||||
void draw_icosphere(ta_parameter_writer& writer,
|
void draw_icosphere(ta_parameter_writer& writer,
|
||||||
const mat4x4& trans,
|
const mat4x4& trans,
|
||||||
const vec3& color);
|
const vec3& color);
|
||||||
|
@ -26,6 +26,15 @@
|
|||||||
#include "texture/turning/frame0004_128.data.h"
|
#include "texture/turning/frame0004_128.data.h"
|
||||||
#include "texture/turning/frame0005_128.data.h"
|
#include "texture/turning/frame0005_128.data.h"
|
||||||
#include "texture/turning/frame0006_128.data.h"
|
#include "texture/turning/frame0006_128.data.h"
|
||||||
|
#include "cover/clocks.data.h"
|
||||||
|
#include "cover/mossycottage.data.h"
|
||||||
|
#include "cover/mountain.data.h"
|
||||||
|
#include "cover/thebeach.data.h"
|
||||||
|
#include "cover/tree.data.h"
|
||||||
|
#include "cover/redtree.data.h"
|
||||||
|
#include "cover/silvertrees.data.h"
|
||||||
|
|
||||||
|
#include "assert.h"
|
||||||
|
|
||||||
namespace texture {
|
namespace texture {
|
||||||
struct entry {
|
struct entry {
|
||||||
@ -130,6 +139,41 @@ namespace texture {
|
|||||||
.size = reinterpret_cast<int>(&_binary_texture_turning_frame0006_128_data_size),
|
.size = reinterpret_cast<int>(&_binary_texture_turning_frame0006_128_data_size),
|
||||||
.offset = offset::turning_frame0006,
|
.offset = offset::turning_frame0006,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.start = reinterpret_cast<void *>(&_binary_cover_clocks_data_start),
|
||||||
|
.size = reinterpret_cast<int>(&_binary_cover_clocks_data_size),
|
||||||
|
.offset = offset::clocks,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = reinterpret_cast<void *>(&_binary_cover_mossycottage_data_start),
|
||||||
|
.size = reinterpret_cast<int>(&_binary_cover_mossycottage_data_size),
|
||||||
|
.offset = offset::mossycottage,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = reinterpret_cast<void *>(&_binary_cover_mountain_data_start),
|
||||||
|
.size = reinterpret_cast<int>(&_binary_cover_mountain_data_size),
|
||||||
|
.offset = offset::mountain,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = reinterpret_cast<void *>(&_binary_cover_thebeach_data_start),
|
||||||
|
.size = reinterpret_cast<int>(&_binary_cover_thebeach_data_size),
|
||||||
|
.offset = offset::thebeach,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = reinterpret_cast<void *>(&_binary_cover_tree_data_start),
|
||||||
|
.size = reinterpret_cast<int>(&_binary_cover_tree_data_size),
|
||||||
|
.offset = offset::tree,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = reinterpret_cast<void *>(&_binary_cover_redtree_data_start),
|
||||||
|
.size = reinterpret_cast<int>(&_binary_cover_redtree_data_size),
|
||||||
|
.offset = offset::redtree,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = reinterpret_cast<void *>(&_binary_cover_silvertrees_data_start),
|
||||||
|
.size = reinterpret_cast<int>(&_binary_cover_silvertrees_data_size),
|
||||||
|
.offset = offset::silvertrees,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const int textures_length = (sizeof (textures)) / (sizeof (textures[0]));
|
const int textures_length = (sizeof (textures)) / (sizeof (textures[0]));
|
||||||
@ -156,6 +200,7 @@ namespace texture {
|
|||||||
int size = textures[i].size;
|
int size = textures[i].size;
|
||||||
|
|
||||||
ta_fifo_texture_memory_transfer::copy(dst, src, size);
|
ta_fifo_texture_memory_transfer::copy(dst, src, size);
|
||||||
|
assert((int)offset + size < 8 * 1024 * 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
transfer_palettes();
|
transfer_palettes();
|
||||||
|
@ -23,6 +23,14 @@ namespace texture {
|
|||||||
constexpr int turning_frame0004 = turning_frame0003 + 8192;
|
constexpr int turning_frame0004 = turning_frame0003 + 8192;
|
||||||
constexpr int turning_frame0005 = turning_frame0004 + 8192;
|
constexpr int turning_frame0005 = turning_frame0004 + 8192;
|
||||||
constexpr int turning_frame0006 = turning_frame0005 + 8192;
|
constexpr int turning_frame0006 = turning_frame0005 + 8192;
|
||||||
|
|
||||||
|
constexpr int clocks = turning_frame0006 + 8192;
|
||||||
|
constexpr int mossycottage = clocks + 32768;
|
||||||
|
constexpr int mountain = mossycottage + 32768;
|
||||||
|
constexpr int thebeach = mountain + 32768;
|
||||||
|
constexpr int tree = thebeach + 32768;
|
||||||
|
constexpr int redtree = tree + 32768;
|
||||||
|
constexpr int silvertrees = redtree + 32768;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct cube_texture_offsets {
|
struct cube_texture_offsets {
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
#include "xm/SpringWaltz.xm.h"
|
#include "xm/SpringWaltz.xm.h"
|
||||||
#include "xm/TheMountainsOfElmindeer.xm.h"
|
#include "xm/TheMountainsOfElmindeer.xm.h"
|
||||||
|
|
||||||
|
#include "platform/texture.hpp"
|
||||||
|
|
||||||
namespace playlist {
|
namespace playlist {
|
||||||
|
|
||||||
struct state state = {
|
struct state state = {
|
||||||
@ -25,43 +27,43 @@ namespace playlist {
|
|||||||
.artist = "Shiroiii",
|
.artist = "Shiroiii",
|
||||||
.title = "Clouds Ahead",
|
.title = "Clouds Ahead",
|
||||||
.start = (int)&_binary_xm_CloudsAhead_xm_start,
|
.start = (int)&_binary_xm_CloudsAhead_xm_start,
|
||||||
.cover_ix = cover::thebeach,
|
.cover_ix = texture::offset::thebeach,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.artist = "Shiroiii",
|
.artist = "Shiroiii",
|
||||||
.title = "Cottage Fantasy",
|
.title = "Cottage Fantasy",
|
||||||
.start = (int)&_binary_xm_CottageFantasy_xm_start,
|
.start = (int)&_binary_xm_CottageFantasy_xm_start,
|
||||||
.cover_ix = cover::mossycottage,
|
.cover_ix = texture::offset::mossycottage,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.artist = "Shiroiii",
|
.artist = "Shiroiii",
|
||||||
.title = "Red Blossom",
|
.title = "Red Blossom",
|
||||||
.start = (int)&_binary_xm_RedBlossom_xm_start,
|
.start = (int)&_binary_xm_RedBlossom_xm_start,
|
||||||
.cover_ix = cover::redtree,
|
.cover_ix = texture::offset::redtree,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.artist = "Shiroiii",
|
.artist = "Shiroiii",
|
||||||
.title = "The Clock Of Elery",
|
.title = "The Clock Of Elery",
|
||||||
.start = (int)&_binary_xm_TheClockOfElery_xm_start,
|
.start = (int)&_binary_xm_TheClockOfElery_xm_start,
|
||||||
.cover_ix = cover::clocks,
|
.cover_ix = texture::offset::clocks,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.artist = "Shiroiii",
|
.artist = "Shiroiii",
|
||||||
.title = "Forest At Twilight",
|
.title = "Forest At Twilight",
|
||||||
.start = (int)&_binary_xm_ForestAtTwilight_xm_start,
|
.start = (int)&_binary_xm_ForestAtTwilight_xm_start,
|
||||||
.cover_ix = cover::silvertrees,
|
.cover_ix = texture::offset::silvertrees,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.artist = "Shiroiii",
|
.artist = "Shiroiii",
|
||||||
.title = "Spring Waltz",
|
.title = "Spring Waltz",
|
||||||
.start = (int)&_binary_xm_SpringWaltz_xm_start,
|
.start = (int)&_binary_xm_SpringWaltz_xm_start,
|
||||||
.cover_ix = cover::tree,
|
.cover_ix = texture::offset::tree,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.artist = "Shiroiii",
|
.artist = "Shiroiii",
|
||||||
.title = "Mountains of Elmindeer",
|
.title = "Mountains of Elmindeer",
|
||||||
.start = (int)&_binary_xm_TheMountainsOfElmindeer_xm_start,
|
.start = (int)&_binary_xm_TheMountainsOfElmindeer_xm_start,
|
||||||
.cover_ix = cover::mountain,
|
.cover_ix = texture::offset::mountain,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -69,7 +71,7 @@ namespace playlist {
|
|||||||
|
|
||||||
bool next(bool stop_sound)
|
bool next(bool stop_sound)
|
||||||
{
|
{
|
||||||
if (state.loops < 0 || state.loops >= 2) {
|
if (state.loops < 0 || state.loops >= 3) {
|
||||||
state.playlist_ix += 1;
|
state.playlist_ix += 1;
|
||||||
state.loops = 0;
|
state.loops = 0;
|
||||||
|
|
||||||
|