+ p = emu->get_screen_buffer(y + yy);
+ if(p == NULL) continue;
+ pp = p;
+ yoff = (y + yy) * 80;
+ for(int i = 0; i < 3; i++) {
+ cmd.voffset[i] = yoff;
+ }
+ int dpage;
+ bool window_inv = false;
+ uint32_t yoff_d;
+ dpage = vram_display_block;
+# if defined(_FM77AV40EX) || defined(_FM77AV40SX)
+ if(window_opened && (wy_low <= (y + yy)) && (wy_high > (y + yy))) {
+ if((wx_begin > 0) && (wx_begin < wx_end) && (wx_begin < 80)) {
+ // Window : left
+ cmd.begin_pos = 0;
+ window_inv = false;
+ int _wend = wx_end;
+ if(_wend >= 80) _wend = 80;
+ cmd.render_width = wx_begin;
+ yoff_d = (dpage != 0) ? 0x18000 : 0x00000;
+ for(int i = 0; i < 3; i++) {
+ cmd.baseaddress[i] = yoff_d + (i * 0x8000);
+ }
+ if(cmd.render_width > 0) {
+ if(cmd.render_width > 80) cmd.render_width = 80;
+ }
+ Render8Colors_Line(&cmd, p, NULL, false);
+
+ // Center
+ cmd.begin_pos = wx_begin;
+ cmd.render_width = _wend - wx_begin;
+ yoff_d = (dpage != 0) ? 0x00000 : 0x18000;
+ if(display_page_bak == 1) yoff_d += 0xc000;
+ for(int i = 0; i < 3; i++) {
+ cmd.baseaddress[i] = yoff_d + (i * 0x8000);
+ }
+ if(cmd.render_width > 0) {
+ if(cmd.render_width > 80) cmd.render_width = 80;
+ }
+ Render8Colors_Line(&cmd, &(p[cmd.begin_pos * 8]), NULL, false);
+ // Right
+ if(wx_end < 80) {
+ cmd.begin_pos = wx_end;
+ cmd.render_width = 80 - wx_end;
+ yoff_d = (dpage != 0) ? 0x18000 : 0x00000;
+ for(int i = 0; i < 3; i++) {
+ cmd.baseaddress[i] = yoff_d + (i * 0x8000);
+ }
+ if(cmd.render_width > 0) {
+ if(cmd.render_width > 80) cmd.render_width = 80;
+ }
+ Render8Colors_Line(&cmd, &(p[cmd.begin_pos * 8]), NULL, false);
+ }
+ continue;
+ } else if((wx_begin <= 0) && (wx_begin < wx_end) && (wx_end >= 0)) {
+ // Left
+ cmd.begin_pos = 0;
+ cmd.render_width = wx_end;
+ yoff_d = (dpage != 0) ? 0x00000 : 0x18000;
+ for(int i = 0; i < 3; i++) {
+ cmd.baseaddress[i] = yoff_d + (i * 0x8000);
+ }
+ if(cmd.render_width > 0) {
+ if(cmd.render_width > 80) cmd.render_width = 80;
+ }
+ if(cmd.render_width > 0) Render8Colors_Line(&cmd, &(p[cmd.begin_pos * 8]), NULL, false);
+ // Right
+ if(wx_end < 80) {
+ cmd.begin_pos = wx_end;
+ cmd.render_width = 80 - wx_end;
+ yoff_d = (dpage != 0) ? 0x18000 : 0x00000;
+ for(int i = 0; i < 3; i++) {
+ cmd.baseaddress[i] = yoff_d + (i * 0x8000);
+ }
+ if(cmd.render_width > 0) {
+ if(cmd.render_width > 80) cmd.render_width = 80;
+ }
+ Render8Colors_Line(&cmd, &(p[cmd.begin_pos * 8]), NULL, false);
+ }
+ continue;
+ }
+ }
+# endif
+ // Not Opened
+ cmd.begin_pos = 0;
+ cmd.render_width = 80;
+ yoff_d = (dpage != 0) ? 0x18000 : 0x00000;
+ for(int i = 0; i < 3; i++) {
+ cmd.baseaddress[i] = yoff_d + (i * 0x8000);
+ }
+ if(cmd.render_width > 0) {
+ if(cmd.render_width > 80) cmd.render_width = 80;
+ }
+ Render8Colors_Line(&cmd, &(p[cmd.begin_pos * 8]), NULL, false);
+ }
+ }
+ if(ff) force_update = false;
+ return;
+ } else if(display_mode == DISPLAY_MODE_256k) {
+ int ii;
+ //rgbmask = ~multimode_dispmask;
+ //
+ for(y = 0; y < 200; y += 4) {
+ for(yy = 0; yy < 4; yy++) {
+ if(!(vram_draw_table[y + yy] | ff)) continue;
+ vram_draw_table[y + yy] = false;
+#if !defined(FIXED_FRAMEBUFFER_SIZE)
+ p = emu->get_screen_buffer(y + yy);
+ p2 = NULL;
+#else
+ p = emu->get_screen_buffer((y + yy) * 2 );
+ p2 = emu->get_screen_buffer((y + yy) * 2 + 1);