Project Scarlet - My very own 3D engine for the PSX
-
LameGuy64 Verified
- Psy-Q Enthusiast
- Posts: 388
- Joined: Apr 10, 2013
- I am a: Hobbyist Game Developer
- Motto: Commercial or not, play it!
- PlayStation Model: H2000/7000
- Location: Philippines
- Contact:
Project Scarlet - My very own 3D engine for the PSX
In the past year or so, I've been working on a 3D game engine made specifically for the PlayStation named Project Scarlet which I plan to use for a 3D platformer game soon but I intend to make the engine work with different game genres as I plan to release it as open source once I find it to be ready for others to use.
The engine currently features some MIPS assembly routines for custom subdivision of flat and textured quads and a custom model renderer with its own custom file format. The main world renderer however is mostly written in C and lacks occlusion optimizations which has yet to be implemented as well as subdivision of other polygon types such as triangles and shaded polygons.
I have a couple of screenshots of what I've made so far right here. The ones captured from an emulator demonstrate the object placement feature of the engine while the one captured from hardware is a 3D platformer prototype which I will do a video of soon.
As far as I'm aware, this is probably the most notable 3D homebrew game project known so far.
The engine currently features some MIPS assembly routines for custom subdivision of flat and textured quads and a custom model renderer with its own custom file format. The main world renderer however is mostly written in C and lacks occlusion optimizations which has yet to be implemented as well as subdivision of other polygon types such as triangles and shaded polygons.
I have a couple of screenshots of what I've made so far right here. The ones captured from an emulator demonstrate the object placement feature of the engine while the one captured from hardware is a 3D platformer prototype which I will do a video of soon.
As far as I'm aware, this is probably the most notable 3D homebrew game project known so far.
Please don't forget to include my name if you share my work around. Credit where it is due.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
-
Shadow Verified
- Admin / PSXDEV
- Posts: 2670
- Joined: Dec 31, 2012
- PlayStation Model: H2000/5502
- Discord: Shadow^PSXDEV
How's the collision stuff coming along?
Development Console: SCPH-5502 with 8MB RAM, MM3 Modchip, PAL 60 Colour Modification (for NTSC), PSIO Switch Board, DB-9 breakout headers for both RGB and Serial output and an Xplorer with CAETLA 0.34.
PlayStation Development PC: Windows 98 SE, Pentium 3 at 400MHz, 128MB SDRAM, DTL-H2000, DTL-H2010, DTL-H201A, DTL-S2020 (with 4GB SCSI-2 HDD), 21" Sony G420, CD-R burner, 3.25" and 5.25" Floppy Diskette Drives, ZIP 100 Diskette Drive and an IBM Model M keyboard.
PlayStation Development PC: Windows 98 SE, Pentium 3 at 400MHz, 128MB SDRAM, DTL-H2000, DTL-H2010, DTL-H201A, DTL-S2020 (with 4GB SCSI-2 HDD), 21" Sony G420, CD-R burner, 3.25" and 5.25" Floppy Diskette Drives, ZIP 100 Diskette Drive and an IBM Model M keyboard.
-
LameGuy64 Verified
- Psy-Q Enthusiast
- Posts: 388
- Joined: Apr 10, 2013
- I am a: Hobbyist Game Developer
- Motto: Commercial or not, play it!
- PlayStation Model: H2000/7000
- Location: Philippines
- Contact:
Here's a demo video of the engine in action as a 3D platformer prototype.
[BBvideo=560,315]https://www.youtube.com/watch?v=b1Esb8xIVQ0[/BBvideo]
I still have lots to do with the engine such as model animations and implementing the occlusion culling mechanism among other things.
I'm kinda shocked nobody seems to have bat an eye about this project. I guess 3D in homebrew is super trivial these days but how many full 3D homebrew games are out there? None as far as I'm aware.
[BBvideo=560,315]https://www.youtube.com/watch?v=b1Esb8xIVQ0[/BBvideo]
I still have lots to do with the engine such as model animations and implementing the occlusion culling mechanism among other things.
I'm kinda shocked nobody seems to have bat an eye about this project. I guess 3D in homebrew is super trivial these days but how many full 3D homebrew games are out there? None as far as I'm aware.
Please don't forget to include my name if you share my work around. Credit where it is due.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
-
Shadow Verified
- Admin / PSXDEV
- Posts: 2670
- Joined: Dec 31, 2012
- PlayStation Model: H2000/5502
- Discord: Shadow^PSXDEV
Damn... absolutely jaw-dropping! We got to get this pressed on CD's and marketed
It beats the crap out of Bubsy 3D, and YOU made it. ONE guy!!
It beats the crap out of Bubsy 3D, and YOU made it. ONE guy!!
Development Console: SCPH-5502 with 8MB RAM, MM3 Modchip, PAL 60 Colour Modification (for NTSC), PSIO Switch Board, DB-9 breakout headers for both RGB and Serial output and an Xplorer with CAETLA 0.34.
PlayStation Development PC: Windows 98 SE, Pentium 3 at 400MHz, 128MB SDRAM, DTL-H2000, DTL-H2010, DTL-H201A, DTL-S2020 (with 4GB SCSI-2 HDD), 21" Sony G420, CD-R burner, 3.25" and 5.25" Floppy Diskette Drives, ZIP 100 Diskette Drive and an IBM Model M keyboard.
PlayStation Development PC: Windows 98 SE, Pentium 3 at 400MHz, 128MB SDRAM, DTL-H2000, DTL-H2010, DTL-H201A, DTL-S2020 (with 4GB SCSI-2 HDD), 21" Sony G420, CD-R burner, 3.25" and 5.25" Floppy Diskette Drives, ZIP 100 Diskette Drive and an IBM Model M keyboard.
-
Shendo Verified
- C Programming Expert
- Posts: 250
- Joined: Mar 21, 2012
- I am a: Programmer
- Motto: Never settle
- PlayStation Model: SCPH-7502
- Discord: ShendoXT
- Location: Croatia, EU
Impressive work LameGuy. You probably already know about this but if not it might be useful.
The Playstation had this oddball 512×240 video mode that everyone else ignored, it wasn’t standard (320×240) and ate up video memory others wanted for textures. But it looked SHARP and we found the machine was really good at rendering shaded, but un-textured, triangles. In fact, just as fast in the 512 mode as 320. Jason pointed out — he’s always been the master of seeing the intersection between art and tech — that since polygons on 3D characters our size were just a few pixels, shaded characters actually looked better than textured ones. So we went with more polys on the characters, less texture. This was a highly usual approach, but had lots of advantages. The characters popped, like cartoons are supposed to, we had lots more polygons to work with, and it worked around the Playstation’s lack of texture correction or polygon clipping.
Dev console: SCPH-7502, FreePSXBoot, CH340 serial cable.
-
NITROYUASH Verified
- Serious PSXDEV User
- Posts: 124
- Joined: Jan 07, 2018
- I am a: Game Designer
- PlayStation Model: SCPH-5502
- Location: Russian Federation
- Contact:
Quake 2 PS1 Port is also using 512x240
I'm interested tooAre you planning to share its source code so other people can create their own 3D homebrew game with less effort?
-
LameGuy64 Verified
- Psy-Q Enthusiast
- Posts: 388
- Joined: Apr 10, 2013
- I am a: Hobbyist Game Developer
- Motto: Commercial or not, play it!
- PlayStation Model: H2000/7000
- Location: Philippines
- Contact:
I'm planning to open source this engine once it is ready for others to use. Right now, the engine is still a bit in a messy state and releasing it in this state would be a bit embarrassing and infuriating to those not completely familiar with the engine.
I'm already aware of the 512x240 mode of the PSX. I also know about the 384x240 mode which is even more obscure and works great as a widescreen mode. My engine should be able to run at any resolution.
Please don't forget to include my name if you share my work around. Credit where it is due.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
- CosmoGuy
- Serious PSXDEV User
- Posts: 91
- Joined: May 30, 2012
- I am a: Hell knows who I am
- PlayStation Model: SCPH-7502
- Location: Polska, Wroclaw
- Contact:
Dude, oh my god.
It's incredible how much did you put into that! Everything is based on Psy-Q or how? Anyway I was thinking since september about such thing, but i couldn't find the time, because of uni and job :/.
I'd love to contribute when you'll release that on github or somewhere.
It's incredible how much did you put into that! Everything is based on Psy-Q or how? Anyway I was thinking since september about such thing, but i couldn't find the time, because of uni and job :/.
I'd love to contribute when you'll release that on github or somewhere.
Just came here to show my respects .
This project looks amazing! It's incredible that a prototype with a decent amount of geometry and that many features already implemented runs as smoothly as this one. Keep up the good work!
This project looks amazing! It's incredible that a prototype with a decent amount of geometry and that many features already implemented runs as smoothly as this one. Keep up the good work!
This is crazy amazing! The cell shading and big texture is amazing enough, but a whole engine that could make 3D homebrew a more viable thing for the PSX?
I'm excited to see how this develops, particularly as you mention there's a way to go performance-wise - ~45fps already without occlusion and other planned optimisations is great!
I'm excited to see how this develops, particularly as you mention there's a way to go performance-wise - ~45fps already without occlusion and other planned optimisations is great!
Just saw this; amazing!!!
Keep up the great work!!!
Keep up the great work!!!
-
LameGuy64 Verified
- Psy-Q Enthusiast
- Posts: 388
- Joined: Apr 10, 2013
- I am a: Hobbyist Game Developer
- Motto: Commercial or not, play it!
- PlayStation Model: H2000/7000
- Location: Philippines
- Contact:
After some time, here are some updates so far.
I just experimented with 3D skyboxes in Project Scarlet and it turned out looking pretty gorgeous! I don't know of any other PlayStation game featuring this style of skybox but what I've made sure has potential in making really nice skyboxes.
I've also made this large flat test map for fleshing out the 3D platformer controls of the test game. This also shows an untextured model of the character you'll be playing as when this project gets further in development. I didn't texture the map as I want to get consistent 60fps as I haven't started working on optimizing my renderer yet.
I also made 2 new tools for Project Scarlet. One is an animation tool for testing and converting per-vertex animation frames. I was originally going to use a skeletal animation system but found it too complicated and possibly more computationally intensive than per-vertex animation. Also, per-vertex allows for more flexibility in animating characters.
The other tool is an SMX equivalent to RSDTOOL more or less but it lacks coloring and texturing the primitives. It currently only supports ordering the primitives for pre-sorting 3D skybox meshes but I plan to add coloring and texturing capabilities into it soon and maybe even support for RSD files in the future.
My next steps in this project is to get 3D model animations working, 3D platforming and renderer optimizations. I also need to write a few more assembler routines for subdividing shaded polygons and figuring out better recursive subdivision algorithms.
Anyway, I really appreciate the compliments you guys have given.
Yeah, I plan to make this engine usable for others to make 3D homebrew development on the console a bit more viable. Though I may have to make a custom license or something where my engine can be used for free for free homebrew projects but you'll need to donate a sum if you've sold enough copies of your commercial homebrew. Dunno exactly how I'll do it but I'll figure it out once this project reaches usable state and is released for everyone to use.
I just experimented with 3D skyboxes in Project Scarlet and it turned out looking pretty gorgeous! I don't know of any other PlayStation game featuring this style of skybox but what I've made sure has potential in making really nice skyboxes.
I've also made this large flat test map for fleshing out the 3D platformer controls of the test game. This also shows an untextured model of the character you'll be playing as when this project gets further in development. I didn't texture the map as I want to get consistent 60fps as I haven't started working on optimizing my renderer yet.
I also made 2 new tools for Project Scarlet. One is an animation tool for testing and converting per-vertex animation frames. I was originally going to use a skeletal animation system but found it too complicated and possibly more computationally intensive than per-vertex animation. Also, per-vertex allows for more flexibility in animating characters.
The other tool is an SMX equivalent to RSDTOOL more or less but it lacks coloring and texturing the primitives. It currently only supports ordering the primitives for pre-sorting 3D skybox meshes but I plan to add coloring and texturing capabilities into it soon and maybe even support for RSD files in the future.
My next steps in this project is to get 3D model animations working, 3D platforming and renderer optimizations. I also need to write a few more assembler routines for subdividing shaded polygons and figuring out better recursive subdivision algorithms.
Anyway, I really appreciate the compliments you guys have given.
Something like this is certainly a rare breed in the PSX homebrew scene as far as I'm aware. I got the occlusion stuff working well enough which improves performance quite a bit but I still need to rewrite intensive parts of the renderer to MIPS assembly in an attempt to achieve 60fps on simple textured maps.HatMusic wrote: ↑February 8th, 2018, 1:41 am This is crazy amazing! The cell shading and big texture is amazing enough, but a whole engine that could make 3D homebrew a more viable thing for the PSX?
I'm excited to see how this develops, particularly as you mention there's a way to go performance-wise - ~45fps already without occlusion and other planned optimisations is great!
Yeah, I plan to make this engine usable for others to make 3D homebrew development on the console a bit more viable. Though I may have to make a custom license or something where my engine can be used for free for free homebrew projects but you'll need to donate a sum if you've sold enough copies of your commercial homebrew. Dunno exactly how I'll do it but I'll figure it out once this project reaches usable state and is released for everyone to use.
You do not have the required permissions to view the files attached to this post.
Please don't forget to include my name if you share my work around. Credit where it is due.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
-
NITROYUASH Verified
- Serious PSXDEV User
- Posts: 124
- Joined: Jan 07, 2018
- I am a: Game Designer
- PlayStation Model: SCPH-5502
- Location: Russian Federation
- Contact:
I love you, man. You have created so much for PS1 ;_;
- MrQuetch
- Active PSXDEV User
- Posts: 42
- Joined: Apr 01, 2018
- I am a: Programmer and artist.
- Motto: You can accomplish anything.
- Location: United States
Wow, I'm really impressed. This is so cool. There is a lot going on here. I'm looking forward to the open source - that is... When you plan on releasing it. I'm sure your source code is completely packed with goodies.
Overall, very good job. Keep us posted.
Overall, very good job. Keep us posted.
-
Verified
- Extreme PSXDEV User
- Posts: 131
- Joined: Jul 17, 2013
That's some commitment over there - well done
-
LameGuy64 Verified
- Psy-Q Enthusiast
- Posts: 388
- Joined: Apr 10, 2013
- I am a: Hobbyist Game Developer
- Motto: Commercial or not, play it!
- PlayStation Model: H2000/7000
- Location: Philippines
- Contact:
After about a month of work, this is what SMXTOOL looks like now:
You can edit pretty much anything in a SMX model file (Scarlet's equivalent to RSD) with this tool except polygon types and lighting settings. You can color flat and gouraud shaded polygons, edit texture coordinates with A ZOOM-ABLE TEXTURE VIEW (anyone who's worked using RSDTOOL will understand), set double-sided (non culling) flag to polygons and blending modes to individual polygons. Blending modes and brightened textures (textures with color values greater than 128) are properly represented in the 3D preview. You can even move the rotation axis of the camera around or switch to a first person style view so you can easily edit level geometry.
The tool also supports loading and saving RSD files and can even be used to convert RSD projects to SMX format by simply saving it as an SMX file and vice versa. Though there really isn't much of a point to keep using the TMD model format once Project Scarlet releases someday as most of the TMD rendering routines included in Sony's SDK doesn't support things like double-sided polygons or differing blending modes on individual polygons even though the file format supposedly supports it.
It also features uploading your SMX model projects (and SMX only) to your console via the serial port for on-hardware preview of your model pretty much like a budget equivalent of the H201A minus the real-time editing of primitives on the console itself. The previewer is still pretty basic for now but I plan to add rendering of models in different shading methods such as cel or environment mapped. Perhaps after I update the SMD format to support quads.
I may release this tool separate from Project Scarlet as this tool can be used to edit RSD project files which will be very useful to those who still work with that format.
You can edit pretty much anything in a SMX model file (Scarlet's equivalent to RSD) with this tool except polygon types and lighting settings. You can color flat and gouraud shaded polygons, edit texture coordinates with A ZOOM-ABLE TEXTURE VIEW (anyone who's worked using RSDTOOL will understand), set double-sided (non culling) flag to polygons and blending modes to individual polygons. Blending modes and brightened textures (textures with color values greater than 128) are properly represented in the 3D preview. You can even move the rotation axis of the camera around or switch to a first person style view so you can easily edit level geometry.
The tool also supports loading and saving RSD files and can even be used to convert RSD projects to SMX format by simply saving it as an SMX file and vice versa. Though there really isn't much of a point to keep using the TMD model format once Project Scarlet releases someday as most of the TMD rendering routines included in Sony's SDK doesn't support things like double-sided polygons or differing blending modes on individual polygons even though the file format supposedly supports it.
It also features uploading your SMX model projects (and SMX only) to your console via the serial port for on-hardware preview of your model pretty much like a budget equivalent of the H201A minus the real-time editing of primitives on the console itself. The previewer is still pretty basic for now but I plan to add rendering of models in different shading methods such as cel or environment mapped. Perhaps after I update the SMD format to support quads.
I may release this tool separate from Project Scarlet as this tool can be used to edit RSD project files which will be very useful to those who still work with that format.
You do not have the required permissions to view the files attached to this post.
Please don't forget to include my name if you share my work around. Credit where it is due.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
-
- What is PSXDEV?
- Posts: 1
- Joined: May 07, 2018
- I am a: Artist & Animator, Zelda Ethusiast
- Location: Long Guyland, NY
Wow! I hardly know what any of that means. But I made an account just to let you know you have my full support! 3D homebrew games are so rare to find these days and you're doing a huge service to homebrewers everywhere by making this open-source. Keep up the great work!
Also, can I have your permission to share this on reddit? You deserve the recognition and I just want to spread the word.
Also, can I have your permission to share this on reddit? You deserve the recognition and I just want to spread the word.
-
LameGuy64 Verified
- Psy-Q Enthusiast
- Posts: 388
- Joined: Apr 10, 2013
- I am a: Hobbyist Game Developer
- Motto: Commercial or not, play it!
- PlayStation Model: H2000/7000
- Location: Philippines
- Contact:
Ah, thanks! Yeah, homebrew for the PSX in general is quite rare these days especially ones that are still in active development. It seems most homebrew devs tend to go for the Dreamcast or older pre 32-bit systems sadly.
Feel free to share this project including the demo video around if you want. I'm curious what folks on reddit have to say about this.
Feel free to share this project including the demo video around if you want. I'm curious what folks on reddit have to say about this.
Please don't forget to include my name if you share my work around. Credit where it is due.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
Dev. Console: SCPH-7000 with SCPH-7501 ROM, MM3, PAL color fix, Direct AV ports, DB-9 port for Serial I/O, and a Xplorer FX with Caetla 0.35.
DTL-H2000 PC: Dell Optiplex GX110, Windows 98SE & Windows XP, Pentium III 933MHz, 384MB SDRAM, ATI Radeon 7000 VE 64MB, Soundblaster Audigy, 40GB Seagate HDD, Hitachi Lite-on CD-RW Drive, ZIP 250 and 3.5" Floppy.
Who is online
Users browsing this forum: No registered users and 4 guests