A homebrew software suite for video game consoles developed to help in the evaluation of upscalers, upscan converters

240p Test Suite

For full documentation and source code, please visit: http://junkerhq.net/240p/

The 240p test suite is a homebrew software suite for video game consoles developed to help in the evaluation of upscalers, upscan converters and line doublers.

It has tests designed with the processing of 240p signals in mind, although when possible it includes other video modes and specific tests for them. These have been tested with video processors on real hardware and a variety of displays, including CRTs and Arcade monitors via RGB.

As a secondary target, the suite aims to provide tools for calibrating colors, black and white levels for specific console outputs and setups.

This is free software, with full source code available under the GPL.

Downloads

https://artemiourbina.itch.io/240p-test-suite

Versions

There are currently several platforms that run the suite, all have been developed and tested on real hardware. The software should run in NTSC mode by default.

Sega Genesis/Mega Drive:

It was developed using the SGDK, it was the first version of the 240p Test Suite and is fully coded in C. In order to run it, we recommend a Mega Everdrive flash cartridge, or the older Tototek one. The Genesis resolution is 320x224 and is being used fully, in NTSC (60hz).

Sega CD/Mega CD:

This version has the exact same specs as the Genesis one, but you only need a CD-R to run it. The program is fully loaded to the system RAM after startup.

PC Engine/Turbo Grafx-16:

This version of the suite requires a flash cart, such as the Turbo Everdrive. It has support for 224p and 240p, as well as the 3 horizontal resolutions: 256, 320 and 512. It must be noted that most games in 240p really use only 239 lines, so the suite also supports that video mode. It was developed using HuC and ASM.

PCE Duo/Turbo Duo/CD-ROM2/Super CDROM2:

Both versions have the exact same features as the PC Engine one, however there are two variants. The CD-ROM2 version works with Systems that have a System Cars 1.0 or 2.0/2.1, including the American TurboGrafx-16. The Super CD-ROM2 version uses System Card 3.0 or the Arcade Card. The benefit of this SCD version is that it loads only once at startup, and everything is ran from RAM afterwards.

NES/Famicom:

The Nintendo Entertainment System (NES) can output 240 picture lines in a progressive "double struck" mode. It does not support interlaced video, and its 52-color palette is closer to HSV than RGB.

The 240p test suite for Nintendo Entertainment System was developed in 6502 assembly language using [ca65], with image conversion tools written in Python 3 and [Pillow] (Python Imaging Library). It was tested on authentic NTSC and PAL NES consoles using a [PowerPak].

Since version 0.05, it compensates for differences between NTSC and PAL NES. It should work on PAL famiclones such as Dendy, though this hasn't been tested yet.

Super Nintendo/Super Famicom:

This version of the suite runs in full 256x224p, and has some tests and patterns for the 256x239p mode. It requires a flash cart, such as the Super Everdrive.

Sega Dreamcast:

This version includes more options, but the core functionality for 240p is the same. No special hardware or modifications are needed, it will run on any MIL-CD compatible Dreamcast after burning the CDI image (discjuggler format). It was coded using KallistiOS and some functionality from parallax (font support).

Wii:

This version of the suite needs a console able to run homebrew. It supports 240p, 480i and 480p modes in NTSC, as well as their counterparts in PAL. Can be ran from the SD Card.

Gamecube:

This version has the same features as the Wii version, can be ran from CD or an SD card media launcher.

Contributors

* Code: Artemio Urbina
* Main menu graphics: Asher
* SGDK assistance: Stephane
* KallistiOS SDK assistance: BlueCrab
* PVSnesLib: Alekmaul
* Advisor: Fudoh 
* Extra patterns and collaboration: Konsolkongen & shmups regulars

=============================================================================== Copyright 2011-2021 Artemio Urbina

