Worklog [2026 Contest Entry] Pico-ITX Windows 98 Dual-Screen Clamshell

horvath456

.
.
2024 2nd Place
Joined
Oct 22, 2018
Messages
11
Likes
49
Portables
7
Hello everyone,


this is my third attempt at building a Windows 98 handheld. I built the first one in 2020, followed by V2 for last year's competition.

I am starting this worklog a little later than most of the other entries, but I have already spent the last few weeks researching the hardware and designing the first PCBs.

V2 was a large improvement over the original build and actually worked quite well, but it still ended up being 39 mm thick, ran fairly hot and only managed around 1 hour of battery life. It also relied on many separate modules, which resulted in more internal wiring than I would have liked.

The main reason for starting V3 was finding the VIA EPIA-PX10000G. It is a complete 100 × 72 mm Pico-ITX PC with proper Windows 98 support, while being considerably smaller than the Nano-ITX board used in V2.

Rather than building another standard horizontal handheld around it, I want to use the smaller motherboard for a dual-screen clamshell.

The 6.5-inch main display will be mounted in the lid. The lower half will contain the motherboard, controls and a 3.5-inch touchscreen for additional controls and system information. The two halves will be connected using two Nintendo DS Lite hinges.
I am aiming for a footprint not much larger than a 3DS XL and as little thickness as possible.


Main hardware
The parts selected so far are:
  • VIA EPIA-PX10000G Pico-ITX motherboard
  • 6.5-inch AT065TN14 TFT with HDMI/VGA controller board
  • 3.5-inch Waveshare capacitive touchscreen
  • Two Nintendo DS Lite hinges
  • Four 18650 cells
  • Two 3DS analogue sliders
  • Two RP2040 microcontrollers
  • Custom power, I/O, control and interconnect PCBs
The PX10000G arrived today. I have not powered it on or tested it yet though.
The upper screen will be the normal Windows 98 display. The lower touchscreen will be driven by one of the RP2040s and used for game information, shortcuts, an on-screen keyboard, touchpad controls and system settings.
The second RP2040 will handle the physical controls and appear to the PC as a USB gamepad, keyboard and mouse.


photo_2026-08-09_21-51-33.webp
photo_2026-08-09_21-51-29.webp



Essentials
  • A functional dual-screen Windows 98 clamshell handheld
  • A footprint close to a 3DS XL and as little thickness as reasonably possible
  • Windows 98 SE running natively on the PX10000G
  • Integrated gamepad, keyboard and mouse controls
  • USB-C charging and charge-and-play
  • Internal speakers, storage and active cooling
  • Custom launcher and companion interface
  • Custom PCBs instead of separate power and interface modules

Stretch goals
  • Wi-Fi with an ESP8266 module acting as a Hayes-compatible modem (just like the WIFI232)
  • Bluetooth audio
  • External HDMI output (still unsure whether the motherboard properly supports DVI out)
  • Nintendo 64 and GBA emulation (not sure the board can handle smooth emulation)
  • Correct display output across the different resolutions used by DOS and Windows 98 games
  • Updating both RP2040s firmware without opening the enclosure
  • almost wire-free design

Ordered PCBs
One of the main things I wanted to improve over V2 was the internal wiring. That meant I could no longer avoid designing my own PCBs.
These are not only the first boards for this project; they are the first PCBs I have ever designed. Until now, my handhelds were built mostly by connecting existing modules.

For a first PCB, the power board became quite ambitious: a four-layer board combining a 4S charger, fuel gauge, battery protection, several voltage rails and ATX power control. It eventually turned into four separate boards for power, I/O and the mechanical connection to the motherboard.
I spent a lot of time reading datasheets, checking the power requirements of the PX10000G and reviewing the layouts before ordering them. The boards are currently being manufactured by JLCPCB, and I am also using their assembly service for the populated boards. They should arrive in a couple of days, already assembled apart from a few parts that I will add myself.
I am reasonably confident in the designs (altough I just noticed I did forget some silkscreen labels), but the real test will begin when I power them for the first time.


Power board
The power board replaces most of the individual power modules used in the previous handheld. it will be glued onto the bottom side of the pixoITX board and secured with 4 ground plane solder connections.

3D_PCB1_2026-08-09.webp


Main parts:
  • BQ25798 buck-boost battery charger
  • BQ41Z50 fuel gauge, cell monitoring, balancing and battery protection
  • ATtiny1616 for power sequencing, power-button handling and status communication
  • ATX PSU control circuitry and power converters built in
  • Connection for the four-cell battery pack
The board supplies the 5 V, 3.3 V, 12 V and 5 V standby rails required by the PX10000G. The ATtiny controls the startup and shutdown sequence and communicates the power and battery status to the rest of the handheld.


I/O board
The I/O board will sit along the rear edge of the lower half. It combines the ports, audio circuitry and optional radio modules on one long board.

3D_PCB4_2026-08-09.webp


Main parts:
  • HUSB238A USB-C Power Delivery controller
  • PAM8406 stereo class-D speaker amplifier
  • USB sound card connection
  • MAX3232 interface to the PX10000G serial port
  • ESP-01 footprint and control circuitry for Wi-Fi
  • KCX Bluetooth audio module connection
  • USB-C connector
  • External USB connectors
  • Mini-HDMI connector
  • Power button
  • Speaker connections
  • 24-pin FPC connector to the lower touchscreen/controller board
  • Resettable fuses for the USB and HDMI power outputs
The USB-C port will be used for power input and will also connect to the companion RP2040. Wi-Fi, Bluetooth and external HDMI are already included in the board design, even though they remain stretch goals for the finished system.


