2016-07-07 00:35:40 +00:00
|
|
|
#include <cstdint>
|
|
|
|
|
|
|
|
enum class Colors : uint8_t
|
|
|
|
{
|
|
|
|
WHITE=0x01,
|
|
|
|
BLACK=0x00
|
|
|
|
};
|
|
|
|
|
2021-04-22 21:52:35 +00:00
|
|
|
inline volatile uint8_t &memory_loc(const uint16_t loc)
|
2016-07-07 00:35:40 +00:00
|
|
|
{
|
|
|
|
return *reinterpret_cast<volatile uint8_t *>(loc);
|
|
|
|
}
|
|
|
|
|
2021-04-22 21:52:35 +00:00
|
|
|
inline void decrement_border_color()
|
2016-07-07 00:35:40 +00:00
|
|
|
{
|
|
|
|
--memory_loc(0xd020);
|
|
|
|
}
|
|
|
|
|
2021-04-22 21:52:35 +00:00
|
|
|
inline void increment_border_color()
|
2016-07-07 00:35:40 +00:00
|
|
|
{
|
|
|
|
++memory_loc(0xd020);
|
|
|
|
}
|
|
|
|
|
2021-04-22 21:52:35 +00:00
|
|
|
inline bool joystick_down()
|
2016-07-07 00:35:40 +00:00
|
|
|
{
|
|
|
|
uint8_t joystick_state = memory_loc(0xDC00);
|
|
|
|
return (joystick_state & 0x2) == 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
const auto background_color = [](Colors col) {
|
|
|
|
memory_loc(0xd021) = static_cast<uint8_t>(col);
|
|
|
|
};
|
|
|
|
|
|
|
|
const auto border_color = [](Colors col) {
|
|
|
|
memory_loc(0xd020) = static_cast<uint8_t>(col);
|
|
|
|
};
|
|
|
|
|
|
|
|
background_color(Colors::WHITE);
|
|
|
|
|
|
|
|
while(true) {
|
|
|
|
if (joystick_down()) {
|
|
|
|
border_color(Colors::WHITE);
|
|
|
|
} else {
|
|
|
|
border_color(Colors::BLACK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|