- 27 Mar, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: - s/Wimp01 - Add OS_SpriteOp 38 (create/remove alpha) to the list of banned SpriteOp's for Wimp_SpriteOp. OS_SpriteOp 38 is almost always guaranteed to modify the target sprite, and so in keeping with other sprite modification ops it shouldn't be allowed via Wimp_SpriteOp. Admin: Tested on BB-xM Version 5.38. Tagged as 'Wimp-5_38'
-
- 09 Mar, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: s/Wimp01 - Update Wimp_SpriteOp handler to cope with the new SpriteReason_BadReasonCode value. Initialise unused bits of spritebits to 1 so that it acts as a whitelist, only allowing through operations that we know are safe. s/Tiling3D - Use OS_SpriteOp 65 for drawing tiled window backgrounds. Softload versions will fall back to using the old manual tiling code if OS_SpriteOp 65 is unavailable. s/Wimp10 - Use OS_SpriteOp 65 for drawing the tiled sprites that make up scrollbar wells and bars. Falls back to manual tiling in softload versions. Admin: Tested on Iyonix, BB-xM Requires HdrSrc-2_42 Version 5.37. Tagged as 'Wimp-5_37'
-
- 01 Mar, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: This set of changes allows the Wimp to cache the last-used translation table, and cleans up some instances where translation tables were being generated and then not used s/Wimp01 - Expand selecttable_args to store all 8 registers needed by ColourTrans_GenerateTable. Add 1K of space for caching the palette that the cached translation table was generated from. Remove unused spriteX, spriteY variables. s/Wimp04 - Split cachespritedata in two. cachespritedata now only caches the basic information, while the new cachespritepixtable rotuine will generate a translation table (shaded/inverted if required). This allows table generation to be deferred until we're just about to render the sprite, ensuring that the table isn't generated only to not be used. Also updated icon sprite rendering to check the sprite is within the graphics window before attempting to render it, allowing removal of one more case where tables can be needlessly generated. s/NewSWIs, s/Wimp09 - Change ADR to ADRL s/Tiling, s/Tiling3D - Use cachespritepixtable when needed Admin: Tested on Iyonix, BB-xM, StrongARM RiscPC Version 5.36. Tagged as 'Wimp-5_36'
-
- 06 Jan, 2014 1 commit
-
-
Ben Avison authored
Detail: The trick used only works with variable name symbols; other symbols remain defined after the end of the first pass of assembly Admin: Should enable us to track down components that will need changing from examination of the build logs
-
- 01 Jan, 2014 1 commit
-
-
Jeffrey Lee authored
Change Wimp_ReadSysInfo 2 to not return alpha sprite names. Add Wimp_ReadSysInfo 29 and Wimp_Extend 257. Detail: s/Wimp01 - Change romspr_suffix initialisation so that it won't store alpha sprite suffixes. This has the knock-on effect of making Wimp_ReadSysInfo 2 no longer return alpha sprite suffixes, without affecting any of the sprite search code hdr/Wimp, s/Wimp01 - Add Wimp_ReadSysInfo 29 to read the alphaspriteflag value - i.e. whether alpha sprites are supported by the OS/Wimp and *IconSprites, Wimp_Extend 13, etc. will look for them hdr/Wimp - Document the private Wimp_Extend reason codes and add a couple of ROL's reason codes s/NewSWIs - Tidy up Wimp_Extend implementation to use a jump table instead of a load of tests and branches. Add an implementation of ROL's Wimp_Extend 257, which just acts as a wrapper around Wimp_Extend 13 Admin: Tested on Raspberry Pi Wimp_ReadSysInfo 2 change should fix issue reported on forums with software unexpectedly using low-res sprites or failing altogether: http://www.riscosopen.org/forum/forums/4/topics/2274 Version 5.35. Tagged as 'Wimp-5_35'
-
- 30 Nov, 2013 2 commits
-
-
Jeffrey Lee authored
Detail: s/Wimp01 - An ill-advised last minute edit would leave the Wimp in an infinite loop looking for ROM sprites if it tried to enable alpha sprite support Admin: Tested on BB-xM Version 5.34. Retagged as 'Wimp-5_34'
-
Jeffrey Lee authored
Add support for *iconspriting of alpha-masked sprites. Fix icon shading/inverting to work with true colour sprites. Detail: Options/s/!Default, s/NewSWIs, s/Wimp01: Updated ROM sprite find code, *IconSprites and Wimp_Extend 13 to understand a new spritefile suffix. If the Wimp detects that RISC OS Select style alpha masked sprites are supported, and we're not using the mode 23 sprites, then the code will enable support for alpha masked sprites of the form !SpritesA1, !SpritesA2, !SpritesA, etc. Alpha-masked sprites are only looked for when looking for square pixel sprites or just before looking for the default sprites. This means the full search pattern for (e.g.) a !Sprites21 mode would be as follows: !Sprites21 (original mode) !SpritesA2 (next squarer mode, alpha sprites) !Sprites22 (next squarer mode) !SpritesA (default alpha sprites) !Sprites (default sprites) Like with !Sprites11 support, this feature can be toggled off via the SpritesA option if necessary. s/Wimp01, s/Wimp04: Updated icon plotting code (wimp_SpriteOp_putsprite and calculateinverse) to allow true colour sprites/icons to be rendered shaded/inverted. For this to work the Wimp needs a version of SpriteExtend which supports colour mapping (specifically it checks for the relevant ROOL version number). The colour mapping function which is used to build the translation tables used for shading/inverting palettised sprites is too slow to be sensibly used on a per-pixel basis, so the first time a shaded/inverted true colour sprite is requested the Wimp will generate a set of lookup tables which can be used by a much simpler colour mapping routine. To keep memory usage down these lookup tables only use 4K colours each; however the quality isn't always that great and so this may need revising in future. Admin: Tested on BB-xM Version 5.34. Tagged as 'Wimp-5_34'
-
- 08 Oct, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: s/Wimp04, s/Wimp10 - cachespritedata & cachetoolspritedata now force SpriteExtend to be used if the sprite has an alpha channel, to ensure plotting an alpha'd sprite into an alpha'd framebuffer performs blending instead of potentially skipping it (and copying the sprite alpha channel to the screen alpha channel) Admin: Builds, but untested Version 5.33. Retagged as 'Wimp-5_33'
-
- 07 Oct, 2013 1 commit
-
-
Jeffrey Lee authored
Fix logic which decides whether to plot sprites using the Kernel or SpriteExtend to take into account the new sprite modes Detail: s/Wimp01 - Add NColour mode variable to the list of variables cached for the current screen mode. Add modeflags & ncolour to the sprite & tool sprite variables. s/Wimp04, s/Wimp10 - Update cachespritedata and cachetoolspritedata to look at the modeflags, ncolour and alpha mask flag when deciding if sprite_needsfactors should be set or not (i.e. whether the code ultimately uses OS_SpriteOp 52 or 34). This should allow the Wimp to correctly detect if a sprite can safely be rendered by the Kernel or not (except for double pixel vs. non-double pixel - but presumably nobody's using double pixel mode sprites for icons/tool sprites, otherwise it would be fixed by now?) s/Wimp04 - Add an extra safety check to icon text rendering after a crash was seen when calling Wimp_PlotIcon outside of a redraw loop Admin: Tested on BB-xM Fixes problem reported on forums with 32bpp, alpha-masked sm!Netsurf icon vanishing from filer when viewed in 32bpp modes https://www.riscosopen.org/forum/forums/3/topics/309?page=4#posts-25995 Version 5.33. Tagged as 'Wimp-5_33'
-
- 08 Sep, 2013 1 commit
-
-
Robert Sprowson authored
Makefile: * Conditionally copy the disc resources, saving a little build time. Wimp10.s; hdr/Wimp: * Issue Service_WimpToolSpritesChanged when the tool sprite area is changed. Wimp05: * Fix bug in softloaded versions of the Wimp where menus would randomly lose the keyboard shortcut text. This was caused by use of an LDR to retrieve a byte wide variable. This specifically affected some softloads because the Wimp gets squeezed, and during unsqueezing the Wimp's workspace ends up being allocated from the same bit of RMA that used to contain the squeezed copy of the module (=lots of random numbers). Wimp09: * Fix bug where configuring WimpSpritePrecedence to ROM when a theme is loaded would cause redrawing of window textures to fail. This is because the Wimp intersects the ROM and RAM sprite areas and deletes any duplicates from the RAM area when remaking the fast lookup sprite list. So if the RAM sprites include the "tile_1" (etc) sprite on redrawing the desktop the Wimp points to this, then intersects the lists and deletes the sprite, leaving the pointers pointing at junk. Now, on deleting something, the window tile pointers are invalidated. Fixes ticket #346. Wimp02: * Fix bug where the title bar text, when the desktop font is the system font, is incorrectly rendered in the colour selected by WimpVisualFlag -WindowOutlineColour. The Wimp now restores the text colour if -WOC has set the graphics colour to something other than black. Administrative - In Wimp01, swap a couple of SpriteReasons from magic numbers. In the init of variables use the common reset_all_tiling_sprite function. In Tiling3D, more SpriteReasons, and rationalise the registers used in reset_all_tiling_sprites. Version 5.32. Tagged as 'Wimp-5_32'
-
- 06 Aug, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: s/Tiling, s/Tiling3D, s/Watchdog, s/Wimp05, s/Wimp07, s/Wimp09 - Replaced OS_SpriteOp reason code magic numbers with symbolic definitions. s/Wimp01 - Update *WimpMode / Wimp_SetMode to use OS_ScreenMode 13 (mode string to specifer) in place of its own code if a mode specifier string has been given. Note - mode number handling is unchanged, so a mode specifier string which begins with a mode number will currently have the specifier part ignored. s/Wimp01, s/Wimp02 - Flag_* -> ModeFlag_* renaming s/Wimp02 - Fix mode specifier copying to only stop copying when we hit a mode variable of -1. Previous code would also stop if the variable value was -1. Update mode set code to apply the Wimp's special greyscale palettes if the greyscale mode flag is set (i.e. greyscale mode was set via specifier generated by OS_ScreenMode 13) Admin: Tested on BB-xM Version 5.31. Tagged as 'Wimp-5_31'
-
- 03 Aug, 2013 1 commit
-
-
Robert Sprowson authored
No code changes to Wimp, not tagged.
-
- 01 Jun, 2013 6 commits
-
-
Robert Sprowson authored
The Wimp can now accept toolsprite sets which have precalculated (non default) colour translation tables supplied by the designer. This allows the link between window template colour and displayed tool colour to be reestablished when the tools aren't grey (previously, the Ursula Wimp would only tint greys). For full design details see Doc/ToolTables. An example test set, TestO/TTTTest is provided. This is the 'Newlook' set but with a splotch in the corner of each sprite which is then replaced by the hex of the Wimp colour being requested. Detail: Wimp01.s: New workspace requirements Wimp04.s: Pull out the RGB to greyscale function so it can be used elsewhere Wimp10.s: New tool table support code Fixes ticket #323. Also introduces a disc variant (with the extra EX0 EY0 resolution) of the 'Steel' theme, thus making it generally available. Version 5.30. Tagged as 'Wimp-5_30'
-
Robert Sprowson authored
Was previously inline but called as a function. Not tagged.
-
Robert Sprowson authored
The change made in Wimp-5_02 to Wimp-5_03 (to permit 'f' prefixed toolsprites) introduced a set of interesting boundary cases not covered by that scheme. This commit restores the former behaviour, while retaining its simplification of H/V scrollbar plotting (beefed up with a few ASSERTs). Part of fix for ticket #323. Tagged as Wimp-5_30-pre4.
-
Robert Sprowson authored
If the last window drawn before dropping to the command line had the input focus then a *TOOLSPRITES command is used the default translation table would be tinted. On reentering the desktop the back & close icon of the first window draw (= top of stack) would be the wrong colour. Tagged as Wimp-5_30-pre3.
-
Robert Sprowson authored
In deallocptrs a call to freetoolarea is made, then much the same code repeated inline. Excess code deleted. Tagged as Wimp-5_30-pre2
-
Robert Sprowson authored
When CnP=TRUE but UTF8=FALSE the code path through pushfontstring for icons using the 'D' validation string would use R11 as a temporary without having preserved it (the UTF8 case preserves it because it uses R11 as a bitmask of substitutes). Changed to always preserve R11, the routine is so huge one extra pushed register isn't going to slow it down measurably. Adjusted options files now this combination is safe. Tagged as Wimp-5_30-pre1.
-
- 23 May, 2013 1 commit
-
-
Robert Sprowson authored
This specific case failed when the topmost window in the window stack (ie. the first to be attempted to be redrawn on reentering the desktop) had the focus and thus attempts to enable Ursula tinting. Though a check was made to see if the first sprite (from which the tint is derived) was present, no check was made to see if the tool_list was present => dereferenced NULL pointer. Retagged as Wimp-5_29.
-
- 21 May, 2013 2 commits
-
-
Robert Sprowson authored
Way back in Wimp-4_76 the range check for being in ROM (in the free tool area function) was reworked as the ROM was no longer at the top of the 64M address space. In doing so the sense of the function got inverted and actually the tool area was not freed at all. The result of this would be that swapping to no toolsprites (for that retro RISC OS 2 look) would data abort when the kernel tried to plot a sprite from address 0 because the check prior to the title bar plot believed a tool area existed. Version 5.29. Tagged as 'Wimp-5_29'
-
Robert Sprowson authored
The word wide variable actually contains the RGB value, rename this to be distinct from the 4 bit Wimp colour, to make searching easier. No change to binary, not tagged.
-
- 18 May, 2013 2 commits
-
-
Robert Sprowson authored
When 'outlinefont' is enabled, the drawicon_system function used to plot the close/back/resize etc icons tries to do so from the currently selected outline font. This usually results in various top bit set characters inappropriately being shown. Now, when there are no tool sprites loaded the gadgets are forced to be plotted in the system font (where the Wimp has carefully redefined the font), but the remainder of the desktop (eg. the title bar, user text) stays in the selected desktop font. Version 5.28. Tagged as 'Wimp-5_28'
-
Robert Sprowson authored
-
- 12 May, 2013 1 commit
-
-
Robert Sprowson authored
Retagged as Wimp-5_27.
-
- 11 May, 2013 1 commit
-
-
Robert Sprowson authored
Substitute magic numbers through the code. Squash some UAL warnings from missing #'s in Wimp10.s Version 5.27. Tagged as 'Wimp-5_27'
-
- 09 May, 2013 1 commit
-
-
Robert Sprowson authored
On completing the sprite area merge the Wimp would try to minimise the RMA by -256MB (to account for the fact that during the merge the RMA is enlarged to hold both the existing sprites and the new ones to be merged, in the case of duplicates). However, this meant that the common construct IconSprites MySprites Run MyApp where MyApp wanted to use more than a teaspoon of RMA would fail due to the lack of free pool and that the RMA can't be resized when an application is running as a result. Now, the Wimp notes the free space in the RMA, does the -256MB shrink, then ensures there's still the same free space after the event (ie. overall it may have grown by the size of any extra sprites added during the command). Tested on RISC OS 3.10. Version 5.26. Tagged as 'Wimp-5_26'
-
- 06 May, 2013 1 commit
-
-
Robert Sprowson authored
Previous attempt to disable Sprites11 support for 3.10 and 3.50 hadn't spotted it was reenabled in the common options, also the Sprites11 switch was also tied up in Wimp$IconTheme support. Title bars would flicker when picked up when using a tool sprite set with no 'p' pushed equivalents on RISC OS 4.0x due to screen cache. Makefile now installs a default set of tools & sprites when target is ThemeDefs. CLI limit reduced to 256 pre Ursula to save RAM. Options/!Common: Promote Sprites11 switch into !Default Remove fixrmatools Options/!Default: Sprites11 true by default LongCommandLines true by default, false on targets pre Ursula Remove ServiceCallTable (harmless to have it in all cases) NewSWIs.s: Enable Wimp_Extend 13 all the time Wimp01.s: Reduce RMA use by vital 1.5k for non long command line case Change sense of Sprites11 switch to adopt all its previous functionality, but not look for '11' suffix when the switch is false Adopt ServiceCallTable switch permanently Wimp02.s: Comments ammended Wimp07.s: Range of ADR Wimp10.s: Change sense of Sprites11 switch to adopt all its previous functionality, but not look for '11' suffix when the switch is false Adopt :LNOT: fixrmatools switch permanently Supress title bar sprite plotting when none of the sprites exist Version 5.25. Tagged as 'Wimp-5_25'
-
- 04 May, 2013 1 commit
-
-
Robert Sprowson authored
Kernel can't chew new format sprites, so don't try using them in EX0/EY0. Retagged as Wimp-5_24.
-
- 03 May, 2013 2 commits
-
-
Robert Sprowson authored
The pointer comparison checking required when running in a system with > 64M memory was tightened up from Wimp-4_75 to Wimp-4_76, but to allow the module to target pre RISC OS 5 systems an option to relax those checks is required. Each check has been revisited and where appropriate demarked with a "AcceptLoosePointer" macro, which just remaps the pointer into the stricter form and carries on. In the strict checking case, the macro reduces to nothing. Detail: Add AcceptLoosePointers switch. Retire singular use of StrongARM switch (calling XOS_SynchroniseCodeAreas is harmless pre StrongARM anyway). Rename Ursula_RPC options to RO400. Put duplicate documentation in the attic. Allow -2 or -1 as the iconbar handle in Wimp_ResizeIcon (ticket #203). Tighten up the list terminator check in the DebugMemory switch of Memory.s Tested on RISC OS 3.10 (emulated), 3.50, 3.60, 3.70, 4.02. Version 5.24. Tagged as 'Wimp-5_24'
-
Robert Sprowson authored
Wimp03.s: check that pollword was in application space was corrupting R3 leading to an address exception (!) on pre Medusa targets Wimp08.s: compare had erroneously been change to equality check, leading to screwy memory allocation and much instability on 3.50 and 3.60 especially when applications quit Version 5.23. Not tagged
-
- 27 Apr, 2013 1 commit
-
-
Robert Sprowson authored
In Wimp-5_22 change (to not use the bitfield definition as a build switch) the sense got inverted, so would have hardwired text for international versions. Version 5.23. Not tagged
-
- 13 Apr, 2013 1 commit
-
-
Robert Sprowson authored
When matching an icon on the iconbar the window is initially matched correctly, but the "is this the right task" filter step was trying to compare the handle with -1. The result was that you would get the first match for any iconbar icon rather than a match for *your* iconbar icon. Unrelated: Tiling.s/Iconbar.s add a couple of comments and use symbols instead of magic numbers. Tested with a quality 3 line BASIC program, no longer returns icon #0 all the time. Version 5.23. Tagged as 'Wimp-5_23'
-
- 10 Apr, 2013 1 commit
-
-
Robert Sprowson authored
Minor fixups as part of univeral !Boot work. Options no longer ASSERT on International_Help (which is a definition exported by the kernel, rather than a build switch), and instead define a switch which is true for > 3.50. Non UTF8 supporting case has simple substitutes for Wimp_TextOp. Legacy_DomainId and LegacyIRQsema no longer cause NULL pointer dereference. MOVeQ => MOVEQ to placate ObjAsm. Ursula_RPC version built and used briefly on RISC OS 4.02 host. No other run time testing. Version 5.22. Tagged as 'Wimp-5_22'
-
- 31 Mar, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: s/Wimp10 - cachetoolspritedata was using two slightly different ColourTrans calls for reading the table size and then filling the table in. This was resulting in the 'generate wide table' flag sometimes being ignored when the table size was checked, resulting in too little memory being allocated and so heap corruption when the table generation call overflowed the end. Admin: Tested on Pandora Fixes "not a heap block" errors when entering desktop Version 5.21. Tagged as 'Wimp-5_21'
-
- 28 Mar, 2013 2 commits
-
-
Robert Sprowson authored
With the introduction of 16bpp/32bpp modes it became possible to request tables from ColourTrans which used > 1 byte per colour, but the Wimp wasn't using this extension. Therefore tool sprites designed in 8bpp or less would be quantised horribly when plotted in a 16bpp or 32bpp mode. The Wimp now requests and plots with a wide table, and to avoid thrashing ColourTrans so much with the prevalence of individually paletted icon sprites, keeps the table seperately to the icon sprites ones. At worst (in 32bpp) this uses an extra 256x4 bytes of RAM. Trace.s: Split out the tracing routines from Wimp10 as it was getting a bit big. Tiling.s: Namespace change for the icons versus tools distinction. Removed some unnecessary PC+8/PC+12 confused NOPs. Tiling3D.s: Namespace change for the icons versus tools distinction. Wimp01.s: New set of variables to track the tool translation tables separately. Various jiggling to keep ADRs in range. Wimp02.s: Namespace change. Remove some double handling in Wimp_SetColourMapping. Wimp04.s: Namespace change. Made factor rationalisation common to both the icon and tool grinding code. Removed dual use of cachespritedata for both icons and tools. The tintfunc moves to Wimp10. Service_InvalidateCache confusion resolved by adding a new flag to remember that the tools need regenerating rather than just marking the tool list as missing (which subsequently got restored in Tool_SpriteOp without actually doing any palette work. Wimp10.s: Label tools_area renamed as it was immensely confusing to have that (which was actually holding the RMA allocation of the tool_list) and tool_area (which contains the sprite area) hanging around. Changed references to use tools-only cachetolspritedata routine. Added 'wide' flags to sprite op and colour trans calls. Tool_SpriteOp changed to actually regenerate the colour tables when they're known invalid (previously the tools list pointer was merely restored and no colour tables used). Trace functions extracted. Resolved confusion as to what recache_tools_trans and recache_tools_trans2 should be doing. Tested with 4bpp "NewLook" sprites in 4bpp/8bpp/16bpp/32bpp and 8bpp smooth greyscaled "Steel" tool sprites in same modes. Also ran a task window doing repeated Service_InvalidateCache calls while monitoring the RMA for leaks. Generally navigated around some directories to ensure that inverse icons (during double click) and filer windows (with individually paletted sprites) were being rendered. Version 5.20. Tagged as 'Wimp-5_20'
-
Robert Sprowson authored
Not tagged.
-
- 09 Oct, 2012 1 commit
-
-
Steve Revill authored
Version 5.19. Tagged as 'Wimp-5_19'
-
- 03 Oct, 2012 1 commit
-
-
Robert Sprowson authored
Derived from the 'Steel' theme these are 90x90dpi toolsprites for the Raspberry UserIF. Their use of continuous tones has highlighted some deficiencies in the Wimp's translation table generation which are yet to be addressed, at which point the other resolutions and disc based copy will be more generally available. For now, ROM only keeps the distribution more controllable.
-
- 19 Sep, 2012 1 commit
-
-
Robert Sprowson authored
Was erroneously 90x90dpi. Retagged as Wimp-5_18.
-
- 06 Sep, 2012 1 commit
-
-
Robert Sprowson authored
* Re tinted 'floppydisc'
-