#include #include #include static ax_i8 const axd_logo[] = { 0x00u,0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u,0x00u, 0x00u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x00u, 0x00u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x07u,0x08u,0x09u,0x04u,0x04u, 0x04u, 0x0Cu,0x0Du,0x04u,0x04u,0x04u,0x05u,0x06u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x00u, 0x00u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x06u,0x07u,0x08u,0x09u,0x0Au,0x04u, 0x04u, 0x0Cu,0x0Du,0x0Eu,0x04u,0x10u,0x05u,0x06u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x00u, 0x00u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x05u,0x06u,0x04u,0x04u,0x04u,0x0Au,0x0Bu, 0x04u, 0x04u,0x0Du,0x0Eu,0x0Fu,0x10u,0x05u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x00u, 0x00u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x05u,0x06u,0x04u,0x04u,0x04u,0x0Au,0x0Bu, 0x04u, 0x04u,0x04u,0x0Eu,0x0Fu,0x10u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x00u, 0x00u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x05u,0x06u,0x07u,0x08u,0x09u,0x0Au,0x0Bu, 0x04u, 0x04u,0x0Du,0x0Eu,0x0Fu,0x10u,0x05u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x00u, 0x00u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x05u,0x06u,0x04u,0x04u,0x04u,0x0Au,0x0Bu, 0x04u, 0x0Cu,0x0Du,0x0Eu,0x04u,0x10u,0x05u,0x06u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x00u, 0x00u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x05u,0x06u,0x04u,0x04u,0x04u,0x0Au,0x0Bu, 0x04u, 0x0Cu,0x0Du,0x04u,0x04u,0x04u,0x05u,0x06u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x00u, 0x00u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x00u, 0x04u,0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u,0x04u, 0x04u,0x00u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x00u, 0x00u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x00u, 0x04u,0x04u,0x00u,0x00u,0x00u,0x04u,0x04u, 0x00u, 0x00u,0x04u,0x04u,0x04u,0x04u,0x04u,0x00u, 0x00u,0x04u, 0x04u,0x00u, 0x04u,0x03u,0x03u,0x03u,0x03u,0x02u,0x02u, 0x00u, 0x04u,0x02u,0x02u,0x02u,0x02u,0x02u,0x02u, 0x00u, 0x04u,0x03u,0x04u,0x00u,0x04u,0x03u,0x02u, 0x00u, 0x04u,0x04u,0x03u,0x03u,0x03u,0x02u,0x02u, 0x00u,0x04u, 0x04u,0x00u, 0x04u,0x03u,0x00u,0x00u,0x00u,0x03u,0x02u, 0x00u, 0x04u,0x02u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x04u,0x02u,0x02u,0x04u,0x02u,0x03u,0x02u, 0x00u, 0x04u,0x03u,0x00u,0x00u,0x00u,0x03u,0x02u, 0x00u,0x04u, 0x04u,0x00u, 0x04u,0x03u,0x00u,0x00u,0x00u,0x03u,0x02u, 0x00u, 0x04u,0x02u,0x02u,0x02u,0x00u,0x00u,0x00u, 0x00u, 0x04u,0x02u,0x00u,0x02u,0x00u,0x03u,0x02u, 0x00u, 0x04u,0x03u,0x00u,0x00u,0x00u,0x03u,0x02u, 0x00u,0x04u, 0x04u,0x00u, 0x04u,0x03u,0x00u,0x00u,0x00u,0x03u,0x02u, 0x00u, 0x04u,0x02u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x04u,0x02u,0x00u,0x00u,0x00u,0x03u,0x02u, 0x00u, 0x04u,0x03u,0x00u,0x00u,0x00u,0x03u,0x02u, 0x00u,0x04u, 0x04u,0x00u, 0x04u,0x03u,0x03u,0x03u,0x03u,0x02u,0x02u, 0x00u, 0x04u,0x03u,0x03u,0x03u,0x03u,0x03u,0x02u, 0x00u, 0x04u,0x02u,0x00u,0x00u,0x00u,0x03u,0x02u, 0x00u, 0x04u,0x02u,0x03u,0x03u,0x03u,0x02u,0x02u, 0x00u,0x04u, 0x04u,0x00u, 0x04u,0x02u,0x02u,0x02u,0x02u,0x02u,0x00u, 0x00u, 0x04u,0x02u,0x02u,0x02u,0x02u,0x02u,0x02u, 0x00u, 0x04u,0x02u,0x00u,0x00u,0x00u,0x02u,0x02u, 0x00u, 0x00u,0x02u,0x02u,0x02u,0x02u,0x02u,0x00u, 0x00u,0x04u, 0x04u,0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u,0x04u, 0x04u,0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u, 0x04u,0x04u,0x04u,0x04u,0x04u,0x04u,0x04u, 0x04u,0x04u, }; constexpr ax_i8 axd_logow = (0x7u * 0x4u) + (0x2u * 0x2u) + (0x1u * 0x3u); constexpr ax_i8 axd_logoh = (0x7u * 0x2u) + (0x2u * 0x2u) + (0x2u); static_assert(sizeof (axd_logo) == axd_logow * axd_logoh); ax_err ax_start(void) { axd_dat dat; axd_initdat(&dat); axd_initgfx(); ax_vsync(); ax_blnk(); ax_clrscrn1(dat.vaddr,0x0u); ax_plottex1(dat.vaddr,ax_scrnw3,axd_logo,ax_coord(ax_scrnw3,ax_scrnw3 / 0x2u - axd_logow / 0x2u,ax_scrnh3 / 0x2u - axd_logoh / 0x2u),axd_logow,axd_logoh); ax_key startkey; for (;;) { ax_keymap const keymap = ax_getkeymap(); startkey = ax_key_a; if (ax_chkkey(keymap,startkey)) { break; } startkey = ax_key_b; if (ax_chkkey(keymap,startkey)) { break; } startkey = ax_key_l; if (ax_chkkey(keymap,startkey)) { break; } startkey = ax_key_pade; if (ax_chkkey(keymap,startkey)) { break; } startkey = ax_key_padn; if (ax_chkkey(keymap,startkey)) { break; } startkey = ax_key_pads; if (ax_chkkey(keymap,startkey)) { break; } startkey = ax_key_padw; if (ax_chkkey(keymap,startkey)) { break; } startkey = ax_key_r; if (ax_chkkey(keymap,startkey)) { break; } startkey = ax_key_sel; if (ax_chkkey(keymap,startkey)) { break; } startkey = ax_key_start; if (ax_chkkey(keymap,startkey)) { break; } } ax_vsync(); ax_clrscrn1(dat.vaddr,0x0u); for (;;) { /* Wait for the key to be released. */ ax_keymap const keymap = ax_getkeymap(); if (!ax_chkkey(keymap,startkey)) { break; } } ax_clrscrn1(dat.vaddr,0x0u); bool const err = axd_loop(&dat); if (err) { for (ax_i01 px = 0x0u;px != 0x9600u;++px) { ax_plot1(dat.vaddr,px,dat.col); axd_chgcol(&dat,0x1u); } return ax_err_max; } return ax_err_ok; }