From 4b9369e9084a7f3fee47c40a1bb71e50529eefd3 Mon Sep 17 00:00:00 2001 From: spicyjpeg Date: Sun, 21 May 2023 18:17:01 +0200 Subject: Refactor hello and cppdemo examples, fix cdxa --- examples/beginner/cppdemo/main.cpp | 151 ------------------------------------- 1 file changed, 151 deletions(-) delete mode 100644 examples/beginner/cppdemo/main.cpp (limited to 'examples/beginner/cppdemo/main.cpp') diff --git a/examples/beginner/cppdemo/main.cpp b/examples/beginner/cppdemo/main.cpp deleted file mode 100644 index f55f952..0000000 --- a/examples/beginner/cppdemo/main.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/* Work in progress example, need to add comments. - * - * Basically a quick little example that showcases C++ classes are - * functioning in PSn00bSDK. - Lameguy64 - * - * First written in December 18, 2020. - * - * Changelog: - * - * May 11, 2023 - Updated the example to use C++ standard library headers, - * renamed the class and cleaned up some methods. - * May 10, 2021 - Variable types updated for psxgpu.h changes. - * - */ - -#include -#include -#include -#include -#include -#include - -/* Example class */ - -class RenderContext { -private: - std::uint32_t *_ot[2]; - std::uint8_t *_pri[2]; - std::uint8_t *_nextpri; - - int _ot_count, _db; - - DISPENV _disp[2]; - DRAWENV _draw[2]; - -public: - RenderContext(std::size_t ot_len = 8, std::size_t pri_len = 8192); - ~RenderContext(void); - void setupBuffers(int w, int h, int r, int g, int b); - void flip(void); - - template inline T *addPrimitive(void) { - auto pri = reinterpret_cast(_nextpri); - addPrim(_ot[_db], pri); - - _nextpri += sizeof(T); - return pri; - } -}; - -RenderContext::RenderContext(std::size_t ot_len, std::size_t pri_len) { - _ot[0] = new std::uint32_t[ot_len]; - _ot[1] = new std::uint32_t[ot_len]; - - _db = 0; - _ot_count = ot_len; - ClearOTagR(_ot[0], _ot_count); - ClearOTagR(_ot[1], _ot_count); - - _pri[0] = new std::uint8_t[pri_len]; - _pri[1] = new std::uint8_t[pri_len]; - - _nextpri = _pri[0]; - - std::printf("RenderContext::RenderContext: Buffers allocated.\n"); -} - -RenderContext::~RenderContext(void) { - delete[] _ot[0]; - delete[] _ot[1]; - - delete[] _pri[0]; - delete[] _pri[1]; - - std::printf("RenderContext::RenderContext: Buffers freed.\n"); -} - -void RenderContext::setupBuffers(int w, int h, int r, int g, int b) { - SetDefDispEnv(&_disp[0], 0, h, w, h); - SetDefDispEnv(&_disp[1], 0, 0, w, h); - SetDefDrawEnv(&_draw[0], 0, 0, w, h); - SetDefDrawEnv(&_draw[1], 0, h, w, h); - - setRGB0(&_draw[0], r, g, b); - _draw[0].isbg = 1; - _draw[0].dtd = 1; - - setRGB0(&_draw[1], r, g, b); - _draw[1].isbg = 1; - _draw[1].dtd = 1; - - PutDispEnv(&_disp[0]); - PutDrawEnv(&_draw[0]); -} - -void RenderContext::flip(void) { - DrawSync(0); - VSync(0); - - _db ^= 1; - - PutDispEnv(&_disp[_db]); - PutDrawEnv(&_draw[_db]); - - DrawOTag(_ot[_db ^ 1] + _ot_count - 1); - ClearOTagR(_ot[_db], _ot_count); - - _nextpri = _pri[_db]; -} - -/* Main */ - -static constexpr int SCREEN_XRES = 320; -static constexpr int SCREEN_YRES = 240; - -static constexpr int BGCOLOR_R = 63; -static constexpr int BGCOLOR_G = 0; -static constexpr int BGCOLOR_B = 127; - -int main(int argc, const char **argv) { - ResetGraph(0); - SetDispMask(1); - - RenderContext ctx; - ctx.setupBuffers(SCREEN_XRES, SCREEN_YRES, BGCOLOR_R, BGCOLOR_G, BGCOLOR_B); - - int x = 0, y = 0; - int dx = 1, dy = 1; - - for (;;) { - // Update the position and velocity of the bouncing square. - if (x < 0 || x > (SCREEN_XRES - 64)) - dx = -dx; - if (y < 0 || y > (SCREEN_YRES - 64)) - dy = -dy; - - x += dx; - y += dy; - - // Draw the square. - auto tile = ctx.addPrimitive(); - setTile(tile); - setXY0 (tile, x, y); - setWH (tile, 64, 64); - setRGB0(tile, 255, 255, 0); - - ctx.flip(); - } - - return 0; -} -- cgit v1.2.3