PSn00bSDK: Now has C++ support!
Posted July 18, 2019 9:58AM MST
I've published a commit on PSn00bSDK yesterday that adds C++ support to my SDK finally. As mentioned numerous times in the SDK documents, only basic C++ is supported such as classes and the ability to dynamically create and delete class objects. I do not plan to implement full C++ support as it would be too bloated for my standards. Remember, the PS1 only has 2MB of RAM.
I've also added a new example program that demonstrates a first person perspective camera with six degrees of movement using fixed point integer math. The example also includes a look-at implementation and dealing with analog controller input, which should solve most PS1 programming questions in just a single example program.
I'm probably not going to work on the PSn00bSDK project for awhile after this though as I'm starting to feel a little tired working on this project and I wanted to take a break from it and focus on other things for awhile. Not that I'm calling quits on this project, I just wanted to focus on something else in the meantime, particularly making new videos and maybe some art stuff, and maybe resuming work on Scarlet Engine.
New page added to my PS1 tutorial series
Posted July 7, 2019 5:43PM MST
Just added a new page to my PS1 programming tutorial series that covers basic graphics programming, something that I believe hasn't been explained in tutorials before considering many tutorials usually jump straight into using libgs instead of being more hands on with libgpu. Progress on this tutorial series has been quite slow since I tend to do a bunch of things simultaneously.
I would also like to mention a brief update regarding PSn00bSDK where I managed to get C++ support working in my SDK. The support only goes up to basic C++ such as classes and being able to dynamically create and delete class objects, no standard C++ support at all especially when it'll be too bloated for PS1. I still need to do some cleaning up and further testing before I release it.
You can find the tutorial series at http://lameguy64.tk/svn/pstutorials/index.html
Remember to login to the SVN as annoyingmous
. I have bizarre reasons why I don't want the 'internet default login' on my website because I'm such a weirdo.
PSn00bSDK: Global ISR and Serial I/O in the works
Posted June 14, 2019 2:16PM MST
I've been brewing a pretty juicy update for PSn00bSDK in the past few days that adds a global ISR handler (the exact kind in the official SDK) and Serial I/O support. The global ISR handler provides a very simple and very stable way of handling hardware interrupts on the PS1 and should provide great compatibility with HLE BIOS implementations in emulators like PCSXR. The global ISR would also make implementing support for hardware devices that depend on interrupts such as the CD-ROM much easier.
The global ISR is hooked to the kernel using BIOS function B(19h) (SetCustomExitFromException) which is executed past the kernel's internal IRQ handlers. To ensure that the hook is executed whenever an interrupt occurs, BIOS functions ChangeClearPad(0) (B(5Bh)) and ChangeClearRCnt(3, 0) (C(0Ah)) must be called so that VSync and timer interrupts can be processed by the hook (turns off auto acknowledge).
Among the first to utilize the global ISR handler is the shiny new Serial I/O library, which, not only provides a serial tty device that redirects printf() output to serial but also a complete Serial I/O implementation with callback support exactly like in the official SDK. Now that PSn00bSDK has complete Serial I/O support, I plan to work on porting my LITELOAD loader from the official SDK to PSn00bSDK, probably making it the first homebrew serial loader for the PS1 made with an open source SDK and the first PS1 homebrew to be ported from the official SDK to an open source SDK. The PSn00bSDK version should yield a smaller program size as PSn00bSDK is a lot more efficient than the original Sony libraries.
The update will also include a revised library reference manual that not only looks better formatting wise but also has more of the graphics library documented. It also has the Serial I/O library completely documented as well.
Estimated time of release for this update might be next week. Early access to this update in a work-in-progress state can be accessed in the self-hosted SVN found in the PSn00bSDK page on this website.
PSn00bSDK: Added controller and CD-ROM Support
Posted May 25, 2019 8:30AM MST
As of May 24, 2019, I've pushed a commit to PSn00bSDK on Github that adds controller and some CD-ROM support to the SDK using BIOS functions. The relevant functions for controllers are _InitPad(), _StartPad() and _StopPad() and _InitCd() for CD-ROM. Since pad stuff is working, BIOS memory card functions should also be working as well but I haven't tested it yet.
The _InitCd() function just merely calls the _96_init() BIOS function but it preserves the DPCR DMA settings as _96_init() would clear the settings of other channels causing graphics functions that use DMA to stop working. Files from CD can be accessed using BIOS file functions with the path name leading with cdrom:.
The commit also adds two new example programs to the SDK which includes an RGB24 image example and a Turboboot ROM firmware for cheat cartridges written entirely in assembly language.
See the PSn00bSDK page
for links to the Github repository. Details on the page will be updated soon.
Small server upgrade
Posted April 23, 2019 11:40AM MST
I just upgraded the little RPi based server that hosts this very website with a 500GB laptop hard drive which replaces the USB thumb drive as I feel spinning rust is less likely to corrupt without warning than flash memory knowing from experience. Not sure what I'm going to do with this significant increase in storage but its nice to have ready I suppose.
PSn00bSDK is now officially released
Posted April 6, 2019 12:02PM MST
What originally started as a GNU toolchain experiment turned PS1 SDK from scratch, the PSn00bSDK project has now been officially released on Github
under the MPL license. It includes everything stated in the last post including full source code of n00bDemo which was made using this SDK and has some of the most intense visuals for a demo made with an open source SDK on the PS1 to date that I'm aware of.
What drove me into creating this SDK from scratch in the first place was that I wanted to make a proof of concept that a PS1 SDK that is almost on par to the official SDK in terms of capabilities should be possible considering that extensive documentation of the hardware is readily available. This feat was demonstrated in n00bDemo which showcases extensive GPU and GTE accelerated visuals in high resolution mode which PSn00bSDK supported.
While PSn00bSDK is still a work in progress and far from being production ready, I believe this would serve as a great foundation in developing a complete replacement of the official SDK. Assuming this project garners some interest and people start contributing stuff to it eventually. I'm keeping my expectations low on this project.
A dedicated project page on this website will be created soon.
Image posting test
Posted April 5, 2019 9:33PM MST
Just testing an image upload on my news blog system... That's my stupid head btw (and no, I'm not a useless shadow person).
The release of PSn00bSDK is nigh
Posted April 4, 2019 9:42PM MST
My completely homebrewn SDK project that was used to make the small but technically impressive demo n00bdemo
is slated to be released in source form hopefully by the end of this week on Github under the MPL license. As of the making of this post the SDK has just been tested and made to compile flawlessly Linux and FreeBSD environments, though majority of the testing was conducted in a FreeBSD environment.
The release will also include source code of n00bdemo and some prototype technology of Scarlet Engine (aka. Project Scarlet) for the 3D model drawing routines. The drawing routines are rewrites of the old SMD routines I made years ago that comply to a newer SMD model data format. Though most of the new features the new SMD format includes is not implemented yet hence why they're still prototypes and I haven't worked on Scarlet in a long while. At least they'll serve as very important examples on programming with the GTE in MIPS assembly.
If things go according to plan PSn00bSDK should be released on my Github
page by Saturday or Sunday if delay causing things occur.
I implemented my very own blog style news system
Posted March 21, 2019 8:31PM MST
I've wanted to be able to easily post news and updates of my stuff so I actually spent some time developing my own blog style system from scratch using PHP and good ol' MySQL. Its a very simple system but I think its better than using some existing solution that is likely bloated as heck and my Raspberry Pi based server would likely struggle hosting it and I have full control over it as well.
I could just create a social media account on Twitter or Twatblr but I wanted to take things a step further and create my own very own blog from scratch that I host myself. The advantage of this is I can literally post whatever I want as I'm not restricted to any ToS conditions because I'm literally running the service that hosts this website which means I can pretty much do whatever the hell I want. Unless the service that hosts my domain would notice me posting explicit hentai on my page in which they'll nuke my domain, if they actually check what's being hosted on their domains.
Anyway, all site and project news will be posted through here.