Power connector board
3D_PCB3_2026-08-09.webp

This is a small passive 4 layer board that plugs into the original 12-pin power connector on the PX10000G.
It connects the custom power board to the motherboard without needing a large bundle of wires.


I/O retention board
3D_PCB5_2026-08-09.webp

The final small board is purely mechanical. It connects the I/O board to the PX10000G assembly and helps hold both boards in position.


Next Steps

The next step is to power up the PX10000G, install Windows 98 and test its graphics, sound and power consumption.

The ordered PCBs should arrive shortly afterwards. They will come mostly assembled by JLCPCB, but still need to be tested thoroughly. The BQ41Z50 needs to be programmed and configured using TI bqStudio, I need to determine the correct register configuration for the BQ25798, and I still need to write and test the ATtiny1616 firmware. It will handle the soft power button, ATX power logic, NeoPixel status LED and serial communication.

I also need to design the custom controller PCB for the lower half of the clamshell. It will carry both RP2040s, the FFC connector for the lower touchscreen and the button contacts for the conductive rubber membranes. The two analogue sliders will sit in dedicated PCB cutouts and connect through separate 4-pin FFC connectors.

Once the motherboard and the first PCBs have been tested, I can determine the final internal layout and begin designing the clamshell enclosure.
 
Last edited:
I got the PX10000G to boot! The four PCBs I ordered for the project have arrived too.

20260814_233624.webp


These are the first PCBs I have designed and ordered assembled, so it was great to finally see them as real boards. The next step is to bring them up one section at a time and test them together with the motherboard.

I have also changed the main display since the first post. I am now going to use a 5-inch 4:3 screen with a native resolution of 640 x 480. That is a much better fit for DOS and Windows 98 games, which were generally designed around 4:3 resolutions.

Launcher​

V2 used a small Allegro launcher. It was not fully feature complete and was just made to work for the demo video really. For this project I rewrote it in C++98 using DirectDraw on Windows 98, with an SDL2 backend for developing it on a modern computer.
DirectDraw is a much better fit for this system than the old Allegro renderer. The backgrounds, logos and screenshots are loaded into surfaces and then blitted directly, instead of drawing and copying a complete 32-bit software framebuffer every frame. Even in 86Box the carousel animation is now smooth.
The Windows 98 version runs at 640 x 480 in 16-bit colour, matching the new display exactly.

launcher-win98-640-carousel.webp


The launcher UI is still heavily inspired on the dark modern theme of es-de, the background artworks are from the 'Diamond' es-de theme from Weestuarty.
It has an animated system carousel followed by a game list with a screenshot and short description. It can start Windows and DOS programs as well as the planned emulators, and everything can be navigated with the handheld controls. Games and collections are added through a simple config file. It also supports favourites and per-game controller profiles.

Before starting a game, it releases the DirectDraw fullscreen mode completely. Once the game exits, the launcher restores its display and returns to the same list.

launcher-details-comparison.webp


I think I can say the launcher is pretty much finished at this point, it has all the features I need. I won't include things like controller setup and battery state into the launcher, since all these things will be handled by the bottom companion screen.

Companion screen and controls​

The main reason for using two RP2040s is simply that I need the extra I/O. The physical controls, two analogue sticks, USB, touchscreen, display and all of the serial connections add up quickly. Since two microcontrollers are needed anyway, it also makes sense to give them two separate jobs.

The first RP2040 handles the physical controls and connects to the motherboard as a USB gamepad, keyboard and mouse. It will also load different mappings for each game.

The second RP2040 drives the 3.5-inch touchscreen and handles communication with the PC, power controller, Wi-Fi module and Bluetooth module.

The launcher sends the currently selected system or game to the companion screen. It can then show the game information and a Launch button, and switch to useful shortcut buttons while a game is running. The other main pages are a touchpad, an on-screen keyboard, settings, stick calibration and a controller test screen.

companion-main-montage.webp

companion-settings-controller.webp


As with the launcher, the companion firmware also has an SDL2 build for quick development on my macbook.

Next Steps​

There is still quite a lot to do on the hardware side:
  • remove the unused headers and connectors from the PX10000G to make the motherboard as flat as possible;
  • bring up the arrived PCBs, configure the BQ25798 charger and BQ41Z50 fuel gauge, write the ATtiny1616 firmware and test the HUSB238 USB-C PD input, HDMI and USB sound card sections with the motherboard;
  • design and mill a custom heatsink, paired with a Nintendo Switch Lite fan;
  • mount the power and I/O boards properly to the motherboard so the whole stack becomes one compact unit;
  • design the remaining three PCBs: the main control board with both RP2040s, the shoulder-button board, and the Switch Lite fan connector/PWM controller board;
  • model the enclosure in Fusion 360
So yes, there is still a lot left to build.
 
Small update:

Late night hardware work has been temporarily interrupted by two new quality-control inspectors. The PCB seems to have passed, but I no longer have access to the workbench.

20260817_215116(0).webp


I also tried connecting Codex to Fusion 360 through MCP, mostly as an experiment. The resulting enclosure concept turned out surprisingly well and should be especially useful as a reference when I design the gamepad PCB.

pico_itx_handheld_v36_exterior_studio.webp


I will probably still rebuild the final model manually before fabrication. This was mainly an experiment and a useful concept model rather than something intended to become the final production CAD. It also gives me a good reference for designing the gamepad PCB.

My usual CAD workflow is basically Ben Heck circa 2012: start with one large sketch and extrude everything upwards until it looks like a handheld. It may not be the fanciest method, but it gives me the kind of direct control I prefer while developing the shape and working through details such as the internal layout.
 
Back
Top