diff options
Diffstat (limited to 'src/GPU2D.h')
-rw-r--r-- | src/GPU2D.h | 69 |
1 files changed, 5 insertions, 64 deletions
diff --git a/src/GPU2D.h b/src/GPU2D.h index 0f59ae3..e9ce8e1 100644 --- a/src/GPU2D.h +++ b/src/GPU2D.h @@ -28,13 +28,15 @@ public: GPU2D(u32 num); virtual ~GPU2D() {} + GPU2D(const GPU2D&) = delete; + GPU2D& operator=(const GPU2D&) = delete; + void Reset(); void DoSavestate(Savestate* file); void SetEnabled(bool enable) { Enabled = enable; } void SetFramebuffer(u32* buf); - virtual void SetRenderSettings(bool accel) = 0; u8 Read8(u32 addr); u16 Read16(u32 addr); @@ -115,8 +117,8 @@ protected: u16 MasterBrightness; - u8 WindowMask[256] __attribute__((aligned (8))); - u8 OBJWindow[256] __attribute__((aligned (8))); + alignas(8) u8 WindowMask[256]; + alignas(8) u8 OBJWindow[256]; void UpdateMosaicCounters(u32 line); void CalculateWindowMask(u32 line); @@ -124,65 +126,4 @@ protected: virtual void MosaicXSizeChanged() = 0; }; -class GPU2D_Soft : public GPU2D -{ -public: - GPU2D_Soft(u32 num); - ~GPU2D_Soft() override {} - - void SetRenderSettings(bool accel) override; - - void DrawScanline(u32 line) override; - void DrawSprites(u32 line) override; - void VBlankEnd() override; - -protected: - void MosaicXSizeChanged() override; - -private: - bool Accelerated; - - u32 BGOBJLine[256*3] __attribute__((aligned (8))); - u32* _3DLine; - - u32 OBJLine[256] __attribute__((aligned (8))); - u8 OBJIndex[256] __attribute__((aligned (8))); - - u32 NumSprites; - - u8 MosaicTable[16][256]; - u8* CurBGXMosaicTable; - u8* CurOBJXMosaicTable; - - u32 ColorBlend4(u32 val1, u32 val2, u32 eva, u32 evb); - u32 ColorBlend5(u32 val1, u32 val2); - u32 ColorBrightnessUp(u32 val, u32 factor); - u32 ColorBrightnessDown(u32 val, u32 factor); - u32 ColorComposite(int i, u32 val1, u32 val2); - - template<u32 bgmode> void DrawScanlineBGMode(u32 line); - void DrawScanlineBGMode6(u32 line); - void DrawScanlineBGMode7(u32 line); - void DrawScanline_BGOBJ(u32 line); - - static void DrawPixel_Normal(u32* dst, u16 color, u32 flag); - static void DrawPixel_Accel(u32* dst, u16 color, u32 flag); - - typedef void (*DrawPixel)(u32* dst, u16 color, u32 flag); - - void DrawBG_3D(); - template<bool mosaic, DrawPixel drawPixel> void DrawBG_Text(u32 line, u32 bgnum); - template<bool mosaic, DrawPixel drawPixel> void DrawBG_Affine(u32 line, u32 bgnum); - template<bool mosaic, DrawPixel drawPixel> void DrawBG_Extended(u32 line, u32 bgnum); - template<bool mosaic, DrawPixel drawPixel> void DrawBG_Large(u32 line); - - void ApplySpriteMosaicX(); - template<DrawPixel drawPixel> - void InterleaveSprites(u32 prio); - template<bool window> void DrawSprite_Rotscale(u32 num, u32 boundwidth, u32 boundheight, u32 width, u32 height, s32 xpos, s32 ypos); - template<bool window> void DrawSprite_Normal(u32 num, u32 width, u32 height, s32 xpos, s32 ypos); - - void DoCapture(u32 line, u32 width); -}; - #endif |