Project Scarlet - My very own 3D engine for the PSX

Start a work log and update it occasionally with your projects progress
User avatar
LameGuy64
Verified
Psy-Q Enthusiast
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

Post by LameGuy64 » January 28th, 2018, 10:16 pm

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.

Image

Image

Image

Image
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.

User avatar
Shadow
Verified
Admin / PSXDEV
Admin / PSXDEV
Posts: 2670
Joined: Dec 31, 2012
PlayStation Model: H2000/5502
Discord: Shadow^PSXDEV

Post by Shadow » January 29th, 2018, 2:01 am

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.

User avatar
LameGuy64
Verified
Psy-Q Enthusiast
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:

Post by LameGuy64 » February 2nd, 2018, 12:49 am

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.
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.

User avatar
Shadow
Verified
Admin / PSXDEV
Admin / PSXDEV
Posts: 2670
Joined: Dec 31, 2012
PlayStation Model: H2000/5502
Discord: Shadow^PSXDEV

Post by Shadow » February 2nd, 2018, 1:47 am

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!!
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.

Xavi92
Verified
C Programming Expert
C Programming Expert
Posts: 161
Joined: Oct 06, 2012
PlayStation Model: SCPH-5502
Contact:

Post by Xavi92 » February 2nd, 2018, 6:32 am

Sorry for not saying anything, but I've had quite busy days.

Tremendous work! :praise Are you planning to share its source code so other people can create their own 3D homebrew game with less effort?

User avatar
Shendo
Verified
C Programming Expert
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

Post by Shendo » February 2nd, 2018, 7:57 am

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.

User avatar
NITROYUASH
Verified
Serious PSXDEV User
Serious PSXDEV User
Posts: 124
Joined: Jan 07, 2018
I am a: Game Designer
PlayStation Model: SCPH-5502
Location: Russian Federation
Contact:

Post by NITROYUASH » February 2nd, 2018, 8:17 am

Quake 2 PS1 Port is also using 512x240
Are you planning to share its source code so other people can create their own 3D homebrew game with less effort?
I'm interested too ;)

User avatar
LameGuy64
Verified
Psy-Q Enthusiast
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:

Post by LameGuy64 » February 5th, 2018, 12:00 pm

Xavi92 wrote: February 2nd, 2018, 6:32 am Are you planning to share its source code so other people can create their own 3D homebrew game with less effort?
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.
Shendo wrote: February 2nd, 2018, 7:57 am You probably already know about this but if not it might be useful.
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.

User avatar
CosmoGuy
Serious PSXDEV User
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:

Post by CosmoGuy » February 6th, 2018, 12:51 am

Dude, oh my god.
:praise
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.
Image

Xavi92
Verified
C Programming Expert
C Programming Expert
Posts: 161
Joined: Oct 06, 2012
PlayStation Model: SCPH-5502
Contact:

Post by Xavi92 » February 6th, 2018, 12:57 am

That's good to know. :) BTW, I always use 384x240 resolution on my games.

Misscelan
Curious PSXDEV User
Curious PSXDEV User
Posts: 21
Joined: Dec 11, 2016

Post by Misscelan » February 6th, 2018, 7:00 pm

Just came here to show my respects :P.
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!

HatMusic
Curious PSXDEV User
Curious PSXDEV User
Posts: 17
Joined: May 29, 2014

Post by HatMusic » 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!

User avatar
pool7
Verified
Curious PSXDEV User
Curious PSXDEV User
Posts: 27
Joined: Jun 27, 2014

Post by pool7 » March 2nd, 2018, 9:53 am

Just saw this; amazing!!!
Keep up the great work!!!

User avatar
LameGuy64
Verified
Psy-Q Enthusiast
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:

Post by LameGuy64 » March 21st, 2018, 12:25 pm

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.
Image

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.
Image

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.
Image

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.
Image

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.
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!
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.

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.

User avatar
NITROYUASH
Verified
Serious PSXDEV User
Serious PSXDEV User
Posts: 124
Joined: Jan 07, 2018
I am a: Game Designer
PlayStation Model: SCPH-5502
Location: Russian Federation
Contact:

Post by NITROYUASH » March 21st, 2018, 9:43 pm

I love you, man. You have created so much for PS1 ;_;

User avatar
MrQuetch
Active PSXDEV User
Active PSXDEV User
Posts: 42
Joined: Apr 01, 2018
I am a: Programmer and artist.
Motto: You can accomplish anything.
Location: United States

Post by MrQuetch » April 3rd, 2018, 8:48 am

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. :D

Overall, very good job. Keep us posted.

Yagotzirck
Verified
Extreme PSXDEV User
Extreme PSXDEV User
Posts: 131
Joined: Jul 17, 2013

Post by Yagotzirck » April 9th, 2018, 8:02 am

That's some commitment over there - well done :clap

User avatar
LameGuy64
Verified
Psy-Q Enthusiast
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:

Post by LameGuy64 » May 7th, 2018, 12:11 pm

After about a month of work, this is what SMXTOOL looks like now:
Image

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.

Marble_
What is PSXDEV?
What is PSXDEV?
Posts: 1
Joined: May 07, 2018
I am a: Artist & Animator, Zelda Ethusiast
Location: Long Guyland, NY

Post by Marble_ » May 7th, 2018, 1:53 pm

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.

User avatar
LameGuy64
Verified
Psy-Q Enthusiast
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:

Post by LameGuy64 » May 7th, 2018, 3:27 pm

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.
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.

Post Reply

Who is online

Users browsing this forum: No registered users and 4 guests