From 404a85e7ab39e26a5ac9d0fba470a53fd5cb959f Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 8 Jun 2021 11:21:37 +0200 Subject: Add old sequencer logic and input control --- src/main.c | 65 +++++--------------------------------------------------------- 1 file changed, 5 insertions(+), 60 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index b14fbed..a322df2 100644 --- a/src/main.c +++ b/src/main.c @@ -13,6 +13,7 @@ WITH REGARD TO THIS SOFTWARE. #include "filesystem.c" #include "renderer.c" +#include "sequencer.c" // // Config parameters. @@ -37,11 +38,14 @@ WITH REGARD TO THIS SOFTWARE. txt_position((PROF_SHOW_X), (PROF_SHOW_Y)+1);\ txt_printf("FLIP: %lu ", flip_cycles);\ txt_position((PROF_SHOW_X), (PROF_SHOW_Y)+2);\ + txt_printf("INPUT: %lu ", input_cycles);\ + txt_position((PROF_SHOW_X), (PROF_SHOW_Y)+3);\ txt_printf("FRAME: %lu ", frame_counter);\ frame_counter++;\ } while (0) #define PROF_INIT() \ u32 frame_counter = 0;\ + u32 input_cycles = 0;\ u32 eval_cycles = 0;\ u32 flip_cycles = 0; #else @@ -50,66 +54,6 @@ WITH REGARD TO THIS SOFTWARE. #define PROF_INIT() #endif -#define TRIG_W 15 -#define TRIG_H 24 -#define TRIG_START_X 66 -#define TRIG_START_Y 90 -#define TRIG_OFFSET_X (TRIG_W + 4) -#define TRIG_OFFSET_Y (TRIG_H + 7) - -void -draw_triggers(void) { - for (size_t i = 0; i < 8; i++) { - size_t x0 = TRIG_START_X + TRIG_OFFSET_X * i; - size_t x1 = TRIG_START_X + TRIG_W + TRIG_OFFSET_X * i; - size_t y0 = TRIG_START_Y; - size_t y1 = TRIG_START_Y + TRIG_H; - draw_rect(x0, y0, x1, y1, 1); - } - for (size_t i = 0; i < 8; i++) { - size_t x0 = TRIG_START_X + TRIG_OFFSET_X * i; - size_t x1 = TRIG_START_X + TRIG_W + TRIG_OFFSET_X * i; - size_t y0 = TRIG_START_Y + TRIG_OFFSET_Y; - size_t y1 = TRIG_START_Y + TRIG_H + TRIG_OFFSET_Y; - draw_rect(x0, y0, x1, y1, 1); - } -} - -#define CHAN_START_X 35 -#define CHAN_START_Y 90 -#define CHAN_OFFSET_Y 12 - -void -draw_channels(void) { - // Contains 5 channel buttons: Ch. 1-4 + FM. We are only drawing the DMG - // channels for now, since FM may take some time to develop. - u32 channel_buttons[] = { - 0xff017111, 0x117101ff, 0xff008585, 0x879500ff, - 0x0f080808, 0x0808080f, 0xff01b989, 0x89b901ff, - 0xff004242, 0x434a00ff, 0x0f080909, 0x0909080f, - 0xff015d45, 0xc55d01ff, 0xff00a1a1, 0xa1a500ff, - 0x0f080a0a, 0x0a0a080f, 0xff015d45, 0xc55d01ff, - 0xff00a1a1, 0xa12500ff, 0x0f080a0a, 0x0a0b080f, - 0xff01c141, 0xc14101ff, 0xff00151c, 0x141400ff, - 0x0f080808, 0x0808080f, - }; - Tile channel_tiles[3 * 4] = {0}; - unpack_tiles(channel_buttons, channel_tiles, 3 * 4); - size_t k = 0; - for (size_t i = 0; i < 4; i++) { - size_t y = CHAN_START_Y + i * CHAN_OFFSET_Y; - draw_tile(CHAN_START_X, y, channel_tiles + k++, false); - draw_tile(CHAN_START_X + 8, y, channel_tiles + k++, false); - draw_tile(CHAN_START_X + 16, y, channel_tiles + k++, false); - } -} - -void -sequencer_init(void) { - draw_triggers(); - draw_channels(); -} - int main(void) { // Adjust system wait times. SYSTEM_WAIT = SYSTEM_WAIT_CARTRIDGE; @@ -132,6 +76,7 @@ int main(void) { while (true) { bios_vblank_wait(); PROF(flip_buffer(), flip_cycles); + PROF(handle_sequencer_input(), input_cycles); PROF_SHOW(); } -- cgit v1.2.1