diff --git a/.clang-format b/.clang-format index 5f855715..b409c5be 100644 --- a/.clang-format +++ b/.clang-format @@ -3,57 +3,70 @@ Language: Cpp AccessModifierOffset: -4 AlignAfterOpenBracket: Align AlignConsecutiveAssignments: false +AlignConsecutiveBitFields: AcrossEmptyLinesAndComments AlignConsecutiveDeclarations: false -AlignEscapedNewlinesLeft: false -AlignOperands: true +AlignConsecutiveMacros: AcrossComments +AlignEscapedNewlines: Left +AlignOperands: Align AlignTrailingComments: true +AllowAllArgumentsOnNextLine: false +AllowAllConstructorInitializersOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true -AllowShortBlocksOnASingleLine: false +AllowShortBlocksOnASingleLine: Empty AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: true AllowShortFunctionsOnASingleLine: All -AllowShortIfStatementsOnASingleLine: false +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: Empty AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: true BinPackArguments: true BinPackParameters: true +BitFieldColonSpacing : Both +BreakBeforeBraces: Custom BraceWrapping: - AfterClass: true + AfterCaseLabel: false + AfterClass: true AfterControlStatement: false - AfterEnum: false - AfterFunction: true - AfterNamespace: true - AfterObjCDeclaration: false - AfterStruct: true - AfterUnion: true - BeforeCatch: false - BeforeElse: false - IndentBraces: false + AfterEnum: false + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: false + AfterStruct: true + AfterUnion: true + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true BreakBeforeBinaryOperators: None -BreakBeforeBraces: Custom +BreakBeforeConceptDeclarations: true BreakBeforeTernaryOperators: false -BreakConstructorInitializersBeforeComma: true +BreakConstructorInitializers: BeforeComma +BreakStringLiterals: true ColumnLimit: 0 CommentPragmas: '^ (IWYU pragma:|NOLINT)' ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: true +DeriveLineEnding: true DerivePointerAlignment: false DisableFormat: false +EmptyLineBeforeAccessModifier: LogicalBlock +FixNamespaceComments: true ForEachMacros: [] -IncludeCategories: - - Regex: '^"(stdafx|PrecompiledHeader)' - Priority: -2 - - Regex: '^".*Common' - Priority: -1 - - Regex: '^<' - Priority: 1 - - Regex: '^"' - Priority: 2 +IncludeBlocks: Preserve +IndentExternBlock: NoIndent +IndentCaseBlocks: false IndentCaseLabels: true +IndentGotoLabels: true IndentWidth: 4 IndentWrappedFunctionNames: false KeepEmptyLinesAtTheStartOfBlocks: true @@ -64,21 +77,36 @@ NamespaceIndentation: None ObjCBlockIndentWidth: 2 ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 80 PenaltyBreakBeforeFirstCallParameter: 19 PenaltyBreakComment: 300 PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 80 PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 80 PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Right +# uncomment below when clang >13 will be out +# IndentPPDirectives: AfterHash +# PPIndentWidth: 1 ReflowComments: true SortIncludes: false SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAroundPointerQualifiers: Default SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: true +SpaceBeforeInheritanceColon: false SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false +SpacesInConditionalStatement: false SpacesInContainerLiterals: true SpacesInCStyleCastParentheses: false SpacesInParentheses: false @@ -86,4 +114,3 @@ SpacesInSquareBrackets: false Standard: Cpp11 TabWidth: 4 UseTab: Never -... diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..d3cb9a0f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,25 @@ +# EditorConfig: http://EditorConfig.org + +# Top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 + +# 4 space indentation +[*.{c,h,js,css,html}] +indent_style = space +indent_size = 4 + +# 2 space indentation +[*.{json,xml,yaml,yml}] +indent_style = space +indent_size = 2 + +# Tab indentation +[Makefile*] +indent_style = tab diff --git a/.gitattributes b/.gitattributes index 685d1af4..dfe07704 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,24 +1,2 @@ -.gitattributes export-ignore -.gitignore export-ignore -.git export-ignore - -# Set default behaviour, in case users don't have core.autocrlf set. +# Auto detect text files and perform LF normalization * text=auto - -# Explicitly declare text files we want to always be normalized and converted -# to native line endings on checkout. -*.c text -*.cpp text -*.h text -*.hpp text -*.txt text -*.rst text -*.ino text - -# Declare files that will always have CRLF line endings on checkout. -*.sln text eol=crlf - -# Denote all files that are truly binary and should not be modified. -*.png binary -*.jpg binary -*.gz binary diff --git a/.gitignore b/.gitignore index e469197f..6582d3b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,382 +1,35 @@ -# Windows image file caches -Thumbs.db -ehthumbs.db +# jekyll +.jekyll-metadata +_site +.sass-cache +.jekyll-cache -# Folder config file -Desktop.ini -# Recycle Bin used on file shares -$RECYCLE.BIN/ +# bundler +*.gem +Gemfile.lock -# Windows Installer files -*.cab -*.msi -*.msm -*.msp -# ========================= -# Operating System Files -# ========================= +# python +*.whl -# OSX -# ========================= -.DS_Store -.AppleDouble -.LSOverride +# npm +node_modules +package-lock.json -# Icon must end with two \r -Icon -# Thumbnails -._* +# _sass +_sass/@primer/css/**/*.md -# Files that might appear on external disk -.Spotlight-V100 -.Trashes -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk +# lighthouse +*.report.html -# Visual Micro files -.project -__vm/ -# Visual Studio project files -*.sln -*.vcxproj -*.vcxproj.filters +# action +action.changelog.md -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ \ No newline at end of file +script/** +!script/ProcessData.sh +!script/**.TEMPLATE diff --git a/GBS_CONTROL.png b/GBS_CONTROL.png new file mode 100644 index 00000000..9759b046 Binary files /dev/null and b/GBS_CONTROL.png differ diff --git a/README.md b/README.md index 66c8828d..b51f00cf 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,17 @@ -# gbs-control +
+
+ Logo +
+
+

GBS Control

+

an alternative firmware for Tvia Trueview5725 based upscalers / video converter boards.

