Skip to content

ps2homebrew/BPDemoHarness

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Demo harness with skeleton code. This is to aid people in developing some little demos
for hopeful inclusion into something for Breakpoint 2004.

Demos can be submitted in binary format so you can keep your source code if that is
what you desire. In the c_skel and asm_skel there is skeleton code to build your 
demos in either ee-gcc or asm5900. A brief description is probably in order.

Basic Rules for submissions:

Maximum size of demo (uncompressed) 16mb
Maximum size of demo (compressed) 2mb

Demo Rules:

You cannot:

Use the IOP or any IOP functions.
Allocate memory generally, outside of any internal alloc in the
specified 16Mb block provided.
Reset the screen resolution. i.e. playing with any PCRTC stuff.
Disable interrupts.

You can:
Utilise all of VRAM for your own nefarious purposes.
Use VU0 and VU1 for any purpose.
Use any GS path you like

The binary submission is loaded up by the harness (or loader when that comes around)
into memory at 0x01000000. From there you have 16Mb of space to do your thing.

Execution will begin at the same address so make sure any code can be started from the
front of the binary data. The stack is already configured, use the crt0 as provided in
the skeleton, not the one from ps2lib. Also note that the gp base is not set so make
sure you use the -G0 option in gcc to disable gp usage.

The main function of your code will be supplied a pointer to a demo_init_t structure.
This is defined in harness.h. Do not write to this structure, only read from it.
It contains timer values for current time in demo, time left for your demo to run, 
some sync point information for later music usage and a few function pointers to printf
(:P) and a function to grab the current audio fourier transformed. Note that at this 
moment in time the sync data and fourier data have not been implemented.

You demo _must_ exit after the demo timer has expired, this timer is available in a 
floating point time in seconds, a corresponding 16.16 fixed point version and one based
on the frames. Using the time will work on PAL or NTSC while you will have to adjust 
timing accordingly if using frames. This time could be adjusted at compilation stage so
make sure you can do what you want to within the possible time periods. If your demo 
requires a certain amount of time to run (i.e. to do a few things) make sure you tell us
before hand so it can be accomodated.

The GS is preconfigured currently to use 640x224 res. This should not be changed. The
configuration of the frame buffers, z buffers etc is your responsibility. The VUs should
have been reset before your code starts so you can do with them what you like.

Finally usage of the harness.

To use the harness you will need a loader which supports passing of command line arguments.
I think pukklink and ps2link should provide this functionality, along with pksh or ps2client.
Call the harness with a list of bins to run. Each one will be run in sequence for a default
time of 5 seconds. There are also some options you can use, they are :

-pal : Sets PAL screen mode
-ntsc: Sets NTSC screen mode
-tX  : Replace X with the time in seconds to run all demos. When this option is set it
will affect all demos, however it can be added in between demo entrys so that it changes
the time each one runs. e.g. harness.elf -t5 demo1.bin -t10 demo2.bin will run demo1 for
5 seconds and demo 2 for 10 secs.
-noprintf: Disables the printf function in the harness. Use this to check you havent
accidently left in normal printfs in your demo code before submission.

Well have fun and lets try and produce something

TyRaNiD : tiraniddo at hotmail.com

Credits:

Some bits off this harness come originally from the GS tutorials by Dreamtime.
Other bits come from PS2LIB.

Disclaimer:

Except where explicitly noted in the code this work is placed in the public domain to
fuck about with however which way you choose. This attributation only applies to the 
non attributed code, some specific files are likely licensed under its own 
terms. Please respect the copyright of any such code. If you do use it for some purpose the
group wouldn't mind a thank you greet or a wad of non-consecutive bills placed in a 
dead letter box somewhere in East London, see in-store for details, no purchase necessary.
Thx for listening.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages