blob: 4ee5bb4968be01ac00bf4228712662ad871942d9 [file]
#include "hardware-test.hpp"
#include "graphics/color.hpp"
#include <cmath>
using namespace blit;
#define SCREEN_WIDTH 160
#define SCREEN_HEIGHT 120
void init() {
set_screen_mode(ScreenMode::lores);
}
#define COL1 5
#define COL2 55
#define COL3 105
#define ROW1 38
#define ROW2 70
#define ROW3 102
void render(uint32_t time) {
char text_buf[100] = {0};
bool button_a = blit::buttons & blit::Button::A;
bool button_b = blit::buttons & blit::Button::B;
bool button_x = blit::buttons & blit::Button::X;
bool button_y = blit::buttons & blit::Button::Y;
bool button_m = blit::buttons & blit::Button::MENU;
bool button_h = blit::buttons & blit::Button::HOME;
bool dpad_l = blit::buttons & blit::Button::DPAD_LEFT;
bool dpad_r = blit::buttons & blit::Button::DPAD_RIGHT;
bool dpad_u = blit::buttons & blit::Button::DPAD_UP;
bool dpad_d = blit::buttons & blit::Button::DPAD_DOWN;
for(int b = 0; b < SCREEN_WIDTH; b++){
for(int v = 0; v < SCREEN_HEIGHT; v++){
screen.pen = blit::hsv_to_rgba(float(b) / (float)(SCREEN_WIDTH), 1.0f, float(v) / (float)(SCREEN_HEIGHT));
screen.pixel(Point(b, v));
}
}
vibration = 0.0f;
if(button_a){vibration += 0.1f;}
if(button_b){vibration += 0.2f;}
if(button_x){vibration += 0.3f;}
if(button_y){vibration += 0.4f;}
screen.pen = button_a ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("A", minimal_font, Point(150, 15));
screen.pen = button_b ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("B", minimal_font, Point(140, 25));
screen.pen = button_x ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("X", minimal_font, Point(140, 5));
screen.pen = button_y ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("Y", minimal_font, Point(130, 15));
screen.pen = dpad_r ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("R", minimal_font, Point(25, 15));
screen.pen = dpad_d ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("D", minimal_font, Point(15, 25));
screen.pen = dpad_u ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("U", minimal_font, Point(15, 5));
screen.pen = dpad_l ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("L", minimal_font, Point(5, 15));
screen.pen = button_m ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("MENU", minimal_font, Point(55, 15));
screen.pen = button_h ? Pen(255, 0, 0) : Pen(128, 128, 128);
screen.text("HOME", minimal_font, Point(85, 15));
screen.pen = Pen(255, 0, 0);
screen.pixel(Point(
(SCREEN_WIDTH / 2) + blit::joystick.x * 30,
(SCREEN_HEIGHT / 2) + blit::joystick.y * 30
));
screen.pen = Pen(255, 255, 255);
screen.text("Joystick:", minimal_font, Point(COL1, ROW1));
snprintf(text_buf, 100, "X: %d", (int)(blit::joystick.x * 1024));
screen.text(text_buf, minimal_font, Point(COL1, ROW1+7));
snprintf(text_buf, 100, "Y: %d", (int)(blit::joystick.y * 1024));
screen.text(text_buf, minimal_font, Point(COL1, ROW1+14));
screen.text("B:", minimal_font, Point(COL1, ROW1+21));
if(blit::buttons & blit::Button::JOYSTICK) {
screen.rectangle(Rect(
COL1+10, ROW1+22,
5, 5
));
}
screen.text("Tilt:", minimal_font, Point(COL2, ROW1));
snprintf(text_buf, 100, "X: %d", (int)(blit::tilt.x * 1024));
screen.text(text_buf, minimal_font, Point(COL2, ROW1+7));
snprintf(text_buf, 100, "Y: %d", (int)(blit::tilt.y * 1024));
screen.text(text_buf, minimal_font, Point(COL2, ROW1+14));
snprintf(text_buf, 100, "Z: %d", (int)(blit::tilt.z * 1024));
screen.text(text_buf, minimal_font, Point(COL2, ROW1+21));
blit::LED = Pen(
(float)((sin(blit::now() / 100.0f) + 1) / 2.0f),
(float)((cos(blit::now() / 100.0f) + 1) / 2.0f),
(float)((sin(blit::now() / 100.0f) + 1) / 2.0f)
);
screen.text("Bat VBUS:", minimal_font, Point(COL1, ROW3));
switch(battery_vbus_status){
case 0b00: // Unknown
screen.text("Unknown", minimal_font, Point(COL1, ROW3+7));
break;
case 0b01: // USB Host
screen.text("USB Host", minimal_font, Point(COL1, ROW3+7));
break;
case 0b10: // Adapter Port
screen.text("Adapter", minimal_font, Point(COL1, ROW3+7));
break;
case 0b11: // OTG
screen.text("OTG", minimal_font, Point(COL1, ROW3+7));
break;
}
screen.text("Bat Chrg:", minimal_font, Point(COL2, ROW3));
switch(battery_charge_status){
case 0b00: // Not Charging
screen.text("Nope", minimal_font, Point(COL2, ROW3+7));
break;
case 0b01: // Pre-charge
screen.text("Pre", minimal_font, Point(COL2, ROW3+7));
break;
case 0b10: // Fast Charging
screen.text("Fast", minimal_font, Point(COL2, ROW3+7));
break;
case 0b11: // Charge Done
screen.text("Done", minimal_font, Point(COL2, ROW3+7));
break;
}
snprintf(text_buf, 100, "%d", (int)(blit::battery * 1000.f));
screen.text("Battery:", minimal_font, Point(COL3, ROW3));
screen.text(text_buf, minimal_font, Point(COL3, ROW3+7));
snprintf(text_buf, 100, "%d", blit::battery_fault);
screen.text("Fault:", minimal_font, Point(COL3, ROW1));
screen.text(text_buf, minimal_font, Point(COL3, ROW1+7));
}
void update(uint32_t time) {
}