Area 5150 by CRTC & Hornet (Party Version) / IBM PC+CGA Demo, Hardware Capture
Ғылым және технология
AREA 5150: a demo for the original IBM PC (4.77MHz 8088), CGA video (RGBI monitor), PC speaker, 570K+ free RAM.
This is the party version, released by CRTC+Hornet on 6 Aug. at Evoke 2022, voted 1st in the Alternative Demo compo.
Video capture from the real hardware by Jim Leonard (Trixter). For best fidelity, watch @ 60fps at the highest resolution supported by your display.
Download: www.pouet.net/prod.php?which=...
Live audience video: • Area 5150 Audience Rea...
On 5153 CRT monitor (60 fps): • Area 5150 demo on IBM ...
VileR: code ■ graphics
reenigne: code ■ hardware ■ tools
UtterChaos: code
Trixter: loader ■ decomp ■ wrangler
Shiru1bit: music
cTrix: music
phoenix: additional support
===== Video capture details by Trixter =====
Capture was performed via an RGB2HDMI outputting 1600x1200, with the geometry settings as follows (this is the contents of the Saved_Profiles\6-12_BIT_RGB\PC_CGA-MDA\CGA.txt file):
sampling=0,0,0,0,0,0,0,0,1,0,6,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256
hoffset, voffset, min hwidth, minvheight, maxhwidth,
maxwheight, haspect, vaspect,
fbsize, fbits/pixel, clockfreq, linelength, clocktolerance,
linesperframe, synctype, vsynctype, videotype
geometry=108,38,640,204,768,246,2,4,0,1,14318181,912,4500,262,3,0,0
palette=RGBI_(CGA)
palette_control=2
ntsc_phase=3
scanline_level=0
The sampling= line is different for most people after autocalibration, and can be ignored. The key settings of the above for full CGA capture are:
maxhwidth=768 # ensure max of 96 columns
maxwheight=246 # ensure max of 30 rows
linelength=912 # CGA standard
linesperframe=262 # CGA standard
haspect=2 # multiple of 2
vaspect=4 # multiple of 2
The multiples of 2 were chosen to eliminate color sampling (ie. 4:2:0) as a cause of chroma bleed.
The image presents as centered in the 1600x1200 canvas, and was captured directly to UTVIDEO RGB, then cropped and post-processed afterwards.
Пікірлер: 159
I don't think most people can appreciate just how slow and minimalistic a stock IBM PC is unless they've had to program one. Congratulations to the team on an outstanding achievement.
@jarkkoaitti287
Жыл бұрын
yeah, this 4.77MHz $20,000 computer is almost as good as a 1MHz $595 computer from same era (commodore 64)!
@dschmenk
Жыл бұрын
The C64 was a fun, one-off game machine but the PC was meant for business. Making this demo all that more impressive.
@Scalibq
Жыл бұрын
@@dschmenk Didn't you record 8088 MPH on a Compaq Portable? I'd love to see how it handles Area 5150!
@dschmenk
Жыл бұрын
@@Scalibq Finally got my CGA to HDMI converter. Here is the result: kzread.info/dash/bejne/kZ-JyruFo8SdntI.html
@theParticleGod
Жыл бұрын
imagine having to go back to running normal CGA games with normal PC squeaker blip blops after witnessing this demo.
Holy shit. If someone had figured out how to do this while CGA was still relevant it would've changed the course of history as far as games support on the PC went.
@daniel....
Жыл бұрын
Why is this possible now but we didn't figure out how to do it when it was relevant?
@muenstercheese
Жыл бұрын
@@daniel.... people have found a TON of optimizations recently that would have been super hard to find back then. One of the earliest "super optimizations" I can remember was Quake's "magic" fast inverse square root algorithm in 1996.
@theParticleGod
Жыл бұрын
@@daniel.... It's interesting to me because I had an 8 bit machine that used a similar MC6845 CRTC as IBMs CGA. My guess as to what held back wider adoption of these sorts of hacks is that the lack of raster interrupts means that the code has to be tuned for each graphics chipset, motherboard chipset and CPU combination. It might be possible with a whole lot of resources to store predefined timings to cover all the popular prebuilt machines, and subject the riff-raff to a wait while some very precise timings are made before the code can be "reassembled". It wouldn't, and couldn't be a simple matter of reconfiguration, as a lot of the tricks in these demos rely on using the exact amount of time it took to perform the preceding instructions to ensure that the timing of the current instruction is correct in relation to the position of the CRT beam. You would need some means of shuffling the instructions around like a deck of cards to get the timings correct for each chipset, but unlike a shuffled deck of cards, you would always need to end up with the suits in order. It's a tricky enough problem that it doesn't surprise me that there are few commercial applications that do CRTC hacking, but it's still baffling to me that there wasn't a 'scene' specifically for the very popular IBM 5150 + CGA combo or Tandy's CGA variant.
@DanielMonteiroNit
11 ай бұрын
@@muenstercheese wasn't that on Quake 3 instead?
@stanb1455
6 ай бұрын
it was @@DanielMonteiroNit
If you ever had the pleasure of having to produce nice graphics on CGA, you can appreciate this art. It's a masterpiece.
This is just magical to a kid who was stuck gaming on CGA 8088 into the 90s.
@grappydingus
10 ай бұрын
Same.
There's no way you can do this with 8088 and CGA. I kept thinking this through the whole demo. Massive props for making the seemingly impossible actually possible.
Imagine what these guys could do with a 486 dx2 66… extremely impressive.
Holy god you guys. There's racing the beam, and there's riding it like a rented mule. I was not expecting anything more to be wrung out of the PC after 8088 MPH.
I was already floored by 8088mph, this is just on another level. Good on y'all for pushing every last drop out of this PC.
holy shit.. i was a really big fan of 8088mph how am i just seeing this?? more people need to see this. this is insane beyond words
The ending part is just awesome. Figure you traveled back in time to the early 80s and showed this.
This demo is so unbelievably awesome. I've already waxed poetic on Jim's video, but I feel I need to say it here too - congratulations on a very well deserved win. Truly the pinnacle of the IBM PC platform.
I appreciate the detail in the description 👍
Wow. It wasn't until watching this version that I realized that the vertical photo scroll is actually scrolling one pixel at a time, with no visible artifacting showing off any of the tricks! Can't wait for the floppy version to be available to try it out on my 5150!
@x86VileR
Жыл бұрын
We're working on it :) And yes, this sort of detail is exactly why 60fps footage is worth it.
@Scalibq
Жыл бұрын
@@x86VileR Yea, speaking of having good footage to show the details of the effects... What bothers me about this capture is that the video window is too large. So the actual CGA screen is now 'letterboxed' inside the total video window. This does not give the correct experience of overscan (which is supposed to go 'over the eges' of the entire visible area of a CRT. Now it looks like there's still a border, just one that remains boringly black.
@x86VileR
Жыл бұрын
@@Scalibq That extra letterboxing was added in post-processing to get around youtube's lossy 4:2:0 chroma subsampling. I did a bunch of experiments with CGA footage on YT, and I noticed that chroma errors tend to pile up and make highly detailed/dithered areas look like a mess, especially when they're moving around quickly (as in the rotating gears, twister, parallax, etc.). If the 240 scanlines are scaled up to the full 1080p or 2160p, you get a vertical scale factor of 4.5 or 9 respectively. That didn't look very good: at YT's 4:2:0 the chroma is sampled only every other scanline, so you need an even integer factor to eliminate those subsampling artifacts. With the padding, the scale factor becomes x4 at 1080p, or x8 at 2160p (4K), and that's why the image looks as faithful as it does. But even if we ignored the chroma problem, I guess a non-letterboxed capture still wouldn't reflect the "CRT experience" 100%, because it shows more overscan than the CRT does. I've been looking at ways to get decent CRT footage of this demo without the common video camera artifacts, so we'll see :)
@Scalibq
Жыл бұрын
@@x86VileR But what happens if you use a non-standard resolution? Video containers aren't limited to 1080p, 2160p etc, so you could just pick the integer resolution you need. Not sure how YT handles that, but I know they have an 'original' setting for certain videos, where they play it in the original format. Aside from that I think the proper way to solve the mismatching resolution with this demo is to take the capture, remove the letterboxing, and run it through an actual CRT postprocessing-filter, and fill the 'letterbox area' up by taking a 5153 and using that as a border, projecting the captured video inside its CRT area? I suppose for people who want the 'clean sharp' look of a digital pixel capture, you could forgo the CRT postprocessing, and just use the 5153 to 'frame' the demo instead of a random black area.
@x86VileR
Жыл бұрын
@@Scalibq Hm, I don't remember seeing that "original" setting in a while... but it's probably still worth it to optimize for common resolutions like 1080p, otherwise there's still some scaling done on the player's side (and it's often gamma-incorrect.. which isn't very good for CGA-type dithering either). I did think about taking the captured video and running it through something like FFcrt to simulate the effect closely... might do that at some point, but it'll be fun to see if I can get some good footage out of the actual 5153 first.
I've been watching this over and over for the past few weeks, and somehow I keep coming back. It's one hell of a demo.
This is most efficient use of assembly I've ever seen on this machine ...
I swear these guys are the Booze Design of the IBM PC world.
This is freaking unbelievable, as someone who's first PC was an XT at 9,56Mhz I am mind blown this ran not only at 4.50Mhz but also CGA, not to mention by the end I found myself thinking, wait is this the PC speaker? Oh damn bhoy! Had heard wave audio from the PC speaker before, even on my own first PC, but the audio quality by end of this demo is like, how the heck did you manage this much sampling rate?
@x86VileR
Жыл бұрын
The credits section modplayer is all Reenigne's work - it plays 1 sample per scanline (15.7KHz), and part of what makes it possible is that the music data is single-track so there's no software mixing. I expect that there will be a full write-up about it after we release the final version!
Really great! Can't wait to read the explanations.
@vnules
Жыл бұрын
I think it's mostly based on the "ANSI from Hell" technique which is cited in the article detailing the tricks in 8088 MPH.
@x86VileR
Жыл бұрын
@@vnules yes, that's the basis for most of the video modes used here, although they're heavily customized (for things like 60Hz fluid motion, graphics in the overscan area, text/graphics split-screen).
@gaving.griffon2703
Жыл бұрын
The demo uses color cells, similar to the C64. A shame it probably takes a lot of resources from the cpu.
Really well done.... pushing the hardware to it's absolute limit! 👍
the soundtrack goes so fucking hard. had this on repeat all weekend ❤
A good demo looks like magic. When I saw the graphics appear, I thought "no big deal, he's switching modes in the middle of a frame. All that takes is good timing." And then the text appeared next to the graphics. I gasped out loud.
Holy moly, what an audiovisual treat! And it's all on the 8088. Incredible!
as i was watching this i said "If this a game had done this while I was a kid, I would have crapped my pants"
Unbelievable. Wow.
@gdplayer1035
23 күн бұрын
holy shit it's squirrel monkey
demoscene has a new king
Insane!
unbelievable 👀
True computer effect's is very nice and speed screen change with wave music in demo - more cool for view.👏🎞⌨😯😇
How the f*ck?! Amazing.
Wow, awesome work!
Absolute mayhem! Kudo's and respect guys, amazing work.
This is truly majestic.
This is pure insanity! Absolutely incredible
Amazing!
This is insane! what black magic is this!
And all that on the first PC. 🤯❤
Very nice! Runs fairly well on my NuXT with an ATi Wonder Graphics Solution (which is fairly CGA compatible), but hangs after the blue ball rolling scene (which also bugs).
@x86VileR
Жыл бұрын
The ATI GS/Small Wonder video chipsets do have a few issues... but the hang sounds like it might be due to the FE2010A (which replaces some discrete Intel peripheral ICs in the NuXT) - that one didn't play nice with 8088 MPH either. Still, nice to know it gets that far!
@kilianhekhuis
Жыл бұрын
@@x86VileR Yes, I was pleasantly surprised :)
amazing in many ways!
This is absolutely amazing. It’s so insane that this is all done on such limited hardware. Wow!
This really is brilliant
Oh My God! How the credits music was made with ONLY The PC Speaker??????
That's just AWESOME. Nice prod. Really really nice.
@x86VileR
Жыл бұрын
Thanks! (Now where is your new Atari ST stuff hiding at?? I haven't seen any in a while) :)
@marjolainevaucher965
Жыл бұрын
@@x86VileR I didn't done anything for a while, trying to, but no time at all! I have to put my arms out of my but and draw something nice. But.. Job, family, house,...
Outstanding.
I could only imagine how beautiful this will look on actual CRT monitor display.
THESE PEOPLE ARE AMAZING!!!!!!!!!!!!!!!!!!1
This is insane!
super good!
Very impressive!
Some very impressive stuff here. Some of the things here are amazing on a computer with such a slow CPU without help from a blitter.
What kind of witchcraft is this!? One of the best demos I watched in recent years. 👏👏👏
I love how this brings 8088 emulators to their knees
I wasn't aware the PC speaker could produce so many channels of audio...
@x86VileR
Жыл бұрын
It can't- 1 channel only. You can mix them down, but cTrix's music during the end credits was composed as single-channel specifically for the purpose.
@reedmayhew18
Жыл бұрын
@@x86VileR did you guys do some sort of dithering trickery at the end credits to get the audio to have multiple frequencies, hence the huge frequency spike around 16KHz? So facinating!
@x86VileR
Жыл бұрын
@@reedmayhew18 that peak in the frequency spectrum is the PWM carrier wave - reenigne's player outputs one sample per scanline, so the playback is synchronized with the CGA's horizontal refresh rate (~15.7 kHz).
Yeah that was fun! Thx
How? How? HOOOOWWW?
Awesome! To think that today's infinitely faster computers struggle with running MS Teams...
Nice one!
OMG! This is really awesome! I wonder how many of those effect could be done on c64 :)
Dang, this some premium pixel pr0n! Amazing stuff!
These guys must be doing things with the MC6845 that would make even the guys at Motorola who designed the thing go WOW.
What the hell!!! How did you this from a CGA?! Also sound is a masterpiece
Holy s**t!! Wow!
this is fucking amazing !
Yes, this demo breaks your emulator hahahaha
@BastetFurry
Жыл бұрын
Question is, i have a Tandy 1000 with a V20 upgrade, will it run on there? o.o
@x86VileR
Жыл бұрын
If you have the free RAM then some parts might actually run, others might go by way too fast (like that crystal ball scrolltext), and one or two parts like the end credits won't work at all. But even the parts that do run won't look right (for one, the T1000s have different character fonts, and a lot of the graphics depend on that.)
honestly, i have no words. i wonder how much more you could push a cga card from 1981
amazing demo, can't wait to see what the finished version looks like i wonder, how's it possible to play such high quality audio through 1 square wave channel?
@x86VileR
11 ай бұрын
The technique used in the credits section relies on PWM (pulse-width modulation), combined with the fact that the physical speaker cone doesn't go between its minimum and maximum positions instantly - it takes a certain amount of time, so switching states fast enough can get you levels in between. IIRC someone once worked out the effective bitrate to something around 6 bits. In this case, it's synchronized to the horizontal refresh rate so you get one sample per scanline - a rate of 15.7KHz.
@kijete
11 ай бұрын
@@x86VileR wow
Wait, what did I just see? I... I don't... understand... losing... mind...
I know this demo was made for RGBI, but I wonder how it looks on composite. If it even works at all. Probably might look very ugly, but I still wonder if it'd work.
no way... is it an april fool? 😲and the ending music also by speaker?😲😲
@VSS-Vintorez
Жыл бұрын
This released in August...
Can any of these tricks be generalised / made into general purpose? Of course I want this turned into a (newer) Windows CGA display driver. Maybe it would even work it you could match a CGA video card to a (bit more) modern CPU.
I tested it on an 8088 laptop with a CGA card (from: Ali Express). How do the graphics in a high resolution work? Is that text mode with a modified character set?
@pixelcrunch300
Ай бұрын
IIRC, the IBM CGA’s character set is set in ROM, which mean it is unable to be customized in any way. What they’re doing is tricking the CGA to only display two lines of each character, thus simulating 640x200 at 16 Colors. (Love your vids, btw!)
@SquirrelMonkeyCom
Ай бұрын
@@pixelcrunch300 Thank you and thank you!
1. WOW. Boundless respect. 2. Does anyone know if there are any MiSTer cores that can fully run this? 3. Does anyone know if there are any CGA-to-VGA or CGA-to-HDMI conversion solutions that can stomach this?
@x86VileR
Жыл бұрын
I've heard that some work is being done on the MiSTer PC/XT core but I wouldn't really expect anything substantially different from software emulators (happy to be proven wrong of course). And yes, RGB2HDMI handles it just fine - that's how this video was recorded (more details in the description).
@S13Reborn
Жыл бұрын
Yes, you can build yourself a TTL to Analog cable which you can do with some resistors attached to the intensity pin and each of the components, then you plug that to an OSSC, and it works perfectly. There is also a specific device, LGR talks about it here: kzread.info/dash/bejne/a4d9q5mumqWZdrw.html
is the RGB2HDMI doing some of the work to display at colour depth and resolution. Does this work without the RGB2HDMI hardware? if so very impressive guys. If not still well done . Amazing demo.
@x86VileR
Жыл бұрын
Thanks! The RGB2HDMI just provides a way to convert the CGA signal for a modern display (or a video capture device in this case). It won't add anything that wasn't already present in the video signal - if you have a monitor with direct RGBI CGA input it's absolutely not needed.
@Scalibq
Жыл бұрын
There are various videos on KZread that record what it looks like on an actual CGA monitor.
After watching this video, I can tell that you guys are wizards and witchcraft.
I am going to run this on MY real hardware 8088 RGB CGA! :) The old demo "8088MPH" requers composite, and my CGA card is a clone and I have no capable TV of displaying composite CGA in color., so I hope this demo will be colorful on my CGA monitor :)
@x86VileR
Жыл бұрын
Nice! Interested to know how the clone board handles it.
@intel386DX
Жыл бұрын
@@x86VileR I tried it , but did not make a video yet. It is a bit glitchy and in some effects the dithering effect do not work so it shows less colors on the screen. Also the last water reflection effect do not work at all. The machines shows black screen and hangs
😲
Great demo. Any plans to publish the source code?
@x86VileR
Жыл бұрын
Yes - we're working on an improved final version, and we plan to include the source when it's out. No ETA yet but maybe a couple of months...
CGA has only 16K Vram, 320x200 @ 16 Color requires 32000 bytes, 640x200 even more.... how can be possible? How the demo achieved split screens that require video sync accuracy?
@x86VileR
Жыл бұрын
Those VRAM limit calculations only apply when every pixel is addressable. A lot of the extra color tricks are actually based on heavily modified text modes, where VRAM is laid out in character/attribute byte pairs, so the limits are different (look up "ansi from hell"). The split screens are created by synchronizing the code with the raster beam, and reprogramming the CGA and MC6845 at particular scanlines, so modes/colors/video start addresses can be modified in mid-frame. More info (and source code?) will come when we release the final and improved version :)
Is there a walkthrough of how this is done? Or is it all trade secrets?
@x86VileR
Жыл бұрын
No trade secrets, we just want to complete a final version before we spill the beans (we'll also put the source out there). Hopefully soon...
How was the PC Speaker audio captured?
@JimLeonard
Жыл бұрын
The good old-fashioned alligator clip method :-) Ran it into a DAC so that I could adjust the input volume so that nothing clipped.
What song was used in the credits? I would love to use it in a DJ set.
@x86VileR
Жыл бұрын
That was made to order, a 1-channel module by cTrix, so you'd have to check with him (ctrix dot net).
@milkyproduxions
Жыл бұрын
@@x86VileR How do i contact him?
Did they use monotone or a different music tracker? Because i sort of want to make pc speaker music
@x86VileR
10 ай бұрын
Shiru composed his part using his own custom VST plugin, in Reaper I think. Monotone is still a good choice, although it updates at 60 Hz (compared to the 120 Hz in this tune).
@JasperTedVidalTale
10 ай бұрын
@@x86VileR Do you think shiru's PCSPE VSTi is easier than monotone & furnace tracker
@shiru8bit
9 ай бұрын
@@JasperTedVidalTale it is sure easier, because it is not a tracker. The key feature it provides is the easy means to a create pseudo polyphony, i.e. overlay different parts with different priorities. In other words, you write your song as a multichannel one, with different tracks for different parts, and using the priority system you can overlay them to produce a monophonic stream. To my knowledge, there are no trackers designed to do this at the moment. With Monotone or Furnace you have to write a monophonic song with all monophonic parts all by hand.
@JasperTedVidalTale
9 ай бұрын
@@shiru8bit Yay thanks for the info
CGA is 4 colors from a pallet of 16.
@Scalibq
Жыл бұрын
Not in textmode (or composite for that matter)
Would this demo work on an Atari PC1?
@x86VileR
Жыл бұрын
I'd say no - the onboard video is EGA, and a dedicated CGA board would need some kind of ISA expansion (and a way to disable the onboard EGA controller). If the PC1's RAM is upgraded to 640K, it /might/ be able to run most of the demo by setting the onboard controller to CGA mode, but I wouldn't really get my hopes up.
@madcommodore
Жыл бұрын
@@x86VileR I think it is hard wired to 512k from memory, shame would be nice to see it running on real hardware but that's the only vintage PC I have from a bundle of stuff.
How do you get 16 colours out of CGA??
@x86VileR
Жыл бұрын
With a very hacked-up text mode. Games like Round 42 or Paku Paku got their low-res 16-color 'mode' with a similar trick: they only ever used a single character for their "pixels", but here we're using the entire charset. KZread doesn't like links in comments, but you can look up "ansi from hell" or "the Macrocom Method". (and if 16 is impressive, check out "8088 MPH" which does a little more) ;-)
@Domarius64
Жыл бұрын
@@x86VileR ohh so you've got some kind of mapping for the best character to use to represent what pixels you want to show, that explains the artifacting around the ball in the marble madness example, I wondered about that! Ahh 8088 mph, I had seen that before, I have an even greater appreciation for it now I know a bit more about what's going on!
Question, do I have permission to reprogram a replica of the transition at 7:56 for my game? (Sega Genesis/MegaDrive)
@x86VileR
6 ай бұрын
sure, not a problem at all - happy to provide inspiration!
@firerat1653
6 ай бұрын
@@x86VileR Thanks a lot! Seriously. I can show how it looks like when done as well =)
Just made a video of this running inside UniPCemu. It's running for the most part (8088MPH seems to crash on the credits again with the changed CPU/CGA timing improvements required for this demo). It's still a WIP though (kzread.info/dash/bejne/nYOjqZKIotnRj7A.html).
Next step: dual-monitor MDA/CGA.
@user-yg4kj2mf1p
7 ай бұрын
That's something worth exploring: Using a hacked text mode to get graphics on an MDA (non-Hercules). Some people did something similar on the Commodore PET (which is also text mode with fixed character sets).
Text Mode doesn't work this way (trust me, I have tried)
What kind of sourcery is this?!?
Amiga, Speccy, C64, Atari they all must die... PC XT CGA rulezzz forever!!!😅