1. 03 Jul, 2018 1 commit
    • Robert Sprowson's avatar
      Tile using steam power during printing · 0d635839
      Robert Sprowson authored
      If there's a print job active, break down TileSpriteScaled into composite SpriteOps rather than using OS_Plot copy/move block. OS_Plot copy/move isn't supported by the printing system.
      
      Version 1.83. Tagged as 'SprExtend-1_83'
      0d635839
  2. 11 Feb, 2018 1 commit
  3. 09 Nov, 2017 1 commit
  4. 22 Oct, 2017 1 commit
  5. 28 Feb, 2017 1 commit
    • Robert Sprowson's avatar
      Fix to dpcm calculation leading to divide by zero in !Draw · 5af66cd5
      Robert Sprowson authored
      For JPEGs specified in dots-per-cm some dodgy looking bytewise fractions and missing brackets meant the x and y densities always came out as zero, leading to an abort in !Draw when it asks JPEG_[File]Info for this to convert to internal units.
      Correct the calculation and split it onto 2 lines for readability.
      
      Tested with a sample JPEG at 37dpcm (~93dpi).
      
      Version 1.79. Tagged as 'SprExtend-1_79'
      5af66cd5
  6. 17 Dec, 2016 1 commit
    • Jeffrey Lee's avatar
      Fix quality loss for some alpha blending ops. Perform dynamic CPU feature detection. · 0c5d9f5f
      Jeffrey Lee authored
      Detail:
        c/asmcore - Fix loss of quality for some alpha blending, e.g. 4K LARGB sprite being rendered into a 16M colour mode. All three channels were being expanded to 8 bit, but then two were being erroneously truncated to 4 bit.
        Sources/SprExtend - Make use of OS_PlatformFeatures + OS_ReadSysInfo to detect CPU features at runtime instead of relying on a hardcoded value. Should allow for better code generation with softload versions or Raspberry Pi 2/3 ROM versions.
      Admin:
        Tested on Raspberry Pi 1, 3, Iyonix
      
      
      Version 1.78. Tagged as 'SprExtend-1_78'
      0c5d9f5f
  7. 30 Sep, 2016 1 commit
    • John Ballance's avatar
      Repair ROM build · c1be0014
      John Ballance authored
      Detail:
        Amend asmcore static dependency to create an o directory, so rom build target works
      Admin:
        (highlight level of testing that has taken place)
        (bugfix number if appropriate)
      
      
      Version 1.77. Tagged as 'SprExtend-1_77'
      c1be0014
  8. 21 May, 2016 9 commits
    • ROOL's avatar
      Lazy MCU decoding · 5b3275b8
      ROOL authored
      Detail:
        Only colour convert from the left clipping border (rounded down) to the right (rounding up).
        Only entropy decode the DC component for blocks likewise, skipping AC and IDCT steps.
      Admin:
        Submission for the JPEG bounty.
      
      Version 1.76. Tagged as 'SprExtend-1_76'
      5b3275b8
    • ROOL's avatar
      Add lossless JPEG support · 0c76011f
      ROOL authored
      Detail:
        Update scanning, diffusing, line fetching to handle 1x1 DCTs.
        For transcoding, skip the jcmaster check on block_size having to generate optimal huffman tables - for a 1x1 DCT we don't need a huffman table at all and the defaults will suffice.
        For diffusing, rather that write out longhand another specialised diffuser to handle the 1x1 case, just overallocate one line in the band buffer and let it diffuse a line of garbage.
        Implement integer fast 1x1 DCT routine (to avoid having to drag in 25k of generic IDCT_ISLOW code).
      Admin:
        Submission for the JPEG bounty.
      
      Version 1.75. Tagged as 'SprExtend-1_75'
      0c76011f
    • ROOL's avatar
      Bug fixes · fbd01322
      ROOL authored
      Detail:
        Remove the unused gray (sic) output colour space support. Remove the patches to set output colour space to RGB, this can be overridden in code per the design intent of the library. Only decode luma for grey output.
        Fix bug rendering test image monorose2x4 - this was caused by the huffman pointer saving not decoding enough MCUs when the source image is monochrome hence an MCU outputs 8x8 rather than hsamp x vsamp pixels. Also removed the setting of insufficient_data in the entropy decoder, this meant that any error at the end of the image (eg. truncated) would cause the rest of the image to not render because JPEGs are stored top down but RISC OS plots them bottom up.
        Fix endless failure to match previously cached JPEG, especially at 16bpp, when the source JPEG doesn't meet the fast colour conversion criteria (eg. not 2x2 subsampling). The flags test was checking the requested flags against the filtered flags, which never matched (because the unmet options get cleared). Now, keep the original flags prior to filtering and compare those on the basis that the conversion decision will be consistent; simply ANDing out those modifiable flags doesn't help because then you can't spot when they genuinely change (eg. a mode change) as the filtered flags determine what format the blitter is expecting back.
        Fix bug causing aborts when the user manually resizes (down) the JPEG workspace DA. The calculation of new_size in jpeg_find_image_dims() had at some point lost the height multiplier on the band buffer, so when auto resizing back up again the buffer was too small to convert a whole band into.
      Admin:
        Submission for the JPEG bounty.
      
      Version 1.74. Tagged as 'SprExtend-1_74'
      fbd01322
    • ROOL's avatar
      Transcode progressives · f698cc95
      ROOL authored
      Detail:
        Enable the Huffman and arithmetic progressive code paths, these are handled much like arithmetic: undo the entropy part of the encoding process into a dynamic area full of raw coefficients, recompress as a baseline image, copy the image into the JPEG workspace for real time redraw.
      Admin:
        Submission for the JPEG bounty.
      
      Version 1.73. Tagged as 'SprExtend-1_73'
      f698cc95
    • ROOL's avatar
      Transcode arithmetics · 269639a6
      ROOL authored
      Detail:
        Import of the raw coefficient Huffman entropy compressor elements of the IJG8d library.
        We don't need a full compressor (ala JCompMod) since there's never a need to go all the way through IDCT/upsampling/colour conversion only to reverse the whole process; it's sufficient only to collect up the raw coefficients and recompress them as a baseline JPEG.
        Two extra (temporary) dynamic areas are introduced, once to hold the raw coefficients and the other to act as a scratch file to make the JPEG in. See Doc/JPEGMmgr.
      Admin:
        Submission for the JPEG bounty.
      
      Version 1.72. Tagged as 'SprExtend-1_72'
      269639a6
    • ROOL's avatar
      Removed CFSI-JPEG support · 87ef197b
      ROOL authored
      Detail:
        ChangeFSI now makes its own helper plugin which just calls the JPEG SWIs of the host OS, so there's no need for SpriteExtend to be complicated by this now.
      Admin:
        Submission for the JPEG bounty.
        Tagged as SprExtend-1_71-nocfsi
      87ef197b
    • ROOL's avatar
      Import of IJG8d library sources · a3b359ed
      ROOL authored
      Detail:
        Using the decoder in "example.c" as a starting point, we try to follow that sequence more closely even if in our embedded implementation some of the functions don't do much.
        Uses the default colour backend for 32bpp BGR output for most of the unusual cases.
        The most common 2x2 subsampling case uses a custom merged upsampler and colour converter, with colour output directly in RISC OS format for the respective screen mode.
      Admin:
        Submission for the JPEG bounty.
      
      Version 1.71. Tagged as 'SprExtend-1_71'
      a3b359ed
    • ROOL's avatar
      Replace tracef debug calls · 2211c9e4
      ROOL authored
      Detail:
        Change tracef() to use the double brackets trick rather than _ for , substitution
      Admin:
        Debug build built, but not tested. Non debug build functions as before.
        Submission for the JPEG bounty.
        Tagged as SprExtend-1_70-tracef
      2211c9e4
    • ROOL's avatar
      Update headers to stock copy · 083dde5c
      ROOL authored
      Detail:
        Added headers jerror, jmorecfg, jpegint from IJG8d. Removed jpegdata header.
        Bulk rename of structure members to match newer headers, some RISCOS-isms wrapped in #ifdef RISCOS, retained for the time being.
        Assembler code now gets cinfo member offsets from jhdr.s derived from the C header rather than keeping its own dangerous copy of the offsets.
      Admin
        Note: this has broken CFSI-jpeg as it expects the error values to be at the top of cinfo.
        Submission for the JPEG bounty.
        Tagged as SprExtend-1_70-headers.
      083dde5c
  9. 12 Mar, 2016 1 commit
    • ROOL's avatar
      Rewrite of find_image_dims · 0c4464be
      ROOL authored
      Detail:
        Now handles 0xFF padding, previously acceptable encoded images including padding were incorrectly rejected.
        Calculate the workspace for greyscale images correctly, the itype flags included the density (and latterly the SOF) flags, but the workspace calculation assumed it only contained 1 or 3 (for colour components).
        Exit cases now made common and propagate file errors correctly.
        Minor changes to the assembler that uses find_image_dims to handle 4 colour component return (now a 3 bit return value).
        Merge the other M_THING enum from IJG8d so we don't need our own copy.
        Fix signed pointer comparison.
        Use symbolic defines from Global & Interface headers where possible.
        The jdata pointer arg is now treated as const.
      Admin:
        Submission for the JPEG bounty.
      
      Version 1.70. Tagged as 'SprExtend-1_70'
      0c4464be
  10. 11 Jan, 2016 1 commit
    • Robert Sprowson's avatar
      Fix corrupt R0 during JPEG plot · 35e82e13
      Robert Sprowson authored
      The JPEG_PlotScaled SWI (and friends) was pulling R0 at the wrong moment, so corrupting it. This manifested as "Incomplete or corrupt JPEG" when trying to plot a JPEG via the PostScript driver for example (which expects R0 preserved for no error).
      Looks like ~5 year old bug, presumably not many people printing JPEGs to PostScript, or all suffering in silence.
      Tested on a Risc PC - printed a picture from !Draw to postscript, then PDF'd it.
      
      Version 1.69. Tagged as 'SprExtend-1_69'
      35e82e13
  11. 09 Oct, 2015 1 commit
    • Robert Sprowson's avatar
      Copy docs · 3b0af7b5
      Robert Sprowson authored
      Two bits of documention copied to the trunk so they're not lost.
      Not tagged.
      3b0af7b5
  12. 26 Sep, 2015 1 commit
    • Jeffrey Lee's avatar
      Fix deleting columns from alpha masked sprites · 670d329b
      Jeffrey Lee authored
      Detail:
        Sources/SprAdjSize - Fix a load of an unused register clobbering the register that was being used to work out whether a sprite has an alpha mask or not, with the end result being that mask data would be shuffled incorrectly when deleting columns from alpha masked sprites
      Admin:
        Tested on Raspberry Pi
        Fixes issue reported on forums with alpha-masked sprite data becoming corrupt when deleting columns in Paint: https://www.riscosopen.org/forum/forums/4/topics/3610
      
      
      Version 1.68. Tagged as 'SprExtend-1_68'
      670d329b
  13. 08 Sep, 2015 1 commit
    • Jeffrey Lee's avatar
      Fix orphaned dynamic area · 462d0cb2
      Jeffrey Lee authored
      Detail:
        Sources/SprExtend - Only initialise the JPEG workspace pointer + DA number the first time Init is called. This prevents the dynamic area from being orphaned if a JPEG operation is performed during the ROM boot (prior to Service_Reset), as is the case with BootFX on the Raspberry Pi.
      Admin:
        Tested on Raspberry Pi
        Task manager now shows one JPEG workspace DA, whereas before there were two.
      
      
      Version 1.67. Tagged as 'SprExtend-1_67'
      462d0cb2
  14. 25 Jun, 2015 1 commit
    • Jeffrey Lee's avatar
      Fix rendering of sprites with garbage in the top bits of each pixel · 6da79de7
      Jeffrey Lee authored
      Detail:
        Sources/PutScaled - Correct the hints in the pixel format table to not flag a component as being at the highest position in the colour if it doesn't actually touch the highest bit in the colour. Otherwise, the "We can merely shift this down into place" optimisation in convert_pixel() may be used, resulting in garbage data from the top bits of the source pixel being placed into the output.
      Admin:
        Tested on Iyonix
        32bpp TBGR sprite with garbage in top byte of each pixel, now displays correctly in 15/16bpp TRGB modes
        Issue reported by Rob Sprowson
      
      
      Version 1.66. Tagged as 'SprExtend-1_66'
      6da79de7
  15. 30 Jan, 2015 1 commit
    • Robert Sprowson's avatar
      Obscure case null pointer dereference fix · 24ae6ea7
      Robert Sprowson authored
      If ColourTrans is too old to have wide translation table support for JPEG plotting, module Init would detect this, but fail to clear the V flag and report oflaoflaofla.
      
      Version 1.65. Tagged as 'SprExtend-1_65'
      24ae6ea7
  16. 16 Jan, 2015 1 commit
    • Jeffrey Lee's avatar
      Escape some dollars · 0519732c
      Jeffrey Lee authored
      Detail:
        Sources/SprExtend - Escape some dollars contained in strings to avoid warnings from objasm
      Admin:
        Resulting binary unchanged
      
      
      Version 1.64. Retagged as 'SprExtend-1_64'
      0519732c
  17. 06 Dec, 2014 1 commit
    • Robert Sprowson's avatar
      Fix for stack imbalance · 1c02f88c
      Robert Sprowson authored
      In revision 4.17 the extra argument in R5 changed the stack frame, but the 'file not found' error exit was missed.
      Submission from Rick Murray. Fixes ticket #398.
      
      Version 1.64. Tagged as 'SprExtend-1_64'
      1c02f88c
  18. 28 Mar, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix a few long-standing mask ECF rendering bugs · a87734ee
      Jeffrey Lee authored
      Detail:
        c/PutScaled - Fix the tail end of loop_y() to update the ECF pointer when simple_y_scale() is true. Without this, unscaled sprites (which didn't fall through to the kernel routine) would have repeated the same ECF row over the whole image instead of displaying the pattern correctly
        Sources/SprOp, c/PutScaled - Rewrite calculation of initial ECF pointer, both to simplify the code and to fix the calculation of the offset to work with ECF patterns that are 8 rows tall (was previously masking off the top bit of the row number, restricting the pattern to within the first 4 rows). Also the resulting address was off by one row, so even if you had a pattern 4 rows tall then it would still be misaligned when compared to the kernel's vector graphics.
      Admin:
        Tested on BB-xM
        OS_SpriteOp 49, 50, 55 and kernel vector graphics now all seem to be in agreement for how ECF patterns should be rendered, in a variety of modes
      
      
      Version 1.63. Tagged as 'SprExtend-1_63'
      a87734ee
  19. 09 Mar, 2014 1 commit
    • Jeffrey Lee's avatar
      Add OS_SpriteOp 65 implementation. Tweak OS_SpriteOp 52 logic for passing the... · 25c47d65
      Jeffrey Lee authored
      Add OS_SpriteOp 65 implementation. Tweak OS_SpriteOp 52 logic for passing the request on to the kernel.
      
      Detail:
        Sources/SprExtend - GET Hdr:GraphicsV, add debug switch for sprite tiling
        Sources/SprOp - Add OS_SpriteOp 65 (TileSpriteScaled) implementation. Will use OS_Plot to perform hardware-accelerated copies of tiles if no special plot actions are in effect (masking, blending) and the driver indicates copies are fast. For other situations OS_SpriteOp 52 is issued in a simple loop. Also tweak OS_SpriteOp 52 implementation to pass unmasked, true colour sprites to the kernel for rendering - contrary to the old source comment, the kernel is significantly faster at this than SpriteExtend.
      Admin:
        Tested on Iyonix, BB-xM
        Requires HdrSrc-2_42
      
      
      Version 1.62. Tagged as 'SprExtend-1_62'
      25c47d65
  20. 04 Mar, 2014 1 commit
    • Jeffrey Lee's avatar
      Update to work with new "32K+" colour translation tables · eb8febb3
      Jeffrey Lee authored
      Detail:
        Sources/SWIs, Sources/SprExtend, Sources/SprOp, c/PutScaled, c/sprtrans, h/putscaled - Cache the sprite NColour value in the save_* workspace
        Sources/SprOp - Update preparettr to perform extra validation on 32K-style translation tables (old "32K." or new "32K+"). Although we could potentially accept any format table, to cut down on the number of plotter combinations we currently require that the table matches the format that ColourTrans will create when given the source sprite.
        c/PutScaled, c/sprtrans - Update comments relating to determining input format of TTRType_32K tables
      Admin:
        Tested on BB-xM
        Requires Colours-1_89
      
      
      Version 1.61. Tagged as 'SprExtend-1_61'
      eb8febb3
  21. 05 Nov, 2013 1 commit
  22. 25 Oct, 2013 1 commit
    • Jeffrey Lee's avatar
      Fix some sprite rendering issues. Add a new test app. · f9b5aa09
      Jeffrey Lee authored
      Detail:
        Bug fixes:
        - Sources/SprOp: Fixed a bug with PlotMask of old-format sprites not working correctly if the sprite is off the left edge of the screen. Fixed Log2bpp/Log2bpc confusion when plotting to double-pixel modes, caused by double pixel bodge being disabled.
        - Sources/SprTrans: Fixed transformed plotting of sprites with lefthand wastage drawing the sprite offset if a transformation matrix is used
        - c/PutScaled: Fixed another double pixel bodge related bug, when plotting double pixel sprites at certain offsets and with the two-at-a-time plotting code
        Test code:
        - Test/c/bigtest: A fairly comprehensive test app that generates lots of random sprites in every supported mode, and plots them using all APIs and options into all supported destination modes. Output is redirected to sprites (so the capabilities of the host video hardware are irrelevant), and checked against a model of what the expected output should look like. Also features some JPEG tests. A fast computer is recommended when running the tests!
        - Test/mkbigtest,fd7: Helper script to build bigtest
        - Test/bigtest2,ffb: Helper BASIC program to allow easy re-testing of failure cases
        - Test/JPEGs/*: Test JPEGs and reference sprites which are used by the JPEG test. JPEGs chosen to exercise all the output formats the JPEG code supports.
      Admin:
        Tested on BB-xM
      
      
      Version 1.60. Tagged as 'SprExtend-1_60'
      f9b5aa09
  23. 14 Oct, 2013 2 commits
    • Jeffrey Lee's avatar
      Fix plots of Y-scaled masks · 96a229b8
      Jeffrey Lee authored
      Detail:
        c/PutScaled - Update r_pixel so that it's available in the Y-loop bank if a Y-scaled mask is being drawn. In this case r_pixel is used as a temp register to help update the ECF pointer.
      Admin:
        Tested on BB-xM
        Fixes issue reported on forums with !Wget application sprite not rendering when dragging-and-dropping it via the filer:
        https://www.riscosopen.org/forum/forums/4/topics/2141
      
      
      Version 1.59. Tagged as 'SprExtend-1_59'
      96a229b8
    • Jeffrey Lee's avatar
      Fix build issues · b55e04a1
      Jeffrey Lee authored
      Detail:
        Sources/SprOp - Added an extra LTORG to fix build issues on ARMv3/4/5/6 caused by literal pools being out of range
      Admin:
        Built successfully as part of an IOMD ROM build, but untested at runtime
      
      
      Version 1.58. Retagged as 'SprExtend-1_58'
      b55e04a1
  24. 13 Oct, 2013 2 commits
    • Jeffrey Lee's avatar
      OS_SpriteOp 38 fixes & improvements · bec3eb90
      Jeffrey Lee authored
      Detail:
        Sources/SprOp:
        - OS_SpriteOp 38 implementation improved so that it will (almost) always attempt to simplify the sprite mode word (even if not performing any transformation on the data)
        - Also fixed/improved it to evaluate bit 8 of R3 with respect to the output data, not the input. So reducing from 8bpp to 1bpp with bit 8 set will now cause the mask to be discarded if all the source pixels were above the cutoff, instead of the old behaviour which would have only discarded the mask if all source pixels were 255.
        - Fixed bug in ExamineAlpha which meant that the 8bpp mask flag was always being cleared - resulting in problems for most conversions (or if the mask was to be left intact)
      Admin:
        Tested on BB-xM
      
      
      Version 1.58. Tagged as 'SprExtend-1_58'
      bec3eb90
    • Jeffrey Lee's avatar
      Add OS_SpriteOp 38 (CreateRemoveAlpha) implementation. Fix FindMaskWidth. · f6ceacd8
      Jeffrey Lee authored
      Detail:
        Sources/SprOp:
        - Implemented OS_SpriteOp 38. For RISC OS 3.5 sprite types it's effectively the same as ROL's version, allowing conversion to/from alpha masks.
        - When given a sprite with a RISC OS 5 alpha channel, it will use that as the source of the alpha/mask data, allowing RISC OS 5 alpha channels to be converted to RISC OS 3.5 1bpp masks or Select alpha masks (including converting to a RISC OS 3.5 mode word where possible)
        - An extra flag (bit 30) has also been added; settings bits 30 & 31 will attempt to convert any existing 1bpp/8bpp mask to a RISC OS 5 alpha channel (or create a default alpha channel if the sprite has no mask). The conversion will fail if the colour depth is such that no alpha channel is possible.
        - Also fixed regression in FindMaskWidth; when converting from the Kernel version it looks like I missed a couple of lines, and all RISC OS 3.5/RISC OS 5 type mode words would have handled incorrectly
        Resources/UK/Messages:
        - Add InvalidSpriteMode error message, for use by OS_SpriteOp 38
      Admin:
        Tested on BB-xM converting various sprites & masks to/from the different formats
      
      
      Version 1.57. Tagged as 'SprExtend-1_57'
      f6ceacd8
  25. 07 Oct, 2013 2 commits
    • Jeffrey Lee's avatar
      Fix rendering of alpha masked sprites when left edge is obscured · ea22c400
      Jeffrey Lee authored
      Detail:
        Sources/SprOp - Fixed the input address/offset calculation in Go_PutSpriteScaled to store the mask width (in bits) seperately from the image width (in pixels), to avoid image width being incorrectly multiplied by 8 when an alpha masked sprite is encountered
      Admin:
        Tested on BB-xM
        Fixes issue reported on forums with alpha-masked netsurf icons rendering incorrectly:
        https://www.riscosopen.org/forum/forums/3/topics/309?page=4#posts-25995
      
      
      Version 1.56. Tagged as 'SprExtend-1_56'
      ea22c400
    • Jeffrey Lee's avatar
      Add support for blended sprite & JPEG rendering - alpha masks, alpha channels, and translucency · 3a5a79f1
      Jeffrey Lee authored
      Detail:
        This big set of changes adds support for the following user-facing APIs, as per ROL's specs:
        - OS_SpriteOp 52 (PutSpriteScaled) colour mapping, translucency blending, and alpha mask/alpha channel blending
        - OS_SpriteOp 56 (PutSpriteTransformed) colour mapping, translucency blending, and alpha mask/alpha channel blending
        - JPEG_Plot[File]Scaled colourmapping & translucency blending
        - JPEG_Plot[File]Transformed colourmapping & translucency blending
        Sources/CFSI-JPEG, Sources/PutScaled:
        - Added exit_oserror exit routine for use by C code.
        - For SpriteExtend this allows the C code to cause OS_SpriteOp to exit with a given OS error block.
        - For CFSI-JPEG the error block is returned and ERROR_FATAL is returned to ChangeFSI.
        Sources/CSupport:
        - Add definitions for some error codes (matches existing definitions from h/commondefs)
        Sources/PutScaled:
        - Stripped out code to look for identity translation tables; now handled by preparettr routine in Sources/SprOp
        Sources/SWIs, Hdr/SprExtend:
        - JPEG SWIs updated to add support for alpha-blended and colour mapped JPEG rendering, following ROL's APIs
        Sources/SprExtend:
        - Stripped out lots of old build flags which haven't been touched in years.
        - Strip out assembler SprTrans code generator.
        - Add new definitions needed for blending & colour mapping.
        Sources/SprOp:
        - Updated PutScaled frontend to deal with blending and colour mapping.
        - Disabled code which was bodging coordinates when dealing with double-pixel modes - it seems to cause a few issues, and the code generator mostly had proper double-pixel support anyway.
        - Translation table verification and fiddling code rewritten and consolidated into the preparettr routine. C code is now explicitly told what table type is in use and whether it can safely be ignored in favour of using the sprite palette.
        - Removed code from CheckSpriteArea which was deliberately throwing an error upon seeing alpha-masked sprites; I think the bug that was hiding has been fixed now
        Sources/SprTrans
        - Removed the assembler version of the code generator.
        - Updated to add support for blending and colour mapping
        c/PutScaled:
        - Old test code removed.
        - Updated to add support for blending & colour mapping
        - Assorted bugs fixed.
        - A few extra architecture-specific optimisations added.
        - Some workspace setup code moved to c/asmcore to allow sharing with SprTrans.
        c/asmcore:
        - Register allocation code rewritten. Instead of allocating on a first-come, first-served basis, the code now builds a list of which logical registers are needed (and which 'banks' they fall into) and then attempts to allocate them in a more intelligent manner. It still has some failings (e.g. reusing R12 as a general purpose register is currently impossible) but it's a lot more flexible and reliable than the old code.
        - Core pixel transformation code updated to add support for blending & colour mapping
        - Added some extra architecture-specific optimisations
        c/rojpeg:
        - JPEG option handling updated to avoid trashing any colour mapping descriptor that may have been passed in
        c/sprtrans:
        - Updated to add support for blending & colour mapping
        c/tracing:
        - Debug assert messages now show filename as well as line number
        h/commondefs:
        - Removed old #define's that related to old assembler switches.
        h/putscaled:
        - Workspace definition updated to match assembler version.
        - SprTrans stack workspace structure moved here from c/sprtrans
      Admin:
        Tested on BB-xM plotting all major sprite & JPEG types into all modes with all major options
      
      
      Version 1.55. Tagged as 'SprExtend-1_55'
      3a5a79f1
  26. 10 Sep, 2013 1 commit
  27. 10 Aug, 2013 1 commit
    • Jeffrey Lee's avatar
      Make SpriteReason_CheckSpriteArea fault alpha masks · d506ee6a
      Jeffrey Lee authored
      Detail:
        Sources/SprOp - CheckSpriteArea now faults any sprite area containing alpha mask sprites. This is probably the best approach for us to take until they're fully supported.
      Admin:
        Tested in Iyonix ROM softload
        Fixes stripey netsurf icon, should hopefully fix reported crashes too.
      
      
      Version 1.53. Tagged as 'SprExtend-1_53'
      d506ee6a
  28. 07 Aug, 2013 1 commit
    • Jeffrey Lee's avatar
      Fixup CFSI-JPEG · c2535776
      Jeffrey Lee authored
      Detail:
        Sources/CFSI-JPEG - Add an extra GET for mode flag definitions used by jdcolor
        c/rojpeg - Use standard 555 TBGR colour conversion function when producing 16bpp output for CFSI-JPEG
      Admin:
        ChangeFSI JPEG output tested on RISC OS 3.7, 5.17, 5.21
        3.7 works fine, but 5.XX fails to convert JPEGs correctly for <256 colour output - to be investigated
      
      
      Version 1.52. Retagged as 'SprExtend-1_52'
      c2535776
  29. 06 Aug, 2013 1 commit
    • 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