- 21 May, 2016 4 commits
-
-
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
-
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'
-
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
-
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.
-
- 12 Mar, 2016 1 commit
-
-
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'
-
- 11 Jan, 2016 1 commit
-
-
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'
-
- 09 Oct, 2015 1 commit
-
-
Robert Sprowson authored
Two bits of documention copied to the trunk so they're not lost. Not tagged.
-
- 26 Sep, 2015 1 commit
-
-
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'
-
- 08 Sep, 2015 1 commit
-
-
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'
-
- 25 Jun, 2015 1 commit
-
-
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'
-
- 30 Jan, 2015 1 commit
-
-
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'
-
- 16 Jan, 2015 1 commit
-
-
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'
-
- 06 Dec, 2014 1 commit
-
-
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'
-
- 28 Mar, 2014 1 commit
-
-
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'
-
- 09 Mar, 2014 1 commit
-
-
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'
-
- 04 Mar, 2014 1 commit
-
-
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'
-
- 05 Nov, 2013 1 commit
-
-
Robert Sprowson authored
Not tagged.
-
- 25 Oct, 2013 1 commit
-
-
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'
-
- 14 Oct, 2013 2 commits
-
-
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'
-
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'
-
- 13 Oct, 2013 2 commits
-
-
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'
-
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'
-
- 07 Oct, 2013 2 commits
-
-
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'
-
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'
-
- 10 Sep, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: c/rojpeg - The init_workspace() function called from jpeg_scan_file() was trashing the YUV -> 16bpp decode function pointer that had been set earlier, causing a nice crash if 16bpp output was actually being used. Now fixed to preserve the pointer when resetting workspace. Admin: Tested on BB-xM Fixes issue reported on forums with Phoenix and JPEG viewers crashing in 16bpp modes: https://www.riscosopen.org/forum/forums/4/topics/2094 Version 1.54. Tagged as 'SprExtend-1_54'
-
- 10 Aug, 2013 1 commit
-
-
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'
-
- 07 Aug, 2013 1 commit
-
-
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'
-
- 06 Aug, 2013 1 commit
-
-
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'
-
- 10 Aug, 2012 1 commit
-
-
Robert Sprowson authored
* Listen for ResourceFS starting service call * De/Register files appropriately * Refactor makefile to have two possible install targets * Simplify the ColourTrans RMEnsure Version 1.51. Tagged as 'SprExtend-1_51'
-
- 28 Jul, 2012 1 commit
-
-
Robert Sprowson authored
Now for every colour conversion there is a corresponding C function, allowing swapping between them for test purposes. Here, 'ASMCOLOR' is selected and the C functions not even referenced in the makefile, see branch for use. Permits use of USAT, for a small 1.5% speedup and smaller code. Some other typedefs and comment shuffling copied over - should be harmless. Version 1.50. Tagged as 'SprExtend-1_50'
-
- 22 Apr, 2012 1 commit
-
-
Robert Sprowson authored
Detective work from Martin Avison, now correctly joins the following combinations * New format + New format (no mask) H or V * Old format + Old format (no mask) H or V * New format + New format (masked) H or V * Old format + Old format (masked) H or V Version 1.49. Tagged as 'SprExtend-1_49'
-
- 14 Jan, 2012 1 commit
-
-
Steve Revill authored
Version 1.48. Tagged as 'SprExtend-1_48'
-
- 03 Oct, 2011 1 commit
-
-
Robert Sprowson authored
Transformed sprites tested briefly & still work. Version 1.47. Tagged as 'SprExtend-1_47'
-
- 05 Aug, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: Sources/SprExtend - Try using OS_ReadSysInfo 6 to get ECF block addresses before falling back on legacy addresses. Store pointers in module workspace for speedy access. Sources/SprOp, Sources/SprTrans - Use workspace ECF block pointers c/rojpeg - Fix null pointer access (actually an unused variable) Admin: Tested on rev A2 BB-xM Version 1.46. Tagged as 'SprExtend-1_46'
-
- 20 Jul, 2011 2 commits
-
-
Robert Sprowson authored
Those SpriteOps that modify the sprite input now * R0=&0-&FF R1=don't care R2=mustn't be too low down * R0=&100-&1FF R1=must be valid R2=mustn't be too low down * R0=&200-&2FF R1=must be valid R2=must be valid Those SpriteOps that just display but don't modify the input sprite * R0=&0-&FF R1=don't care R2=mustn't be too low down * R0=&100-&1FF R1=must be valid R2=mustn't be too low down * R0=&200-&2FF R1=don't care R2=must be valid In this context, valid means word aligned and not too low down. In this context, too low down is anything below &100. Version 1.45. Tagged as 'SprExtend-1_45'
-
Robert Sprowson authored
-
- 10 Jul, 2011 1 commit
-
-
Robert Sprowson authored
Small optimisation to mask twiddling in 24bpp case, the code was emitting 3 instructions because it didn't use LSR#32 which is a documented instruction. Changed an unaligned load in the 16bpp case to use LDRH when possible. Lined up some stuff, changed R15 to PC. Version 1.44. Tagged as 'SprExtend-1_44'
-
- 09 Jul, 2011 1 commit
-
-
Robert Sprowson authored
Retagged as SprExtend-1_43.
-
- 25 Jun, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: Sources/SprExtend - Added new CheckAlignedAndSensible macro to make it easy to check pointers. Pointers which aren't word aligned or are less than 256 are considered bad. Sources/SprOp - Update findsprite, getspritename and getspriteaddr to check sprite/area/name pointers for validity. Sprite names are the only ones that are allowed to not be word aligned. Admin: Tested on rev A2 BB-xM. Version 1.43. Tagged as 'SprExtend-1_43'
-
- 14 Apr, 2011 1 commit
-
-
Ben Avison authored
Retagged as 'SprExtend-1_42'
-