• Jeffrey Lee's avatar
    Add support for new sprite types & screen modes · d0127bc4
    Jeffrey Lee authored
    Detail:
      Makefile - Updated to fix a couple of dependency issues and to make c/asmcore the main C file, not c/putscaled
      Sources/PutScaled - Add a utility routine that's used by the C code to get information about pixel formats
      Sources/SprAdjSize - Add support for wide masks & RISC OS 5 style sprite mode words
      Sources/SprExtend - Tidy up workspace by removing lots of unused bits and moving other bits within sight of the C code. Add flag to control whether C or assembler version of SprTrans is used. Query kernel for ECFYOffset/ECHShift locations instead of using hardcoded values in putscaled code. Add fix for garbage debug strings in softloaded debug versions of the module.
      Sources/SprOp - Add support for wide masks & RISC OS 5 style sprite mode words. Update makepalette16bpp to cope with all the new 16bpp modes. Flag_* -> ModeFlag_* renaming. Move some translation table handling code into a new routine, 'preparettr'. Update checktrans/converttrans to deal with new pixel formats.
      Sources/SprTrans - If the C version of SprTrans is enabled, disable all of these assembler bits except for the outer loop which steps over each row of the screen
      Sources/jdcolor - Updated to deal with new pixel formats. 16bpp conversion code split off into new file, Sources/jdcolor16.
      Sources/jdcolor16 - New file containing the guts of the YUV -> 16bpp conversion code. Gets included multiple times with different options to generate the different conversion routines (code is too big for a macro).
      c/asmcore - New file containing lots of common code ripped out of c/PutScaled - e.g. workspace definition, main functions for register assignment & instruction generation, and code for pixel format conversion. Pixel format conversion code rewritten to cope with new pixel formats, and code buffer key word generation rewritten to fix a couple of bugs (e.g. some issues with dithering options were observed)
      c/PutScaled - Ripped out lots of code that's now in c/asmcore. Now just deals with things that are PutScaled-specific, e.g. main plotter loop containing pixel read/write code. Code extended to cope with new pixel formats
      c/rojpeg, h/jinclude, h/jpegdata - Code extended to cope with new 16bpp conversion routines
      c/sprtrans - New C implementation of the core per-row transformed sprite plotting code generator. Allows reuse of the extensive pixel conversion code in c/asmcore, and allows for better code generation than the assembler original.
      h/putscaled - Worksapce definition updated to match assembler version
    Admin:
      Tested on BB-xM, plotting lots of different sprites in lots of different modes
      Plotting of wide mask sprites not supported yet
      C version of YUV -> 16bpp code currently only deals with traditional &BGR 555 pixel format - code is aware of this and will do conversion to desired format if applicable (although quality may be reduced)
      Part of an implementation of the Extended Framebuffer Format spec:
      http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20Specification
    
    
    Version 1.52. Tagged as 'SprExtend-1_52'
    d0127bc4
jdcolor16 9.36 KB