Apparently the VGADOC4 was what I was looking at all along.
I've implemented the Attribute Controller's Miscellaneous register bit 4(Double all horizontal timings (all normal horizontal timings specifying horizontal character clock numbers, except the end registers(which only contain parts, and thus isn't multiplyable by 2 without screwing up their intention), Display start address and CRTC offset), which all override the default VGA timings with their used values (inclusion of the ET3000/ET4000 extension bits and then multiplied by 2 when the Misc register bit 4 is 1).
I've also added proper Interlace rendering(affecting the row before applying the vertical character clock to it), which shows all odd scanlines first, then the even scanlines.
This seems to affect rendering itself:
The attachment 205.png is no longer available
The segment size configuration (0=128K, 1=64K, 2=1M) of port 0x3CD seems to be only present in the ET3000. The ET4000 always has 64K segments (not mentioned in the pdf document, nor in the VGADOC documents)? This is already implemented in my emulation (it multiplies bits 0-2 and 3-5 with 64K/128K/1M to obtain the start address to add to the memory addressed by the CPU to access that plane's data.
Can you see what else might be going wrong?
Sequencer: https://bitbucket.org/superfury/x86emu/src/21 … cer.c?at=master
VGA/CGA/MDA precalculations: https://bitbucket.org/superfury/x86emu/src/21 … lcs.c?at=master
ET3000/ET4000 extensions: https://bitbucket.org/superfury/x86emu/src/21 … 000.c?at=master
Headers:
ET4000: https://bitbucket.org/superfury/x86emu/src/21 … 000.h?at=master
Precalculations: https://bitbucket.org/superfury/x86emu/src/21 … lcs.h?at=master
Basic VGA: https://bitbucket.org/superfury/x86emu/src/21 … vga.h?at=master
When moving the cursor, it seems to switch between 64K and 128K bank sizes(512K RAM installed).
The attachment 206.png is no longer available
It's running in 256 colors mode.
Running it on a NEC V30(only 80186 instructions implemented) with 640x480x16 colors results in the following:
The attachment 208.png is no longer available
The attachment VGA_ATT_640x480x16_Tseng.png is no longer available
The attachment VGA_DAC_640x480x16_Tseng.png is no longer available
Edit: Fixed the Attributes: The extended Attribute Controller registers of the ET3000 and ET4000 were getting written when the Attribute Controller Index was getting written as well, causing invalid data to be loaded. I've also implemented Palette RAM and Overscan bit 0-3 protection according to the low 2 bits of Attribute Controller register at index 16h.