This video was sponsored by PCBWay! (FREE $5 of new user credit): pcbway.com/g/e... github: github.com/chr... discord: / discord patreon: / chromalock buy me a coffee: buymeacoffee.c... :)
The dithering in solid black and solid white versions of the screen is likely caused by using partial range YUV format at some point in the video conversion, resulting in blacks being very dark gray and whites being very light gray.
The Gameboy Color can clock the link port up to only 512KHz, but it doesn't matter how fast (or slow) the clock input is if it's in slave mode, so data can be sent much quicker- it's just a matter of making the code on the Gameboy handle the data from the serial register fast enough. To get "full color" images encoded quickly, you can shrink the image down to 20x18 and quantize it to 8 colors with no dithering to get the palette map. It's then a matter of treating those areas of the image as their own separate images/frames to quantize them to 4 colors each. It'll definitely require some extra coding, but if I can do it manually fairly easily in GIMP, then coding it shouldn't be too hard.
with a LOT of effort it might be possible to write an algorithm for the color pallets and even compress the data in a way that the gbc might be able to decompress in real time to fit that in data
Well, first, try using "ordered dithering" instead of any atkitson variant (en.wikipedia.org/wiki/Ordered_dithering) As it's always "in grid", it will look less flikery. Also, for the color, you have 8 color palettes, so you can split your screen in 8 regions and assign the palette data to the tiles before the streaming start. That way, as soon as you stream a palette (or set thereof), all the tiles in that region will take the said color palette. Lastly, if you combine ordered dithering with some data loss, you can probably fit any image into a 255 fixed set of tiles, removing the tearing, and greatly speeding up the transmission. Yes, the quality will be worse than "hires", but probably better than "low res", but the framerate will probably be on part with "low res" for a better quality. Combine with the 8 region colors, and you probably can have a color stream better than your "low res" one = D Very nice video nontheless ^^
Sometime Ill try recreating this with my bootleg GB Boy Color XD. As far as I can tell it has the same CPU as a legit gameboy and the comm port seems to be wired up, so it *should* work
I know it sounds really hard to implement (and it is I guess), but couldn't you increase the FPS count on high res "simply" by uploading only what's changed on the picture? (Just like modern video encoding does) Maybe a quick and dirty way to do this would be to upload the tiles that changed only when they changed to a certain threshold ?
This is really cool! A lot of these older protocols are actually really simple when you get the electrons moving in the right direction. Can I also suggest that in future videos you intentionally speak about 25% slower when recording in order to enunciate a bit more, then speed it up in post? Your narration will be much clearer that way.
Could the video frames be compressed before it is sent to the GBC using something like RLE? It might be possible to raise the resolution somewhat in the low-res mode by switching the tile data every 1-2 scanlines using raster interrupts
"like a good software developer, i stole code from examples and read just enough documentation to vaguely understand what i was doing" damn if that isn't right on the money
That's cool make more so I can buy one. Can't understand the computer and soldering stuff etc. gots lots of Gameboys and Cables.. mm come to think of it just 1 GBC 4 O.G.s DMG1 and a Advanced. Does this work on a advanced?
I imagine the dots were caused by the fact that there isn't a modern video compression algorithm that handles high frequency information well. And it all works by throwing out high frequency information. That's the information you need to get the sharp pixel transitions. In a 1080p video you won't notice if a 240x240 block is a little less sharp than it could otherwise be. Btu when that's your whole video canvas the it just wants to smear the whole thing. You really need a lossless video codec to do this sort of thing.
I'm not even finished this and I gotta tell you man, I want to see a mechanical keyboard where the actual controller is a gd GBA SP and it's bit banging USB Godspeed you crazy bastard
(As an aside, your cars CAN bus has a ton of easily readable information on speed, gears, engine load and a pile of other stuff. Interfacing that with a GB SP and mounting it to your dash would be a fun project :3)
I seem to have misplaced my toothbrush...
"We added low FPS and screen tearing to a game that never had it, and that's a win in my book"
💀💀💀
And it was this day chromalock learned he was colorblind
i can’t believe chromalock was the gameboy colorblind butcher
i guess he really is chroma locked
This is absolutely incredible. Nice work!
I am excited for this pcb device to be sold on retro game sites along with other carts.
i feel like bad apple is slowly becoming the animated music video equivalent of trying to run doom on every conceivable device.
Finally, the perfect format to watch Tenet on. Just as Nolan intented.
The dithering in solid black and solid white versions of the screen is likely caused by using partial range YUV format at some point in the video conversion, resulting in blacks being very dark gray and whites being very light gray.
The Gameboy Color can clock the link port up to only 512KHz, but it doesn't matter how fast (or slow) the clock input is if it's in slave mode, so data can be sent much quicker- it's just a matter of making the code on the Gameboy handle the data from the serial register fast enough.
To get "full color" images encoded quickly, you can shrink the image down to 20x18 and quantize it to 8 colors with no dithering to get the palette map. It's then a matter of treating those areas of the image as their own separate images/frames to quantize them to 4 colors each. It'll definitely require some extra coding, but if I can do it manually fairly easily in GIMP, then coding it shouldn't be too hard.
with a LOT of effort it might be possible to write an algorithm for the color pallets and even compress the data in a way that the gbc might be able to decompress in real time to fit that in data
I've seen algorithms for this, even wrote a pretty miserable one, myself, though not exact, but the start of one. Much better ones exist out there.
Well, first, try using "ordered dithering" instead of any atkitson variant (en.wikipedia.org/wiki/Ordered_dithering)
As it's always "in grid", it will look less flikery.
Also, for the color, you have 8 color palettes, so you can split your screen in 8 regions and assign the palette data to the tiles before the streaming start.
That way, as soon as you stream a palette (or set thereof), all the tiles in that region will take the said color palette.
Lastly, if you combine ordered dithering with some data loss, you can probably fit any image into a 255 fixed set of tiles, removing the tearing, and greatly speeding up the transmission.
Yes, the quality will be worse than "hires", but probably better than "low res", but the framerate will probably be on part with "low res" for a better quality.
Combine with the 8 region colors, and you probably can have a color stream better than your "low res" one = D
Very nice video nontheless ^^
he turns a game boy into a monitor in a way?
Sometime Ill try recreating this with my bootleg GB Boy Color XD. As far as I can tell it has the same CPU as a legit gameboy and the comm port seems to be wired up, so it *should* work
This is such a cool project, and a great video!
Playstation submarine hell yeah, Can't wait for you to take some billionaires on a trip of a lifetime
Yeah…. Lifetime.
Can you try playing some modern 8-bit games? Like Shovel Night or Celeste or maybe Octopath Traveler II?
simple they won't work since they weren't made for the gameboy
This is such a cool project from a really underrated channel!
One of the best videos of things I hardly understand
What an honor for us to be a part of!🥳 Happy Holiday @ ChromaLock and everyone here 🥂🎅
Are you guys planning to come to israel? Or ship here maybe
9:19 Finally a way to play Noita on the go.
Steam Deck: ✋
Gameboy Color: 👈
4:05 looks like a fm synthesis square wave
I know it sounds really hard to implement (and it is I guess), but couldn't you increase the FPS count on high res "simply" by uploading only what's changed on the picture? (Just like modern video encoding does)
Maybe a quick and dirty way to do this would be to upload the tiles that changed only when they changed to a certain threshold ?
This was also my immediate thought. Why send full frames? Maybe in an update!
This is really cool! A lot of these older protocols are actually really simple when you get the electrons moving in the right direction.
Can I also suggest that in future videos you intentionally speak about 25% slower when recording in order to enunciate a bit more, then speed it up in post? Your narration will be much clearer that way.
bro the playstation submarine joke... that was good.
Could the video frames be compressed before it is sent to the GBC using something like RLE?
It might be possible to raise the resolution somewhat in the low-res mode by switching the tile data every 1-2 scanlines using raster interrupts
5:05 Undertale OST: 005 - Ruins
maybe you could add PCM audio if you reduced the resolution
Now I wanna get myself a game boy .great! Hells sick tho dude!
You won me over with the submarine joke, and then Bad Apple,… yes!!
Well, now we have to play Bee Movie on this thing.
Ok so We need to take that PCB and make a wifi link cable for net based pokemon trades next... I need this for reasons.
Regarding the palette used, would any of the high-color hacks used on the GBC be useful here? Also, could you try something like this on the GBA?
I'm happy that I came across this channel. This stuff is interesting. I got an Arduino, but no any idea what I should try to build.
can you make a link cable rf transmitter that works with meshtastic?
This is good to develop graphics such as sprites and backgrounds easier, this screens arent color accurate.
the split second ultrakill is running on the gameboy in the intro
"like a good software developer, i stole code from examples and read just enough documentation to vaguely understand what i was doing"
damn if that isn't right on the money
Wild fam 🔥
the big problem i see here is that you will be unable to print out the picture using the gameboy printer if the link cable is in use for the stream.
i actually gone to really like bad apple a lot because of the memes and fellow nerds, and i got a little bit into touhou itself
That's cool make more so I can buy one. Can't understand the computer and soldering stuff etc. gots lots of Gameboys and Cables.. mm come to think of it just 1 GBC 4 O.G.s DMG1 and a Advanced. Does this work on a advanced?
I imagine the dots were caused by the fact that there isn't a modern video compression algorithm that handles high frequency information well. And it all works by throwing out high frequency information. That's the information you need to get the sharp pixel transitions. In a 1080p video you won't notice if a 240x240 block is a little less sharp than it could otherwise be. Btu when that's your whole video canvas the it just wants to smear the whole thing. You really need a lossless video codec to do this sort of thing.
I imagine it's more just an error in colorspace conversion, or the original video truly does have just dark gray as the black.
Pantone: Shrek piss
I'm not even finished this and I gotta tell you man, I want to see a mechanical keyboard where the actual controller is a gd GBA SP and it's bit banging USB
Godspeed you crazy bastard
(As an aside, your cars CAN bus has a ton of easily readable information on speed, gears, engine load and a pile of other stuff. Interfacing that with a GB SP and mounting it to your dash would be a fun project :3)
We would get a camera video from the ti84 ...
:)
@@ChromaLock Eyyyyyy@!!!!.
what music did you use in this video
So technically, you could make it stream doom, so depending on what your definition of “running” a program is… You could run Doom on a GameBoy
How does it goes on an Gameboy advance?
No I haven't seen a 'Sega bible computer' connected to a 3D printer just a SEGA MEGA DRIVE connected to an awesome MIDI interface 😊
Can you make a program that let's you battle pokemon online with a USB cable. Then sell the cable.
We eatin good today 🙏
Steam Link Gameboy port coming soon?
5:20 what da amogus doin
But you didn’t run the original doom on it…
What can’t we do with a game boy color?
🤣
Also how would this look with a new ips screen for gameboy color?
your a genious , nice video .
hey he finally got sponsored by them lets go
Dude you rule 🤘
Waiting until this gets taken down by nintendo!
RP2040 is technically 5V tolerant but only outputs 3v3 ;)
what DE is that
If you're talking about the Desktop Enviormnent, it seems to be GNOME with some extensions
I was waiting for your video.
its 5 fps so it will work
This is so cool!
I wanna do this with pokemon red ACE now.
noob
nice