Installer access point (IAP) mode
To start IAP mode: L
+ start
+ X
+ Y
+ A
+ B
This sets up an access point with predefined credentials, an OSD screen warns about insecure WiFi credentials.
IAP credentials are:
WiFi SSID: DCDigital-Install
WiFi Password: installme!
HTTP Username: please
HTTP Password: installme!
IP Address: 192.168.4.1
Fixed: very thin
scanlines now work in Relaxed firmware too
ESP firmware is now built using PlatformIO 5.0.1
ESP new default filesystem is LittleFS.
Optional: Filesytem Migration Guide
Fixed: PAL bob deinterlacing setting was overwritten by NTSC passthru setting, which resulted in corrupted image.
Fixed: LED pattern when no input clock is present
ESP firmware is now built using PlatformIO 4.3.4
Scanlines: New very thin
setting (Thanks to @SvtTerminator)
Generated passwords: Avoid ambiguous characters.
New: Color expansion
A lot, if not most Dreamcast games are using 16bit color (RGB565), so blue and red are only using the upper 5bit and green uses the upper 6bit in the 8bit data coming from the console.
So a full white picture in RGB565 is (248,252,248) instead of (255,255,255). The new color expansion feature converts the 5bit/6bit color to 8bit using this formula:
out8 = in5 | in5 >> 5;
out8 = in6 | in6 >> 6;
The settings for Color expansion are:
Off No color expansion is done.
Auto DCHDMI tries to detect the color mode used and automatically selects the proper expansion mode. Seems to work fine, but detection may fail, if the image contents are ambiguous.
RGB565 16bit to 24bit expansion
RGB555 15bit to 24bit expansion
New: Gamma adjust
This can be used to adjust the gamma of the video image. Currently these predefined adjustments are possible:
Click on image to enlarge
Fixed: Memory overflow in osd write.
This can cause DCHDMI to restart during firmware download. If this happens, just restart the download again until it finishes or use the Web console to update firmware.
New: Control OSD with an arcade stick.
Device | How to open OSD | Notes |
---|---|---|
Standard controller | Left Trigger + Right Trigger + X + A + Start |
|
Dreamcast Keyboard | CTRL +SHIFT +ESC |
See Keyboard reference for details |
Arcade stick | Y + B + Z + C + Start |
C maps to R-trigger /ok Z maps to L-trigger /cancel |
Fixed: Do not drive pin 6, when in Cable Detect
mode (Thanks to Ste!)
New: Display WiFi signal quality and channel on Test/Info
OSD screen.
Documentation: DCHDMI LED status patterns
Regarding WiFi connection and firmware updates:
DCHDMI connects - when SSID and password are configured - to your local WiFi network immediately after startup, but it will not send out any information by itself, without you actually checking and/or downloading new firmware.
If you are connected to a network and access the Firmware
-> Check
/Download
function, it sends out your desired firmware release (master
/develop
/...) and your IP address. No further personal data is sent: no serial number, no SSID/passwords/config data.
This can be easily verified by checking out the firmware/software here: DreamcastHDMI
I encourage everyone to do so. If you want, you can easily build your own update server. Everything needed to do so is in this project. If you have questions, don't hesitate to contact me.
This firmware/software will always remain free and will always only send out the minimum information required to perform a firmware upgrade.
Also check out Web console documentation, on how to perform a firmware update without connecting your DCHDMI to a WiFi network.
Standard (-std) and Relaxed (-rlx) firmware flavours are now combined into one firmware release. When changing firmware flavour only the fpga firmware gets re-flashed from the firmware bundle downloaded previously.
When upgrading to v4.0 for the first time, it's necessary to update the firmware once again, to download this new bundle.
ESP firmware is now built using PlatformIO 4.0.0
ESP: Redone I2C command scheduling and moved OSD menus to the progmem area to free up heap memory.
Fixed the following bug:
Issue #4: 31KHz 480p output has display area shifted left
Horizontal position for VGA can now be set in the OSD (Advanced Video Settings). There is also an auto option which detects the correct position, if an image with non-black pixels on the edges is detected.
Default is auto. To force correct position for the majority of commercial games, set to 0
Big thanks to rdaviesuk for reporting!
Added the following features:
Issue #5: Please add support for PAL 288p video output
288p is now supported.
Issue #6: Please allow differing deinterlacing method for 480i/576i
Deinterlacing can now be configured for 480i/576i separately.
Thanks again, rdaviesuk for reporting!
Fixed: Prevent OSD from picking up controller buttons while opening OSD.
Fixed: video output may not start when configured to VGA/CableDetect
Fixed: bob deinterlacing was not properly aligned in VGA/480p mode
Fixed: Scanlines are now applied post HQ2X filter. (Thanks to SONIC3D!)
Fixed: Adjusted input data latch clock phase shift to be more robust (Thanks to Ste!)
New: Upscaling mode configuration option.
Currently available: 2x and hq2x
There will be more (e.g. anti aliasing) upscale filters in the future.
Fixed: OSD position is now excactly the same for all output modes :)
New: RGB color space (Advanced Video Settings) configuration option.
New: Menu option to configure firmware flavour (Firmware Upgrade->Configure):
Allows filtered upscaling (currently HQ2X) by using relaxed HDMI timings.
Fully HDMI compliant.
New: Improved output resolution switching time.
Fixed: 480i bob deinterlacing wasn't properly aligned for 960p/1080p output.
Internal: Properly queue osd write requests.
Fixed: It was possible to flash a firmware file from the OSD, which was only partially downloaded or corrupt. It was possible to brick DCHDMI with that, so access to the serial port was necessary to fix. Starting with v2.2.0 the checksum is verified before flashing to prevent flashing a broken firmware.
this only affected the firmware upgrade via OSD, the web interface upgrade was already performing this check
Instructions on how to recover can be found here: How to recover from a corrupted ESP firmware
Improved HDMI compliance
Use recommended values for 44.1kHz audio in 1080p mode
Use limited RGB range for all output resolutions other than VGA
Improved reliability
Removed ESP.eraseConfig()
on full reset as this can lead to SPIFFS corruption in some rare cases.
Disabled persisting WiFi credentials to ESP internal config area (they are already stored in flash file system), to reduce flash wear.
Update is highly recommended!
Improved WiFi security
WiFi Setup
OSD screen now displays the actual WiFi mode it's in (Connected
/Access point
)
WiFi AP password is now being generated every time DCHDMI enters Access point
mode.
Generated WiFi AP password password can be displayed in WiFi Setup
OSD screen.
If no web console HTTP Password
is set, it's also generated every time DCHDMI starts.
HTTP User
now defaults to dchdmi
instead of Test
The HTTP Password
set can also be displayed in WiFi Setup
OSD screen, unless Protected mode
is set to on
during setup
procedure. (In this case you need access to the serial console, if you have forgotten your HTTP Password
)
Bob deinterlacing can be deactivated via new Advanced Video Settings
.
Set Deinterlacer
to passthru
to output 480i/576i.
PAL support (576p bob deinterlaced or 576i passthru)
OSD can show changelog after Check
for new firmware.
Web interface setup
procedure shows available options and checks for valid input.
GDEMU reset was available in main menu, even when disabled.
Full reset (DC, ESP, FPGA) now available in Reset DC
Video Mode can be changed by holding dpad up/down (ForceVGA
/CableDetect
) on startup/full reset.
Lots of FPGA firmware improvements and refactoring.
All output modes (VGA/480p/960p/1080p) now support dreamcast 240p games.
Because video timing for 240p is different from 480i/p, the video output does not fully comply with the HDMI specification, so 960p/1080p may not work on all TVs (monitors usually work fine).
For some 240p games the active video area is shifted to the right, so there is a new option under Output Resolution
to compensate for that: 240p adjust position
Changed the button layout for the OSD control: A and B are now remapped to R and L, to reduce button conflicts with the game running in the background.
Thanks to -=FamilyGuy=- from the assemblergames forum for this idea!
ESP firmware is now built using PlatformIO, version 3.6.1
Updated the firmware to reflect the DCHDMI 1.3 hardware changes. The OSD now contains the following:
Output Resolution selection.
Select VGA, 480p, 960p and 1080p from the OSD.
Scanlines.
On/Off, Intensity, Odd/Even and Thick/Thin
Video Mode Setup.
Select ForceVGA, CableSelect and SwitchTrick for startup.
Firmware Upgrade.
Download and flash new firmware from OSD, and also reset DCHDMI.
WiFi Setup.
Enter SSID and Password for a quick wifi configuration from OSD.
Reset Configuration.
DCHDMI can now reset the dreamcast. It can also reset the USB-GDROM (to return to the menu), in which case an additional connection is necassary. This pin can also be used to press the GDEMU button. By default it's connected to the onboard LED. So here you can configure to what and if this optional wire is connected.
LED: use onboard diagnostic LED
GDEMU: connected to the button on the GDEMU
USB-GDROM: connected to the USB-GDROM reset circuit
Finished OSD with the following features:
Output Resolution selection.
Select VGA, 480p, 960p and 1080p from the OSD.
Video Mode Setup.
Select ForceVGA, CableSelect and SwitchTrick for startup.
Scanlines.
On/Off, Intensity, Odd/Even and Thick/Thin
Firmware Upgrade.
Download and flash new firmware from OSD, and also reset DCHDMI.
Debug Info.
Debug information.
Integrated FirmwareManager ESP companion into this project, as the coupling between ESP and FPGA is very tight now.
Added upscaling of 480i content to 960p/1080p.
Dynamic reconfiguration of the output resolution.
Output resolution is now configurable via WiFi webinterface, OSD integration will follow soon.
Removed 10CL016 and EP4CE6 support.
Updated the old 2017 block diagram to reflect some of the changes introduced since then:
Maple bus integration to read controller data
Uses code by Marcus Comstedt (zeldin) from his MapleMojo project.
This enables leeching controller data directly from the maple bus to control the OSD.
Added I2C slave implementation by Steve Fielding.
Enables ESP to write to OSD RAM and get the controller data aquired from the maple bus to control OSD.
Finally finalized hardware 🎉 All interference issues are solved, we're now entering beta phase!
The master
branch will now contain the latest stable release. Development version moved to develop
.
Firmware updates are easily downloaded and installed via WiFi ESP companion.
Currently the following features are planned:
Close to final FPGA mainboard by citrus3000psi.
Some features are currently unused (e.g. pads for maple bus integration).
They will allow some cool firmware extensions in the future (e.g. OSD)
citrus3000psi designed a flat flex cable, which connects the Mainboard to the audio and video dacs.
We switched to a bigger FPGA to support more video output modes, 10CL016 and EP4CE6 are also supported.
Output | Resolution | Notes | 10CL025 | 10CL016 | EP4CE6 |
---|---|---|---|---|---|
VGA | 640x480 | Correct pixel/aspect ratio! | :white_check_mark: | :white_check_mark: | :white_check_mark: |
480p | 720x480 | Original output: usually only 640px of the available 720px are used. Incorrect pixel/aspect ratio! |
:white_check_mark: | :white_check_mark: | :white_check_mark: |
960p | 1280x960 | x2 VGA | :white_check_mark: | :white_check_mark: | :x: |
1080p | 1280x960 | x2 VGA, framed in 1920x1080 | :white_check_mark: | :x: | :x: |
basic 480i line doubling
240p support
Scanlines.
Available by rebuilding the firmware and defining SCANLINES_EVEN/SCANLINES_ODD
, SCANLINES_THICK/SCANLINES_THIN
and SCANLINES_INTENSITY
in Macros.qsf
Upcoming: OSD. Maple bus connection is already on the 1.2d mainboard. Will be used in a later firmware.
Restructured source code and updated pin assignments for citrus3000psi's DCHDMI board 1.1:
Moved older versions (without ADV7315 and/or ICS664-3) to v0.1
Restructured "firmware" site:
Details on the available versions can be found here.
Added ESP-12 based firmware management tool, for upgrading firmware via WiFi.
Many thanks to citrus3000psi for his work on a QSB (quick soldering board). Check out the thread on the shmups forum: DreamcastHDMI github by chriz2600
New (auto)-build system using docker. Build system using docker
Added schematics and some information on Cyclone IV + ADV7513 + ICS664-3 build: CycloneIV-ADV7513-ICS664
A new version of the Cyclone IV + ADV7513 version is available here.
Features in this version:
Recoding of 480p (720x480) to VGA (640x480).
HDTVs will display correct 1:1 instead of 8:9 pixel ratio for 4:3 aspect ratio. To achieve the required clock multiplication/division an ICS664-03 digitial video clock source is used. 320 pixel are buffered in RAM, so the delay from this will be 11.9us (microseconds, I will call this zero delay :) )
This diagram shows the setup:
Support for 480i and 240p by line doubling with recoding to 480p as above.
Support for 480p/480i switching detection
Not in this version:
Instead of a DE0 Nano SOC you can also use a Waveshare CoreEP4CE6 Development Board. You can get it for 20-25$ via Aliexpress. The project folder for this is FPGA-CycloneIV. Because the board does not expose any clock pins, you have to desolder the oscillator and attach the dreamcast clock directly to the board.
I also created a board for experimenting with the Analog Devices ADV7513 HDMI Transmitter which can be found here. The verilog code for this can be found here.
If you want to go the "cheap" DIY route, i've made a PCB for the LVDS2TMDS part.
Some details about the Dreamcast scaling issue on modern HDTVs: Video details link