aaah, good old PS1 coding memories… the PS1 was definitively the most exciting platform in my game dev career - cheers for bringing those memories back, great video! I hope many, many (aspiring and even already in the job) game coders take your course, since PS1 programming was and is so special and unique - it was one of the last platforms you can really push to extremes by using (sometimes weird) optimization techniques and tricks you do not find elsewhere, and helps to improve your general programming skills big time
I grew up in PS1 era and was inspired by playing the games back then. I feel that ideas brought from that era could give new soul for the modern development. Going back to this lost art ignites something in me - thanks for this man. Learning hardware reversing sega or ps1 architectures - less complex tech, more solid fundamentals.
I watched the part of your course where you went over that fixed point notation just few days ago. I immediately thought that if we assume the 1.0 being equal to 1 meter, 4096 parts means ~0.24mm fractional precision. No way that was the reason for the jitter. Great in-detail explanation!
Hi, I took a lot of your courses and I liked them. thanks for these amazing courses and for you efforts. I would like to suggest to make a course the teaches make a 3D gameEngine including (physics system, graphics rendered, file management, materials, collision system, and whatever a game engine can have). I would really like to enroll in a course like that. I searched the whole internet and I didn't find something like this.
Love these deep dive videos. Could you perhaps make a series about coding a PS1 game? Also, what languages are needed to learn to become a game dev, etc? 😎🙌
@pikuma speaking of the PS1 course, you mentioned in the intro that you write the game to a CD ROM and play on actual hardware. Do you need a modded PS1 to be able to do this? I'm still finishing the 6502 course, but the PS1 is next on my list 😍
@@claudiosettiart Hi there. I believe you need a modded PS1, yes. I need to confirm to other students that ran on their hardware to see if they all had modded PS versions, but mine is definitely modded to bypass piracy protection.
Great video! One way of explaining perspective correct texture mapping that was particularly effective for me is as follows: Consider two quads of the same screen-space shape. For a given set of 2D coordinates, you could have either a small object up close, or a very large object far away, mapping to the same exact screen-space position. The close up object will have fine details visible, and the details of the far away object will be harder, or impossible to see, but a 2D rasterizer will have no way to differentiate between these two objects. This is because of depth. Vertexes are affected by depth, the further away they are from the camera, the closer in 2D coordinates they will become, and of course the same must apply to the details of the object (texels). Texels that are further away must be shrunk according to depth.
Thanks for the really good video! This is a minor complaint, but I wish you had a better camera and green screen - everything else is perfect, though. 🥳
I would highly suggest not getting a better camera or green screen. The viewer does not deserve to nitpick and rain on the parade of such quality and rare to find content. They do not realize how lucky they are to have the content at all.
@@xyzabc123-o1l Nah, that's all good. 🙂 I honestly thought that as well once I saw how blurry it looked. I know it's not a deal breaker, but I'm sure it will be worth the investment. 👍
T-junctions also cause gaps in modern floating point hardware. It's less noticeable but they're there. The reason we rarely see them is because devs rely much more on 3D tools rather than raw polygon manipulation, and tools have become more advanced so T junctions are not easy to do by accident and they clearly appear as a gap in the mesh.
Awesome video! If you could do the same for the nintenfo 64 it would be awesome x 2! I always wanted someone who make a n64 programming tutorial, but there is none easily understandable to find.
Man, I really want something like this to exist for the Sega Saturn. I realize that would be a ton of work for probably not much payoff, but there is just _nothing_ online aside from 30yr old documentation and the dug-up SDK library from Sega. It would be so nice to find an _actual_ explanation of how to put all the pieces together, _especially_ as a kind of rival/companion course to the PS1 one.
In terms of 3D graphics, the biggest differences are that Saturn's VDP1 uses forward texture mapping (hence no UV coords, it always tries to draw a whole texture, aside from clipping commands), this causes issues with pixels being filled multiple times, which makes transparency on distorted quads look quite bad. Because of this, sega's engineers added the mesh feature. I am willing to bet this overdraw is part of the reason for Saturn's significantly lower fillrate vs PS1. The lack of perspective correct texturing and z buffering is exactly as on PS1, but polygons seem to jitter a bit less due to higher vertex coordinate resolution. Interestingly, there is a hacky, quasi horizontal mipmapping feature called high speed shrink, which skips drawing every other texel in a texture bitmap. The intent of this is to improve performance, and its doesn't reduce texture aliasing like real mipmapping, but it is very interesting!
I have always preferred 2D graphics over 3D but when I think of 3D games I *love* they are all PS1/Saturn era (Dreamcast also). Something about the "papercraft" look of things seems so stylish to me! One question, I see you have quite a few courses on retro consoles. If I have programming experience but know nothing of game development which course would you recommend I start with. Thanks!
That's a good question. There is no order and no pre-requisites, they should all be self-contained. That being said, lots of people like the 3D graphics one and the raycasting one is very beginner-friendly as well.
OMG config looks like a mega drive upgrade 😮 why was it so low?? 1 Mb Vram !! Ok if I understand, a 3d Ps1 game is like développing a 3d game in plain SDL (I used to try it)
aaah, good old PS1 coding memories… the PS1 was definitively the most exciting platform in my game dev career - cheers for bringing those memories back, great video!
I hope many, many (aspiring and even already in the job) game coders take your course, since PS1 programming was and is so special and unique - it was one of the last platforms you can really push to extremes by using (sometimes weird) optimization techniques and tricks you do not find elsewhere, and helps to improve your general programming skills big time
Really cool, what games did you make??
I grew up in PS1 era and was inspired by playing the games back then.
I feel that ideas brought from that era could give new soul for the modern development.
Going back to this lost art ignites something in me - thanks for this man.
Learning hardware reversing sega or ps1 architectures - less complex tech, more solid fundamentals.
Super cool video, really appreciate the technical depth compared to other videos on the topic!
you have easily become one of my favorite programming content creators. Super informative, creative, and entertaining. Thank you for what you do.
Thank you for making something purely for the joy of it. Rare to find content that is not meant to feed algorithms but curiousity.
Gustavo, thank you for another great video. I have learned so much from all your courses. Thank you for all that you do
Great videos. Just one thing though - "quad" is pronounced "quod", not "quahd".
Esse cara é diferenciado! Awesome video dude!
That's a great great video Gustavo !! 🎉🎉🎉🎉👌👌 - Learnt so much in just 1h
Packed with such valuable and interesting information and so incredibly well taught!
Thank you very much for sharing!
I watched the part of your course where you went over that fixed point notation just few days ago. I immediately thought that if we assume the 1.0 being equal to 1 meter, 4096 parts means ~0.24mm fractional precision. No way that was the reason for the jitter. Great in-detail explanation!
@@arachromatics I like that!
Amazing video! Thanks for sharing all that detailed knowledge with us! Gracias, Gustavo!
This video deserves 1M views
@@soraaoixxthebluesky One day. 🤞😅
Didn't know I wanted to make a PS1 game until I saw this video 😆 your work is always top-notch, Gustavo!!
This is something every gamedev that owned a PS1 should see ❤
Hi, I took a lot of your courses and I liked them. thanks for these amazing courses and for you efforts.
I would like to suggest to make a course the teaches make a 3D gameEngine including (physics system, graphics rendered, file management, materials, collision system, and whatever a game engine can have).
I would really like to enroll in a course like that. I searched the whole internet and I didn't find something like this.
Love these deep dive videos. Could you perhaps make a series about coding a PS1 game? Also, what languages are needed to learn to become a game dev, etc? 😎🙌
@@sarundayo It's already done. 🙂
@pikuma speaking of the PS1 course, you mentioned in the intro that you write the game to a CD ROM and play on actual hardware. Do you need a modded PS1 to be able to do this? I'm still finishing the 6502 course, but the PS1 is next on my list 😍
@@claudiosettiart Hi there. I believe you need a modded PS1, yes. I need to confirm to other students that ran on their hardware to see if they all had modded PS versions, but mine is definitely modded to bypass piracy protection.
Great video! One way of explaining perspective correct texture mapping that was particularly effective for me is as follows:
Consider two quads of the same screen-space shape. For a given set of 2D coordinates, you could have either a small object up close, or a very large object far away, mapping to the same exact screen-space position. The close up object will have fine details visible, and the details of the far away object will be harder, or impossible to see, but a 2D rasterizer will have no way to differentiate between these two objects. This is because of depth. Vertexes are affected by depth, the further away they are from the camera, the closer in 2D coordinates they will become, and of course the same must apply to the details of the object (texels). Texels that are further away must be shrunk according to depth.
I rarely subscribe to a channel after watching just one video. That was amazing
Thanks for the really good video! This is a minor complaint, but I wish you had a better camera and green screen - everything else is perfect, though. 🥳
@@davidavidavidavidavi I'll see if I can save some money for a new camera soon. 🙂
@@pikuma you can easily get over the treshold with a seasoned android phone. Don't stress much about it. Do, then do better ;)
I would highly suggest not getting a better camera or green screen. The viewer does not deserve to nitpick and rain on the parade of such quality and rare to find content. They do not realize how lucky they are to have the content at all.
@@xyzabc123-o1l Nah, that's all good. 🙂 I honestly thought that as well once I saw how blurry it looked. I know it's not a deal breaker, but I'm sure it will be worth the investment. 👍
@@pikuma good luck to you with your future work in any case :)
thanks for the explanation and wipeout was one of my favorite games!
Such an interesting video!
"I dont vstr how long this vidoe takes this is super fun"
Very informative
Cara voce eh uma lenda pra quem quer/ja trabalha com graphics e eh brasileiro
Gustavo, we need a course on raytracing from you.
T-junctions also cause gaps in modern floating point hardware. It's less noticeable but they're there. The reason we rarely see them is because devs rely much more on 3D tools rather than raw polygon manipulation, and tools have become more advanced so T junctions are not easy to do by accident and they clearly appear as a gap in the mesh.
@@DiThi Absolutely. 👍
Very cool clip! Maybe one day a clip with PS2?:)
Awesome video! If you could do the same for the nintenfo 64 it would be awesome x 2!
I always wanted someone who make a n64 programming tutorial, but there is none easily understandable to find.
I remember that some PS1 games had no warping textures, but I guess they just used some clever trick to fool you they were not warped :)
I believe so. For example, even Wipeout subdivided the textures so much that warping was not that noticeable. It's still there, but less.
Thanks for your great videos. I was trying to access your website and get the ps1 course but it just times out when i click the link
Man, I really want something like this to exist for the Sega Saturn. I realize that would be a ton of work for probably not much payoff, but there is just _nothing_ online aside from 30yr old documentation and the dug-up SDK library from Sega. It would be so nice to find an _actual_ explanation of how to put all the pieces together, _especially_ as a kind of rival/companion course to the PS1 one.
In terms of 3D graphics, the biggest differences are that Saturn's VDP1 uses forward texture mapping (hence no UV coords, it always tries to draw a whole texture, aside from clipping commands), this causes issues with pixels being filled multiple times, which makes transparency on distorted quads look quite bad. Because of this, sega's engineers added the mesh feature. I am willing to bet this overdraw is part of the reason for Saturn's significantly lower fillrate vs PS1. The lack of perspective correct texturing and z buffering is exactly as on PS1, but polygons seem to jitter a bit less due to higher vertex coordinate resolution. Interestingly, there is a hacky, quasi horizontal mipmapping feature called high speed shrink, which skips drawing every other texel in a texture bitmap. The intent of this is to improve performance, and its doesn't reduce texture aliasing like real mipmapping, but it is very interesting!
I'm having a very difficult time finding info on the GTE and GPU architectures. Any info on ALUs, and the execution units contained?
I have always preferred 2D graphics over 3D but when I think of 3D games I *love* they are all PS1/Saturn era (Dreamcast also). Something about the "papercraft" look of things seems so stylish to me!
One question, I see you have quite a few courses on retro consoles. If I have programming experience but know nothing of game development which course would you recommend I start with. Thanks!
That's a good question. There is no order and no pre-requisites, they should all be self-contained. That being said, lots of people like the 3D graphics one and the raycasting one is very beginner-friendly as well.
Can you make a video about replicating the textures from Sega's old AM2 games like Virtua Fighter 2?
please tell me what the parking garage race game is
Hi there. I don't think it's out yet, but here's the author's webpage on Steam: store.steampowered.com/app/2737300/Parking_Garage_Rally_Circuit/
mano não esperava achar um br kkkkkkkkkkkkkk
OMG config looks like a mega drive upgrade 😮 why was it so low?? 1 Mb Vram !! Ok if I understand, a 3d Ps1 game is like développing a 3d game in plain SDL (I used to try it)
are you brazilian? your entonation makes me think you are talking english in portuguese which makes things easier for me to understand hahah
@@unsurreal83 O sotaque é um dom. 😅
Hello Gustavo, how are you? Are you Brazilian?
I sent you an email