• R/O
  • HTTP
  • SSH
  • HTTPS

common_source_project-fm7: Commit

Common Source Code Project for Qt (a.k.a for FM-7).


Commit MetaInfo

Revision1a9e156197f199d3bbd1c9c17d94754773729abd (tree)
Time2018-11-05 21:57:03
AuthorK.Ohta <whatisthis.sowhat@gmai...>
CommiterK.Ohta

Log Message

[VM][X1][VRAM] Apply renderer to TEXT/(P)CG rendering.

Change Summary

Incremental Difference

--- a/source/src/vm/x1/display.cpp
+++ b/source/src/vm/x1/display.cpp
@@ -146,6 +146,10 @@ void DISPLAY::initialize()
146146 zpalette_pc[8 + 6] = zpalette_pc[16 + 0xff0];
147147 zpalette_pc[8 + 7] = zpalette_pc[16 + 0xfff];
148148 #endif
149+
150+ PrepareBitTransTableUint16(&bit_trans_table_b0, 0x01, 0x00);
151+ PrepareBitTransTableUint16(&bit_trans_table_r0, 0x02, 0x00);
152+ PrepareBitTransTableUint16(&bit_trans_table_g0, 0x04, 0x00);
149153 }
150154
151155 void DISPLAY::reset()
@@ -1135,11 +1139,16 @@ void DISPLAY::draw_text(int y)
11351139
11361140 if(attr & 0x80) {
11371141 // horizontal doubled char
1142+#if 0
11381143 d[ 0] = d[ 1] = ((b & 0x80) >> 7) | ((r & 0x80) >> 6) | ((g & 0x80) >> 5);
11391144 d[ 2] = d[ 3] = ((b & 0x40) >> 6) | ((r & 0x40) >> 5) | ((g & 0x40) >> 4);
11401145 d[ 4] = d[ 5] = ((b & 0x20) >> 5) | ((r & 0x20) >> 4) | ((g & 0x20) >> 3);
11411146 d[ 6] = d[ 7] = ((b & 0x10) >> 4) | ((r & 0x10) >> 3) | ((g & 0x10) >> 2);
1147+#else
1148+ ConvertRGBTo8ColorsUint8_Zoom2Left(r, g, b, d, &bit_trans_table_r0, &bit_trans_table_g0, &bit_trans_table_b0, 0);
1149+#endif
11421150 } else {
1151+#if 0
11431152 d[0] = ((b & 0x80) >> 7) | ((r & 0x80) >> 6) | ((g & 0x80) >> 5);
11441153 d[1] = ((b & 0x40) >> 6) | ((r & 0x40) >> 5) | ((g & 0x40) >> 4);
11451154 d[2] = ((b & 0x20) >> 5) | ((r & 0x20) >> 4) | ((g & 0x20) >> 3);
@@ -1148,6 +1157,9 @@ void DISPLAY::draw_text(int y)
11481157 d[5] = ((b & 0x04) >> 2) | ((r & 0x04) >> 1) | ((g & 0x04) >> 0);
11491158 d[6] = ((b & 0x02) >> 1) | ((r & 0x02) >> 0) | ((g & 0x02) << 1);
11501159 d[7] = ((b & 0x01) >> 0) | ((r & 0x01) << 1) | ((g & 0x01) << 2);
1160+#else
1161+ ConvertRGBTo8ColorsUint8(r, g, b, d, &bit_trans_table_r0, &bit_trans_table_g0, &bit_trans_table_b0, 0);
1162+#endif
11511163 }
11521164 prev_attr = attr;
11531165 }
@@ -1254,7 +1266,8 @@ void DISPLAY::draw_cg(int line, int plane)
12541266 int ofs_b = ofs + 0x0000;
12551267 int ofs_r = ofs + 0x4000;
12561268 int ofs_g = ofs + 0x8000;
1257-
1269+
1270+#if 0
12581271 for(int x = 0; x < hz_disp && x < width; x++) {
12591272 src &= 0x7ff;
12601273 uint8_t b = vram_ptr[ofs_b | src];
@@ -1271,6 +1284,28 @@ void DISPLAY::draw_cg(int line, int plane)
12711284 d[6] = ((b & 0x02) >> 1) | ((r & 0x02) >> 0) | ((g & 0x02) << 1);
12721285 d[7] = ((b & 0x01) >> 0) | ((r & 0x01) << 1) | ((g & 0x01) << 2);
12731286 }
1287+#else
1288+ _render_command_data_t cmd;
1289+ for(int i = 0; i < 3; i++) {
1290+ cmd.data[i] = vram_ptr;
1291+ cmd.baseaddress[i] = 0;
1292+ }
1293+ cmd.voffset[0] = ofs_b;
1294+ cmd.voffset[1] = ofs_r;
1295+ cmd.voffset[2] = ofs_g;
1296+ cmd.bit_trans_table[0] = &bit_trans_table_b0;
1297+ cmd.bit_trans_table[1] = &bit_trans_table_r0;
1298+ cmd.bit_trans_table[2] = &bit_trans_table_g0;
1299+ cmd.addrmask = 0xffffffff;
1300+ cmd.addrmask2 = 0x07ff;
1301+ cmd.begin_pos = src;
1302+ cmd.shift = 0;
1303+ int iwidth = (hz_disp > width) ? width : hz_disp;
1304+ uint8_t* d = &(cg[line][0]);
1305+ cmd.render_width = (iwidth <= 0) ? 0 : (uint32_t)iwidth;
1306+
1307+ Convert8ColorsToByte_Line(&cmd, d);
1308+#endif
12741309 }
12751310 }
12761311
--- a/source/src/vm/x1/display.h
+++ b/source/src/vm/x1/display.h
@@ -149,6 +149,10 @@ private:
149149 uint16_t jis2sjis(uint16_t jis);
150150
151151 int tmp_kanji_ptr;
152+
153+ _bit_trans_table_t bit_trans_table_b0 __attribute__((aligned(sizeof(uint16_vec8_t))));
154+ _bit_trans_table_t bit_trans_table_r0 __attribute__((aligned(sizeof(uint16_vec8_t))));
155+ _bit_trans_table_t bit_trans_table_g0 __attribute__((aligned(sizeof(uint16_vec8_t))));
152156 public:
153157 DISPLAY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
154158 {
Show on old repository browser