Do you like my hacking? If so, please consider leaving something in the
Fediverse (Mastodon etc): @Sprite_tm@social. spritesmods.com
So aside from the 486 CPU, there's an FPGA, an ESP32, and a VGA chip, as well as some RAM and some glue components. Which specific components did I pick?
To begin with the FPGA: I still really like the Lattice ECP5 series: the open-source toolchain for them is pretty good and they're BGA packages in a form factor that I can still pretty easily hand-solder. Additionally, they have loads of IO and given I needed to connect most of the bus pins of the 486 as well as the RAM and the ESP32 to them, I needed all the IO I could get. As such, I used the LFE5-45UM here, which has a comfortable 45k LUTs and a fair amount of block RAM I can use for FIFOs, lookup tables and embedded RAM.
For the ESP32, I picked the ESP32-S3. The main reason is the internal USB-OTG peripheral. This can be connected to USB devices, like mice and keyboards. It can also be connected to BLE peripherals, for instance an Xbox One game pad. Unfortunately, it doesn't support classic Bluetooth, which excludes a fair amount of Bluetooth devices, but I found USB support more important than classic BT, and at the time I built this, there was no ESP chip that incorporated both.
For the VGA chip, I picked a Chips&Technologies F65545. This is not really the greatest chip in the world, it's a mid-range laptop chip from around the same era as the 486 CPU I picked, but given the fact that I mostly target DOS-gaming, it is good enough. The major reasons I picked it is that A. it has a 32-bit interface that can be directly connected to the CPU (and is much faster than an 16-bit ISA interface) and B. it was easily available as new-old-stock on Taobao. The fact that it's a chip intended to go into laptops also turned out to be useful later on. This VGA chip also needs 1MiB of external DRAM, but that was pretty easy to source as well.
Finally, the board needs some main memory. The period-appropriate DRAM would be fast-page or EDO RAM. These can be a bit finnicky to interface with, however, and as I use a modern FPGA, the board contains SDRAM, which is easier to interface and much faster. The nice thing is also that it's pretty easy to get high-density chips for cheap, so I grabbed a 64MiB chip. For reference, consumer 486 machines tended to have 8 to 16MiB of RAM, so this should be enough for anything.
There's also various other bits and bobs - power supplies for all the rails, a USB hub so you can connect more than one peripheral to the ESP32, an I2S codec connected to the FPGA for sound output, a micro-SD socket for storage and USB-C for power and debugging. The board is a SBC (Single-Board Computer) without any ISA or PCI slots, and this is a conscious choice: slots like that add complexity and wouldn't be really useful to me anyway: I don't have any old ISA or PCI cards lying around anymore. If I ever want support for some device, I can always re-implement it in the on-board FPGA or emulate it on the ESP32. (Additionally, something like an ISA card would have to be driven from the FPGA, and I'm not sure if I can physically bring out enough I/O pads for that.)

The high-level design of the board is fairly straightforward. The entire 486 is connected to both the VGA chip as well as the FPGA. The FPGA has a quad-SPI connection to the ESP32-S3 for data transport between the two. It also has a connection to an audio codec and the SDRAM. The ESP32 is connected to a USB hub and a micro-SD card.
One extra thing that I haven't mentioned: to configure the SBC, I wanted to be able to use the things that would already be connected to it, that is, the monitor and keyboard. As the ESP32 handles keyboard input, that is easy to intercept. However, the VGA chip outputs directly to the VGA port and as such does not have an option to overlay an OSD (On-Screen Display) over the image. To fix this, I added several switch chips that can switch over the RGB outputs of the SBC between the VGA chip and the FPGA. The FPGA is capable of detecting the the VGA timing from the sync lines, and can flip the switches to output its own signal rather than the signal generated by the VGA chip, thus implementing a simple OSD.
Obviously, everything needs power as well, and this is generated by a bunch of buck-converters off the 5V on the USB-C ports. The ESP32 can read the voltage on the CC lines as well, meaning it can detect if it's safe to turn on the rest of the hardware.
Everything comes together on a small four-layer PCB about 2.5x the size of a Raspberry Pi. I made a few mistakes, hence some bodge wires and hacky resistors. It's also why the VGA port soldered on the underside of the PCB rather than the top side; I hadn't used VGA so long I made a mistake in the gender of the connector...