Skip to content

Commit 20a221a

Browse files
committed
Have the TileViewer use MSXPalette
1 parent 157b303 commit 20a221a

File tree

6 files changed

+24
-88
lines changed

6 files changed

+24
-88
lines changed

src/PaletteView.ui

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,9 @@
290290
</item>
291291
<item>
292292
<widget class="QCheckBox" name="cb_autosync">
293+
<property name="toolTip">
294+
<string>autosync to openMSX</string>
295+
</property>
293296
<property name="text">
294297
<string>Autosync</string>
295298
</property>

src/TileViewer.cpp

Lines changed: 4 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,6 @@
77
#include <QMessageBox>
88

99

10-
// static to feed to PaletteDialog and be used when VDP colors aren't selected
11-
uint8_t TileViewer::defaultPalette[32] = {
12-
// RB G
13-
0x00, 0,
14-
0x00, 0,
15-
0x11, 6,
16-
0x33, 7,
17-
0x17, 1,
18-
0x27, 3,
19-
0x51, 1,
20-
0x27, 6,
21-
0x71, 1,
22-
0x73, 3,
23-
0x61, 6,
24-
0x64, 6,
25-
0x11, 4,
26-
0x65, 2,
27-
0x55, 5,
28-
0x77, 7,
29-
};
3010

3111

3212
TileViewer::TileViewer(QWidget* parent)
@@ -43,7 +23,6 @@ TileViewer::TileViewer(QWidget* parent)
4323
connect(cb_color0, &QCheckBox::stateChanged, this, &TileViewer::on_cb_color0_stateChanged);
4424
connect(useVDPRegisters, &QCheckBox::stateChanged, this, &TileViewer::on_useVDPRegisters_stateChanged);
4525

46-
connect(editPaletteButton, &QPushButton::clicked, this, &TileViewer::on_editPaletteButton_clicked);
4726
connect(useVDPPalette, &QCheckBox::stateChanged, this, &TileViewer::on_useVDPPalette_stateChanged);
4827
connect(zoomLevel, qOverload<double>(&QDoubleSpinBox::valueChanged), this, &TileViewer::on_zoomLevel_valueChanged);
4928

@@ -83,7 +62,7 @@ TileViewer::TileViewer(QWidget* parent)
8362
scrollArea->setWidget(imageWidget);
8463

8564
const auto* vram = VDPDataStore::instance().getVramPointer();
86-
const auto* palette = VDPDataStore::instance().getPalettePointer();
65+
auto* palette = VDPDataStore::instance().getPalette(paletteVDP);
8766
//imageWidget->setNameTableAddress(0);
8867
//imageWidget->setPatternTableAddress(0);
8968
//imageWidget->setColorTableAddress(0);
@@ -106,7 +85,7 @@ TileViewer::TileViewer(QWidget* parent)
10685
void TileViewer::VDPDataStoreDataRefreshed()
10786
{
10887
if (useVDPPalette->isChecked()) {
109-
imageWidget->setPaletteSource(VDPDataStore::instance().getPalettePointer());
88+
imageWidget->setPaletteSource(VDPDataStore::instance().getPalette(paletteVDP));
11089
}
11190
decodeVDPregs();
11291
}
@@ -336,33 +315,14 @@ void TileViewer::on_useVDPRegisters_stateChanged(int state)
336315
cb_color0->setEnabled(useManual);
337316
}
338317

339-
void TileViewer::on_editPaletteButton_clicked(bool /*checked*/)
340-
{
341-
auto* p = new PaletteDialog();
342-
p->setPalette(defaultPalette);
343-
p->setAutoSync(true);
344-
connect(p, &PaletteDialog::paletteSynced, imageWidget, &VramTiledView::refresh);
345-
connect(p, &PaletteDialog::paletteSynced, this, &TileViewer::update_label_characterimage);
346-
p->show();
347-
//useVDPPalette->setChecked(false);
348-
//QMessageBox::information(
349-
// this,
350-
// "Not yet implemented",
351-
// "Sorry, the palette editor is not yet implemented, "
352-
// "only disabling 'Use VDP palette registers' for now");
353-
}
354-
355318
void TileViewer::on_useVDPPalette_stateChanged(int state)
356319
{
357-
const uint8_t* palette = VDPDataStore::instance().getPalettePointer();
358320
if (state) {
359-
imageWidget->setPaletteSource(palette);
321+
imageWidget->setPaletteSource(VDPDataStore::instance().getPalette(paletteVDP));
360322
} else {
361-
if (palette) memcpy(defaultPalette, palette, 32);
362-
imageWidget->setPaletteSource(defaultPalette);
323+
imageWidget->setPaletteSource(VDPDataStore::instance().getPalette(paletteTiles));
363324
}
364325
imageWidget->refresh();
365-
editPaletteButton->setEnabled(!state);
366326
}
367327

368328
void TileViewer::on_zoomLevel_valueChanged(double d)

src/TileViewer.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ class TileViewer : public QDialog, private Ui::TileViewer
2828
void on_cb_color0_stateChanged(int state);
2929
void on_useVDPRegisters_stateChanged(int state);
3030

31-
void on_editPaletteButton_clicked(bool checked);
3231
void on_useVDPPalette_stateChanged(int state);
3332
void on_zoomLevel_valueChanged(double d);
3433

@@ -53,7 +52,6 @@ class TileViewer : public QDialog, private Ui::TileViewer
5352
int mouseOverY = 0;
5453
int mouseOverChar = 0;
5554

56-
static uint8_t defaultPalette[32];
5755
};
5856

5957
#endif // TILEVIEWER_H