+ Read the documentation +
+
-Gbscontrol is an alternative firmware for Tvia Trueview5725 based upscalers / video converter boards. -Its growing list of features includes: + + +## Features: - very low lag - sharp and defined upscaling, comparing well to other -expensive- units - no synchronization loss switching 240p/480i (output runs independent from input, sync to display never drops) @@ -19,11 +29,11 @@ Various variations are supported, such as the PlayStation 2's VGA modes that run Gbscontrol is a continuation of previous work by dooklink, mybook4, Ian Stedman and others. -Bob from RetroRGB did an overview video on the project. This is a highly recommended watch! -https://www.youtube.com/watch?v=fmfR0XI5czI +Bob from RetroRGB did an [overview video on the project](https://www.youtube.com/watch?v=fmfR0XI5czI). This is a highly recommended watch! -Head over to the wiki for the setup guide to learn how to build and use it! -https://github.com/ramapcsx2/gbs-control/wiki/Build-the-Hardware + +Head over to the [wiki](./Wiki/README.md) for the setup guide to learn how to build and use it! +[Build the hardware](./Wiki/Build-the-Hardware.md) Development threads: https://shmups.system11.org/viewtopic.php?f=6&t=52172 @@ -31,4 +41,3 @@ https://circuit-board.de/forum/index.php/Thread/15601-GBS-8220-Custom-Firmware-i If you like gbscontrol, you can now Buy me a coffeebuy me a coffee. Cheers! :) - diff --git a/Wiki/Arcade-Boards.md b/Wiki/Arcade-Boards.md new file mode 100644 index 00000000..6718afcb --- /dev/null +++ b/Wiki/Arcade-Boards.md @@ -0,0 +1,42 @@ +--- +sort: 15 +--- + +# Arcade Boards notes + +User @tracedebrake posted some comments regarding the use of arcade boards with the GBS scaler (or any other scaler). +I've copied them here, so that arcade machine users are aware of what to look out for. + +> Hello @xuserv & @ramapcsx2! +> +> Might I ask, @xuserv, if you have done every recommanded modifications to your GBS 8200, including soldeging a 100ohm resistor from CSYNC to ground & setting all 3 RGB potentiometer to the minimum (left)? +> +> I'm asking this because normally, most arcade SuperGuns will not properly adjust your RGBS signals to be 75 ohms & 0.7v peak-to-peak levels compatible. Arcade video signals have the same timing as NTSC video but the electrical properties are different to a standard TV/video monitor. It's analog signals with TTL level amplitude (3-5 Vpp) while regular gaming consoles are made for home use so they output at 0.7v pk-to-pk for a 75ohms load (your tv) . Arcade monitors also have a very high inputs impedance to match those TTL voltage levels (1k-10k ohms). +> +> This is why the GBS8200 has a high input resistor (1k) on CSYNC; it is made for arcade use by connecting your JAMMA harness directly to the RGBS pins. +> +> By doing the recommanded mods (100ohm resistor + adjusting your pots total left (or removing them)), what you are actually doing is modifing your GBS8200 to be console compatible. If you want to use a SuperGun with a fully modified GBS8200, you need to make sure 1st that your SuperGun properly adjust the RGBS signals to TV levels using a buffer/driver, such as the HAS v3.1 +> +> This is exactly why some people blown their expensive OSSC or Framemeister; their SuperGun wasn't properly adjusting video signals. + + +> The main issues with arcade boards are this: +> +> - they never ever been designed to be played outside their cabinet +> +> - there's was no video standard. Full-scale arcades manufacturers had not only the joy to create their own board from ground up but also the one of choosing the right monitor and fine tune it accordingly. +> +> The JAMMA standard that came at the end of the 80s/early 90s was created to allow arcade center operators to use old cabinets again & again only by changing the game board, controls and cabinet side arts/marquees. But still, since no standard was ever made for video, arcade monitors had those adjustments pots mounted either at the back of the monitor or on an external harness like this one to render the monitor ''compatible'' with the new board. That was a pain to adjust right and sometimes the adjustment was buggy at best. Even the JAMMA standard itself wasn't respected for long: some games were designed to use more buttons than what the standard allowed (exemple Street Figther 2) by using dormant pins on the JAMMA connector or by adding new connectors on their boards; see kick harness. +> +> All SuperGuns try to adapt that video chaos for what a 75ohm TV needs but it doesn't mean that they are doing it right. There is mostly 3 types of SuperGuns video designs around: +> +> - Fixed resistor value: You can't just slap some resistors on the RGBS lines and attenuate them that way by hoping to create a voltage divider. RGBS output levels from arcade boards varies too much from a board to an other to use fixed values. Avoid at all cost (exemple: the horrible Vogatek.) +> +> - Potentiometers: Better than having fixed values but same as above since you don't know for sure what you're doing. Having nice colors on your TV doesn't mean that you aren't flooding your AV equipment protection diodes, if they have any. This solution will mostly kill your AV (TV, scaler) as well in the long run. To me it's an avoid at all cost as well. (exemple: the RetroElectronik Pro gamer) +> +> - Impedance matching: very high impedance, video-bandwidth amplifiers/buffers ARE NECESSARY to prevent RGB distorsion and provide a steady impedance match for 75 ohms AV inputs. Same with the sync but it needs to be buffered, attenuated and impedance matched as well. This is the only way to go. (exemple: the current HAS 3.1 (almost impossible to get), the future Sentinel and the open-source DIY Thibaut Varènes design) + +A small reiteration regarding the "RetroElectronik Pro" as referenced above - By user @cglmrfreeman +>I was using gbs-control directly with the RetroElectronik Pro Supergun and had a lot of noise in the black areas, as well as dark rolling waves across the screen when used with an HDMI converter. These flaws didn't appear using a VGA CRT monitor but I decided to do some testing anyway. Attaching the harness from the GBS unit directly to a JAMMA fingerboard resulted in significant improvements and no noise that I could make out. +> +>As the above states, there was no video standard for arcade boards, and JAMMA is nice, but if you can bypass your supergun, such as/specifically the RetroElectronik Pro, and connect directly into the GBS, I highly recommend that route. \ No newline at end of file diff --git a/Wiki/Build-the-Hardware.md b/Wiki/Build-the-Hardware.md new file mode 100644 index 00000000..be374545 --- /dev/null +++ b/Wiki/Build-the-Hardware.md @@ -0,0 +1,62 @@ +--- +sort: 2 +--- + +## Intro +Gbs-control is a replacement firmware for GBS8200 upscaler boards. +It runs on the popular ESP8266 microcontroller and uses the Arduino plattform. + +GBS8200 upscalers can be bought on Ebay, at prices around $20. +Ebay also has ESP8266 microcontroller boards for about $4. +The ones called "Wemos D1" or "NodeMCU" work well and are recommended. + +## Basic Install +You need the GBS upscaler, an ESP8266 board, a bit of cabling and a jumper or wire link for disabling the onboard processor, so that the ESP8266 can take over. +Power for the ESP8266 can be provided by, for example: +- using the power supply that powers the GBS > into the ESP8266 boards "Vin" (recommended, white connector next to power input) +- using the GBS regulated Vcc (3.3V) > into the ESP8266 boards "3.3V" input (not recommended, but photo below shows this) + +Connect the ESP8266 board ground to a convenient ground point on the GBS. + +Connect the two I2C bus wires (GBS side: SDA and SCL) to the ESP8266 pins of the same name. +ESP8266 boards do not have standardized pin names, but they follow some naming rules. +- most boards label SDA and SCL directly +- if they are not named (Wemos D1 Mini and many others): SCL is "D1", SDA is "D2" +- if unsure, see if you can find your ESP8266 board [here](https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/) +- GBS side SDA goes to ESP8266 side SDA, same for SCL + + + +![](https://i.imgur.com/TvSAQuX.png) + + + +- Use a jumper to bridge the 2 pins below the first programming port (see picture above) +### Connect DebugPin +To enable automatic image position and timing adjustment, the ESP8266 needs to measure some timings. +Carefully solder a wire from the pictured DebugPin to: +- Wemos D1 / NodeMCU pin "D6" +- some boards label this pin "D12" or "MISO" + +## Software setup +Next, the ESP8266 needs to be programmed. Head over to the [software setup](./Software-Setup.html) page. + +## Troubleshooting + +### No Picture +- Are SDA / SCL reversed? It's safe to reverse them and try again. +- The debug pin does not have to be connected for gbscontrol to work at a basic level. +- Forgot to install the jumper that disables the GBS original controller? +- ~100 Ohm resistor to ground on Sync-in is installed? +- when using a sync stripper: Is the LM1881 source voltage `5V`? + + + +```tip +### To Debug Issues +The Arduino IDE serial monitor shows debug information at `115200` baud. +If your ESP8266 is connected to a computer via USB, you can access this serial monitor to find out more about the issue. +In the Arduino IDE, you need to select an ESP8266 board that matches your hardware (if unsure, select "LOLIN(WEMOS) D1 R2 & mini"). +``` + + diff --git a/Wiki/ESP8266-Board-Adapter.md b/Wiki/ESP8266-Board-Adapter.md new file mode 100644 index 00000000..a9e8c6a5 --- /dev/null +++ b/Wiki/ESP8266-Board-Adapter.md @@ -0,0 +1,55 @@ +--- +sort: 6 +--- +# ESP8266 adapter + +```warning +The adapter method places the ESP8266 very close to the TiVo5725 scaler chip, which exposes it to electromagnetic interference. +As a result, the ESP8266 can have issues with its WiFi, resulting in limited access to the web interface. +As such, I don't recommend using this adapter method. +Instead, place the ESP8266 module right next to the GBS 8200 board, near the I2C connection headers. +``` + +## Old Article + +### Overview +This is a method of mating a GBS board with a common ESP8266 development board, using a socket to attach to the original MCU. +It provides all the required signals for the ESP8266 to take over control of the scaler. + + + +![](https://i.imgur.com/fEwLqRT.png) + + + +### Grinding down stand-offs + + + +![](https://i.imgur.com/cbKwnoD.png) + + + +### Inner socket surface has to be flat and even + + + +![](https://i.imgur.com/SFFIPYm.png) + + + +### Signal Locations + + + +![](https://i.imgur.com/9DciLIe.png) + + + +### Mating Adapter with ESP8266 Dev Board + + + +![](https://i.imgur.com/1JQfn3r.png) + + diff --git a/Wiki/GBS-8200-Variants.md b/Wiki/GBS-8200-Variants.md new file mode 100644 index 00000000..9eabcc10 --- /dev/null +++ b/Wiki/GBS-8200-Variants.md @@ -0,0 +1,49 @@ +--- +sort: 3 +--- + +# GBS Variations +## Yellow Button "V5.0" or "2017" +Those newer GBS-8200 boards have an LDO oscillation problem. +It works, but there will be a lot of noise in the picture. +The easy fix is to remove one SMD capacitor, circled in red. + + + +```tip +A better fix would be to replace this capacitor with an electrolytic of 22uF to 47uF. +``` + + + + + +![](https://i.imgur.com/XWDD0Ss.jpg ) + + +[Background](http://www.ti.com/product/LM1117/datasheet/application_and_implementation#snos4127440) +The chosen SMD capacitor on these boards has far too little capacitance (120nF measured) AND has very little ESR. It causes the LDO to permanently oscillate at around 20Mhz. There is an electrolytic capacitor further down the line that is sufficient for stable operation of the LDO. + +## Original GBS-8220 + +Same LDO oscillation problem, but here it is limited to setups that use a power supply of > 5.0V. +I get wild oscillation at 7.6V from a common PSOne supply. +The same C11 removal fix works here as well. + + + +![](https://ianstedman.files.wordpress.com/2014/12/gbs-8220-v3-medium.jpg) + + + +These variants also use a special video driver for the VGA output. +The driver IC has a charge pump that it uses to generate negative voltage. +This would be a useful feature for driving YPbPr signals, but here they just seem to dump the current onto the ground plane (from what I can tell at least). +That charge pump is generating noise however, and since no ferrite bead is used at location R58, a noise pattern easily develops in the image. +With a bead installed and some extra SMD capacitors, the image is fine again. + + + +![](https://i.imgur.com/UiSPbwW.jpg) + + \ No newline at end of file diff --git a/Wiki/Hardware-Mod-Library.md b/Wiki/Hardware-Mod-Library.md new file mode 100644 index 00000000..2731a754 --- /dev/null +++ b/Wiki/Hardware-Mod-Library.md @@ -0,0 +1,28 @@ +--- +sort: 7 +--- + +# Hardware Mods Library + +This page lists all of the known modifications which people have attempted on the GBS82XX series boards, what they do, and if they should be performed or not. +Note that in most cases, gbscontrol will work without any of these modifications. + +|Key| | +|---|---| +| ! | Essential | +| O | Optional / Recommended | +| X | Not needed / Deprecated | + +|Mod Description | _GBS8220_|_GBS8200_ |_GBS8200(2017)_| Effect/Issue Fixed by Mod | +|----------------|----------|---------|---------------|---------------------------| +|Add 100ohm resistor across sync and ground for RGBs input | ! | ! | ! | Corrects sync level for 75 Ohm sources (such as game consoles) | +|Replace R34 with 75 Ohm resistor | O |O |O | Permanent 75 Ohm termination, instead of the mod above | +|Remove C11, optionally replace with 22uF (6.3V to 16V) electrolytic cap | O |O |O | [Stabilizes 1.8V LDO, removes noise from image](./GBS-8200-Variants.html) | +|Remove the 3 RGB potentiometers, replace with direct link | O | O | O | [Improves Colors](./RGB-Potentiometers.html) | +|Add 10uf / 22uf ceramic SMD capacitors in parallel to stock ones (x4) C23, C41(alternative: C43), C42, C48 | O |O |O | [Provide local charge reservoir to help power supply bypassing. May reduce noise and waves in the image](./Power-supply-bypass-capacitors.html) | +|Add a Sync Stripper circuit to RGBs input | O |O |O | Try this if sync is never quite stable | +|Replace R58 with 120 Ohm ferrite bead | O |X |X | For GBS8220 (2 output version); decouples charge pump | +|Add 100n cap between R59 and R58 | O |X |X | For GBS8220 (2 output version); decouples charge pump | +|Replace C33 and C35 with 1nf (1000pf) SMD capacitors (0605/0805 50V C0G) | X |X |X | [Deprecated Sync fix](./Sync-on-Green-Capacitor-Replacements.html) | +|Foil tape over digital signal lines | X |X |X | This was fixed in software (SDRAM delays) | +|Replace L1 L2 L3 with 220R 100v ferrite beads | X |X |X | Not recommended until testing has concluded | diff --git a/Wiki/Inputs.-SCART-adapter,-optional-sync-stripper.md b/Wiki/Inputs.-SCART-adapter,-optional-sync-stripper.md new file mode 100644 index 00000000..478d6e6e --- /dev/null +++ b/Wiki/Inputs.-SCART-adapter,-optional-sync-stripper.md @@ -0,0 +1,48 @@ +--- +sort: 8 +--- + +# SCART RGB to VGA adapter + +If you want to build an adapter, here is some good inspiration: https://tomdalby.com/other/gbs8200.html Use the "GBS-8200 SCART Circuit v2" picture as a guide and ignore the LM1881 chip, just connect the wires from the 8 pin JST HX connector to the female SCART socket then add the 100 Ohm resistor (if needed, see below for the details). + +The ArcadeForge Sync Strike is a solution that will work, if you don't want to build an adapter yourself. +http://arcadeforge.net/Scaler-and-Strike-Devices/Sync-Strike::15.html?language=en + + + +```note +Every GBS board comes with ~500 Ohm termination on the sync input. This termination is meant for (PC) VGA and most arcade boards. + +Csync from consoles should be fine without additional termination but the input may not behave well with other kinds of sync. + +If you want to use the RGBS input for regular video-level sync sources, the GBS requires one additional 100 Ohm resistor connected to ground from the sync input.
Together with the ~500 Ohm factory resistor, this will bring the total termination closer to TV levels (75 Ohms). +``` + +
+ +## Using a Sync Stripper +Compatibility with Sync-on-Composite or Sync-on-Luma can be improved by using a sync stripper, such as the LM1881. +It is recommended that you build your circuit so that it has a 75 Ohm to ground (termination) resistor on the LM1881 video input, as well as a 470 Ohm series (attenuation) resistor on the sync output. You will no longer need the 100 ohm terminating resistor with this sync stripper built into your SCART adapter.
+The 75 Ohm resistor on the chip's input provides a properly-terminated connection for the source signal.
+The 470 Ohm series resistor on the CSync output of the LM1881 lowers the voltage to safe levels for the GBS. + +Your extracted Sync signal can now be connected to the "S" (sync input) pin of the GBS. + +User viletim shows a good LM1881 circuit here: +https://shmups.system11.org/viewtopic.php?f=6&t=55948&p=1153713#p1153713 +https://shmups.system11.org/viewtopic.php?p=1153077#p1153077 + + + +```note +Note that his circuit omits the _Rset_ resistor and capacitor. This works for CSync generation, but the VSync output will not work. This is not a problem for this application, as we are only interested in the CSync signal. + +Also note that the LM1881 requires 5V to operate, but the GBS only makes 3.3V easily available on its headers. +The 5V power for the LM1881 needs to be sourced elsewhere. The GBS board's power input may be a good option, assuming your DC power supply is decent. + +One user has successfully used the sync stripper at just 3.3V with the output 470 Ohm resistor removed. +This is not recommended though, since the LM1881 will have a hard time with some signals when undervolted like this. +``` + + diff --git a/Wiki/OLED-Add-On-Setup-Info.md b/Wiki/OLED-Add-On-Setup-Info.md new file mode 100644 index 00000000..e5f4a4f5 --- /dev/null +++ b/Wiki/OLED-Add-On-Setup-Info.md @@ -0,0 +1,85 @@ +--- +sort: 9 +--- + +# OLED Addon + + + +### NOTE: This OLED Add-On is completely optional to GBS-Control. If you choose not to install it, your GBS-Control board will still operate normally. + + + + + + +```warning +This addon is not meant to replace the Web UI and was/is just a means to help select the more common settings. This is still a work-in-progress to add more features in the future. +``` + + + +## Installation: +- Materials Needed: + * 1x I2C 0.96" OLED Screen + * 1x Rotary Encoder (EC11) + * 2x 0.47uF Capacitors (50V, Electrolytic) + +- Schematic: + + + +```note +This is just a general/draft "how-to" schematic. +``` + + + +![schematic_test1](https://i.imgur.com/X3MbPzX.png) + +## General Usage + +After the boot logo splash screen, you'll be presented with a simple menu system. + + + +![mainMenu](https://i.imgur.com/sI7LR1n.jpg) + + + +By rotating left or right on the encoder, the indicator will move up or down. Pressing the encoder will select the option. + (If the indicator is acting odd, you may have the CLK and DATA pins of the encoder reversed) + +Each submenu will have a _BACK_ option which upon selecting will go back to the main menu, for example: + + + +![resolutionBackEx](https://i.imgur.com/jPDNq2N.jpg) + + + +The only menu that this is slightly different is the _Current Settings_ menu. Within this menu you will be able see various specs that are currently being utilized. While in this menu press the encoder once without rotation and this will bring you back to the main menu. + + + +![currentsettingsExample](https://i.imgur.com/wPpbZNC.jpg) + + + +## Additional Information + +### OLED: +- Communication method is very important for this! Please, try to get a hold of an **I2C** not a **SPI** screen. +- At the moment, this was designed (font/text alignments) for the 0.96" variant of screens. Any other size will produce "interesting" results. +- Color configurations will be found in various listings/datasheets for screens (BLUE,BLUE/YELLOW,WHITE). While any color configuration will work, it's recommended to stick to a single color option to achieve a cleaner look. Case in point shown below. + + + +![dcbootExample](https://i.imgur.com/cBahzGe.jpg) + + + +### Rotary Encoders: +- This type of encoder has many applications and benefits to its design. However, one major downside is that it tends to be a _noisy_ device. Along with the ISR and filter the goal is to not have many wrong inputs occur while rotation or selection. +- Any general EC11 model of encoder will work. Pretty much "EC11 Rotary Encoder" on Amazon/Ebay will yield the correct results. It's a fairly inexpensive and common part +- Breakout board versions of this part should work, but isn't entirely recommended. Mainly coming down to cost and the fact that there could be many variations of said breakout boards out there. Meaning, potentially differing resistor/capacitor values for the filtering circuit. This *could* lead to disruption of the ISR. Tests were done to ensure the capacitors/resistors worked well together with the ISR. If you choose to use a breakout then omit the capacitors and pull-up resistors. diff --git a/Wiki/Power-supply-bypass-capacitors.md b/Wiki/Power-supply-bypass-capacitors.md new file mode 100644 index 00000000..23750eae --- /dev/null +++ b/Wiki/Power-supply-bypass-capacitors.md @@ -0,0 +1,28 @@ +--- +sort: 10 +--- +# Power Supply Bypass capacitors + +One recommended modification to the stock GBS board is to add more capacitance for power supply bypassing. +This step can reduce some forms of visible noise. + +Forum post: https://shmups.system11.org/viewtopic.php?p=1349983#p1349983 +> Let's settle on 10uF for the large local storage caps, as more capacity seems to be at the upper end of current market offers. +> We want as high a voltage rating as possible, but that increases size. We want to limit size to 0805, so they can still be soldered besides the 0603 stocks. +> Ebay has some cheap listings for: +> 0805: 10V +> 0603: 6.3V +> Actual voltages are 3.3V for the main supply (C23 C41 C48), and 1.8V for the digital supply (C42). + +Examples of capacitors installed in parallel: + + + +![](https://i.imgur.com/nfrRZc6.jpg) + + + + +![](https://i.imgur.com/DVQ0Wkz.jpg) + + \ No newline at end of file diff --git a/Wiki/README.md b/Wiki/README.md new file mode 100644 index 00000000..c8892e96 --- /dev/null +++ b/Wiki/README.md @@ -0,0 +1,12 @@ +--- +sort: 1 +--- + + +# Welcome to the gbs-control wiki! + + + +{% include list.liquid all=true %} + + \ No newline at end of file diff --git a/Wiki/RGB-Potentiometers.md b/Wiki/RGB-Potentiometers.md new file mode 100644 index 00000000..d0466232 --- /dev/null +++ b/Wiki/RGB-Potentiometers.md @@ -0,0 +1,35 @@ +--- +sort: 4 +--- + +## RGB Potentiometers + +Please turn these 3 potentiometers all the way to the left. This adjusts the colors to the correct level. + + + +![](https://i.imgur.com/v4gr9AJ.jpg) + + + +The potentiometers should ideally be removed and their old inputs / outputs be bridged. +This would correct the RGB termination resistance to the TV standard `75` Ohm. + +With the potentiometers in the path, that termination is closer to `65` Ohm, which results in a slightly darker picture. +Removing these can be tricky though, since you can't reach the pins with a clipper. Desoldering is recommended. + + + +```note +This is not a necessary modification though. The brightness can be corrected with the software or on the display. +``` + + + +Here is how the connections can be bridged: + + + +![](https://i.imgur.com/nwfQQs7.jpg) + + \ No newline at end of file diff --git a/Wiki/Si5351-Clock-Generator-install-notes.md b/Wiki/Si5351-Clock-Generator-install-notes.md new file mode 100644 index 00000000..8e11f68f --- /dev/null +++ b/Wiki/Si5351-Clock-Generator-install-notes.md @@ -0,0 +1,45 @@ +--- +sort: 5 +--- + +# Si5351 Clock Generator install notes + +The Si5351 Clock Generator board is controlled by I2C to output precise frequencies from <8KHz up to 150+ MHz. Input VCC is 3-5v and output is 3vpp. The GBS-Control firmware automatically supports this board when installed as follows: + +Solder a wire from the centre pad of CLK0 to TrueView pin `40` (PCLKIN). Check for continuity and resistance. Remember only the centre pad for `CLK0` is for signal. In my board I have used prepared AWG32 enamelled copper wire. + +With the scaler board oriented with text facing you, the left side of either C47 or C48 can be used for ground when soldered to the first or third pad of CLK2. I used AWG30 Kynar with the smallest amount of exposed wire, flux and a small amount solder. + +For powering the clock gen, solder a wire from the positive side of either C47 or C48 to the unlabelled capacitor shown on the clock gen board. It is most likely a filtering capacitor for the clock’s LDO 3.3v output. Again I have used AWG30 Kynar wire and clear varnish for fixation to the PCB. + +The Myson Controller (MTV230) is connected via +- Pin `25` (P1.0) to Si5351 `SCL` +- Pin `26` (P1.1) to Si5351 `SDA` + +This can be achieved by soldering directly to each controller IC leg as shown. +Alternatively one use the output side (right) of **R10 for SCL** and **R37 for SDA**. Add strain relief or fixation. + +You can solder these wires directly to the same SDA/SCL lines on the ESP8266 too. + +To test the clock generator is working, open the GBS Control web gui. Go to Preferences and scroll down to Activate FrameTime lock. Press on the FrameTime Lock button and the console will read “Active FrameTime Lock not necessary with external clock gen installed”. Video output should be pristine and free of horizontal tearing when high output resolution presets are used. + + + +![Closeup of installed clock gen to GBS8200](https://i.imgur.com/bAtlD6Ah.jpg) + + + + + +```tip +If you don't want to place the clock generator to the heat sink, then you can alternatively place it to where the potentiometers used to be. If you do the bridges on the bottom of the GBS board, then this leaves you with some blank space where you can attach the clock generator. + +You have to use a small piece of insulating material (I used 2mm and 0.5mm FR4 which is the material circuit boards are made from but without any copper on it) to raise the clock generator up a bit. And preferably use double sided tape for mounting as this can be removed if you have to for any reason. If you remove a little bit of the clock generator board to make it shift closer to pin 40 of the TrueView IC, then the "GND" pad of the clock generator actually matches a GND pad on the GBS board which allows to connect GND by just sticking a wire through both boards. This provides good, low impedance, ground coupling between the two boards. + +This is more a technique for advanced builders. If you don't have the right tools, then it is OK if you place the board to the top of the heatsink. + +![Closeup of the clock gen placed to the potentiometer location](https://user-images.githubusercontent.com/3519517/159733516-bcff58ba-ffef-4f89-9cb6-ce31d48bca01.jpg) + +``` + + \ No newline at end of file diff --git a/Wiki/Software-Setup.md b/Wiki/Software-Setup.md new file mode 100644 index 00000000..7db192f7 --- /dev/null +++ b/Wiki/Software-Setup.md @@ -0,0 +1,185 @@ +--- +sort: 11 +--- + +# Software Setup + +## Arduino Software (tested with 1.8.11) +Download and install the [Arduino software (IDE)](https://www.arduino.cc/en/Main/Software) + +## ESP8266 support for Arduino IDE +In the Arduino IDE open the preferences dialog and enter the following URL as "Additional Boards Manger URL": +http://arduino.esp8266.com/stable/package_esp8266com_index.json + + + +![Preferences](https://i.imgur.com/rFCvLxl.png) + + + +Go to __Tools__ > __Board:__ > __Boards Manager ...__, search for "esp8266" and install "esp8266 by ESP8266 Community", +version 2.6.3 + + + +```warning +Do not use version `3.0.0` or newer, it is reported to break things!: +``` + + + + + +![Preferences](https://i.imgur.com/i6XGPwl.png) + + + +Now go to __Tools__ > __Board:__ and choose your ESP8266 board. + + + +```note +If you aren't sure which board you have, select "LOLIN(WEMOS) D1 R2 & mini". +``` + + + +Set CPU frequency to 160 MHz and Flash size to "4MB (FS:1MB OTA:~1019KB)". + +```danger +(Don't skip this step, or you won't be able to save custom configurations later.) +``` + +Set the `IwIP Variant` to `v2 Lower Memory`. +Plug your board into a free USB port on your PC and select the detected COM port in the Arduino IDE. + +### ESP8266 IDE Settings + + + +![ESP8266 IDE Settings](https://i.imgur.com/yQkbbn1.png) + + + +## Used Libraries + +### ESPAsyncTCP and ESPAsyncWebServer by me-no-dev + +Download these 2 libraries from Github (Button that looks like this ) and extract to Arduino libraries folder. +(On Windows: "Documents\Arduino\libraries" or full path: "C:\Users\rama\Documents\Arduino\libraries") + +https://github.com/me-no-dev/ESPAsyncTCP +https://github.com/me-no-dev/ESPAsyncWebServer + +Direct Downloads: + +
+ + +ESPAsyncTCP + + + +ESPAsyncWebServer +
+ +### OLED Add-on Library + + + +```note +The OLED functionality is _completely_ optional for GBS-Control. However, the OLED driver library is still needed for compilation. You can install it via the Arduino Library Manager like the previous libraries mentioned. +``` + + + +__Sketch__ > __Include Library__ > __Manage Libraries__ > "ESP8266 and ESP32 OLED driver for SSD1306 displays" + +https://github.com/ThingPulse/esp8266-oled-ssd1306 + +Direct Download: + + +esp8266 oled ssd1306 + + + +![Libraries](https://i.imgur.com/BR2olsh.png) + + + + +### Optional Libraries +Go to __Sketch__ > __Include Library__ > __Manage Libraries ...__ and install the following libraries by searching for them and installing: + +#### ESP8266-ping + +> by @bluemurder (used to debug WiFi connection issues, have the ESP8266 ping your router) + + https://github.com/bluemurder/ESP8266-ping + +Direct Download: + + +ESP8266 ping + +## Download gbs-control, Compile and Upload +- download the current master .zip (https://github.com/ramapcsx2/gbs-control/archive/master.zip) +- (alternative): if using a Git client, checkout gbs-control (https://github.com/ramapcsx2/gbs-control.git) +Extract the zip archive and rename the folder to "gbs-control" (removing "-master"). +- start the Arduino IDE by opening gbs-control.ino + +You should be able to build the software by choosing __Sketch__ > __Verify / Compile__ (or clicking the tick mark in the tool bar). + +With the ESP8266 board connected to your computer, and the correct COM port selected, you can now upload the software. +Do this via __Sketch__ > __Upload__ (hit "Ctrl + U" or by clicking the right arrow in the tool bar). +(This could take a while for the first compilation.) + +## Accessing the web based control panel +Gbscontrol offers several options, all via an interactive web page that is served from the ESP8266 via WiFi. +Here is how you access this control panel in the default AP (Access Point) mode: + +* Start up your ESP8266, the LED on the module should come on +* The ESP8266 opens up a new WiFi Network with the name `gbscontrol` +* Connect your PC or Smartphone to the gbscontrol network (default password: `qqqqqqqq`) +* Open http://gbscontrol (or http://gbscontrol:80) (or http://gbscontrol.local) in a browser + +The control panel should load. + +## Connecting to your WiFi (optional) +The next step is to connect the ESP8266 to your home network. + +* Click on the System tab and then on "Connect to WiFi Network" +* Enter your home network SSID (you can scan for it) + password +* Click "Connect" +* The ESP8266 restarts now, so you will see an error page on your device. This is okay! +* Wait for about a minute, then the web UI will be reachable in your local network via: + - IP (have a look at the debug output in the Arduino software) + - address "http://gbscontrol.local" (requires mDNS support from the operating system, sometimes the router provides support) + - address "http://gbscontrol:80", "http://gbscontrol" or just "gbscontrol" + + + +```note +The ESP8266 remembers this network, so it will always try to connect to this network first. +If it can't connect, it will revert to AP mode. +``` + + + +### Remove WiFi settings + +If you ever want to delete the network information, you can do so by uploading the sketch in the +"Erase Flash:" > "Sketch + WiFi Settings" mode: + + + +![ESP8266 Wipe WiFi](https://i.imgur.com/QlyWocy.png) + + + +That's it! +Head over to the other Wiki pages if you want further information. + +This setup guide has been lifted with permission from @toblum and his nice McLighting project ;) +https://github.com/toblum/McLighting/ diff --git a/Wiki/Sync-on-Green-Capacitor-Replacements.md b/Wiki/Sync-on-Green-Capacitor-Replacements.md new file mode 100644 index 00000000..b259ed00 --- /dev/null +++ b/Wiki/Sync-on-Green-Capacitor-Replacements.md @@ -0,0 +1,38 @@ +--- +sort: 17 +--- + +# Sync-On-Green Capacitors replacements + + + +```warning +This modification is not required anymore. +Gbscontrol now uses an undocumented clamping level bit to work well with the default capacitors. +It isn't necessary to do this modification anymore, but you can still do it and improve sync performance. +``` + + + +Sync pulses for RGBS and Component Video sources are AC coupled to the TV5725 scaler IC. +The GBS8200 board designs (all variants I know of) don't follow the TV5725 datasheet for these "SOG" coupling capacitors. +The value for "C33" and "C35" should be 1nF (1000pF). Instead, the installed capacitors have a value of 100nF. + +Due to the high capacitance, the SOG extraction circuit in the 5725 sees too much of any eventual video content, instead of just the synchronization pulses. +This leads to frequent short sync losses when the picture content changes rapidly, for example on a flashing screen. + +Previously, it was recommended to use a Sync Stripper circuit to address the dropouts. +It is better to replace C33 and C35 with 1nF parts, thus allowing the SOG separation circuit to do the job it was designed to do. +Due to the densely populated work area, good soldering equipment and a little experience is required. +For the capacitors, I recommend looking for 1nF SMD NP0 (or X7R) parts. Sizes of "0805" or "0603" will fit well. + + + +![](https://i.imgur.com/hgpaVER.png) + + + + +![](https://i.imgur.com/S2jw69Q.jpg) + + diff --git a/Wiki/Tested-video-modes.md b/Wiki/Tested-video-modes.md new file mode 100644 index 00000000..e5187dd7 --- /dev/null +++ b/Wiki/Tested-video-modes.md @@ -0,0 +1,157 @@ +--- +sort: 16 +--- + +# Tested Video Modes + + + +* [Atari ST family](atari-st-family) +* [IBM PC and compatibles](ibm-pc-and-compatibles) +* [Macintosh](macintosh) + + + +## Atari ST family +| Input | Graphics chip | Mode no | Type | Resolution | Refresh (V) | Refresh (H) | Works | Comments | +|-------|---------------|---------|------|------------|---------------|-------------|-------|------------| +| VGA | Shifter | Low | RGB | 320x200 | 50 Hz / 60 Hz | 15.75 KHz | YES | Jumps on STFM, works on Mega ST and STE ([#198](https://github.com/ramapcsx2/gbs-control/issues/198)) | +| VGA | Shifter | Medium | RGB | 640x200 | 50 Hz / 60 Hz | 15.75 KHz | YES | Tested on STE | +| VGA | Shifter | High | RGB | 640x400 | 72 Hz | 31.50 KHz | NO | Stops working after a few seconds ([#190](https://github.com/ramapcsx2/gbs-control/issues/190)) | + +## IBM PC and compatibles + +| Input | Graphics chip | Mode no | Type | Resolution | Refresh (V) | Refresh (H) | Works | Comments | +|-------|---------------|---------|------|------------|-------------|-------------|-------|------------| +| VGA | ATi Mach 64 | 00h | VGA | 320x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 01h | BIOS | 320x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 01h | VGA | 320x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 02h | BIOS | 640x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 03h | BIOS | 640x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 03h | VGA | 640x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 04h | BIOS | 320x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 05h | BIOS | 320x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 06h | BIOS | 640x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 07h | BIOS | 640x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 07h | VGA | 720x350 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 0Dh | BIOS | 320x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 0Eh | BIOS | 640x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 0Fh | BIOS | 640x350 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 10h | BIOS | 640x350 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 11h | BIOS | 640x480 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 12h | BIOS | 640x480 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 13h | BIOS | 320x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 14h | BIOS | 160x120 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 15h | BIOS | 256x256 | ????? | ????? | YES | Cut | +| VGA | ATi Mach 64 | 16h | BIOS | 296x220 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 17h | BIOS | 320x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 18h | BIOS | 320x240 | ????? | ????? | YES | Cut | +| VGA | ATi Mach 64 | 1Ah | VGA | 640x350 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 19h | BIOS | 320x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 1Ah | BIOS | 360x270 | ????? | ????? | YES | Cut | +| VGA | ATi Mach 64 | 1Bh | BIOS | 360x360 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 1Bh | VGA | 720x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 1Ch | BIOS | 360x480 | ????? | ????? | YES | Cut | +| VGA | ATi Mach 64 | 1Ch | VGA | 720x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 1Dh | BIOS | 400x300 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 1Dh | VGA | 640x480 | ????? | ????? | YES | Cut | +| VGA | ATi Mach 64 | 1Eh | VGA | 640x480 | ????? | ????? | YES | Cut | +| VGA | ATi Mach 64 | 1Fh | VGA | 640x480 | ????? | ????? | YES | Cut | +| VGA | ATi Mach 64 | 21h | BIOS | 800x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 22h | BIOS | 800x480 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 23h | BIOS | 1056x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 32h | BIOS | 1056x344 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 33h | BIOS | 1056x352 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 40h | BIOS | 512x384 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 41h | BIOS | 512x384 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 42h | BIOS | 400x300 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 43h | BIOS | 400x300 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 44h | BIOS | 640x350 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 45h | BIOS | 640x350 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 57h | BIOS | 640x350 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 58h | BIOS | 320x200 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 59h | BIOS | 320x240 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 5Ah | BIOS | 512x384 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 5Bh | BIOS | 400x300 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 5Ch | BIOS | 640x480 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 5Dh | BIOS | 800x600 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 5Eh | BIOS | 1024x768 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 5Fh | BIOS | 1280x1024 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 60h | BIOS | 320x200 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 61h | BIOS | 640x400 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 62h | BIOS | 640x480 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 63h | BIOS | 800x600 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 64h | BIOS | 1024x768 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 65h | BIOS | 1280x1024 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 6Bh | BIOS | 320x240 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 6Dh | BIOS | 512x384 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 6Eh | BIOS | 400x300 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 6Fh | BIOS | 640x350 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 70h | BIOS | 320x200 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 71h | BIOS | 640x480 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 72h | BIOS | 640x480 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 73h | BIOS | 800x600 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 74h | BIOS | 800x600 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 75h | BIOS | 1024x768 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 76h | BIOS | 1024x768 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 77h | BIOS | 1280x1024 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 78h | BIOS | 1280x1024 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 79h | BIOS | 320x240 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 7Ah | BIOS | 320x200 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 7Bh | BIOS | 320x240 | ????? | ????? | YES | | +| VGA | ATi Mach 64 | 97h | VGA | 720x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | A1h | VGA | 320x240 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | A3h | VGA | 640x350 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | C1h | VGA | 360x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | C3h | VGA | 720x400 | ????? | ????? | NO | | +| VGA | ATi Mach 64 | 100h | VESA | 640x400 | 70 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 101h | VESA | 640x480 | 60 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 103h | VESA | 800x600 | 56 Hz | ????? | YES | Misaligned | +| VGA | ATi Mach 64 | 105h | VESA | 1024x768 | 87 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 107h | VESA | 1280x1024 | 87 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 10Dh | VESA | 320x200 | 70 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 10Eh | VESA | 320x200 | 70 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 10Fh | VESA | 320x200 | 70 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 110h | VESA | 640x480 | 60 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 111h | VESA | 640x480 | 60 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 112h | VESA | 640x480 | 60 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 113h | VESA | 800x600 | 56 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 114h | VESA | 800x600 | 56 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 115h | VESA | 800x600 | 56 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 116h | VESA | 1024x768 | 87 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 117h | VESA | 1024x768 | 87 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 118h | VESA | 1024x768 | 87 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 119h | VESA | 1280x1024 | 87 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 11Ah | VESA | 1280x1024 | 87 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 11Bh | VESA | 1280x1024 | 87 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 202h | VESA | 320x200 | 70 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 212h | VESA | 320x240 | 60 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 213h | VESA | 320x240 | 60 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 214h | VESA | 320x240 | 60 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 215h | VESA | 320x240 | 60 Hz | ????? | YES | | +| VGA | ATi Mach 64 | 222h | VESA | 512x384 | 70 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 223h | VESA | 512x384 | 70 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 224h | VESA | 512x384 | 70 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 225h | VESA | 512x384 | 70 Hz | ????? | NO | | +| VGA | ATi Mach 64 | 232h | VESA | 400x300 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 233h | VESA | 400x300 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 234h | VESA | 400x300 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 235h | VESA | 400x300 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 242h | VESA | 640x350 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 243h | VESA | 640x350 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 244h | VESA | 640x350 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 245h | VESA | 640x350 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 302h | VESA | 1600x1200 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 303h | VESA | 1600x1200 | ????? | ????? | ??? | | +| VGA | ATi Mach 64 | 304h | VESA | 1600x1200 | ????? | ????? | ??? | | + +## Macintosh + +| Input | Graphics chip | Mode no | Type | Resolution | Refresh (V) | Refresh (H) | Works | Comments | +|-------|---------------|---------|------|------------|-------------|-------------|-------|------------| +| VGA | N/A | ???? | ???? | 512×342 | 60.15Hz | 22.25KHz | YES* | Tested with a Power R Model 2703 on a Mac SE. *Right side shows a big vertical green bar instead of proper output. Similar [adapter](http://www.waveguide.se/?article=compact-mac-video-adapter) to output video from Macintosh SE. | + +* BIOS means the video mode is set up using INT 10h to call the VGA BIOS +* VGA means the video card registers are changed directly bypassing the BIOS +* VESA means the video mode is set up using INT 10h to call the VESA BIOS EXTENSIONS +* BIOS and VGA modes are expected to always produce the same refresh rates, VESA modes can change the rate diff --git a/Wiki/Web-GUI.md b/Wiki/Web-GUI.md new file mode 100644 index 00000000..e149a0b5 --- /dev/null +++ b/Wiki/Web-GUI.md @@ -0,0 +1,47 @@ +--- +sort: 13 +--- + +# WEB GUI + + + +![](https://i.imgur.com/qOB5HGb.png) + + + + + +![](https://i.imgur.com/ilz2Ai6.png) + + + + + +![](https://i.imgur.com/l8xbGs4.png) + + + + + +![](https://i.imgur.com/1ZwoSBO.png) + + + + + +![](https://i.imgur.com/bHfSqZF.png) + + + + + +![](https://i.imgur.com/ErzcD8g.png) + + + + + +![](https://i.imgur.com/7IaA4VE.png) + + \ No newline at end of file diff --git a/Wiki/Web-UI-Development.md b/Wiki/Web-UI-Development.md new file mode 100644 index 00000000..10bdb728 --- /dev/null +++ b/Wiki/Web-UI-Development.md @@ -0,0 +1,8 @@ +--- +sort: 14 +--- + +# WEB UI Development + +See: https://github.com/ramapcsx2/gbs-control/tree/master/public + diff --git a/Wiki/various-notes.md b/Wiki/various-notes.md new file mode 100644 index 00000000..9b175563 --- /dev/null +++ b/Wiki/various-notes.md @@ -0,0 +1,24 @@ +--- +sort: 12 +--- + +# Various Notes + +## ESP8266 WiFi connection + +Wow, the ESP8266 WiFi connection issues are weird. +Stabilizing the power supply, using short wires, fiddling with delay() and yield(), nothing brought better signal stability. + +But while doing some testing, I switched my source from NTSC to PAL. +That instantly brought the signal back and pings came through regularly. + +### Long story short +The 5725 horizontal PLL (pixel clock recovery from HSync) can lock into a frequency that disturbs the WiFi signal! +It's in such a narrow range that changing the PLL divider by a few ticks fixes it. + +#### Quick Fix +* Change the router WiFi channel (switching to channel 6 or 11 helps in my case) + +#### Better Fix +* Modify the PCB antenna to increase signal reception (Example: https://www.instructables.com/id/Enhanced-NRF24L01/) +* Move the ESP8266 board away from the GBS scaler chip (heatsink) as much as possible diff --git a/_config.yml b/_config.yml new file mode 100644 index 00000000..74a68b3f --- /dev/null +++ b/_config.yml @@ -0,0 +1,31 @@ +title: GBS Control +description: alternative firmware for Tvia Trueview5725 based upscalers +markdown: GFM +remote_theme: rundocs/jekyll-rtd-theme +# debug: +# compress: true +# dist: false +# shortcodes: true + +readme_index: + with_frontmatter: true + +plugins: + - jemoji + - jekyll-avatar + - jekyll-mentions + - jekyll-remote-theme + +exclude: + - Makefile + - CNAME + - LICENSE + - update.sh + - Gemfile + - Gemfile.lock + - requirements.txt + - node_modules + - package.json + - package-lock.json + - webpack.config.js + - jekyll-rtd-theme.gemspec diff --git a/_includes/templates/addons.liquid b/_includes/templates/addons.liquid new file mode 100644 index 00000000..92989feb --- /dev/null +++ b/_includes/templates/addons.liquid @@ -0,0 +1,43 @@ +
+
+
+ {{ site.title }} +
+
+ + {{ docs.source.branch }} + + +
+
+
+
+
{{ __.github | default: "GitHub" }}
+
+ + + {{ __.homepage | default: "Homepage" }} + +
+
+ + + {{ __.issues | default: "Issues" }} + +
+
+ + + {{ __.download | default: "Download" }} + +
+
+
+
+ This + Software + is under the terms of + {{ docs.license.name | default: "The Unlicense" }}. +
+
+
diff --git a/images/GBS_CONTROL.png b/images/GBS_CONTROL.png new file mode 100644 index 00000000..9759b046 Binary files /dev/null and b/images/GBS_CONTROL.png differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..6c5d5d44 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +sphinx-rtd-theme