summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2022-08-26 21:51:15 -0400
committer AJR <ajrhacker@users.noreply.github.com>2022-08-26 21:51:15 -0400
commit35fb63c8c35703ebe91ecedf7e7c825842a3d079 (patch)
tree644cd40c4609ea97b64110f146c3c491717563e1
parent0a2ee566cfa221d2e74bb665a0c7f787933fe29b (diff)
monon_color.cpp: Allocate large buffer at machine_start time
-rw-r--r--src/mame/misc/monon_color.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/mame/misc/monon_color.cpp b/src/mame/misc/monon_color.cpp
index 826ee22fc39..a3518b3c3ca 100644
--- a/src/mame/misc/monon_color.cpp
+++ b/src/mame/misc/monon_color.cpp
@@ -156,7 +156,7 @@ private:
void do_palette(int amount, int pal_to_use);
rgb_t m_linebuf[240];
- rgb_t m_vidbuffer[320 * 240];
+ std::unique_ptr<rgb_t[]> m_vidbuffer;
int16_t m_bufpos_y;
uint32_t m_bufpos_x;
uint8_t m_storeregs[0x20];
@@ -175,6 +175,8 @@ private:
void monon_color_state::machine_start()
{
+ m_vidbuffer = std::make_unique<rgb_t[]>(320 * 240);
+
save_item(NAME(m_dacbyte));
save_item(NAME(m_out4data));
save_item(NAME(m_out3data));
@@ -182,7 +184,7 @@ void monon_color_state::machine_start()
save_item(NAME(m_out1data));
save_item(NAME(m_out0data));
save_item(NAME(m_linebuf));
- save_item(NAME(m_vidbuffer));
+ save_pointer(NAME(m_vidbuffer), 320 * 240);
save_item(NAME(m_bufpos_x));
save_item(NAME(m_bufpos_y));
save_item(NAME(m_curpal));
@@ -225,7 +227,6 @@ void monon_color_state::machine_reset()
std::fill(std::begin(m_storeregs), std::end(m_storeregs), 0);
std::fill(std::begin(m_linebuf), std::end(m_linebuf), 0);
- std::fill(std::begin(m_vidbuffer), std::end(m_vidbuffer), 0);
m_sound_direction_iswrite = true;
m_sound_latch = 0;
@@ -238,7 +239,7 @@ void monon_color_state::machine_reset()
uint32_t monon_color_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- rgb_t* videoram = m_vidbuffer;
+ rgb_t* videoram = m_vidbuffer.get();
for (int y = 0; y < 240; y++)
{