src/TileViewer.ui

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>911</width>
9+
<width>1070</width>
1010
<height>756</height>
1111
</rect>
1212
</property>
@@ -50,8 +50,8 @@
5050
<rect>
5151
<x>0</x>
5252
<y>0</y>
53-
<width>615</width>
54-
<height>369</height>
53+
<width>695</width>
54+
<height>368</height>
5555
</rect>
5656
</property>
5757
</widget>
@@ -559,16 +559,6 @@ NT: $196E (base+$16E)</string>
559559
</item>
560560
<item>
561561
<layout class="QVBoxLayout" name="verticalLayout_5">
562-
<item>
563-
<widget class="QPushButton" name="editPaletteButton">
564-
<property name="enabled">
565-
<bool>false</bool>
566-
</property>
567-
<property name="text">
568-
<string>Edit palette..</string>
569-
</property>
570-
</widget>
571-
</item>
572562
<item>
573563
<widget class="QCheckBox" name="useVDPPalette">
574564
<property name="text">

src/VramTiledView.cpp

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "VramTiledView.h"
22
#include "VDPDataStore.h"
3+
#include "MSXPalette.h"
34
#include "Convert.h"
45
#include "ranges.h"
56
#include <QPainter>
@@ -10,7 +11,8 @@ VramTiledView::VramTiledView(QWidget* parent)
1011
: QWidget(parent)
1112
, image(512, 512, QImage::Format_RGB32)
1213
{
13-
ranges::fill(msxPalette, qRgb(80, 80, 80));
14+
palette = nullptr;
15+
setPaletteSource(VDPDataStore::instance().getPalette(paletteVDP));
1416
setZoom(1.0f);
1517

1618
// Mouse update events when mouse is moved over the image, Quibus likes this
@@ -80,21 +82,6 @@ void VramTiledView::decode()
8082
update();
8183
}
8284

83-
void VramTiledView::decodePalette()
84-
{
85-
if (!palette) return;
86-
//printf("VramTiledView::decodePallet palletpointer %p \n", palette);
87-
88-
for (int i = 0; i < 16; ++i) {
89-
int r = (palette[2 * i + 0] & 0xf0) >> 4;
90-
int b = (palette[2 * i + 0] & 0x0f);
91-
int g = (palette[2 * i + 1] & 0x0f);
92-
93-
auto scale = [](int x) { return (x >> 1) | (x << 2) | (x << 5); };
94-
msxPalette[i] = qRgb(scale(r), scale(g), scale(b));
95-
//printf("VramTiledView::decodePallet color %d => r %d g %d b %d \n", i, r, g, b);
96-
}
97-
}
9885

9986
void VramTiledView::decodePatternTable()
10087
{
@@ -211,12 +198,7 @@ void VramTiledView::setPixel2x2(int x, int y, QRgb c)
211198
QRgb VramTiledView::getColor(int c)
212199
{
213200
// TODO do we need to look at the TP bit???
214-
return msxPalette[c ? c : (tpBit ? 0 : borderColor)];
215-
}
216-
217-
const uint8_t *VramTiledView::getPaletteSource() const
218-
{
219-
return palette;
201+
return palette->color(c ? c : (tpBit ? 0 : borderColor));
220202
}
221203

222204
int VramTiledView::getScreenMode() const
@@ -434,8 +416,7 @@ void VramTiledView::paintEvent(QPaintEvent* /*event*/)
434416

435417
void VramTiledView::refresh()
436418
{
437-
decodePalette();
438-
decode();
419+
decode();
439420
}
440421

441422
QString VramTiledView::byteAsPattern(uint8_t byte)
@@ -568,9 +549,13 @@ void VramTiledView::setColorTableAddress(int adr)
568549
decode();
569550
}
570551

571-
void VramTiledView::setPaletteSource(const uint8_t* adr)
552+
void VramTiledView::setPaletteSource(MSXPalette *adr)
572553
{
573554
if (palette == adr) return;
555+
if (palette) {
556+
disconnect(palette, &MSXPalette::paletteChanged, this, &VramTiledView::decode);
557+
}
574558
palette = adr;
559+
connect(palette, &MSXPalette::paletteChanged, this, &VramTiledView::decode);
575560
refresh();
576561
}

src/VramTiledView.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#include <cstdint>
1111
#include <optional>
1212

13+
class MSXPalette;
14+
1315
class VramTiledView : public QWidget
1416
{
1517
Q_OBJECT
@@ -23,7 +25,7 @@ class VramTiledView : public QWidget
2325
void setNameTableAddress(int adr);
2426
void setPatternTableAddress(int adr);
2527
void setColorTableAddress(int adr);
26-
void setPaletteSource(const uint8_t *adr);
28+
void setPaletteSource(MSXPalette *adr);
2729
void setBorderColor(int value);
2830
void setDrawGrid(bool value);
2931
void setTpBit(bool value);
@@ -59,7 +61,6 @@ class VramTiledView : public QWidget
5961
void paintEvent(QPaintEvent* e) override;
6062

6163
void decode();
62-
void decodePalette();
6364
void decodePatternTable();
6465
void decodeNameTable();
6566
void overLayNameTable();
@@ -83,10 +84,9 @@ class VramTiledView : public QWidget
8384
QString byteAsPattern(uint8_t byte);
8485

8586
private:
86-
QRgb msxPalette[16];
8787
QImage image;
8888
QPixmap pixImage;
89-
const uint8_t* palette = nullptr;
89+
MSXPalette* palette = nullptr;
9090
const uint8_t* vramBase = nullptr;
9191
float zoomFactor;
9292
bool drawGrid = true;

0 commit comments

Comments
 (0)