add "scene" structure
This commit is contained in:
parent
040a70ee51
commit
1107158309
3
Makefile
3
Makefile
@ -4,7 +4,8 @@ OPT = -O2
|
|||||||
|
|
||||||
MAKEFILE_PATH := $(patsubst %/,%,$(dir $(abspath $(firstword $(MAKEFILE_LIST)))))
|
MAKEFILE_PATH := $(patsubst %/,%,$(dir $(abspath $(firstword $(MAKEFILE_LIST)))))
|
||||||
LIB ?= $(MAKEFILE_PATH)/dreamcast
|
LIB ?= $(MAKEFILE_PATH)/dreamcast
|
||||||
CFLAGS += -I$(MAKEFILE_PATH)
|
CFLAGS += -I$(MAKEFILE_PATH)/
|
||||||
|
CFLAGS += -I$(MAKEFILE_PATH)/src
|
||||||
CFLAGS += -I$(MAKEFILE_PATH)/dreamcast
|
CFLAGS += -I$(MAKEFILE_PATH)/dreamcast
|
||||||
CFLAGS += -Wno-error=strict-aliasing -fno-strict-aliasing
|
CFLAGS += -Wno-error=strict-aliasing -fno-strict-aliasing
|
||||||
CARCH = -m4-single -ml
|
CARCH = -m4-single -ml
|
||||||
|
@ -25,25 +25,9 @@
|
|||||||
#include "font/tandy1k.data.h"
|
#include "font/tandy1k.data.h"
|
||||||
|
|
||||||
#include "framebuffer.hpp"
|
#include "framebuffer.hpp"
|
||||||
#include "src/scene/tracker/scene.hpp"
|
#include "scene/scene.hpp"
|
||||||
|
#include "scene/tracker/scene.hpp"
|
||||||
constexpr uint32_t ta_alloc = 0
|
#include "graphics.hpp"
|
||||||
| 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;
|
|
||||||
|
|
||||||
constexpr int ta_cont_count = 1;
|
|
||||||
constexpr struct opb_size opb_size[ta_cont_count] = {
|
|
||||||
{
|
|
||||||
.opaque = 32 * 4,
|
|
||||||
.opaque_modifier = 0,
|
|
||||||
.translucent = 8 * 4,
|
|
||||||
.translucent_modifier = 0,
|
|
||||||
.punch_through = 32 * 4
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static volatile int ta_in_use = 0;
|
static volatile int ta_in_use = 0;
|
||||||
static volatile int core_in_use = 0;
|
static volatile int core_in_use = 0;
|
||||||
@ -51,6 +35,12 @@ static volatile int next_frame = 0;
|
|||||||
static volatile int framebuffer_ix = 0;
|
static volatile int framebuffer_ix = 0;
|
||||||
static volatile int next_frame_ix = 0;
|
static volatile int next_frame_ix = 0;
|
||||||
|
|
||||||
|
static const scene::scene scenes[] = {
|
||||||
|
scene::tracker::scene,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const scene::scene * current_scene = &scenes[0];
|
||||||
|
|
||||||
void graphics_interrupt(uint32_t istnrm)
|
void graphics_interrupt(uint32_t istnrm)
|
||||||
{
|
{
|
||||||
if (istnrm & istnrm::v_blank_in) {
|
if (istnrm & istnrm::v_blank_in) {
|
||||||
@ -152,22 +142,25 @@ void graphics_init()
|
|||||||
background_parameter2(texture_memory_alloc.background[0].start,
|
background_parameter2(texture_memory_alloc.background[0].start,
|
||||||
0xff800080);
|
0xff800080);
|
||||||
|
|
||||||
|
transfer_textures();
|
||||||
|
transfer_palettes();
|
||||||
|
}
|
||||||
|
|
||||||
|
void graphics_scene_init()
|
||||||
|
{
|
||||||
region_array_multipass(framebuffer.tile_width(),
|
region_array_multipass(framebuffer.tile_width(),
|
||||||
framebuffer.tile_height(),
|
framebuffer.tile_height(),
|
||||||
opb_size,
|
¤t_scene->opb_size,
|
||||||
ta_cont_count,
|
ta_cont_count,
|
||||||
texture_memory_alloc.region_array.start,
|
texture_memory_alloc.region_array.start,
|
||||||
texture_memory_alloc.object_list.start);
|
texture_memory_alloc.object_list.start);
|
||||||
|
|
||||||
transfer_textures();
|
|
||||||
transfer_palettes();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void graphics_event(ta_parameter_writer& writer)
|
void graphics_event(ta_parameter_writer& writer)
|
||||||
{
|
{
|
||||||
writer.offset = 0;
|
writer.offset = 0;
|
||||||
|
|
||||||
tracker::scene::transfer(writer);
|
scene::tracker::transfer(writer);
|
||||||
|
|
||||||
while (ta_in_use);
|
while (ta_in_use);
|
||||||
while (core_in_use);
|
while (core_in_use);
|
||||||
@ -176,8 +169,8 @@ void graphics_event(ta_parameter_writer& writer)
|
|||||||
texture_memory_alloc.isp_tsp_parameters.end,
|
texture_memory_alloc.isp_tsp_parameters.end,
|
||||||
texture_memory_alloc.object_list.start,
|
texture_memory_alloc.object_list.start,
|
||||||
texture_memory_alloc.object_list.end,
|
texture_memory_alloc.object_list.end,
|
||||||
opb_size[0].total(),
|
current_scene->opb_size.total(),
|
||||||
ta_alloc,
|
current_scene->ta_alloc,
|
||||||
framebuffer.tile_width(),
|
framebuffer.tile_width(),
|
||||||
framebuffer.tile_height());
|
framebuffer.tile_height());
|
||||||
ta_polygon_converter_writeback(writer.buf, writer.offset);
|
ta_polygon_converter_writeback(writer.buf, writer.offset);
|
||||||
|
@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
#include "holly/ta_parameter.hpp"
|
#include "holly/ta_parameter.hpp"
|
||||||
|
|
||||||
|
constexpr int ta_cont_count = 1;
|
||||||
|
|
||||||
void graphics_interrupt(uint32_t istnrm);
|
void graphics_interrupt(uint32_t istnrm);
|
||||||
void graphics_init();
|
void graphics_init();
|
||||||
void graphics_event(ta_parameter_writer& writer);
|
void graphics_event(ta_parameter_writer& writer);
|
||||||
|
void graphics_scene_init();
|
||||||
|
@ -239,6 +239,7 @@ void main()
|
|||||||
const float aica_clock_multiplier = 44.1;
|
const float aica_clock_multiplier = 44.1;
|
||||||
load_xm(aica_clock_multiplier);
|
load_xm(aica_clock_multiplier);
|
||||||
graphics_init();
|
graphics_init();
|
||||||
|
graphics_scene_init();
|
||||||
|
|
||||||
test_pattern();
|
test_pattern();
|
||||||
|
|
||||||
|
13
src/scene/scene.hpp
Normal file
13
src/scene/scene.hpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "holly/region_array.hpp"
|
||||||
|
|
||||||
|
namespace scene {
|
||||||
|
|
||||||
|
struct scene {
|
||||||
|
const uint32_t ta_alloc;
|
||||||
|
const struct opb_size opb_size;
|
||||||
|
void (* const transfer)(ta_parameter_writer& writer);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -22,8 +22,7 @@ static inline int round_up(int n, int m)
|
|||||||
return n + m - rem;
|
return n + m - rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace tracker {
|
namespace scene::tracker::channel_status {
|
||||||
namespace channel_status {
|
|
||||||
|
|
||||||
void transfer(ta_parameter_writer& writer, int x, int y)
|
void transfer(ta_parameter_writer& writer, int x, int y)
|
||||||
{
|
{
|
||||||
@ -100,4 +99,3 @@ void transfer(ta_parameter_writer& writer, int x, int y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
#include "holly/ta_parameter.hpp"
|
#include "holly/ta_parameter.hpp"
|
||||||
|
|
||||||
namespace tracker {
|
namespace scene::tracker::channel_status {
|
||||||
namespace channel_status {
|
|
||||||
void transfer(ta_parameter_writer& writer, int x, int y);
|
void transfer(ta_parameter_writer& writer, int x, int y);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -172,8 +172,7 @@ static void transfer_line(ta_parameter_writer& writer, int line_index, int x, in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace tracker {
|
namespace scene::tracker::notes {
|
||||||
namespace notes {
|
|
||||||
|
|
||||||
void borders(ta_parameter_writer& writer, int x, int y)
|
void borders(ta_parameter_writer& writer, int x, int y)
|
||||||
{
|
{
|
||||||
@ -250,4 +249,3 @@ void transfer_middle_line(ta_parameter_writer& writer, float x, float y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -2,12 +2,10 @@
|
|||||||
|
|
||||||
#include "holly/ta_parameter.hpp"
|
#include "holly/ta_parameter.hpp"
|
||||||
|
|
||||||
namespace tracker {
|
namespace scene::tracker::notes {
|
||||||
namespace notes {
|
|
||||||
|
|
||||||
void borders(ta_parameter_writer& writer, int x, int y);
|
void borders(ta_parameter_writer& writer, int x, int y);
|
||||||
void transfer_lines(ta_parameter_writer& writer, int x, int y);
|
void transfer_lines(ta_parameter_writer& writer, int x, int y);
|
||||||
void transfer_middle_line(ta_parameter_writer& writer, float x, float y);
|
void transfer_middle_line(ta_parameter_writer& writer, float x, float y);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
#include "../../ta_parameter.hpp"
|
#include "holly/ta_bits.hpp"
|
||||||
|
|
||||||
|
#include "ta_parameter.hpp"
|
||||||
|
|
||||||
#include "notes.hpp"
|
#include "notes.hpp"
|
||||||
#include "channel_status.hpp"
|
#include "channel_status.hpp"
|
||||||
|
#include "scene/scene.hpp"
|
||||||
|
|
||||||
namespace tracker {
|
namespace scene::tracker {
|
||||||
namespace scene {
|
|
||||||
|
|
||||||
void transfer(ta_parameter_writer& writer)
|
void transfer(ta_parameter_writer& writer)
|
||||||
{
|
{
|
||||||
@ -44,7 +46,5 @@ void transfer(ta_parameter_writer& writer)
|
|||||||
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);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,22 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
namespace tracker {
|
namespace scene::tracker {
|
||||||
namespace scene {
|
|
||||||
void transfer(ta_parameter_writer& writer);
|
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,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user