I'd say something like the 16-color mode on the CGA, which was actually text mode, but drew no more than the top 1/4 of each character. The characters were either 220 or 221 IIRC (solid block left half. solid block right half), so that you could have 160 "pixels" per line: 80 characters, half foreground and half background color. Background couldn't be anything >7, which rendered some rather bright combinations impossible (like 15/9: white/sky-blue). The 100 lines rather than 200 were a limitation of the video RAM, which would have been too small for 200. More recently, there were hacks which sacrificed even more resolution on the CGA and used the characters 216 to 218 (25% foreground color, 50% foreground color, 75% foreground color) to dither in a 16-color mode. The results were "plasma" demo effects in text mode and a video player called "8088 Corruption" which ran on a 1981 IBM PC. And a demo called "8088 MPH" which ran on the same PC. All of these are on YT, and there's another video called "CGA doesn't suck THAT much!" or similar. Some of those examples are quite impressive.
Same for me. I just could not comprehend a human could keep track of whats happening. Ofcourse this is simplified but the perfect amount so I can accept that it is indeed possible
Teachers don't teach kids, they indoctrinate them, it's 2024. This was great, watching that simple effective python script put my python class in perspective. My teacher didn't once teach anything the entire semester, I got a 100% and two certifications, but didn't understand anything, watching that little bit just blew my mind as to why python is necessary and especially when a try except is used.
Yes! it was magic! I remember cursing all the time when I was trying to wire a flip-flop in class! I was thinking " there has to be a f****ing better way to do this!"!!!
"It might not be the most incredible resolution, but what do you want from me, I'm trying to build a video card from breadboards". Ahahahah bless you Ben, this is amazing work!
Hot swap a dozen or so EEPROMs having a second person reprogram them to a different image in a "circular assembly line" fashion. Call it a 0.05 FPS video card system and ship it! *Requires 2 operators
@@Leuel48Fan In the 747 they used as mobile nuclear command they had a button on the podium that would flash a light for someone in the back room to change the slide on the slide projector. They can order world destruction from the plane but it took two people to make a slideshow.
@@marwinthedja5450 Actually, two slides per EEPROM, because one bit was left unused - could easily hook up a switch there. Technically over 5 slides could fit because there were also some unused columns and only 6 bits of every byte were used, but that'd require a much more complex circuit, of course.
I love projects like this. They don’t really serve any practical purpose but they’re invaluable for learning concepts. And just to understand what goes into every day stuff we take for granted. In a nutshell, awesome videos Ben!
@@tonikotinurmi9012 it's more to do with the feeling and typing experience than speed. Rubber domes just feel bad, and while I like scizor switched, I definitely prefer colicky or tactile mechs. Or hell, buckling spring Model M styles
As rudimentary as this "video card" is, you're actually showing how a video card works. I don't know a lot about these things, so to people like me, the way electronic devices work might as well be magic, but this video really shows what the device actually does when it receives an input, and how it interprets electrical signals in order to display colours, creating an intelligible image in the process.
Right? So just imagine when a video card is doing complex things like ray tracing. A video card like an NVIDIA RTX 2080 is a mini-computer--a video computer. 🙂
Not only that - I don't know if you catched it - but those 6 resistors that convert the digital image to volts to send to the screen - is actually a small DAC (Digital to Analog Converter). In fact using the same principle you can make a simple audio DAC ...or as we used to call it....a sound card.
Sure he could probably just make some sort of thing on the address bus to the eeprom that would offset the address to the picture he wanted to show, something like (pictureSize * picture_number + counter) then he could increment the picture constant (picture_number) every time he wanted to change to the next picture.
Beautiful stuff. I've always worried that the HOW gets invisibly embedded in megachips, potentially lost forever. You keep it alive and visible to the learner. Thanks for that.
Probably his 8-bit computer is too weak for this gpu, 8-bit bus is not enough to allocate 7500 adresses of video memory. It is only possible to make 4x4 pixel display for breadboard cpu.
With a bit of address mapping (take an address, use it to control a register, then use that register to provide the upper bits of an address when you try to access certain other addresses, called "banks"), and you can fairly easily overcome any memory restrictions. With multiple banks (two is good for moving data, three is good when also executing from "expanded" memory) you get a _very_ powerful system that's almost as fast as an un-banked system.
Демид Ефремов you could easily add stuff in between which takes in an ascii character and then writes that character to the memory at the next available spot on the screen (or newline)
I noticed one of the sync wires isn't hooked up correctly I believe. On the second breadboard from the bottom, the white sync wire is hooked up to pin 13, which is an input of the flipflop. Whereas the yellow sync wire correctly is in pin 12. Could that cause the problem with the black bars or am I wrong somewhere?
You're right, it looks like that was hooked up wrong! That would have made the horizontal sync pulse much narrower than it should be, which apparently the monitor was able to deal with just fine. Presumably I didn't notice it since it worked. But hooking it up to the correct pin which provides the longer correct pulse still gives you the black bars so I think my diagnosis of the slow ROM read time is still likely to be what's going on. Nice catch though.
@@paladin1147 I double this. I look at those holes in the breadboards and I still can't get where to put wires. I believe that all holes on the same column are connected between each other. Amirite?
As an analog IC designer, this is so fascinating to watch. You're deeply knowledgeable in everything you do, and you're hacking in the truest sense of the word. At the same time, you do things where I'm like "Wait! That's illegal!" And any applications engineer would have a stroke over. And it just... Works beautifully. And it's an excellent teaching tool.
I have a Display Port cable that has two damaged wires (I think). So, it's interesting... If I bend the cable at the wrong angle, the wires disconnect and the monitor has little cyan lines going through it, meaning that at least 1 red wire and 1 green wire is having issues.
This dude deadass built a video card from IC chips and directly plugged it into a flat screen monitor. He did everything from scratch. That's real talent.
@@Atovange you could study for lifetimes and you still wouldn't be able to grasp the skills needed to achieve that on your own. "no talent bro", that's exactly what a talentless being would say.
1 more frame would be relatively easy - just write the second frame starting at 0x4000, and have a switch to take A14 high to swap to the second frame. 2 more frames would be a PITA.
To fix the thin lines, put a 74LS374 on the output of the EPROM and clock it from an inverted dot clock (10Mhz) & adjust the H-sync to be one step later.
TH-cam is truly the greatest human invention. Not just that the content exists, but instantaneous gem feedback such as this comment. What a time to be alive!
Unfortunately the worst case tACC for the EEPROM is 150ns, and the period of the 10MHz clock is 100ns, so using a D-type flip-flop (like the 74LS375) and correcting timing by one pixel would still have potential for a glitch. However, as he’s dividing the 10MHz by two by dropping the LSB of the horizontal counter, it would be possible to divide the clock to the D-type by two to produce a sampling period of 200ns and never violate the EEPROM access timing. H-sync would then also need to be delayed by two cycles rather than one.
I was immediately thinking the same thing - "you need a buffer on that slow ass prom". Ben's comment about sdram being faster and that this would solve the issue is misleading too. Let's say he used some low latency ddr4 with 15ns latency. That might work, but only because the monitor is too slow and likely samples towards the back end of each 25ns pixel. An old crt would shift the image by about a half pixel and if it was a good monitor, it would display the invalid data as vertical lines of pixel flicker. A 4k pixel is less than 2ns - so sdram is always buffered.
When Ben used Red, Green, And Blue wires to represent the color outputs on the breadboard, i was delighted by the attention to detail that went into this. Thanks for producing such an interesting and educational video.
And his fancy cut's in his video editing.. cause i'd imagine there's a lot of cut out of him measuring them and bending them and removing them...............
That’s a whole lot of “Digital Logic Design”, “Integrated Circuits”, and “Computer Architecture” classes combined in two interesting videos! Well done. 👏🏼
Just shows how beautiful the engineering process is, from an idea, to hardware, to software, to debugging, to finished product, with testing at every step.
@@hello123s exactly. In my hardware classes, testing even a simple module with testbenches was hard and annoying. This one-man show is an absolute marvel. Bravo.
You should consider doing a bonus part 3 where you load 3 unique images into the remaining memory and slow the clock enough to make it animate like a GIF!
@@mestevesx I believe that factorio experiment you mentioned did ray casting, not ray tracing. But it surely is an incredible achievement on its own.
@@onuktav Yeah, my bad, I thought the had the same principle, but one displays light as it is on camera, the other displays retangles at it's distance location. or something like that
Not sure why this came up as a recommendation, but we built these 30 years ago in a tech course, as part of our understanding of the display schematics and these signals. We also built the power supplies and operational amplifiers, etc. The fun part was denying the colors and interpreting the interference. Nice to see they are all discrete chips today.
I found this hilarious as a Windows user - Microsoft Paint forced bitmap on us for years - but you wrote a python script to extract a bitmap from a png =D
For what it's worth, you'd have to do the same with a bitmap (.bmp) image -- they write data from the bottom row of pixels to the top, and of course still have all the header data and don't have the necessary padding.
Yeah I think he could have just increased the canvas size to 128x256 and filled the bottom and right edges with black, then exported as bitmap to avoid the whole python step, right?
In the 90s I played with a fpga and made a 8 bit cpu. The display was a ega monitor. To reduce the number of gates I sacrificed some memory by using some reserved color values to generate the sync signals. Of course this had some drawbacks but had also a nice advantage: to scroll the picture I only had to do a limited number of memory writes to slightly shift the syncs... The fpga was actually too small and most of the display logic was in ttl logic...
Thank you for explaining this in an engaging, thorough way my CS professors couldn’t be bothered to. You’re making me want to start playing with breadboards and get back into learning hardware.
He mentioned, “hook this up to a computer...” and showed his breadboard computer HE’S GONNA PLUG IN HIS BREADBOARD VIDEO CARD INTO HIS BREADBOARD COMPUTER
Arcadefan314 that would be insane XD He would have to write a program to calculate/draw a picture and all the RGB values per pixel, instead of holding a static one in a ROM
5 ปีที่แล้ว +263
Now u just need a good gaming chair to get more fps
I would really love to see this display multiple frames using the extra space in one of those EEPROMs. In fact, you could almost take it a step further and use swapping between two images at 60Hz to make intermediate colors in between any two existing colors. That would take one extra flip-flop using the reset pin of the y counter so that it switches between 1 and 0 every frame, then tie that to the high address bit of the EEPROM. The harder part would be converting images into the right format to be displayed like that
@@kezif don't even need a second ROM, this one is big enough for multiple images. Just the the frame counter to one of the higher address lines that's not being used.
Your explanations are so enlightening! I haven't tinkered with electronics in decades (I'm 74), but now I'm inspired by this and your other videos. Nice work!
like, we had lower resolution color displays on phones when they started to have color displays. For a breadboard graphics card it's quite amazing indeed.
Excellent video as always. If you used a W27C512 eeprom you would get 16 address lines, which would allow you to get to a resolution of 200x150 and also get rid of some of the vertical lines because the access time would be 45ns or better; or with a W27C020 you would get all the address lines you need for a glorious full resolution. :) You might have mentioned in the video that the output resistors form the world's simplest DAC.
I still don't get HOW that DAC really works. Still gotta do a bit of maths to figure out how that shit works. I think he made an assumption that we get Z instead of 0 for some reason in the calculations. That said, that means the resistance and the actual voltages will differ for the intermediate values, which isn't that bad actually.
Ooh, you made me remember the Covox Speech Thing by mentioning the simplest DAC. It was an easy task to build, but the only Windows driver I found in those times, when www had been barely invented (and I had no access to it), was poor. A fond memory, nonetheless.
You could extend that DAC with more bits by hooking more resistors that are powers-of-two times a base resistor, and then connecting the lowest bits to the highest resistors. So, for a full 8-bit color, you could technically find 1, 2, 4, 8, 16, 32, 64, 128 (times some resistance) resistors and hook the bit 0 to the 128 resistor, the bit 1 to the 64 resistor... but then it would be easier to use an actual DAC.
@@paulstelian97 This is essentially a fancy Resistor Ladder (en.wikipedia.org/wiki/Resistor_ladder). If he wanted to use up all 8 bits of the data for color information, he could get 256 colors (including black and white). Use 3 bits for Red and Green, and 2 bits for Blue. It will look just fine because our eyes are actually pretty crap at seeing blue anyway so lower resolution for blue is fine. I would actually recommend biasing the middle range values of the outputs to lower intensity than they would be in a linear configuration. This is like gamma correction in a way. Our eyes aren't very good at seeing small differences in high intensity signals compared to small differences in low intensity signals. Imagine trying to see the intensity difference in 1 light blub vs two, and then comparing that to 100 light bulbs vs 101. It's the same difference in intensity, but our eyes are much more sensitive to changes in low intensity signals (contrast ratios are biased towards dark).
Great stuff! And what an interesting and educational explanation! I was an electronics/telecom student during the period of conventional TTL and CMOS chips, as well as CRT technology, so this is fully understandable for me! Keep up the good work and I might show this video to my kids! I hope they get the passion for these things!
I remember the 1st pic i ever displayed on the 1st computer i ever owned was of Gloria Estefan. I downloaded it over a phone line modem and it had worse resolution than this. Man was i excited!
It's all tied on how fast you can change the video memory. If you can change it at 60 FPS, that video card WILL display the video at 60 FPS. But i think his hand will get tired if he goes over 2.
Gedo De Luchs ATI=AMD Graphics and before that the most common integrated graphics in server boards that only needed a screen for setting the thing up. Anyway, the original IBM PC manual included schematics for everything, even the CGA card built with TTL chips, a RAM chip and an old 6845 chip that did the job of the two bottom breadboards. Max res 640x200 with the 4-bit DAC in the monitor instead of the card. Hercules just added more TTL chips to get 720x350 on the MDA monitor with it's 2 bit DAC.
WOW... I've always wondered how computers work on the most fundamental level, I'm tired of all of the explanations only going down to the level of "machine code". I'm glad I found this channel. How do you know all of this? Is there a specific topic you could study in school to become fluent in things like this? How did you even begin to learn in a topic like this?
Ben, you have taken something that seems like an impenetrable blur of magic and brought us behind the curtain to see the "wizard" in the flesh. Thank you!
Im proud to say that you are the first content creator I've seen in my entire life who has engaged me this much. Maybe thats because Im also an electronics engineer (I dont really know whether i can call myself an electronics engineer after watching this). But , my man, you've impressed me the hell out. U deserve much more subs than other good for nothing useless creators. Kudos. keep going brother. Would really like to communicate with you. Love from India
It's just a translation thing / lingo. You know, English is not the first language of majority of world. Monolingual americans won't understand this, especially if the other guy is an Indian, who are on average trilingual.
@@CollinBaillie "Lena" is the name of the model whose photo is commonly used by computer scientists when they want to demonstrate algorithms and/or anything related to computer graphics
Me : * can write assembly programs with only self education and online courses and build computers too * Me : wow i'm kinda good with computers Ben : * Draws stuff on a monitor with some electricity , wires and holes *
Even though the object was to display a video image, so much additional information, applicable to more generalized and broader areas, can be inferred. Phenomenal video!
To be fair, their limitations were not really on the circuitry to convert the data into a video signal but in the limited amount of memory to store the data and the limited CPU power to create it. Even with this build, in the end, the size and speed of the memory chip was the limit to what it could do.
@@HenryLoenwind Yep. Something a lot of people don't think about is that, even at a tiny (by modern standard) 640x480 resolution, at 60hz, to update each pixel on a screen would require writing 18 million pixels of data per second. I have doubts that many CPUs from before the late 80s could even handle that. And then consider that 640x480 @ 24 bit color requires at least 1 mb of image buffer - which is almost 16 times the total available memory of a Commodore 64. It's slightly mind-blow and amazing how large the numbers of operations and data modern computers push around while doing "almost nothing".
Man ! Its Awesome ! I'm a Tech Artist At Ubisoft and your VideoCard Making Video made me Understand how the Electric signal can be translate to an Image on the screen. BIG THANKS !
It would most probably have terrible buffering issues and it certainly not be fast enough to render full frames between syncs, but it would still be able to output an image.
@@Meoiswa I'd really want to know how you can access that SRAM and write to it during the HBlank and VBlank... that'd be f'd up. Saw someone else do a reverse emulation on the NES which actually had to work with that and boy was it funny.
Actually, my bad, It would need one more instruction to be able to tell the GPU when the RAM is available for it to scan it. Otherwise the CPU and GPU would be fighting over who sets the active address. Luckily his instruction set still has some free slots, and this way it only needs one.
I've not watched this in full, but I'll bet he's planning on demonstrating DMA, so that the GPU can read off of some statically allocated RAM, potentially two buffers selected by a control block so the CPU can write to one while the GPU is reading from the other.
Watching you explain this was the exact same to my brain as watching a speedrunner explain a complex glitch in a game I hadn't played yet. I wonder how many different things I could actually do if I gave them the proper amount of time and training. So much of what you were saying I have absolutely no idea but it's all incredibly contextual and represents concepts that can be applied in multiple alleys. Makes me think I should have more confidence in my abilities IRL. I mean the only thing that separates me from conquering that incredibly complex glitch is time and effort. I guess it's the same for the real world.
yup, it would be kinda cool if big video card, and computer component companies in general, would do this kind of educational videos with narrators good such as this.
@@DreamskyDance Well, a video card, even a low-end one is a thousand times more complicated than this one plus its parts are a lot tinier. Such cards are also produced in a factory. So, making an educational video would be extremely difficult.
@@perfectlybalancedasallthin9319 thera are educational videos about black holes and 4th dimension so i dont think its that hard to make one about videocards
@@david2438 yup.. i think its more of an issiue of propreitary technology. But it would be interesting if someone could show on a bit simplified examples what exacly happens in Nvidia RTX for example ( as opposed to my old 1050 Ti ). There are specs of cards with release and all, thats nice. Imho in depth educational video would be really interesting for some people.
I love FPGAs too, I am using DE2-115, it would be more fun if we exchanged our experiences with each other, you can see my small FPGA TH-cam channel that I started, I am uploading my FPGA projects there, I use Verilog BTW
@@RobertSzasz I think doing it with physical parts would give you an extra incentive to use weird tricks to keep the part count down. But obviously, you can do more stuff in an FPGA (2D acceleration anyone?)
There's no way I could sit through all the work you did here for this!! Skimmed through it and the first video just to see if it was legit. Computer science people should have the money, NOT influencers. To have the mind and patience to do these kinds of things is incredible! All the effort that went into this for a poor picture blows my mind to consider all the slaving over people who think like you do for each, stupidly faster generations of hardware we get to enjoy. Props to you guys for being the unsung heros, designers and architects of our daily lives
people choose where the money goes, if they wanted to fund engineers instead of influencers they could do that average joe doesnt give a shit about physics and engineering, theyd rather watch funny videos or football - hence so much money in football. Basic rules of capitalism and it's good that way, no better system has existed before.
@saladnuts Taylor series approximations of sin and cos with a fixed point representation (4.4?). You could then unroll the iteration loop to the desired precision, keeping track of x^n and n! at each value of n, updating either sin or cos at that step, with sin=x and cos=1 at the start (so you can start from n=3 with n! initially set to 3! and multiply x by itself 2 times to give x^3). Doing this you could compute them together, updating cos at the even values of n and sin at the odd values of n. You may only need 2 additional steps to get a sufficient result for this case. Interestingly, Doom used 2 steps of a similar algorithm for computing the inverse square root. Another alternative is to pre-compute the sin and cos tables for a given circle size on the EEPROM and look them up as needed.
This was so neat! I've never seen a breadboard in my life (and have no education in computer logic), so I struggled to follow along when you were plugging up a storm there. But still interesting to watch!
Don't give up, i work as a programmer and the electronic stuff he does may as well be magic to me, the only thing i understood was the python script and the binary hex part.
Don't give up! We all started at "hello world!" We all started out learning the basics. The rest is just study and application. If you are truly interested, you could be doing stuff like this with some study and practice.
You should try my AMD video card in my computer, I am an AMD guy but this card is terrible, it crashes the video drivers and sends my computer to plaid every time I try to overclock it.
Well in 1981 in the UK we had the ZX81 with 64x48 monochrome pixels for drawing, though actually there were 32x24 characters of 8x8 including a range of "quarter block" characters to support the 64x48 "graphics", then in 1982 the ZX Spectrum with 256x192 proper pixels with 8 main colours plus bright/not bright (4 bits).
Wow that was well done! Congrats! I feel happily educated enough that I knew what the next action was to be, but very cool to see it actually done to the end (I stopped at the rainbow colors and sourcing for odd patterns etc). Makes one appreciate the early VDG chips in little computers like the CoCo series & Atari etc. Cutting edge back then!
Thank you so much for these 2 videos, it finally made me understand how a graphic card works with its frame buffer. I know modern graphic cards are much more complex, but understanding the basics is enough to be able to extrapolate. A quick remark: you used resistors to generate different levels of voltage according to the 4 bits for red, green and blue, that was very smart. I guess you could have used a Digital to Analog Converter (DAC) for this, especially if colors were coded on 8 bits, but the video would have been way too complex. Am I right?
Well there needs to be a bit of a redesign that changes the bus width, the instructions and to support 16-bit regular RAM and 20-bit video RAM (and support for accessing that). A 16-bit bus and an external device that allows writing to video RAM. And doing a bit of MMIO would be supreme.
@@fft2020 He just needs to add another few JK flipflips to the output of the vertical blanking signal, add 8 of those delays the signal for about 4-5 seconds
Want more information or want to try building this yourself? Check out eater.net/vga for schematics, kits, and more!
Nice!
It's more like a cga. No DCA, and few bits on each line. I guess I haven't done those for 30 years... Hahahaha 🤣 (I was and graphics engineer).
I'd say something like the 16-color mode on the CGA, which was actually text mode, but drew no more than the top 1/4 of each character. The characters were either 220 or 221 IIRC (solid block left half. solid block right half), so that you could have 160 "pixels" per line: 80 characters, half foreground and half background color. Background couldn't be anything >7, which rendered some rather bright combinations impossible (like 15/9: white/sky-blue). The 100 lines rather than 200 were a limitation of the video RAM, which would have been too small for 200.
More recently, there were hacks which sacrificed even more resolution on the CGA and used the characters 216 to 218 (25% foreground color, 50% foreground color, 75% foreground color) to dither in a 16-color mode. The results were "plasma" demo effects in text mode and a video player called "8088 Corruption" which ran on a 1981 IBM PC. And a demo called "8088 MPH" which ran on the same PC.
All of these are on YT, and there's another video called "CGA doesn't suck THAT much!" or similar. Some of those examples are quite impressive.
Can you Make this video card controlled by an Arduino?
And you can take an image directly from your computer, or a text...
Nice! Does it have instructions? Also You are no longer answering me 😭
"what do you want from me, I'm trying to build a video card on breadboards" - best thing I've heard all day
I'd like your comment but it has exactly 256 likes right now and that's also too cool
ah nevermind someone messed it up
The other one funny line was “as much fun as colorful stripes are, I want to display more complex image”
I read this as he said it
@@cda32 there's always still 2048 from this point :P
Also showing off your photoshop, vim, python, and bash skills. This is truly "full stack" engineering.
ben is a god of electronics for me .
@@Mayank-mf7xr ben is based af
I like him, but as an engineer it is for me totally normal to know or learn several things to succeed in a project.
He flexing on all of us
Hahahaha
All my life, this is exatly the level I've wanted someone to explain and demonstrate me how a picture on the screen is created. Thank you very much!
It's simultaneously less magical yet also somehow more impressive at the same time.
Same for me. I just could not comprehend a human could keep track of whats happening. Ofcourse this is simplified but the perfect amount so I can accept that it is indeed possible
It's deeper than this
@@nicktimmerman2062 mathematical formulas keep track
Redstone TH-camrs "it's actually quite simple"
this guy teaching electronics, graphics design, programming and everything in a single video... man that's my entire engineering degree.
As a teacher with a CS and Math background, I can tell you that while this is really impressive, it isn't teaching.
@@RXC13Isn't he teaching if I'm learning from him?
@@RXC13 yes it's much more useful than any formal teaching I got as a CS major!
@@nidavis based
Teachers don't teach kids, they indoctrinate them, it's 2024. This was great, watching that simple effective python script put my python class in perspective. My teacher didn't once teach anything the entire semester, I got a 100% and two certifications, but didn't understand anything, watching that little bit just blew my mind as to why python is necessary and especially when a try except is used.
Man I want Ben's super power of being able to pull properly sized wires right out of thin air.
Yes! it was magic! I remember cursing all the time when I was trying to wire a flip-flop in class! I was thinking " there has to be a f****ing better way to do this!"!!!
@@leowise2008 build it twice. Ben does. Then again he is a technomage.
Like Professor Farnsworth, he probably has a drawer where he keeps assorted lengths of wire.
I'm more impressed that he's got them pre-routed for his board.
You have 256 likes. Please don't ruin it :)
"It might not be the most incredible resolution, but what do you want from me, I'm trying to build a video card from breadboards".
Ahahahah bless you Ben, this is amazing work!
Found at 4:53. Made me laugh so hard as well :D
Blondihacks has a good series on this too, with very similar comments
Give him a New Jersey accent and that statement would be perfect!
You beat me to it. Best quote ever
Love that comment! Ben is simply awesome! Brilliant!!!!!!!
I love how you can just hot swap out EEPROM chips to change the image. It makes it feel like some vintage slideshow tech from an old sci-fi movie.
Now, lets give this idea to the professors at university :D No powerpoints or anything. Just breadboards.
PowerPoint 0.1
Hot swap a dozen or so EEPROMs having a second person reprogram them to a different image in a "circular assembly line" fashion. Call it a 0.05 FPS video card system and ship it! *Requires 2 operators
@@Leuel48Fan brilliant
@@Leuel48Fan In the 747 they used as mobile nuclear command they had a button on the podium that would flash a light for someone in the back room to change the slide on the slide projector. They can order world destruction from the plane but it took two people to make a slideshow.
No way he changed between 4 ROMs in order to display his patreons and the bird as well. Just amazing.
NVIDIA hates him! Find out how he made his own video card with one weird trick!
10/10
Crypto mining farms love him - he's saved them millions!
his kids hates him cause thats all they gonna get
Only 1% gamers can beat lvl 6
Lol nah AMD has more to worry about if this card goes to market
Swapping eeproms will be a good replacement for powerpoint presentations. Impressive work!!
That's a great idea!
One slide per EEPROM - will definitely keep the number of slides down ;)
@@marwinthedja5450 Stack 50 EPROMs one by one and switch CE pin only.
It's the future! :p
There should be a 90s or something movie where the character does this
@@marwinthedja5450 Actually, two slides per EEPROM, because one bit was left unused - could easily hook up a switch there. Technically over 5 slides could fit because there were also some unused columns and only 6 bits of every byte were used, but that'd require a much more complex circuit, of course.
That was the most epic way I have ever seen someone honor their patreons
Honor? More like show off
@@danielmalo1753 Looks like someone's jealous.
what is that pfp?
@@questwalkerko it's Stein from the anime Soul Eater
Shiroe from Log Horizon.
I love projects like this. They don’t really serve any practical purpose but they’re invaluable for learning concepts. And just to understand what goes into every day stuff we take for granted.
In a nutshell, awesome videos Ben!
what you mean you wouldn't use this as a video card for a raspberry pie? :P
I thought gpus are expensive, but from now I am not sure anymore
@@blackdeath4eternityman the raspberry pi already has a better video card than this tho. I've played Minecraft on my raspberry pi
@@mihajlojovic8631learn more about gpu before comment
@@Dude8718 this video "card" doesn't even do graphics acceleration, it literally just converts pixels to video output like in the early 90s
+1 for the audio-environment that your keyboard adds to the python explanation segment.
Definitely not butterfly keys
Funny to see you here! Now get back to working on GM. :P
That mech board glory
@@blodstainer Yup, lot faster than any other kind to type on.
@@tonikotinurmi9012 it's more to do with the feeling and typing experience than speed. Rubber domes just feel bad, and while I like scizor switched, I definitely prefer colicky or tactile mechs. Or hell, buckling spring Model M styles
Screw powerpoint next time I do a presentation I'm gonna hotswap EEPROMs for my homemade vga video card
Please select your graphics adapter:
1- CGA
2- EGA
3- Tandy
4- VGA
5- Ben Eater’s Breadboard graphics card
BEBGA, Ben Eater's Breadboard Graphics Adapter.
I remember some dos games had options to choose those
6-Hercules
CGA
EGA
SEGA
PS-ONE
PS2
PS3
PS4
His graphics card is better then the one in my computer
Parts List:
10 Mhz Crystal Oscillator (Full Can)
28C256 EEPROM
74LS161 (x6)
74LS04 (x4)
74LS30 (x8)
74LS00 (x3)
1.5k Ohm Resistor (x3)
680 Ohm Resistor (x3)
15 Pin VGA Female Breakout Board
Hookup / Jumper Wire
4 Breadboards
thnkx a lot !
Can of beer x3
@@antonydecosta6262more like gram of meth 10x if you want to build this irl
- Electronic Engineering Degree
Incredible work! I'm very excited to see what future projects you come up with!
nematei ant gala buvo ekrane užrašyta "debilu krastas" nu ble ble lietuviai a ne gieda :D
How it was posted today you commented yesterday
@@aidensamuels3340 Patreons can see the video a few days earlier.
Next project; mining bitcoins on breadboard video card.
@@TheWeberiz Sakes :DDD
As rudimentary as this "video card" is, you're actually showing how a video card works. I don't know a lot about these things, so to people like me, the way electronic devices work might as well be magic, but this video really shows what the device actually does when it receives an input, and how it interprets electrical signals in order to display colours, creating an intelligible image in the process.
Right? So just imagine when a video card is doing complex things like ray tracing. A video card like an NVIDIA RTX 2080 is a mini-computer--a video computer. 🙂
Naa ppl these days only care bout ma fps
Not only that - I don't know if you catched it - but those 6 resistors that convert the digital image to volts to send to the screen - is actually a small DAC (Digital to Analog Converter).
In fact using the same principle you can make a simple audio DAC ...or as we used to call it....a sound card.
@@jarls5890 I used to wonder why my parents interchangeably use "video card" and "sound card". Little did i know that they are very similar.
@@jarls5890 I want him to build a sound card too now lol
You've got space for several images in that eeprom, right? Could you add a 'frame' counter and have it play a (very) brief animation?
Or a GIF
@@mrtuffguy2769 JIF
@@morganthomas1463 Graphics Interchange Format
GIF
@@Iceykitsune have you heard of this brand new concept called “joke“?
Sure he could probably just make some sort of thing on the address bus to the eeprom that would offset the address to the picture he wanted to show, something like (pictureSize * picture_number + counter) then he could increment the picture constant (picture_number) every time he wanted to change to the next picture.
Beautiful stuff. I've always worried that the HOW gets invisibly embedded in megachips, potentially lost forever. You keep it alive and visible to the learner. Thanks for that.
chill that’s a lil scary to think about
Was watching this to fall asleep, ended up getting a coffee.
Lol same. Was watching with one eye open and when i closed my open eye I got annoyed and opened again. Then just sat up right
Same here 🤣
Ben Eater: digital electronics ASMR channel
Lmao
Almost same. I watched this afternight amd fell asleep
Hey Ben, you know we all want to see you connect this video card to your 8-bit breadboard CPU, right? Like, all of us want it!
Probably his 8-bit computer is too weak for this gpu, 8-bit bus is not enough to allocate 7500 adresses of video memory. It is only possible to make 4x4 pixel display for breadboard cpu.
With a bit of address mapping (take an address, use it to control a register, then use that register to provide the upper bits of an address when you try to access certain other addresses, called "banks"), and you can fairly easily overcome any memory restrictions. With multiple banks (two is good for moving data, three is good when also executing from "expanded" memory) you get a _very_ powerful system that's almost as fast as an un-banked system.
Демид Ефремов you could easily add stuff in between which takes in an ascii character and then writes that character to the memory at the next available spot on the screen (or newline)
3:03 image flash.
And then we run Crysis on it!
I noticed one of the sync wires isn't hooked up correctly I believe. On the second breadboard from the bottom, the white sync wire is hooked up to pin 13, which is an input of the flipflop. Whereas the yellow sync wire correctly is in pin 12. Could that cause the problem with the black bars or am I wrong somewhere?
You're right, it looks like that was hooked up wrong! That would have made the horizontal sync pulse much narrower than it should be, which apparently the monitor was able to deal with just fine. Presumably I didn't notice it since it worked. But hooking it up to the correct pin which provides the longer correct pulse still gives you the black bars so I think my diagnosis of the slow ROM read time is still likely to be what's going on. Nice catch though.
Incredible catch if I might add
@@paladin1147 I double this. I look at those holes in the breadboards and I still can't get where to put wires. I believe that all holes on the same column are connected between each other. Amirite?
Where's this bread you guys keep talking about? I wanna sandwich now. 😂
Alter Falter hast du ein Auge fürs Detail 😯
As an analog IC designer, this is so fascinating to watch. You're deeply knowledgeable in everything you do, and you're hacking in the truest sense of the word. At the same time, you do things where I'm like "Wait! That's illegal!" And any applications engineer would have a stroke over. And it just... Works beautifully. And it's an excellent teaching tool.
As a complete noob, and someone wanting to get into this, I'm kinda curious what you find illegal here
I also want to know @@pptheastrologer6870
@@pptheastrologer6870same
These videos were incredible. I feel like I have a better understanding of how Computers display graphics now.
and while the formatting is different (digital instead of analoug) this is still how video signals are sent over HDMI.
I have a Display Port cable that has two damaged wires (I think). So, it's interesting... If I bend the cable at the wrong angle, the wires disconnect and the monitor has little cyan lines going through it, meaning that at least 1 red wire and 1 green wire is having issues.
Me too ;-)
Same here! Great videos.
This dude deadass built a video card from IC chips and directly plugged it into a flat screen monitor. He did everything from scratch. That's real talent.
No talent bro, I bet he studied a lot to be in his position :)
Next: "Building my own display"
Perfect for running Temple OS
@@Atovange you could study for lifetimes and you still wouldn't be able to grasp the skills needed to achieve that on your own.
"no talent bro", that's exactly what a talentless being would say.
@@FoxhoundULM How could talent teach you how a quartz clock work? It's all hard work and study
That EEPROM could store 2 more frames. You could make this display a gif.
@Ben Eater gif gif gif gif gif
Gif? You mean an "animation", don't you?
@@l3p3 He means a Graphics Interchange Format image.
1 more frame would be relatively easy - just write the second frame starting at 0x4000, and have a switch to take A14 high to swap to the second frame. 2 more frames would be a PITA.
Moving picture please! I'm sure with a bit more effort it could be compressed down to get a few more frames too.
Oh man, that 4 bit output voltage divider really tickled me. That's so true genius in it's simplicity.
i agree. almost seems like a miracle how the numbers work themselves out.
its not about the numbers adding up. its just basic electric physics where 1+1 = 2 in terms of current
Yeah I was immediately stumped as to how he was going to vary the voltages and that was clever
To fix the thin lines, put a 74LS374 on the output of the EPROM and clock it from an inverted dot clock (10Mhz) & adjust the H-sync to be one step later.
TH-cam is truly the greatest human invention. Not just that the content exists, but instantaneous gem feedback such as this comment. What a time to be alive!
I love how there's people like me that kinda get what's going on here, and then there's people like you who *get* what's going on here
Yep, I was just thinking the same. 🙃
Unfortunately the worst case tACC for the EEPROM is 150ns, and the period of the 10MHz clock is 100ns, so using a D-type flip-flop (like the 74LS375) and correcting timing by one pixel would still have potential for a glitch.
However, as he’s dividing the 10MHz by two by dropping the LSB of the horizontal counter, it would be possible to divide the clock to the D-type by two to produce a sampling period of 200ns and never violate the EEPROM access timing. H-sync would then also need to be delayed by two cycles rather than one.
I was immediately thinking the same thing - "you need a buffer on that slow ass prom".
Ben's comment about sdram being faster and that this would solve the issue is misleading too. Let's say he used some low latency ddr4 with 15ns latency. That might work, but only because the monitor is too slow and likely samples towards the back end of each 25ns pixel. An old crt would shift the image by about a half pixel and if it was a good monitor, it would display the invalid data as vertical lines of pixel flicker.
A 4k pixel is less than 2ns - so sdram is always buffered.
When Ben used Red, Green, And Blue wires to represent the color outputs on the breadboard, i was delighted by the attention to detail that went into this.
Thanks for producing such an interesting and educational video.
Me too. But it wouldn't have been Ben otherwise.
"What do you want from me, I'm trying to build a video card on breadboards"
Dunno why but that just cracks me up. xD
JackTheSpades it’s just such a self aware comment. It really reminds you how silly this whole awesome video is.
I enjoyed the line "I dont know if this looks like a bird to you" during the hexdump
That needs to go on a shirt...
"I'm not going to hook this to a computer, at least not yet..." *flashes image of breadboard computer*
The Patreon thanks via EEPROM images was a nice touch!
We need more videos where the end credits roll by switching out EEPROMs.
Brought to you by viewers like you.
Could you imagine having credits for a movie roll like that? That'd be great
@@jjbailey01 I spy a PBS reference
@@jjbailey01 pbs kids
The level of organization on your bread board is incredible. I thought I was organized with mine, but yours make mine look like a bird's nest...
Well, he's got a bird in there and that technically makes it a bird's nest too.
It always pays to watch how others organize their circuits.
And his fancy cut's in his video editing.. cause i'd imagine there's a lot of cut out of him measuring them and bending them and removing them...............
"I don't know if this looks like a bird to you" that made me subscribe lol
This is the greatest line in internet history!
Neo surely saw the bird, that’s some Next level matrix shit. fascinating insight of how a picture is generated... and other programming voodoo ;)
That’s a whole lot of “Digital Logic Design”, “Integrated Circuits”, and “Computer Architecture” classes combined in two interesting videos! Well done. 👏🏼
I'm an electronics newbie and I'm impressed that your explanations are detailed enough to follow along without being verbose. I'll keep watching.
You've come to a great place to learn, then. I would also recommend a couple of other TH-cam channels: *Great Scott!* and *Julian Ilett*
Just shows how beautiful the engineering process is, from an idea, to hardware, to software, to debugging, to finished product, with testing at every step.
Absolutely beautiful when we are a spectator but extremely excruciating when we are the ones doing that
@@hello123s exactly. In my hardware classes, testing even a simple module with testbenches was hard and annoying. This one-man show is an absolute marvel. Bravo.
You should consider doing a bonus part 3 where you load 3 unique images into the remaining memory and slow the clock enough to make it animate like a GIF!
He could probably just use the vertical blank for advancing the image. That'll be a 60 fps animation.
_Insert joke about 30 fps consoles here._
xD
Honestly that would be a cool idea
@Richard Clutterbuck not with all games, some of them run at 30 or even 30 unstable
Am thinking hoock it up to a raspberry PI and we can have some 100x75 pixel fun
the fact that the image it produced is actually not bad and you can even tell what the image is of (to an extent) is impressive good job!
He already mentioned it's distorted because low Frequency 10MHZ
@@HallOfMemeYT i know that, its impressive how good it is.
3:03
*you can’t escape me, single frame of a dummy thicc breadboard*
actually, it is two frames at 30 fps.
42!
@@عليمحمدجبار-ت1ي four frames at 60 fps.
thank you :)
LMAO! dummy thicc breadboard ... I'm ded
"I'm not going to hook this to a computer, *at least not yet*" 👀
Play it with 0.25x speed. He's teasing something in one of the frames
3:03
Oh god I'm excited for that
Holy shit that is amazing. I thought you were taking the piss.
You can use the "." and "," keys to navigate from frame to frame
3:03 HE'S GOING TO HOOK UP THE GRAPHICS CARD TO HIS BREADBOARD COMPUTER
yeah, that would be so awesome!!! :D :D
hype
was wondering if anyone else seen that hhahaah
Just saw that and came down here to look for the coment about it. Found ya!
I mean I figured that was the case when pt1 came out.. this is was just confermation.
You can tell a hardware person's writing code when there's a try-catch just to check for a valid index.
Python devs be like
What should you do in that case?
@@HentaiNat Check for the valid index instead of intentionally doing an invalid index to catch the exception
@@davidy22 How would that look like?
@@HentaiNat Just use an if/else instead of a try/catch. Not only is your intent clearer to someone reading your code, it'll also run much faster.
Cool! Now we need to make a Ray Tracing module to this breadboard card!
I guess if you dont need it in real time it is doable :D
cue factorio raytracing engine built with in-game elements
@@mestevesx I believe that factorio experiment you mentioned did ray casting, not ray tracing. But it surely is an incredible achievement on its own.
@@onuktav Yeah, my bad, I thought the had the same principle, but one displays light as it is on camera, the other displays retangles at it's distance location. or something like that
Wouldn't the card need to support 3d internally to support hardware accelerated ray tracing? I dont know understand your comment.
And make a GIF that goes on and on at 4k
Thank you TH-cam for remembering I wanted to see this video, as I subscribed on the previous one!
I forgot to subscribe last time but TH-cam was kind enough to notify me of the new video anyway.
2:58 "I'm not going to hook this up to a computer just not yet" I saw that freeze frame at 3:03!
pasteboard.co/IORD4YR.png
it's a spoiler to show that he's going to connect it to his homemade CPU ? =O
Same. Tried to catch it, that one frame, but couldn't! Hours of fun! :P
@@TheoPantazi put playback speed to 0.25 then pause it
@@mikuhorizon yep I did, I forgot about the playback speed setting, thanks! :)
@@TheoPantazi or pause near the frame and press fullstop key "." .......on pc xD
Not sure why this came up as a recommendation, but we built these 30 years ago in a tech course, as part of our understanding of the display schematics and these signals. We also built the power supplies and operational amplifiers, etc. The fun part was denying the colors and interpreting the interference. Nice to see they are all discrete chips today.
I found this hilarious as a Windows user - Microsoft Paint forced bitmap on us for years - but you wrote a python script to extract a bitmap from a png =D
OHH so thats what bitmap means!! It's a literal map of bits!
This is a big revelation to me for some reason
For what it's worth, you'd have to do the same with a bitmap (.bmp) image -- they write data from the bottom row of pixels to the top, and of course still have all the header data and don't have the necessary padding.
I get it
Yeah I think he could have just increased the canvas size to 128x256 and filled the bottom and right edges with black, then exported as bitmap to avoid the whole python step, right?
You wouldn't get indexed colours like shown with Paint's BMPs, it forces you to use its colour indexing.
In the 90s I played with a fpga and made a 8 bit cpu. The display was a ega monitor. To reduce the number of gates I sacrificed some memory by using some reserved color values to generate the sync signals. Of course this had some drawbacks but had also a nice advantage: to scroll the picture I only had to do a limited number of memory writes to slightly shift the syncs...
The fpga was actually too small and most of the display logic was in ttl logic...
This is the way everything should be explained in universities. Amazing job!
I'm pretty sure we would have understand woman by now then :>
That's a terrible idea, especially considering how certain disciplines are logically incompatible with using an example as a metonymy for theory.
He does teach in a university. Lol.
isn't it how they explain it in universities already?
Thank you for explaining this in an engaging, thorough way my CS professors couldn’t be bothered to. You’re making me want to start playing with breadboards and get back into learning hardware.
04:55 "I mean, what do you want from me ? I'm trying to build a video card on breadboards".
That's the most badass punchline I've ever heard
3:03 That image that flashed for 1 frame, wow... Is that where this project is heading?
Who knows, but it looks like his long-term project "The 8-bit Breadboard Computer"
This image is from the 8bit breadbord computer video series already available.
He mentioned, “hook this up to a computer...” and showed his breadboard computer
HE’S GONNA PLUG IN HIS BREADBOARD VIDEO CARD INTO HIS BREADBOARD COMPUTER
I counted 2 frames, but yeah, I hope he figures out a way to connect the two.
Arcadefan314 that would be insane XD He would have to write a program to calculate/draw a picture and all the RGB values per pixel, instead of holding a static one in a ROM
Now u just need a good gaming chair to get more fps
Add more RGBs
@@sarno97 you're right, few leds added to the board should be quite a nice performance boost
How much megapixel would that type of data even transduce? Severely.
He also should not forget to download some extra ram.
And delete local disk c to get infinite fps
I love that you include the errors (one might encounter) in your work and not just jumping to the solution
"I'm not going to hook this up to a computer... yet."
*Don't do that. Don't give me hope.*
Wojtas! Hook it up to the 8 bit breadboard computer!
hey at least it'd be better than my laptop's integrated graphics card
As soon as he says "yet" there is a single frame that contains a picture of his 8 bit computer. So it seems even more likely he will attempt it!
@@TheYaMeZ yep
3:03
I would really love to see this display multiple frames using the extra space in one of those EEPROMs. In fact, you could almost take it a step further and use swapping between two images at 60Hz to make intermediate colors in between any two existing colors. That would take one extra flip-flop using the reset pin of the y counter so that it switches between 1 and 0 every frame, then tie that to the high address bit of the EEPROM. The harder part would be converting images into the right format to be displayed like that
@@kezif don't even need a second ROM, this one is big enough for multiple images. Just the the frame counter to one of the higher address lines that's not being used.
13:00 - ish
Being very VERY naughty, adding in that logic chip WHILE POWER IS CONNECTED
Your explanations are so enlightening! I haven't tinkered with electronics in decades (I'm 74), but now I'm inspired by this and your other videos. Nice work!
when we should get support of Vulcan on Breadboard GTX 256-15?
100x75 pixels is not that bad, it's a lot more than I thought would be practical to build...
The Adruino-based Gamebuino META has a resolution very close to this. It's quite usable once you get used to writing games for it
(in fact most folks don't even use the full-RGB mode, they use 16 color indexed because of the lower RAM use. when you've got 16k....)
like, we had lower resolution color displays on phones when they started to have color displays.
For a breadboard graphics card it's quite amazing indeed.
Excellent video as always.
If you used a W27C512 eeprom you would get 16 address lines, which would allow you to get to a resolution of 200x150 and also get rid of some of the vertical lines because the access time would be 45ns or better; or with a W27C020 you would get all the address lines you need for a glorious full resolution. :)
You might have mentioned in the video that the output resistors form the world's simplest DAC.
I still don't get HOW that DAC really works. Still gotta do a bit of maths to figure out how that shit works. I think he made an assumption that we get Z instead of 0 for some reason in the calculations. That said, that means the resistance and the actual voltages will differ for the intermediate values, which isn't that bad actually.
Ooh, you made me remember the Covox Speech Thing by mentioning the simplest DAC. It was an easy task to build, but the only Windows driver I found in those times, when www had been barely invented (and I had no access to it), was poor. A fond memory, nonetheless.
You could extend that DAC with more bits by hooking more resistors that are powers-of-two times a base resistor, and then connecting the lowest bits to the highest resistors. So, for a full 8-bit color, you could technically find 1, 2, 4, 8, 16, 32, 64, 128 (times some resistance) resistors and hook the bit 0 to the 128 resistor, the bit 1 to the 64 resistor... but then it would be easier to use an actual DAC.
@@JoaoBapt Nice. Again, gotta do a bit of maths on how that works but holy fuck is that nice.
@@paulstelian97 This is essentially a fancy Resistor Ladder (en.wikipedia.org/wiki/Resistor_ladder).
If he wanted to use up all 8 bits of the data for color information, he could get 256 colors (including black and white). Use 3 bits for Red and Green, and 2 bits for Blue. It will look just fine because our eyes are actually pretty crap at seeing blue anyway so lower resolution for blue is fine.
I would actually recommend biasing the middle range values of the outputs to lower intensity than they would be in a linear configuration. This is like gamma correction in a way. Our eyes aren't very good at seeing small differences in high intensity signals compared to small differences in low intensity signals. Imagine trying to see the intensity difference in 1 light blub vs two, and then comparing that to 100 light bulbs vs 101. It's the same difference in intensity, but our eyes are much more sensitive to changes in low intensity signals (contrast ratios are biased towards dark).
Great stuff! And what an interesting and educational explanation! I was an electronics/telecom student during the period of conventional TTL and CMOS chips, as well as CRT technology, so this is fully understandable for me! Keep up the good work and I might show this video to my kids! I hope they get the passion for these things!
People: There's no way you can top your DIY 8-bit computer!!!!
Ben: Hold my breadboard
Next: "Adding a GUI to the breadboard computer"
"actually, don't hold my breadboard, I need it to build my gpu"
Last time I was this early this calibre of video card was considered good.
IKR, 64 colors was a dream config for me for years!
I remember the 1st pic i ever displayed on the 1st computer i ever owned was of Gloria Estefan. I downloaded it over a phone line modem and it had worse resolution than this. Man was i excited!
Overclock that puppy and then you could really pump frame
(Singular)
Watercool it! No... ln2! ;)
It's all tied on how fast you can change the video memory.
If you can change it at 60 FPS, that video card WILL display the video at 60 FPS.
But i think his hand will get tired if he goes over 2.
It kinda is over clocked. That's how the black verticle lines are created on the screen.
@@dan_loup so overclock your arm?
@@spectrthechamp3658 Or that or come up with a mechanic arm that switches the chips quickly.
Damn that was a journey!! Absolutely incredible. I am always amazed at how much work goes in to computer hardware and how little we appreciate it.
Ben: I made the world's worst video card!
Intel HD Graphics: *Am i a joke to you?*
Lirei Taichen ATI: *Am I a joke to you?*
Ha! that comment was also on the first video!
Most integrated graphics in general: *Am i a joke to you?*
S3 ViRGE: Am I a joke to you?
Gedo De Luchs ATI=AMD Graphics and before that the most common integrated graphics in server boards that only needed a screen for setting the thing up.
Anyway, the original IBM PC manual included schematics for everything, even the CGA card built with TTL chips, a RAM chip and an old 6845 chip that did the job of the two bottom breadboards. Max res 640x200 with the 4-bit DAC in the monitor instead of the card. Hercules just added more TTL chips to get 720x350 on the MDA monitor with it's 2 bit DAC.
"I don't know if this looks like a bird to you"
Yeah it does, really does.
WOW...
I've always wondered how computers work on the most fundamental level, I'm tired of all of the explanations only going down to the level of "machine code". I'm glad I found this channel.
How do you know all of this? Is there a specific topic you could study in school to become fluent in things like this? How did you even begin to learn in a topic like this?
Judging from previous videos, he mentioned books he read about the topic. But more information would be nice, indeed.
Study Electronic engineering!
A computer science degree will teach you all the things explained in this video.
@@EekSaidTheCreeper Nope, computer science is all high level stuff, at least in my country. For this you need electric/electronic engineering
@@orti1283 Not for me. Any good CS degree will have an introductory electronics course.
Ben, you have taken something that seems like an impenetrable blur of magic and brought us behind the curtain to see the "wizard" in the flesh. Thank you!
We want the Biggest Crossover the world has ever seen!
Please connect it with the 8-bit breadboard computer in some way!
it's a must!
Yes. We also want to see it someday
3:02 "at least not yet" *flashes 8-bit computer for one frame*
I'm pretty sure that's exactly what he planned with it all along :)
in the future "How to make a 2080ti from scratch"
Marcos Tezó not likely
Viper vids gaming plus well maybe in 100 years? 🤔
@@NeoReibert I estimate 60-70 years. Fully 3D printed GPU.
Never ever
Viper vids gaming plus it's a joke, dickhead
Just subscribed as a Patreon and it already pays off. Incredible work, can't wait to see what comes next!
yes we need more like this
How is this comment from 2 days ago?
@@doingmoms3483 I am a Patreon, and if you sub you get the videos earlier.
Wish I also had the coin to put in this one. You have a nice taste of who to back up.
How much does patreon pay you?
Im proud to say that you are the first content creator I've seen in my entire life who has engaged me this much.
Maybe thats because Im also an electronics engineer (I dont really know whether i can call myself an electronics engineer after watching this).
But , my man, you've impressed me the hell out. U deserve much more subs than other good for nothing useless creators.
Kudos.
keep going brother.
Would really like to communicate with you.
Love from India
What do you have to be proud about in praising his merits?
Proud🤡 also why bring up good for nothing creators
It's just a translation thing / lingo. You know, English is not the first language of majority of world. Monolingual americans won't understand this, especially if the other guy is an Indian, who are on average trilingual.
@@curious_banda then he gotta learn that thats not how we talk in the english language
@@zlr9022 Nobody asked to talk with you. You probably don't have friends.
Awesome work! The "Lena" picture in the thumbnail was nice reference :-)
wojciech m. Please explain?
@@CollinBaillie "Lena" is the name of the model whose photo is commonly used by computer scientists when they want to demonstrate algorithms and/or anything related to computer graphics
@@sligovolts The most famous Playboy model ever in computer industry.
Me : *build my own pc*
Also me : *Think i am good with computers*
Ben : Makes own video card
😂😂 same
Me : * can write assembly programs with only self education and online courses and build computers too *
Me : wow i'm kinda good with computers
Ben : * Draws stuff on a monitor with some electricity , wires and holes *
You're like the nerdy cousin of the guy from Primitive Technology
Vaporwave Technology
The guy who built a hut?
😂😂😂
Only that this specimen talks...
Everybody is cousins with everybody, technically.
Even though the object was to display a video image, so much additional information, applicable to more generalized and broader areas, can be inferred. Phenomenal video!
the interesting thing is that this is more powerful than lots of the 8 bit computers from the 70's and 80's
Cuz of thr integrated circuits , in those times it was not existing yet
To be fair, their limitations were not really on the circuitry to convert the data into a video signal but in the limited amount of memory to store the data and the limited CPU power to create it. Even with this build, in the end, the size and speed of the memory chip was the limit to what it could do.
@@HenryLoenwind Yep. Something a lot of people don't think about is that, even at a tiny (by modern standard) 640x480 resolution, at 60hz, to update each pixel on a screen would require writing 18 million pixels of data per second. I have doubts that many CPUs from before the late 80s could even handle that. And then consider that 640x480 @ 24 bit color requires at least 1 mb of image buffer - which is almost 16 times the total available memory of a Commodore 64. It's slightly mind-blow and amazing how large the numbers of operations and data modern computers push around while doing "almost nothing".
@@RodolfoRP1 bullshit, they were all available back then.
But COBOL still control the world...
Man ! Its Awesome ! I'm a Tech Artist At Ubisoft and your VideoCard Making Video made me Understand how the Electric signal can be translate to an Image on the screen. BIG THANKS !
please stop milking the assassin's creed franchise.
@@Roop-n4z He is a tech artist.....
@@Roop-n4z lol thats like telling a cashier at a store to stop stocking a product you dislike. Big oof
3:03 The flashing image is of your CPU, are you suggesting your gonna hook this up to your breadboard CPU?
Changes need to be made, with only 16 bytes for instructions you can't do shit related to video. He barely fit his Fibonacci counter!
It would most probably have terrible buffering issues and it certainly not be fast enough to render full frames between syncs, but it would still be able to output an image.
@@Meoiswa I'd really want to know how you can access that SRAM and write to it during the HBlank and VBlank... that'd be f'd up. Saw someone else do a reverse emulation on the NES which actually had to work with that and boy was it funny.
Actually, my bad, It would need one more instruction to be able to tell the GPU when the RAM is available for it to scan it. Otherwise the CPU and GPU would be fighting over who sets the active address. Luckily his instruction set still has some free slots, and this way it only needs one.
I've not watched this in full, but I'll bet he's planning on demonstrating DMA, so that the GPU can read off of some statically allocated RAM, potentially two buffers selected by a control block so the CPU can write to one while the GPU is reading from the other.
Watching you explain this was the exact same to my brain as watching a speedrunner explain a complex glitch in a game I hadn't played yet.
I wonder how many different things I could actually do if I gave them the proper amount of time and training. So much of what you were saying I have absolutely no idea but it's all incredibly contextual and represents concepts that can be applied in multiple alleys.
Makes me think I should have more confidence in my abilities IRL. I mean the only thing that separates me from conquering that incredibly complex glitch is time and effort. I guess it's the same for the real world.
really makes you appreciate how amazing it is just to see a 1080p desktop
Or run a game, even more crazy
yup, it would be kinda cool if big video card, and computer component companies in general, would do this kind of educational videos with narrators good such as this.
@@DreamskyDance Well, a video card, even a low-end one is a thousand times more complicated than this one plus its parts are a lot tinier. Such cards are also produced in a factory. So, making an educational video would be extremely difficult.
@@perfectlybalancedasallthin9319 thera are educational videos about black holes and 4th dimension so i dont think its that hard to make one about videocards
@@david2438 yup.. i think its more of an issiue of propreitary technology. But it would be interesting if someone could show on a bit simplified examples what exacly happens in Nvidia RTX for example ( as opposed to my old 1050 Ti ). There are specs of cards with release and all, thats nice. Imho in depth educational video would be really interesting for some people.
I did this on an FPGA with VHDL, seeing it implemented with actual chips... it just makes me appreciate FPGAs more haha.
I've done the same. Way more fun then bending jumper wires.
I love FPGAs too, I am using DE2-115, it would be more fun if we exchanged our experiences with each other, you can see my small FPGA TH-cam channel that I started, I am uploading my FPGA projects there, I use Verilog BTW
Seems like a nice project for this board too: alhambrabits.com/products/
@@RobertSzasz I think doing it with physical parts would give you an extra incentive to use weird tricks to keep the part count down. But obviously, you can do more stuff in an FPGA (2D acceleration anyone?)
@@JGHFunRun Also cool but for different reasons. (The AVR doesn't have much memory, so you have to generate the data on the fly!)
But seriously, I love that Special Thanks section, never seen it applied quite this creatively.
I love that hotswapping EEPROMs is a thing you can do.
@@fluffycritter Yeah it was a pretty cool thing he did there :D
There's no way I could sit through all the work you did here for this!! Skimmed through it and the first video just to see if it was legit. Computer science people should have the money, NOT influencers. To have the mind and patience to do these kinds of things is incredible! All the effort that went into this for a poor picture blows my mind to consider all the slaving over people who think like you do for each, stupidly faster generations of hardware we get to enjoy. Props to you guys for being the unsung heros, designers and architects of our daily lives
Thank you! People that solve problems for real should have the money and influence. (ie Elon Musk)
@@multivariateperspective5137 Musk’s engineers. He’s a venture capitalist that doesn’t do jack on his own.
people choose where the money goes, if they wanted to fund engineers instead of influencers they could do that
average joe doesnt give a shit about physics and engineering, theyd rather watch funny videos or football - hence so much money in football. Basic rules of capitalism and it's good that way, no better system has existed before.
Please combine it with your breadboard computer. I want to see it produce some lines or circles
3:03
@saladnuts Yeah, it would probably do rectangles and stuff though, or pre-defined shapes in eeprom that could be resized
It's probably too slow.
@saladnuts Taylor series approximations of sin and cos with a fixed point representation (4.4?). You could then unroll the iteration loop to the desired precision, keeping track of x^n and n! at each value of n, updating either sin or cos at that step, with sin=x and cos=1 at the start (so you can start from n=3 with n! initially set to 3! and multiply x by itself 2 times to give x^3). Doing this you could compute them together, updating cos at the even values of n and sin at the odd values of n.
You may only need 2 additional steps to get a sufficient result for this case. Interestingly, Doom used 2 steps of a similar algorithm for computing the inverse square root.
Another alternative is to pre-compute the sin and cos tables for a given circle size on the EEPROM and look them up as needed.
@@karlkastor It might not run Crysis, but we could watch it draw the lines and circles pixel by pixel, which is even more exciting.
finally, now I can run minecraft shaders.
This was a great way to teach people how computer graphics work, keep up the fantastic work!
This was so neat! I've never seen a breadboard in my life (and have no education in computer logic), so I struggled to follow along when you were plugging up a storm there. But still interesting to watch!
Just wrote my first "Hello world!" program. Came out to youtube to hang with the tech types. Turning off my computer now.
Dont give up
Don't give up, i work as a programmer and the electronic stuff he does may as well be magic to me, the only thing i understood was the python script and the binary hex part.
Don't give up! We all started at "hello world!" We all started out learning the basics. The rest is just study and application. If you are truly interested, you could be doing stuff like this with some study and practice.
Everyone starts at “hello world.”
And some of these don’t give up. Keep going!
@@diablo.the.cheater Funnily enough, that was the only part that seemed like magic to me! I haven't seen shell commands in YEARS
PC Gamers: Intel HD Graphics are basically the worst video card!
Ben Eater: Hold my beer.
hold my breadboard
@@Austeja608 that works
this Card he build don't crash, so it's more stable then nvidia, Intel and AMD combined.
I swear fam its fax
You should try my AMD video card in my computer, I am an AMD guy but this card is terrible, it crashes the video drivers and sends my computer to plaid every time I try to overclock it.
The fact that this would be top-of-the-line in the 70s is amazing. Imagine a video game console based on this fairly simple design
I hope he hooks it up to the breadboard computer later
That's still the worst video card, as whole the weight of processing image goes to CPU
That basically would be ZX Spectrum, but with more colors and way less pixels
@@Blafaselblubb he did it just today :)
Well in 1981 in the UK we had the ZX81 with 64x48 monochrome pixels for drawing, though actually there were 32x24 characters of 8x8 including a range of "quarter block" characters to support the 64x48 "graphics", then in 1982 the ZX Spectrum with 256x192 proper pixels with 8 main colours plus bright/not bright (4 bits).
Wow that was well done! Congrats! I feel happily educated enough that I knew what the next action was to be, but very cool to see it actually done to the end (I stopped at the rainbow colors and sourcing for odd patterns etc). Makes one appreciate the early VDG chips in little computers like the CoCo series & Atari etc. Cutting edge back then!
Thank you so much for these 2 videos, it finally made me understand how a graphic card works with its frame buffer. I know modern graphic cards are much more complex, but understanding the basics is enough to be able to extrapolate. A quick remark: you used resistors to generate different levels of voltage according to the 4 bits for red, green and blue, that was very smart. I guess you could have used a Digital to Analog Converter (DAC) for this, especially if colors were coded on 8 bits, but the video would have been way too complex. Am I right?
Those resistors essentially ARE a DAC. Simple DACs are just a (very precise) array of resistors with driver stages.
2 bits for each color*
@@VintageTechFan opened the comment to see if someone else had already brought this up :)
3:03 holy shit, the excitement is real.
Well there needs to be a bit of a redesign that changes the bus width, the instructions and to support 16-bit regular RAM and 20-bit video RAM (and support for accessing that). A 16-bit bus and an external device that allows writing to video RAM. And doing a bit of MMIO would be supreme.
@@paulstelian97 One can dream though.
Having A15 free you could have programmed 2 images to one ROM and switch them
"Frame buffer" Yo! :P
the switch would be too fast, you wouldn't see anything
Then he would have to introduce some kind of delay circuit...
maybe on another video...
@@fft2020 He just needs to add another few JK flipflips to the output of the vertical blanking signal, add 8 of those delays the signal for about 4-5 seconds
@@FerrybigGaming and switch the address position on the EPROM to the other images
actually, he could have used 2 remaining ROM lines for sync so that entire video card would easily fit into something like 5 chips total.