SimpleDrawU/main.c
array-in-a-matrix ad058fbe93 remove comments
2024-02-20 18:32:11 -05:00

139 lines
4 KiB
C

#include <stdint.h>
#include <stdbool.h>
#include <malloc.h>
#include <coreinit/screen.h>
#include <vpad/input.h>
int main(int argc, char **argv)
{
WHBProcInit();
OSScreenInit();
size_t tvBufferSize = OSScreenGetBufferSizeEx(SCREEN_TV);
size_t drcBufferSize = OSScreenGetBufferSizeEx(SCREEN_DRC);
void *tvBuffer = memalign(0x100, tvBufferSize);
void *drcBuffer = memalign(0x100, drcBufferSize);
void quit(void)
{
if (tvBuffer)
free(tvBuffer);
if (drcBuffer)
free(drcBuffer);
OSScreenShutdown();
WHBProcShutdown();
}
if (!tvBuffer || !drcBuffer)
{
quit();
return 1;
}
OSScreenSetBufferEx(SCREEN_TV, tvBuffer);
OSScreenSetBufferEx(SCREEN_DRC, drcBuffer);
OSScreenEnableEx(SCREEN_TV, true);
OSScreenEnableEx(SCREEN_DRC, true);
VPADStatus status;
VPADReadError error;
VPADTouchData gamepadTouchScreen;
bool vpad_fatal = false;
uint32_t penColor = 0xFFFFFF00;
OSScreenPutFontEx(SCREEN_TV, 0, 0, "SimpleDrawU (TV).");
OSScreenPutFontEx(SCREEN_DRC, 0, 0, "SimpleDrawU (Gamepad).");
while (WHBProcIsRunning())
{
VPADRead(VPAD_CHAN_0, &status, 1, &error);
switch (error)
{
case VPAD_READ_SUCCESS:
{
VPADGetTPCalibratedPoint(VPAD_CHAN_0, &gamepadTouchScreen, &status.tpNormal);
break;
}
case VPAD_READ_NO_SAMPLES:
{
continue;
}
case VPAD_READ_INVALID_CONTROLLER:
{
vpad_fatal = true;
break;
}
default:
{
vpad_fatal = true;
break;
}
}
if (vpad_fatal)
break;
// clear screen
if ((status.trigger & VPAD_BUTTON_PLUS) && (status.trigger & VPAD_BUTTON_MINUS))
{
OSScreenClearBufferEx(SCREEN_TV, 0x00000000);
OSScreenClearBufferEx(SCREEN_DRC, 0x00000000);
}
// select color
if (status.trigger & VPAD_BUTTON_PLUS)
{
penColor = 0xFFFFFF00;
} // white
if (status.trigger & VPAD_BUTTON_MINUS)
{
penColor = 0x00000000;
} // black
if (status.trigger & VPAD_BUTTON_A)
{
penColor = 0xBF5B5B00;
} // red
if (status.trigger & VPAD_BUTTON_B)
{
penColor = 0xC6B95500;
} // yellow
if (status.trigger & VPAD_BUTTON_X)
{
penColor = 0x3C8D8800;
} // blue
if (status.trigger & VPAD_BUTTON_Y)
{
penColor = 0x86B46000;
} // green
// draw on screen
if (gamepadTouchScreen.touched)
{
OSScreenPutPixelEx(SCREEN_TV, gamepadTouchScreen.x - 1, gamepadTouchScreen.y - 1, penColor);
OSScreenPutPixelEx(SCREEN_TV, gamepadTouchScreen.x + 1, gamepadTouchScreen.y + 1, penColor);
OSScreenPutPixelEx(SCREEN_TV, gamepadTouchScreen.x, gamepadTouchScreen.y, penColor);
OSScreenPutPixelEx(SCREEN_TV, gamepadTouchScreen.x - 1, gamepadTouchScreen.y + 1, penColor);
OSScreenPutPixelEx(SCREEN_TV, gamepadTouchScreen.x + 1, gamepadTouchScreen.y - 1, penColor);
OSScreenPutPixelEx(SCREEN_DRC, gamepadTouchScreen.x + 1, gamepadTouchScreen.y + 1, penColor);
OSScreenPutPixelEx(SCREEN_DRC, gamepadTouchScreen.x - 1, gamepadTouchScreen.y - 1, penColor);
OSScreenPutPixelEx(SCREEN_DRC, gamepadTouchScreen.x, gamepadTouchScreen.y, penColor);
OSScreenPutPixelEx(SCREEN_DRC, gamepadTouchScreen.x - 1, gamepadTouchScreen.y + 1, penColor);
OSScreenPutPixelEx(SCREEN_DRC, gamepadTouchScreen.x + 1, gamepadTouchScreen.y - 1, penColor);
}
DCFlushRange(tvBuffer, tvBufferSize);
DCFlushRange(drcBuffer, drcBufferSize);
committing your graphics changes. */
OSScreenFlipBuffersEx(SCREEN_TV);
OSScreenFlipBuffersEx(SCREEN_DRC);
}
quit();
return 0;
}