Jump to content

Recommended Posts

It's the Jaguar's 18th birthday today. To celebrate, Reboot of Jagware are pleased as punch to unveil The RAPTOR Engine. RAPTOR is a high performance RISC-based API designed to leverage the performance of the Jaguar's custom RISC chips in an easy and flexible manner. It also utilises LinkoVitch's new U-235 sound engine. It's not finished yet, there's much more functionality to add in future, but we believe this to be a huge step forward in bringing Jaguar game design within the reach of many more people.


To give you an idea of the possibilities, our latest game, Kobayashi Maru, was implemented using an early version of RAPTOR. Head over to the RAPTOR page to learn more. Feedback is most welcome!

  • Like 10
Link to comment
Share on other sites

Well, I am on the VJ testing team :)


RAPTOR applications run fine under VirtualJaguar, with a slight glitch at the top of the screen due to an undocumented feature in the ObjectProcessor (Yes, we found another new and undocumented bug in the Jaguar chipset... hurrah!).


Shamus and myself are currently investigating this issue, once it is resolved all should be good.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Status update:

  • Matmook has merged his latest revision of RMotion into the main trunk, making animation events has never been easier!
  • LinkoVitch's U235SE 0.17 has been integrated
  • Particle Effects engine implemented
  • Highscore management, complete with webcode generation (www API TBA)
  • Transparent memorytrack management
  • Test 'game' completed to demonstrate functionality - documentation [20% complete]

BETA phase continues. More news as we make it.

  • Like 3
Link to comment
Share on other sites

  • 2 years later...

Reviving a dead thread.... RAPTOR is coming.

It is now assembling and linking correctly as an object file (RAPTOR.O) which can be included in other applications. This is pretty big as it is now possible to interface RAPTOR with C or other languages (I will not be doing this myself, but post release, someone else could take this on).

I'll try and get a release ready as a Reboot xmas present for everyone... but don't shoot me if it's late.

RAPTOR provides the following functions, in a stable environment that needs no user maintenance (ie, faffing with the hardware):

