13static uint16_t *
const vram = (uint16_t *)0x8c000000;
14static const constexpr unsigned int width = 320;
15static const constexpr unsigned int height = 528;
17void line(
unsigned int x1,
unsigned int y1,
unsigned int x2,
unsigned int y2, uint16_t color);
18void vline(
unsigned int x,
unsigned int y1,
unsigned int y2, uint16_t color);
19void triangle(
unsigned int x0,
unsigned int y0,
unsigned int x1,
unsigned int y1,
unsigned int x2,
unsigned int y2, uint16_t colorFill, uint16_t colorLine);
20void fillScreen(uint16_t color);
22static inline __attribute__((pure)) uint16_t
constexpr color(uint8_t R, uint8_t G, uint8_t B) {
23 return (((R<<8) & 0xF800) |
28static inline void setPixel(
unsigned int x,
unsigned int y, uint32_t color) {
29 if(x < width && y < height)
30 vram[width*y + x] = color;
36#pragma GCC diagnostic push
38#pragma GCC diagnostic ignored "-Wprio-ctor-dtor"
40__attribute__((constructor(99), used))
void calcInit(
void);
41__attribute__((destructor(99), used))
void calcExit(
void);
42#pragma GCC diagnostic pop
47__attribute__((access(write_only, 1), access(write_only, 2)))
49void getKey(uint32_t *key1, uint32_t *key2);
52 KEY_SHIFT = (int)0x80000000,
53 KEY_CLEAR = 0x00020000,
54 KEY_BACKSPACE = 0x00000080,
55 KEY_LEFT = 0x00004000,
56 KEY_RIGHT = 0x00008000,
58 KEY_POWER = 0x00000040,
59 KEY_DIVIDE = 0x40000000,
60 KEY_MULTIPLY = 0x20000000,
61 KEY_SUBTRACT = 0x10000000,
71 KEY_KEYBOARD = (int)0x80000000,
73 KEY_DOWN = 0x00400000,
74 KEY_EQUALS = 0x00000080,
77 KEY_LEFT_BRACKET = 0x00000020,
78 KEY_RIGHT_BRACKET = 0x00000010,
79 KEY_COMMA = 0x00000008,
80 KEY_NEGATIVE = 0x00000004,
96__attribute__((access(write_only, 1), access(write_only, 2)))
98void getKey(Keys1 *key1, Keys2 *key2) {
101 *key1 =
static_cast<Keys1
>(k1);
102 *key2 =
static_cast<Keys2
>(k2);
105static inline __attribute__((pure))
bool constexpr testKey(uint32_t key1, uint32_t, Keys1 key) {
109static inline __attribute__((pure))
bool constexpr testKey(uint32_t, uint32_t key2, Keys2 key) {