speedrun edition
This commit is contained in:
parent
9bf58636f1
commit
7a538295cd
@ -10,6 +10,9 @@
|
|||||||
|
|
||||||
#include "texture/igh25_box_top_32.data.h"
|
#include "texture/igh25_box_top_32.data.h"
|
||||||
|
|
||||||
|
#include "sh7091/sh7091.hpp"
|
||||||
|
#include "sh7091/sh7091_bits.hpp"
|
||||||
|
|
||||||
#include "xm_player/playlist.hpp"
|
#include "xm_player/playlist.hpp"
|
||||||
|
|
||||||
#include "assert.h"
|
#include "assert.h"
|
||||||
@ -63,7 +66,10 @@ namespace demo {
|
|||||||
|
|
||||||
mat4x4 lizard::init()
|
mat4x4 lizard::init()
|
||||||
{
|
{
|
||||||
|
button_press = false;
|
||||||
|
y_press_count = 0;
|
||||||
platform_touch_count = 0;
|
platform_touch_count = 0;
|
||||||
|
total_tick = 0;
|
||||||
|
|
||||||
vx = -pi / 3.5;
|
vx = -pi / 3.5;
|
||||||
vy = -pi / 8;
|
vy = -pi / 8;
|
||||||
@ -98,6 +104,10 @@ namespace demo {
|
|||||||
|
|
||||||
void lizard::update()
|
void lizard::update()
|
||||||
{
|
{
|
||||||
|
if (end_platform->touched) {
|
||||||
|
sh7091.TMU.TSTR &= (~tmu::tstr::str1::counter_start) & 0xff; // stop TCNT1
|
||||||
|
}
|
||||||
|
|
||||||
lizard_rotation *= 0.8;
|
lizard_rotation *= 0.8;
|
||||||
|
|
||||||
lizard_turning_frame += lizard_rotation * 5;
|
lizard_turning_frame += lizard_rotation * 5;
|
||||||
@ -149,6 +159,7 @@ namespace demo {
|
|||||||
|
|
||||||
void lizard::y()
|
void lizard::y()
|
||||||
{
|
{
|
||||||
|
y_press_count += 1;
|
||||||
lizard_velocity = {0, 0, 0};
|
lizard_velocity = {0, 0, 0};
|
||||||
if (last_platform1 == nullptr) {
|
if (last_platform1 == nullptr) {
|
||||||
lizard_position = {2.5, 1, 2.5};
|
lizard_position = {2.5, 1, 2.5};
|
||||||
@ -164,6 +175,18 @@ namespace demo {
|
|||||||
|
|
||||||
void lizard::a()
|
void lizard::a()
|
||||||
{
|
{
|
||||||
|
if (!button_press) {
|
||||||
|
button_press = true;
|
||||||
|
|
||||||
|
sh7091.TMU.TSTR &= (~tmu::tstr::str1::counter_start) & 0xff; // stop TCNT1
|
||||||
|
sh7091.TMU.TOCR = tmu::tocr::tcoe::tclk_is_external_clock_or_input_capture;
|
||||||
|
sh7091.TMU.TCR1 = tmu::tcr1::tpsc::p_phi_1024; // 1024 / 50MHz = 20.48 μs
|
||||||
|
sh7091.TMU.TCOR1 = 0xffff'ffff;
|
||||||
|
sh7091.TMU.TCNT1 = 0xffff'ffff;
|
||||||
|
sh7091.TMU.TSTR |= tmu::tstr::str1::counter_start;
|
||||||
|
|
||||||
|
total_tick = 0xffff'ffff;
|
||||||
|
}
|
||||||
//lizard_velocity.y -= 0.01;
|
//lizard_velocity.y -= 0.01;
|
||||||
if (collided) {
|
if (collided) {
|
||||||
lizard_velocity.y = 30;
|
lizard_velocity.y = 30;
|
||||||
@ -280,7 +303,17 @@ namespace demo {
|
|||||||
font::ter_u12n.draw_string(writer, status_p, "score:", 0xffffffff);
|
font::ter_u12n.draw_string(writer, status_p, "score:", 0xffffffff);
|
||||||
//font::ter_u12n.draw_float(writer, status_p, (float)last_drawn_frame, 0xffffffff, 10);
|
//font::ter_u12n.draw_float(writer, status_p, (float)last_drawn_frame, 0xffffffff, 10);
|
||||||
status_p.x += font::ter_u12n.hori_advance * 7;
|
status_p.x += font::ter_u12n.hori_advance * 7;
|
||||||
font::ter_u12n.draw_int(writer, status_p, (float)platform_touch_count, 0xffffffff, 4);
|
font::ter_u12n.draw_int(writer, status_p, platform_touch_count, 0xffffffff, 4);
|
||||||
|
|
||||||
|
vec3 status_q = vec3(framebuffer::framebuffer.px_width - font::ter_u12n.hori_advance * 15, framebuffer::framebuffer.px_height - 24, 10);
|
||||||
|
font::ter_u12n.draw_string(writer, status_q, "y presses:", 0xffffffff);
|
||||||
|
status_q.x += font::ter_u12n.hori_advance * 11;
|
||||||
|
font::ter_u12n.draw_int(writer, status_q, y_press_count, 0xffffffff, 0);
|
||||||
|
|
||||||
|
vec3 status_r = vec3(framebuffer::framebuffer.px_width - font::ter_u12n.hori_advance * 15, framebuffer::framebuffer.px_height - (24 + font::ter_u12n.height), 10);
|
||||||
|
font::ter_u12n.draw_string(writer, status_r, "time:", 0xffffffff);
|
||||||
|
float time = (float)(0xffffffff - sh7091.TMU.TCNT1) * (0.020480f / 1000.f);
|
||||||
|
font::ter_u12n.draw_float(writer, status_r, time, 0xffffffff, 12);
|
||||||
|
|
||||||
const int height_2 = (font::ter_u32n.height * (emulator_speech_lines + 2)) >> 1;
|
const int height_2 = (font::ter_u32n.height * (emulator_speech_lines + 2)) >> 1;
|
||||||
const int y = framebuffer_height_2 - height_2;
|
const int y = framebuffer_height_2 - height_2;
|
||||||
|
@ -17,7 +17,10 @@ namespace demo {
|
|||||||
float lizard_walking_frame;
|
float lizard_walking_frame;
|
||||||
float lizard_turning_frame;
|
float lizard_turning_frame;
|
||||||
int platform_touch_count;
|
int platform_touch_count;
|
||||||
|
int y_press_count;
|
||||||
int end_platform_tick;
|
int end_platform_tick;
|
||||||
|
int total_tick;
|
||||||
|
bool button_press;
|
||||||
|
|
||||||
int last_cover_texture_offset;
|
int last_cover_texture_offset;
|
||||||
float cover_ix_transition;
|
float cover_ix_transition;
|
||||||
|
@ -83,10 +83,10 @@ namespace font {
|
|||||||
int32_t whole = num;
|
int32_t whole = num;
|
||||||
offset += unparse_base10_unsigned(&s[offset], whole, 0, 0);
|
offset += unparse_base10_unsigned(&s[offset], whole, 0, 0);
|
||||||
s[offset++] = '.';
|
s[offset++] = '.';
|
||||||
int32_t fraction = (int32_t)((num - (float)whole) * 1000000000.0);
|
int32_t fraction = (int32_t)((num - (float)whole) * 10.0);
|
||||||
if (fraction < 0)
|
if (fraction < 0)
|
||||||
fraction = -fraction;
|
fraction = -fraction;
|
||||||
offset += unparse_base10_unsigned(&s[offset], fraction, 9, '0');
|
offset += unparse_base10_unsigned(&s[offset], fraction, 1, '0');
|
||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ namespace graphics {
|
|||||||
if (last[port_ix].a != a && a) current_scene->a();
|
if (last[port_ix].a != a && a) current_scene->a();
|
||||||
if (b) current_scene->b();
|
if (b) current_scene->b();
|
||||||
if (last[port_ix].x != x && x) current_scene->x();
|
if (last[port_ix].x != x && x) current_scene->x();
|
||||||
if (y) current_scene->y();
|
if (last[port_ix].y != y && y) current_scene->y();
|
||||||
|
|
||||||
if (ra) current_scene->ra();
|
if (ra) current_scene->ra();
|
||||||
if (la) current_scene->la();
|
if (la) current_scene->la();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user