In order to makes Ham8 pictures works correctly as they uses 24 bits colors precision, I had to improve the AGA colors supports.
Previously copper defined colors using old 12 bits color system. With this system High 12 bits values are automatically copied to low 12 bits values. This makes for example $58A colors becoming $5588AA without having to define low bits.
But with the Ham8, this lead to corruption when colors are not in the real palette but the result of shifting using control bits. I then had to improve the copper list support. To do this, 3 things were required :
- Update storage in internal Amos Professional Screens structures to support RGB24 colors instead of RGB12. As Copper list works using 2 pairs of RGB12 colors to define RGB24, color palette is automatically splitted in 2 groups of 256 colors, each in 12 bits.
- Update global copper list color palette from register 032 to 255 from RGB12 to RGB24.
- Update Screen copper list color palette 000-015 and 016-031 to support RGB24.
The "=Colour( I )' command always return RGB12 color value.
The '=Get Rgb24 Colour( I )' new command return RGB24 color value.
The Load Iff is in progress and get good results but specific values in CAMG that are not clearly documented makes some HAM8 iff pictures not working correctly. I'm working to fix this before preparing a new alpha/beta test update of the binary GitHub repository.
Once this work will be completed, I will have to update the banks to handle RGB24 colors instead of RGB12, and allow them to Save/load datas containing RGB24 color values too.
Here are the latest news concerning Amos Professional AGA updates after a long time without true news.
I have fixed an issue that did makes Amos <-> WorkBench switching no more working. No you can again switch from Amos To Workbench and reverse ... Default key is LEFT AMIGA + A
I'm also working on HAM8 support for Amos Professional AGA and it get good progress.
The main challenge was interesting because HAM6 and HAM8 own differencies in the way they are handled by the graphic chipset..
HAM6 uses bitplanes 0-3 for true colors and 4-5 for control (fakes colors shifting update).
HAM8 uses Bitplanes 2-7 for true colors and 0-1 for control
These are reversed working behaviour from one to the other.
Due to this, AMOS Professional AGA draws to true colors in HAM8 will lead to makes AMOS Professional AGA write in the control bitplanes ...
I had to find a trick to fool AMOS Professional and not have to rewrite everything. And in fact, the solution was really easy to deploy !
I just had to update 2 datas areas.
1. Makes the BitMap structure bitplanes content being shifted/Rolled by 2 bitplanes, giving this order : 2-3-4-5-6-7-0-1.
2. Makes the EcCurrent(CurrentScreen) bitplanes structure content being shifted/rolled by 2 bitplanes too, giving this order : 2-3-4-5-6-7-0-1
3. Leave Copper list display bitplanes in the order 0-1-2-3-4-5-6-7
With 1. All graphical operations (ink, draw, plot, etc...) now works perfectly with the correct colors as AMOS uses BitMap/Layer and OS for these operations.
With 2. , the CLS operations that directly uses BLITTER, clear with the correct colors.
Now, I will have to update the AMOS Professional AGA IFF Loading methods to correctly handle HAM8 mode with correct colors settings.
HAM8 Should soonly be available for tests.
Starting a new employment as Software qualification engineer takes much energy.
It makes me literraly out. If forces me to put the Amos Pro X project in standby until my adaptation to the new job will be complete.
I hope to restart soonly.
- +AmosProAGA_lib.s/IffPal : Updated to handle 'AGAP' + ColourCount.w palette when more than 32 colors are available.
- +AmosProAGA_library.s/EcCree : Updated to integrate AGAP + ColourCount.w palette when screen is created.
- +AmosProAGA_lib.s/PalRout : Updated to handle 'AGAP' + ColourCount.w palette when more than 32 colors are available.
- +AmosProAGA_lib.s/GSPal : Updated to handle 'AGAP' + ColourCount.w palette when more than 32 colors are available.
- +AmosProAGA_lib.s/Bnk.SaveA0 (SB_Icon, SB_Bob, SP_Sp) : Save Sprite/Icon Bank updated to handle AGAP + ColourCount.w palette when saving to file.
- +AmosProAGA_lib.s/Bnk.Load ( LB_Icons, LB_Sprites ) : Load Sprite/Icon bank updated to handle AGAP + ColourCount.w palette when available in the file.
- Save Sprites/Bobs/Icons banks now save banks using "AGAP" mode with up to 256 colors (currently forced to 256 but will be dynamic in the future)
- Load Sprites/Bobs/Icons banks now detect original Amos Professional 2.0 ECS banks and Amos Professional AGA ones using "AGAP" mode with correct color palette
With these changes the "AGAP" system mode is now integrated in color palette for Screens, Icons, Bobs and Sprites.
Developer can now save Icons, Sprites and Bobs banks with up to 256 colors saved.
Load Icons, Sprites and Bobx banks automatically detects if the bank is from Amos Professional 2 Original with 32 ECS colors or, if it uses the new data "AGAP" mode that stores up to 256 colors. Full color palette is saved/loaded
The use of "Get Bob Palette" is now abel to restore up to 256 colors. in a screen.
- +AmosProAGA_lib.s/Bnk.Ric2 restored to initial state before AGA upgrade for "Get Bob" command crashes tests
- +AmosProAGA_lib.s/Bnk.Ric2 Reimplemented clean color palette support for both default ECS and new AGA.
- Fixed the Get Bob crash issue reported by Alain.Treesong by reimplementing AGA color palette saving support for Bobs/Sprites/Icons
- Removed AmosPro_Personal.lib from configuration as it caused issues.
- Update AmosPro_Personal.lib to get latest paraters from d3 (AmosPro v2+) instead of all parameters from (a3)+ (AmosPro v1)
- AmosPro_Personal.lib should not be used with new AGA System (it currently crashes). It will soonly be integrated inside the AmosPro_AgaSupport.lib
- Updated the PEN/Colors methods to be compatible with AGA 00-255 colors.
- Fixed AGA Hires SPack/UnPack example
- Update of the AmosPro_Personal.lib to fit Amos Pro v2 compliants and use new AGA includes automatically
- Added a new script 'aext2' to compile third party extensions and copy them directly in the AmosProAGA_System:APSystemAGA/ folder (without including them in the config)
- Added the AmosPRO_Personal.lib to the new 'aext2' script
- Remain to do : Update data get from AmosPro (old v1 used to load everything from (a3)+ and new v2+ put latest value into D3))+ en APv1.
- Update AmosPro text drawing color system to be compatible with 256 colors (instead of 207 max due to a value shifting by +48 in bytes).
- Reincluded all changes for +w.s -> +AmosProAGA_library.s
- Reincluded all changes for +lib.s -> +AmosProAGA_lib.s
- Reincluded all changes for +Ilib.s -> +AmosProAGA_libI.s
- Reincluded all changes for +Equ.s -> +AmosProAGA_lib_Equ.s
- Reincluded all changes for +WEqu.s -> +AmosProAGA_library_Equ.s
- Reincluded all changes for +Edit.s -> +EditorAGA_Config.s
- Reincluded all changes for +Interpreter.s -> +InterpreterAGA_Config.s
- Reincluded Extensions/+AgaSupport.s
- Reincluded all changes for Extensions/+compact.s
List of all previous changes made to the Amos Professional core :
- +Compact.s/UnPack : Fixed issue that sometimes makes screen palette not correctly updated when unpack screen using more than 32 colors.
- +Lib.s/InGetIcon? : Get Icon now stores up to 256 colors icons palette.
- +Lib.s/InGetIconPalette? : Get Icon Palette now restore up to 256 colors.
- +Lib.s/InGetSprite? : Get Sprite/Bob now stores up to 256 colors bob palette.
- +Lib.s/L_InGetSpritePalette? : Get Sprite/Bob Palette now restore up to 256 colors.
- +Equ.s/TBuffer increased from 1024 to 8192 to avoid issues with AGA color palette in SPack/Unpack +Equ.s/Buffer use.
- Added new 'more intuitive' command : +Compact.s/SPack ScreenID, Left, Top, Right, Bottom To BankID
- +Compact.s/SPack : Memory corruption issue fixed
- Renamed AMOS.library to AmosPRO_AGA.library to allow both old Amos Professional and new Amos Professional AGA version to run on the same computer.
- +Compact.s/Unpack compatibility with old ECS Packed pictures/Screen is now retablished when AGA is also supported.
- +w.s/CLPopulate updated to calculate copper start screens position depending on ECS/AGA chipset in adequate with +w.s/CpInit changes.
- +w.s/detectChipset method call moved near the beginning of +w.s/Startall to be sure chipset is detected when Copper list is created
- +w.s/CpInit updated to use chipset detection and add AGA Palette only if chipset = AGA.
- Completed the fix for the bob/icon image pasting in big screen area at bottom (Dom Cresswell reported bug)
- +w.s/BobCalc : fixed calculation (from .w to .l) for image pasting screen from top-left shift.
- Found that BbAAEc(a?) storage save the bitplane shift to define where to start the 1st byte of an image on screen.
- updated all +w.s file referencies to read/write BbAAEc data to .l
- Removed ext.l on registers that are used for BbAAEc data
- Remain to fix the 2nd part of the BobCalc method that precalculate image render to screen
- added AgaSupport.s/getRgb4FromRgb8 command name : " = get rgb4 from rgb8( RGB24/25 )"
- added AgaSupport.s/getRgb8FromRgb4 command name : " = get rgb8 from rgb4( RGB12 )"
- added AgaSupport.s/retRgb12Color command name : " = "rgb12( Red4, Green4, blue4 )
- added AgaSupport.s/getRgb12rColor command name : "= rgbr12( RGB12 )"
- added AgaSupport.s/getRgb12gColor command name : "= rgbg12( RGB12 )"
- added AgaSupport.s/getRgb12bColor command name : "= rgbb12( RGB12 )"
- added AgaSupport.s/retRgb24Color command name : "= rgb24( Red8, Green8, Blue8 )"
- added AgaSupport.s/retRgb25Color command name : "= rgb25( GenlockBit, Red8, Green8, Blue8 )"
- added AgaSupport.s/getRgb24rColor command name : "= rgbr25( gRGB25 )"
- added AgaSupport.s/getRgb24gColor command name : "= rgbg25( gRGB25 )"
- added AgaSupport.s/getRgb24bColor command name : "= rgbb25( gRGB25 )"
- added AgaSupport.s/createAGAPalette command name : "= Create Aga Palette INDEX"
- added AgaSupport.s/deleteAGAPalette command name : "= Delete Aga Palette INDEX"
- added AgaSupport.s/getAgaPeletteExists command name : "= Is Aga Palette Exists( INDEX )"
- added AgaSupport.s/cscToAaPl1 command name : "Get Aga Colors From Screen SCREENID, FIRSTCOLOR,AMOUNT to AGAPALINDEX, FIRSTCOLOR"
- Checked +Lib.s/L_InLoadIff11/2 to be sure it will detect Aga/Ecs chipset -> Body uses +w.s/EcCree so, it will be limited to screen limits.
- Updated pictures for AGA samples to use my old XQuadEditor Game Maker screen captures instead of TESO ones (to not have problem concerning copyrights for Bethesda)
- Added +w.s/detectChipset to detect AGA.
- Added new library : AMOSPro_AgaSupport.lib
- added AgaSupport.s/isAgaDetected command name : "= Is Aga Detected()"
- Update +Interpreter_Config.s : set AMOSPro_AgaSupport.lib as default extension slot #7
- Update +w.s/EcCree : To handle both ECS & AGA on screen creation (including new error messages)
- Added +w.s/EcCree restriction to standart screens to be multiple of 16 pixels. Fetched ones -> multiple of 64 pixels
- Update +w.s/Duale : To handle both ECS & AGA on dual playfield setup
- Update +Editor_Config.s : New error messages added
- Updated SetPalette, GetPalette to also store AGA colors inside Screen Structure (before it saved only in global aga palette)
- Updated +Lib./Sco0 Screen Copy to handle up to 8 bitplanes (was locked to max 6 bitplanes)
- Fixed +Lib.s/iffPal to correctly handle the refresh of up to 256 colors.
- Update +w.s/EcDouble double buffer creation to handle 64 bits bitmap alignemnts.
- Update +w.s/EcDel screen close method to handle both buffers (single and double one) with new buffer creation mode.
- Update +Lib.s/IffPal to handle up to 256 colors in IFF Animations
- Changed the place where the configuration are copied at compilation time (moved them to AMOS/S)
- Changed a place where AMOS.library was copied at compilation time (to AMOS/Libs)
- Moved the concerned files to place where they should be.
- Updated SPack SCR to BANK to handle saving of the 256 colors in the picture packing process.
- Added +w.s/updateAGAColorsInCopper to update the AGA Color palette when screen is opened or unpack done in it.
- Updated Unpack BANK to SCREEN to handle restoring up to 256 colors when unpacking.
- Increased all the APCmp buffers to makes compilation works with large .AMOS files
- Updated compiler.lib & APCmp with changes for the AGA support.
- Updated +W.s/WVbl WaitVbl to use Graphics.library/WaitTOF() instead of manual calculation.
- Fixed the Hires 640px fine scrolling by updating +W.s/WVbl.
- Updated +W.s/EcCree to Add 64bits alignment for Bitmap creation.
- Updated +W.s/EcCopHo to Add DDFStrt & BplxMOD changes when using Fetch Mode in HiRes resolutions.
- Updated +W.s/EcCree screen sizes limitation from 1024x1024 pixels to 2048x2048 pixels
- Updated +Lib.s/L_InScreenOpen to remove Hires limitation to 4 bitplanes.
- Updated +Equ.s/FMode equate to point to register #$1FC to handle AGA Fetch Mode
- Updated +W.s/EcCree by rewritting the Bitmap Allocation to use BMF_DISPLAYABLE to handle Hires.
- Updated +W.s/EcCree to handle FMode depending on screen resolution requested.
- Updated to Includes3.1
- Updated Colour I,R4G4B4 to work with up to 256 colors
- Updated copper list to define colors 32-255 before screens (just after sprites)
- Updated Screen creation to uses up to 8 bitplanes ( 256 colors )
- Updated Created a global aga Palette color for 32-255 colors registers
- Updated commands Colour ID,RGB & =Colour(ID) to be compatible with up to 256 colors
- Added method +W.s/getScr2Color to copy colors 0-15 from screen 1 into colors 16-31 of color 0 in Dual Playfield mode.
- Updated +W.s/Duale to call +W.s/getScr2Color when Dual Playfield is created.
- Updated +Lib.s/InScreenDisplay to call WaitVbl once screen values were updated to fix a bug with "Dual Playfield" command
- Updated +W.s/EcCopHo method to handle bplCon3 value from Screen structure data instead of a direct value.
- Updated +W.s/Duale method to insert color shifting value inside the BplCon3 screen structure data.
- Updated +W.s/EcCree method to setup the default color shifting value a screen will force to use different color palette.
- Updated +Lib.s/L_InScreenOpen to uses #EcMaxPlans+1 instead of direct #7 value.
- Added comments to +W.s/EcOffs (Screen Offset)
- Added comments to +W.s/EcView (Screen display)
- Added comments to +Equ.s concerning Screen strcture offsets/display data
- Created +W.s/CLPopulate reference to point to a particular position in the Copper refresh (where the copper list will be populated)
- Added comments to +W.s/CLPopulate to explain how copper list are populated with screens, rainbows, etc.
- Updated +Equ.s with BplCon3gl rs.w for default BplCon3 values concerning Sprites & special registers values.
- Updated +W.s/EcCopBa method to reset BplCon3 (be sure that Dual Playfield are correctly closed and palette to 0.)
- Added many comments to +W.s/EcForceCop method (unfinished)
- Updates +W.s/EcCree to handle 8 bitplanes with BPU3 field in standard screens (non DPF)
- Updated DualPlayfields AMOS sample to contains WAIT VBL calls after "Screen Display" calls (as they require this to work)
- Updated +W.s/EcCopHo method by inserting BplCon3 register to allow 2nd Dual Playfield Screen to use colors 16-31 [Temporar change]
- execute aData to update Editor_Config
- execute aw to update Amos.library
- Updated the new DualPlayfield scrolling test demo.
- Updated +W.s/Duale method to handle 2x16 colors lowres dual playfields
- Updated +W.s to handle 6 new error messages for Duale method
- Updated +W.s/Duale method to output errors using the 6 new error messages.
- Updated +Editor_Config.s file to contains the 6 new error messages ( Edt204-209 )
- execute aData to update Editor_Config
- execute aw to update Amos.library
- Restart from AMOSProfessional original source code from marc365 repository.
- Updated +lib.s from my AMOSCommenter JAVA tool.
- Added +lib_mList.s containing all the AMOS commands definition from +lib.s
- Updated extensions +Compact.s, +IO_Ports.s, +Music.s, and +Request.s from my AMOSCommenter JAVA Tool.
- Added +Compact_mList.s, +IO_Ports_mList.s, +Music_mList.s and +Request_mList.s containing the plugin AMOS commands definitions
- Updated my own extensions/Personal-1.1a library to be compilable like others files.