It's something I wanted to do from a long time now.
And due to the fact that it will be really useful for mewith the package I'll prepare for Amos Professional Unity, I decided to create this command set now.
This set of commands will allow to handle memory block in a way similar to products like TheGameCreators do (DarkBASIC, DarkBASIC Professional, AGK, AppGameKit).
These methods will be "memory secure" because checking are done to be sure you do not modify memory outside the allocated memory block.
So commands to handle this will be done soonly :
All these commands are now created and fully working for the next build release :
- Created : Create Memblock MEMBLOCKID,SIZE_IN_BYTES created and working.
- Created : = Memblock Exist( MEMBLOCKID )
- Created : = Get Memblock Size( MEMBLOCKID )
- Created : Write Memblock Long MEMBLOCKID, POSITION, INTEGER(32Bits)
- Created : Write Memblock Word MEMBLOCKID, POSITION, WORD(16Bits)
- Created : Write Memblock Byte MEMBLOCKID, POSITION, BYTE(8Bits)
- Created : LONG = Memblock Long( MEMBLOCKID, POSITION )
- Created : WORD = Memblock Word( MEMBLOCKID, POSITION )
- Created : BYTE = Memblock Byte( MEMBLOCKID, POSITION )
Memblock Exist will return 1 only if memory bank exists and is a memblock one.
All these methods will produce error if memory bank does not exist or if the bank is not a memblock.
I hope you'll enjoy them for memory manipulation.
This principle is perfect to handle game levels datas especially for 2D tiled systems.
It also open the door to re-integrate color palette support in a more "Amos friendly" way by making Color palette becoming true Amos Professional Banks that will be, like Memblocks and natives ones, be saved with .AMOS file and loaded back with them.
Today, I released a private Alpha build of Amos Professional Unity for my patreons
There is probably some bugs to hunt. I also test it on my side.
Today, to complete the integration of previous Amos Professional X methods inside Amos Professional Unity,, I worked on the AmosProUnity_Support.lib.
This extension already own the new color RGB12/15/24 conversions methods as internal methods callable from everywhere inside the Amos Professional Unity source code.
Now, I have added some methods that were previously available in Amos Professional X. More to this, the methods that allow color manipulations are now updated to use the new Color Conversion methods.
Here are the details of all the news for today :
- Fixed =Colour(INDEX) bug
- Start inserting new commands from Amos Professional X project
New Methods inserted :
= Is Aga Available() : Return 1 if AGA is detected, otherwise 0.
= Is Ham8() : Return 1 if current screen uses HAM8, otherwise 0
Ham8 : Return 262144, the value you must use to open a HAM8 screen
Ham6 : Return 4096, the value you must use to open a HAM6 screen
= Rgb24(Red8,Green8,Blue8) : Return a RGB 24 bits color value created using the RGB8 values.
= RgbR8( RGBValue12/15/24 ) : Return the 8 Bits value for Red color component from an RGB 12, 15 or 24 bits color value)
= RgbG8( RGBValue12/15/24 ) : Return the 8 Bits value for Green color component from an RGB 12, 15 or 24 bits color value)
= RgbB8( RGBValue12/15/24): Return the 8 Bits value for Blue color component from an RGB 12, 15 or 24 bits color value)
= Rgb12(Red4,Green4,Blue4) : Return a RGB 12 bits color value created using the RGB4 values.
= RgbR4( RGBValue12/15/24 ) : Return the 4 Bits value for Red color component from an RGB 12, 15 or 24 bits color value)
= RgbG4( RGBValue12/15/24 ) : Return the48 Bits value for Green color component from an RGB 12, 15 or 24 bits color value)
= RgbB4( RGBValue12/15/24): Return the 4 Bits value for Blue color component from an RGB 12, 15 or 24 bits color value)
I'm happy to announce that Bobs/Icons retro-compatibility and enhancements are completed. But what does this mean ?
It simply mean that ECS Unity and AGA Unity can load Original Amos Professional 2.0 Bobs and Icons.
ECS Unity Will save Bobs and Icons using the Amos Professional 2.0 format
AGA Unity Will Save Bobs and Icons using the new AGAP Mode (full Aga Color Palette)
ECS Unity can load AGA Unity Bobs and Icons (AGAM Mode) and will only use the 6 ECS Bitplanes (Extra AGA Bitplanes and colours will simply be ignored).
Here are the development details for Today development until last post :
- Fixed the graphic update issue in Amos Professional productivity Wonderland game. Now bobs refresh works as expected.
- Tested with AGA bobs (256 colors) : Everything is now OK.
- Updated ExtractedFromAmosProLib : Bnk.SaveA0, AMP_Bnk.Ric2
- ECS Unity Save bobs/icons using Classics format (old ECS method)
- ECS Unity can load AGA Unity save bobs/icons and uses them if they uses no more than 6 bitplanes (Extra AGA bitplanes will be simply ignored)
With these latest news, I can say that we are really near of the 1st official Alpha release for Amos Professional Unity binaries.
- Fixed Get Bob & Paste Bob crashs
- AGA Unity Load/Save bob/Icons now works and handle AGAP Mode
- AGA Unity Will always Save Bob/Icon using Amos Professional Unity method (AGAP Mode)
- AGA Unity can load both Classics and Unity methods (AGAP Mode) Bob/Icon
- Fixed Colour INDEX,RGBVALUE bug
- Find a graphic update issue in Amos Professional Productivity Wonderland game (bobs are not cleared from screen)
- Major improvements completed for commands : SPack SCREEN To BANK, UnPack BANK To SCREEN
- ECS Unity will always SPack using Amos Professional 2.0 Classics methods (old ECS method)
- ECS Unity can UNPACK AGA Unity (AGAP Mode) methods if bitplanes amount <=6( ECS limits )
- AGA Unity Will always SPack using Amos Professional Unity method (AGAP Mode)
- AGA Unity can load, and unpack both Classics (old ECS method) and Unity methods (AGAP Mode)
- ECS Unity Screen Opening EcCree method updated to handle AGA Unity AGAP Mode for screens up to 6 bitplanes.
- Both ECS Unity and AGA Unity can UnPack Classic Methods (old ECS method) and Unity methods (AGAP Mode)
Now Unpack BANK To SCREEN is fully compatible with older Amos Professional 2.0 (Original from François Lionet) and can takes advantage of the Unity enhancements.
I get good progress these last days.
I'm happy to show you the last progress in a small WIP video :
All changes until the previous news :
- Checked RGB12/15/24 color conversion calls in AmosPro_UnitySupport.lib : Fixed
- Added AmosPro_UnitySupport.lib to the EditorInterpreter configuration creation process
- Re-inserted AmosPro_UnitySupport.lib in the full Build process
- Amos Professional Unity Compilation & Run : Success
- Color Conversion methods are now fully moved and calleable from AmosPro_UnitySypport.lib
Due to a crash encountered using many sprites/bobs/icons, restored original AmosProUnity_Lib.s
Then I tested the exported methods again to find the crash and fix it.
- Updated A_BnkEffA0 and A_BnkEffBobA0 to fix issues (Crash)
- Reintegration of AmpLCallR calls : A_SHunk, A_Bnk.SaveA0, A_BnkEffA0, A_BnkEffBobA0 A_BnkReserveIC2 and A_BnkUnRev
- Reintegration of AmpLCallR calls : A_IffFormLoad, A_IffFormSize, A_IffRead, A_IffSeek, A_IffForm, A_IffFormPlay and A_IffSaveScreen
- Reintegration of AmpLCallR calls : A_InScreenOpen, InScreenDisplay, A_ScreenCopy0 and A_GetEc
- Reintegration of AmpLCallR calls : A_PalRout, A_InGetPalette2 and A_GSPal
- Reintegration of AmpLCallR calls : A_InRain and A_FnRain
- Reintegration of AmpLCallR calls : A_InPen, A_WnPp and A_GoWn
- Reintegration of AmpLCallR calls : A_UnPack_Screen and A_UnPack_Bitmap
Now Amos Professional Unity works perfectly again.
Reinserted EcCallA1, SyCallA1 and SyJmp from previous AGA version.
Reinserted EcCall calls 77-84 from previous AGA version.
Reinserted FMODE, BplCon3 & Color31 registers variables in equates
- Moved AmosProUnityECS.library/colorSupport_Init inside AmosProUnitySupport.lib setup
- Moved AmosProUnityECS.library/colorSupport_Functions list inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/SeparateRGBComponents inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/InputIsRGB12 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/InputIsR5G5B5 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/InputIsRGB24 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/MergeRGBComponents inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/OutputIsRGB12 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/OutputIsR5G5B5 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/OutputIsRGB24 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/ForceToRGB24 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/F24_InputIsRGB12 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/F24_InputIsR5G5B5 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/F24_InputIsRGB24 inside AmosProUnitySupport.lib
- Moved AmosProUnityECS.library/convertRGB15toRGB24 inside AmosProUnitySupport.lib
- Moved all methods to handle color conversion from AmosProUnityECS.library to AmosProUnitySupport.lib to avoid duplicate in others AmosProUnityXXX.library