NES Version Copyright 2015 Damian Yerrick

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Owner
Artemio Urbina
240p test Suite, MDfourier and some other stuff
Artemio Urbina
Comments
  • N64 ROM

    N64 ROM

    Hi @ArtemioUrbina . Like the work you are doing here! I have been trying to make this compatible with the latest libdragon version: https://github.com/N64-tools/cmake-demo-rom/tree/develop-display-testsuite using this fork: https://github.com/N64-tools/libdragon/tree/develop-displaytest

    I am just wondering what you had working when you first built it so that I can (attempt) to get it all working as well...

    BTW, I am creating the libdragon and ROM's with VS2019 on windows (and my ultimate goal is to ensure compatibility across platforms, so I would be unsurprised if some of my issues result from that)... also I am on the n64brew discord channel if it helps...

    Thanks,

    Robin.

  • Dreamcast Timing Value

    Dreamcast Timing Value

    Hi!

    I've been using 240p Test Suite for ages and it's been one of my favorite utilities.

    I think I've discovered a bug, however, which you can see here: https://github.com/ArtemioUrbina/240pTestSuite/blob/master/240psuite/Dreamcast/PVR/vmodes.c#L359

    data = 0x03 | 0x3f << 8 | 0x319 << 12 | 0x0f << 22;

    Should be:

    data = 0x03 << 8 | 0x3f | 0x319 << 12 | 0x0f << 22;

    The reason I believe this to be a bug is because I was looking at a disassembly of my own Dreamcast BootROM (BIOS), and saw that it uses a value of 0x03f1933f.

    By the same token, I think all of the regs[0x38] assignments in vmodes.c have that << 8 in the wrong place. This may be the underlying cause for your note that states that US Dreamcasts corrupt a PAL signal; they should not as they all have the same video hardware. It's just some region parameters in the internal flash memory that differ between the models.

    480i NTSC looks like it should be 0x07d6c63f 576i PAL looks like it should be 0x07d6a53f

  • Missing build instructions

    Missing build instructions

    There are no build instructions in the repository at all or if there are I can't find them. As the saying goes, a source repository without instructions is worth nothing ;3

    In particular, I'm trying to build the megadrive version. Using the ususal SGDK build commmand results in a lot of errors. Is a customized SGDK needed?

    help.c: In function 'ChangeResolution':
    help.c:31:17: error: 'APLAN' undeclared (first use in this function)
      VDP_drawTextBG(APLAN, "Resolution can be changed by", TILE_ATTR(PAL0, 0, 0, 0), 4, (*y)++);
                     ^~~~~
    help.c:31:17: note: each undeclared identifier is reported only once for each function it appears in
    help.c:31:2: error: too many arguments to function 'VDP_drawTextBG'
      VDP_drawTextBG(APLAN, "Resolution can be changed by", TILE_ATTR(PAL0, 0, 0, 0), 4, (*y)++);
      ^~~~~~~~~~~~~~
    In file included from C:/SGDK/inc/tools.h:15:0,
                     from C:/SGDK/inc/genesis.h:15,
                     from help.c:22:
    C:/SGDK/inc/vdp_bg.h:323:6: note: declared here
     void VDP_drawTextBG(VDPPlane plane, const char *str, u16 x, u16 y);
          ^~~~~~~~~~~~~~
    [...]
    
  • [Feature] Option to stretch horizontally to 720 for Wii

    [Feature] Option to stretch horizontally to 720 for Wii

    Hello! I'd like to say for reference that I'm currently conducting thorough tests on how the Wii U outputs and upscales Wii content (and how bad it is...)

    I don't know how well known it is, but the Wii as a matter of fact outputs with a width of 720, both in Progressive and Interlaced modes. This is the case for the Wii U yes, but I tested and verified the original Wii outputs this resolution also.

    It's actually somewhat of a feature... In summary, the framebuffer is (more or less) hard-limited to a width of 640 and a height of 528. However, the image can be stretched vertically by(?) the XFB to a height of 576, and it can be stretched horizontally by(?) the VI to a width of 720.

    Also, there is already an Option to stretch vertically to 288 / 576 on Wii (but it's impossible to maintain the 1:1 pixel-aspect). My request is for a similar feature to stretch horizontally to 720 (still impossible to maintain the 1:1 pixel-aspect).

    This feature would allow for better determination of horizontal overscan; I believe right now the program is outputting 640x480 and the Wii is naturally letter-boxing it, so the program would always show an "overscan" of 0 because horizontally all 640 pixels are obviously in frame. (In theory... I haven't tested this on an original Wii just yet but I have tested on Wii U.)

    Side notes:

    • I don't know whether or not this whole system also applies to the GameCube, they are quite similar hardware after all, but I think it might output 640 pixels wide all the time unlike the Wii. I will test and confirm this on console and get back to you.
    • If you want to see some of my empirical testing results and data, I can link a Google Document, but it's very unfinished at the moment.
  • Issue building wii version on Linux

    Issue building wii version on Linux

    Attempting to run make in 240pTestSuite/240psuite/Wii/240pSuite results in textures.scf make[1]: *** [/opt/devkitpro/devkitPPC/wii_rules:25: textures.tpl] Segmentation fault (core dumped) make: *** [Makefile:105: build] Error 2

    If it matters, this was built on Linux Mint 20, using the devkitpro package obtained here

  • Consolidate Wii/Gamecube Makefiles & allow parallel building

    Consolidate Wii/Gamecube Makefiles & allow parallel building

    This adds the fixes I made upstream for parallel building and changes to a single Makefile for both wii & cube builds for easier future maintenance.

  • Forcing video mode on European wii

    Forcing video mode on European wii

    This suite forces PAL video mode on my European wii, even when I regionhack it and use the hack to have NTSC video on games. I really don't know where this suite gets its information. My CRT is only NTSC so I have wrong colors with this suite. I think options for different video modes on wii can solve this.

  • PCE - Composite filter option is only togglable once?

    PCE - Composite filter option is only togglable once?

    Tested on real TG16 hardware with the latest GitHub PCE TestSuite built, I can only get the Composite filter to work once.

    On the first toggle it works as expected but subsequent toggles afterwards don't appear to do anything.

  • Colorbars Test Pattern Error

    Colorbars Test Pattern Error

  • Develop ci wii

    Develop ci wii

    I think these are close. Currently tools/cfile.exe is windows specific, so needs an extra build step.

    Also improves other CI files by checking for changes before attempting to build! This should stop un-necessary runs and notifications!

  • - Ui Bottom Menu layout tweaks

    - Ui Bottom Menu layout tweaks

    These 2 quick patches help lock down the absolute onscreen location for the various bottom menu items to row 22 across all menus for a more uniform layout and consistent Ui experience.

  • Gamma ramp, frequency response, and artifact colors

    Gamma ramp, frequency response, and artifact colors

    I find the 240p test suite interesting as someone who has worked on simulating CRT displays using GPU shaders. There are some additional kinds of test patterns that would be useful for testing these shaders:

    1. Gamma test. This works by comparing a pattern of alternating horizontal lines (which can be averaged optically) with a gradient of solid colors: see e.g. the calibration page here.
    2. Frequency response. A system with limited video bandwidth will blur the image horizontally. Combined with the nonlinear gamma ramp, this tends to darken areas with high-frequency information. A practical test could be implemented similarly to the gamma test, but with vertical rather than horizontal lines.
    3. Artifact colors. With NTSC or PAL composite video, high-frequency luma information can get mixed with chroma and vice-versa. This is responsible for e.g. the famous rainbow waterfalls in Sonic 2. Test patterns for these effects would have to be system-specific, since the details of the composite encoding can vary. For NES, I'm aware of two NTSC test roms: tvpassfail and this "torture test".

    Is there any interest in adding these kinds of patterns to the test suite?

  • N64 CI build

    N64 CI build

    This PR is WiP to update to the latest libDragon and add a CI to keep it up-to-date.

    Currently it is able to output a working ROM, but has an issue where the controller input is not working. For that reason, it is unable to run any of the tests.

yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

Nov 30, 2022
A work-in-progress homebrew YouTube client for new 3DS
A work-in-progress homebrew YouTube client for new 3DS

ThirdTube A work-in-progress homebrew YouTube client for the new 3DS GBAtemp Thread Instability Warning As this app is still in the alpha stage, you m

Nov 19, 2022
Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content.
Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content.

This project is a Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content. The application decodes the h.264/5 compressed content using an HW accelerated decoder, the decoded YCbCr frames are processed with Vulkan Graphics and then presented via the Vulkan WSI.

Nov 21, 2022
Minimalist video maker -- simplify your music score video making process!

VisualScores 极简视频制作程序,简化你的乐谱视频制作! 如果需要编译,请解压 lib 文件夹中压缩包。 使用前请参考 manual 文件夹中的用户手册。 请勿修改、移动或删除 resource 文件夹中的任何文件。 VisualScores Minimalist video maker

Sep 7, 2022
OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world

OpenShot Video Library (libopenshot) is a free, open-source C++ library dedicated to delivering high quality video editing, animation, and playback solutions to the world

Dec 3, 2022
Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.
Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.

An open source video game library manager and launcher with support for 3rd party libraries like Steam, GOG, Origin, Battle.net and Uplay. Includes game emulation support, providing one unified interface for your games.

Dec 2, 2022
A project for the latest Steam PC (US) release of Resident Evil 4 that patches the game to use high-quality MP4 video.

A project for the latest Steam PC (US) release of Resident Evil 4 that patches the game to use high-quality MP4 video.

Oct 10, 2022
Open h.265 video codec implementation.
Open h.265 video codec implementation.

libde265 - open h.265 codec implementation libde265 is an open source implementation of the h.265 video codec. It is written from scratch and has a pl

Nov 30, 2022
Vireo is a lightweight and versatile video processing library written in C++11

Overview Vireo is a lightweight and versatile video processing library that powers our video transcoding service, deep learning recognition systems an

Nov 27, 2022
Olive is a free non-linear video editor for Windows, macOS, and Linux.
Olive is a free non-linear video editor for Windows, macOS, and Linux.

Olive is a free non-linear video editor for Windows, macOS, and Linux.

Nov 30, 2022
Video player for 3ds
Video player for 3ds

Video player for 3DS Patch note v1.0.1 Added allow skip frames option v1.0.0 Initial release Summary Video player for 3DS Performance 256x144(144p)@30

Nov 21, 2022
Plugin for VLC that pauses/plays video on mouse click

Pause Click plugin for VLC VLC plugin that allows you to pause/play a video by clicking on the video image. Can be configured to work nicely with doub

Nov 29, 2022
A WFH utility to visually indicate user engagement of audio and video
A WFH utility to visually indicate user engagement of audio and video

DIY: In meeting indicator - WFH Utility The need for in meeting indicator at home So many of you have gotten accustomed to work from home by now. This

Jun 28, 2021
Real-Time Intermediate Flow Estimation for Video Frame Interpolation filter for VapourSynth

Description RIFE filter for VapourSynth, based on rife-ncnn-vulkan. Usage rife.RIFE(clip clip[, int model=0, int gpu_id=auto, int gpu_thread=2, bint t

Nov 23, 2022
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

Dec 5, 2022
Anki-like app for spaced repetition of video clips
Anki-like app for spaced repetition of video clips

ReeePlayer The ReeePlayer application is designed for spaced repetition of fragments (clips) of video and audio files with similar principle as in Ank

Oct 28, 2022
NymphCast is a audio and video casting system with support for custom applications.
NymphCast is a audio and video casting system with support for custom applications.

NymphCast is a software solution which turns your choice of Linux-capable hardware into an audio and video source for a television or powered speakers. It enables the streaming of audio and video over the network from a wide range of client devices, as well as the streaming of internet media to a NymphCast server, controlled by a client device.

Dec 1, 2022
Shotcut - a free, open source, cross-platform video editor
 Shotcut - a free, open source, cross-platform video editor

cross-platform (Qt), open-source (GPLv3) video editor

Nov 27, 2022
SortNode is a JS binding for SORT: Simple, online, and real-time tracking of multiple objects in a video sequence.

SortNode is a JS binding for SORT: Simple, online, and real-time tracking of multiple objects in a video sequence.

Aug 2, 2022