From 3cf693adb11a50aa422e6487f1cbc920994f7f16 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Thu, 26 Jun 2025 17:24:31 -0500 Subject: [PATCH] add empty "logo" scene --- src/graphics.cpp | 2 ++ src/scene/logo/scene.cpp | 28 ++++++++++++++++++++++++++++ src/scene/logo/scene.hpp | 11 +++++++++++ src/scene/tracker/scene.cpp | 19 ++++++++++++++++++- src/scene/tracker/scene.hpp | 19 ++++--------------- xm_player.mk | 3 ++- 6 files changed, 65 insertions(+), 17 deletions(-) create mode 100644 src/scene/logo/scene.cpp create mode 100644 src/scene/logo/scene.hpp diff --git a/src/graphics.cpp b/src/graphics.cpp index d2c0d85..f18a915 100644 --- a/src/graphics.cpp +++ b/src/graphics.cpp @@ -27,6 +27,7 @@ #include "framebuffer.hpp" #include "scene/scene.hpp" #include "scene/tracker/scene.hpp" +#include "scene/logo/scene.hpp" #include "graphics.hpp" static volatile int ta_in_use = 0; @@ -37,6 +38,7 @@ static volatile int next_frame_ix = 0; static const scene::scene scenes[] = { scene::tracker::scene, + scene::logo::scene, }; static const scene::scene * current_scene = &scenes[0]; diff --git a/src/scene/logo/scene.cpp b/src/scene/logo/scene.cpp new file mode 100644 index 0000000..1c3acc8 --- /dev/null +++ b/src/scene/logo/scene.cpp @@ -0,0 +1,28 @@ +#include "ta_parameter.hpp" + +#include "scene/logo/scene.hpp" + +namespace scene::logo { + + const struct scene::scene scene = { + .ta_alloc = ta_alloc_ctrl::pt_opb::no_list + | ta_alloc_ctrl::tm_opb::no_list + | ta_alloc_ctrl::t_opb::no_list + | ta_alloc_ctrl::om_opb::no_list + | ta_alloc_ctrl::o_opb::_32x4byte, + .opb_size = { + .opaque = 32 * 4, + .opaque_modifier = 0, + .translucent = 0, + .translucent_modifier = 0, + .punch_through = 0 + }, + .transfer = transfer, + }; + + void transfer(ta_parameter_writer& writer) + { + writer.append() = + ta_global_parameter::end_of_list(para_control::para_type::end_of_list); + } +} diff --git a/src/scene/logo/scene.hpp b/src/scene/logo/scene.hpp new file mode 100644 index 0000000..72daf49 --- /dev/null +++ b/src/scene/logo/scene.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "holly/ta_bits.hpp" +#include "scene/scene.hpp" + +namespace scene::logo { + + void transfer(ta_parameter_writer& writer); + + extern const struct scene::scene scene; +} diff --git a/src/scene/tracker/scene.cpp b/src/scene/tracker/scene.cpp index 81f9686..2ede7b9 100644 --- a/src/scene/tracker/scene.cpp +++ b/src/scene/tracker/scene.cpp @@ -2,12 +2,29 @@ #include "ta_parameter.hpp" +#include "scene/tracker/scene.hpp" + #include "notes.hpp" #include "channel_status.hpp" -#include "scene/scene.hpp" namespace scene::tracker { + const struct scene::scene scene = { + .ta_alloc = ta_alloc_ctrl::pt_opb::_32x4byte + | ta_alloc_ctrl::tm_opb::no_list + | ta_alloc_ctrl::t_opb::_8x4byte + | ta_alloc_ctrl::om_opb::no_list + | ta_alloc_ctrl::o_opb::_32x4byte, + .opb_size = { + .opaque = 32 * 4, + .opaque_modifier = 0, + .translucent = 8 * 4, + .translucent_modifier = 0, + .punch_through = 32 * 4 + }, + .transfer = transfer, + }; + void transfer(ta_parameter_writer& writer) { const int x = 3; diff --git a/src/scene/tracker/scene.hpp b/src/scene/tracker/scene.hpp index 49d835b..ace7aac 100644 --- a/src/scene/tracker/scene.hpp +++ b/src/scene/tracker/scene.hpp @@ -1,22 +1,11 @@ #pragma once +#include "holly/ta_bits.hpp" +#include "scene/scene.hpp" + namespace scene::tracker { void transfer(ta_parameter_writer& writer); - struct scene::scene scene = { - .ta_alloc = ta_alloc_ctrl::pt_opb::_32x4byte - | ta_alloc_ctrl::tm_opb::no_list - | ta_alloc_ctrl::t_opb::_8x4byte - | ta_alloc_ctrl::om_opb::no_list - | ta_alloc_ctrl::o_opb::_32x4byte, - .opb_size = { - .opaque = 32 * 4, - .opaque_modifier = 0, - .translucent = 8 * 4, - .translucent_modifier = 0, - .punch_through = 32 * 4 - }, - .transfer = transfer, - }; + extern const struct scene::scene scene; } diff --git a/xm_player.mk b/xm_player.mk index 1c23587..aa41345 100644 --- a/xm_player.mk +++ b/xm_player.mk @@ -26,7 +26,8 @@ XM_PLAYER_OBJ = \ src/graphics_primitive.o \ src/scene/tracker/scene.o \ src/scene/tracker/channel_status.o \ - src/scene/tracker/notes.o + src/scene/tracker/notes.o \ + src/scene/logo/scene.o xm_player.elf: LDSCRIPT = $(LIB)/main.lds xm_player.elf: $(START_OBJ) $(XM_PLAYER_OBJ) $(TEXTURE_OBJ) $(XM_OBJ) $(LIBGCC)