RAPTOR_user_vbi - Called every VBI by RAPTOR_Core - User responsibility to save/restore registers
RAPTOR_PRE_Object_List - Routine called prior RAPTOR objects being created (allows static objects to be inserted into list above RAPTOR objects)
RAPTOR_POST_Object_List - Routine called after to RAPTOR objects being created (allows static objects to be inserted into list under RAPTOR objects)
RAPTOR_Version - Returns RAPTOR version info
RAPTOR_HWinit - Configures the Jaguar system
RAPTOR_Install - Installs RAPTOR handlers and tables
RAPTOR_ERROR - Flashing colours error routine (Can be called by user/RAPTOR)
RAPTOR_U235init - Configures the U235-Sound Engine
RAPTOR_U235stopDSP - Halts the DSP
RAPTOR_U235playsample - Calls U235 to play a sample
RAPTOR_U235resetmodule - Calls U235 to reset the current module playing
RAPTOR_U235setmodule - Calls U235 to set the current module
RAPTOR_U235gomodule_mono - Calls U235 to play the current module (mono)
RAPTOR_U235gomodule_stereo - Calls U235 to play the current module (stereo)
RAPTOR_U235stopmodule - Calls U235 to stop the current module playing
RAPTOR_move_palette - Copy palette data to CLUT
RAPTOR_GFXConvert - Convert BMP/TGA to JagBMP format
RAPTOR_init_map_objs - Initialise the RAPTOR map objects (if used)
RAPTOR_map_set_position - Sets the current map co-ordinates
RAPTOR_setup_object_xyg - Object update: X/Y/Graphics (NON RAPTOR Object)
RAPTOR_setup_object_xg - Object update: X/Graphics (NON RAPTOR Object)
RAPTOR_setup_object_g - Object update: Graphics (NON RAPTOR Object)
RAPTOR_setup_object_xy - Object update: X/Y (NON RAPTOR Object)
RAPTOR_setup_object_xyz - Object update: X/y/scale (NON RAPTOR Object)
RAPTOR_rmw - Convert current object to RMW (NON RAPTOR) (list entry only, not bitmap!)
RAPTOR_setpalt - Convert current object to CLUT x (NON RAPTOR)
RAPTOR_reflect - Flip Reflect bit on current object (NON RAPTOR)
RAPTOR_CreateObject - Create a new object (NON RAPTOR)
RAPTOR_particle_init - Initialise the RAPTOR particle engine
RAPTOR_particle_clear - Clear the particle display buffer
RAPTOR_print - Command driven text output (multiple fonts/sizes/control codes)
RAPTOR_HEXtoDEC - Convert HEX value to ASCII decimal
RAPTOR_chk_highscores - Check the scoreboard top 10
RAPTOR_resort_score_table - Sort the scoreboard top 10 (required if new entry)
RAPTOR_mt_init - Initialise the MemoryTrack
RAPTOR_mt_load - Load from MemoryTrack
RAPTOR_mt_save - Save to MemoryTrack
RAPTOR_d_lz77 - Unpack LZ77 compressed file
RAPTOR_call_GPU_code - Call GPU code (Wait for exit)
RAPTOR_call_GPU_code_STOP - Call GPU code (Halt 68000)
RAPTOR_call_GPU_code_nowait - Call GPU code (Immediate return)
RAPTOR_GPU_COLLISION - RAPTOR Object Collision Handler
RAPTOR_map_update_GPU - RAPTOR Tile Map Handler
RAPTOR_particle_injection_GPU - RAPTOR Particle Injection
RAPTOR_particles_GPU - RAPTOR Particle Handler
RAPTOR_start_video - Starts video generation
RAPTOR_wait_frame - VSYNC
RAPTOR_setlist - Set current RAPTOR display list (on next VBLANK)
Each RAPTOR object can have the following attributes, defined in a user readable file, as below (Max 512 Objects)
dc.l 1 ; (REPEAT COUNTER) ; Create this many objects of this type (or 1 for a single object)
dc.l is_active ; sprite_active ; sprite active flag
dc.w 0,0 ; sprite_x ; 16.16 x value to position at
dc.w 0,0 ; sprite_y ; 16.16 y value to position at
dc.w 0,0 ; sprite_xadd ; 16.16 x addition for sprite movement
dc.w 0,0 ; sprite_yadd ; 16.16 y addition for sprite movement
dc.l 32 ; sprite_width ; width of sprite (in pixels)
dc.l 32 ; sprite_height ; height of sprite (in pixels)
dc.l is_normal ; sprite_flip ; flag for mirroring data left<>right
dc.l 0 ; sprite_coffx ; x offset from center for collision box center
dc.l 0 ; sprite_coffy ; y offset from center for collision box center
dc.l 16 ; sprite_hbox ; width of collision box
dc.l 16 ; sprite_vbox ; height of collision box
dc.l somebmp ; sprite_gfxbase ; start of bitmap data
dc.l 4 ; (BIT DEPTH) ; bitmap depth (1/2/4/8/16/24)
dc.l is_RGB ; (CRY/RGB) ; bitmap GFX type
dc.l is_opaque ; (TRANSPARENCY) ; bitmap TRANS flag
dc.l 32*32/2 ; sprite_framesz ; size per frame in bytes of sprite data
dc.l 32/2 ; sprite_bytewid ; width in bytes of one line of sprite data
dc.l 0 ; sprite_animspd ; frame delay between animation changes
dc.l 0 ; sprite_maxframe ; number of frames in animation chain
dc.l ani_rept ; sprite_animloop ; repeat or play once
dc.l edge_wrap ; sprite_wrap ; wrap on screen exit, or remove
dc.l spr_inf ; sprite_timer ; frames sprite is active for (or spr_inf)
dc.l spr_linear ; sprite_track ; use 16.16 xadd/yadd or point to 16.16 x/y table
dc.l 0 ; sprite_tracktop ; pointer to loop point in track table (if used)
dc.l spr_unscale ; sprite_scaled ; flag for scaleable object
dc.l %00100000 ; sprite_scale_x ; x scale factor (if scaled)
dc.l %00100000 ; sprite_scale_y ; y scale factor (if scaled)
dc.l -1 ; sprite_was_hit ; initially flagged as not hit
dc.l CLUT_map ; sprite_CLUT ; no_CLUT (8/16/24 bit) or CLUT (1/2/4 bit)
dc.l cant_hit ; sprite_colchk ; if sprite can collide with another
dc.l cd_keep ; sprite_remhit ; flag to remove (or keep) on collision
dc.l single ; sprite_bboxlink ; single for normal bounding box, else pointer to table
dc.l 1 ; sprite_hitpoint ; Hitpoints before death
dc.l 2 ; sprite_damage ; Hitpoints deducted from target
dc.l 32/2 ; sprite_gwidth ; GFX width (of data)
All objects are dynamically processed each frame, inactive objects are removed from the current display list. Branch objects can also be defined and dynamically updated.
Lots of examples of RAPTOR driven binaries are on the REBOOT website.
Edited by CyranoJ
  • Like 9
Link to comment
Share on other sites

raptor.o not found, link aborted

damn !




Don't think you need it! You seem to be doing fine on your own hehe :)


That being said, looking at the above it looks like it's 'just' a sprite manager. But remember, to the Jaguar, a sprite (object) can be anything from a 4x4 bullet to something bigger than the entire screen. RAPTOR doesn't care what dimensions / attributes you give the objects....

  • Like 2
Link to comment
Share on other sites

I can only say anything that is released is great for the Jag this raptor is a big project I am happy to see its getting finished. Helping the community this way is a good thing.

What is the status of Rmotion or is that included ?




RMOTION is *not* bundled in the build I am preparing for release, but I hope it will be bundled in a post-release update. Matmook has simply not had time to work on this. I don't think it'll be too hard to implement as RMOTION lives entirely inside the GPU core, and doesn't have any external function calls to use it - it's activated by data in the Object Scripting.


Unlike the source code builds I've been using for our games, a few things have had to be changed subtly for the .O version in order for it to work.

Link to comment
Share on other sites

Short update...


The example code for the documentation is coming along nicely :D




Starting with a couple of lines of code to display 'Hello World' we add bits slowly, one section at a time, until:





However, the actual documentation currently looks like this:


raptor.doc 0 bytes


Still, i've given myself a month (ish) to write that...



Edited by CyranoJ
  • Like 7
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...