Short: beta graphics.library OCS/ECS/AGA/CD32 Author: Cosmos Uploader: cosmos amiga gmail com Type: driver/video Version: 42.8 beta 10 Replaces: driver/video/gfxlib_428b9.lha Requires: OS 3.1 and 68000+ Architecture: m68k-amigaos URL: http://cosmosamiga.blogspot.com Done by reverse engineering. Need testing. Check this version on your Classics. It's a work in progress : I can't test by myself the whole Workbench & software on so many various hardware. If you find an issue, please, email me your reports as soon as possible. This v42.8 should works on all Classics, Minimig and Natami. The goals are : - All access to the blitter removed for 030+/OCS/ECS/AGA/fastram, - Romable with the early-startup in RTG if graphics cards detected, - Translate graphicslibrary_4025.pdf in deutsch, spanish and french. Cooperation of everyone needed. Graphics cards must have boot priority now : OCS/ECS/AGA are too old/slow... This new RTG system must be 100% compatible CyberGraphx 4 and Picasso96. We have room in the Kickstart : I tried many months ago a working 2 Mo on my A600 : should works on others Classics too. During the initialisation of this graphics.library, a check for gfx cards is done with Manufacturer and Product ID (in the early-startup/Expansion Board Diagnostic). If detected, a new compatible cybergraphics.libary (for CyberGraphX 4) or rtg.library (for Picasso96) will be created in fastmem. We can't put all the Devs:Monitors/ drivers in rom, so we'll choose only the 7 or 8 most popular gfx cards to add into the Kickstart 3.9.1. All the others cards will work as today without the cybergaphics.library or rtg.library on HD in Sys:Libs/. We need to find together a name for this new RTG system : Email-me your ideas ! I'm always looking for the original sources of the Kickstart 3.1, upload them on my email right now ! With this release, you are now able to remove forever these patchs : AmyWarp BlazeWCP CpuBlit FBlit FText IconBeFast Rpp SetPatch v44.38 There are now bluit-in, for unity and simplification. This release is the result of many years of hard work without any sources from the original Kickstart. Please considere a donation for more releases by me. My Paypal is on top. Any Amiga hardware (HS or working) gifts are welcome too. graphics.library v42.8 beta 10 - Some unused code removed - fix R_CopySBitMap - fix R_ScrollRaster - fix R_ScrollRaster_020 - fix R_SyncSBitMap - Clean patching jmptable by using now R_SetFunction - Interrupt vector blitter 6 optimised - R_ClearEOL optimised - R_ClearScreen optimised - R_CloseMonitor optimised - R_FreeSpriteData optimised - R_LoadRGB32 optimised - R_LoadRGB32_020 if 020+ detected - R_LoadView optimised - R_MrgCop optimised - R_QBlit optimised - R_QBSBlit optimised - Rpp_ReadPixelLine8 (Stephan Rupprecht and Morton Ericksen) - R_ScrollVPort optimised - R_SetRGB32 optimised graphics.library v42.8 beta 9 - library version is now 42.8 - fix R_RectFill_020 (reported by AmigaMance) - Graphics Zorro cards detection added - CB_BltBitMap (Dave Jones) if 030/040/060/OCS/ECS/fastram detected - R_AndRegionRegion optimised - R_OrRegionRegion optimised - R_XorRegionRegion optimised - R_GetRGB4_020 if 020+ detected - R_AllocDBufInfo optimised - R_FreeDBufInfo optimised graphics.library v40.25 beta 8 - Updated graphics.guide - Updated graphics.fd - c2p functions added (Mikaël Kalms) - R_InitView optimised - R_InitVPort optimised - R_InitRastPort optimised - R_InitGels optimised - R_AndRectRegion optimised - R_SyncSBitmap optimised graphics.library v40.25 beta 7 - library version is now 40.25 (Peter Keunecke) - Conversion in 100% PC relatif started - All 'bsr.w R_GetDisplayInfoData' replaced by 'jsr -$2F4(a6)' - Three 'bsr.w R_NextDisplayInfo' replaced by 'jsr -$2DC(a6)' - fix R_WritePixelArray8 (Harry Sintonen) - fix R_WritePixelLine8 (Harry Sintonen) - R_AddBob optimised - R_RemIBob optimised - R_AddVSprite optimised - R_RemVSprite optimised - R_AreaMove optimised - AW_BltClear_020 (Enrico Altavilla) if 020/030/nofastram detected - R_RectFill optimised - R_AllocRaster optimised - R_FreeRaster optimised - R_InitBitMap optimised - R_ClearRegion optimised graphics.library v40.25 beta 6 - No divu64/68060.library call (Frank Wille) in F_Draw_020 if 060 detected - FBlit enabled for 030/040/060/AGA/fastram or 040/060/OCS/ECS/AGA/fastram - FBlit enabled for slow fastram (>$00200000) - CB_BltBitMap (Eddy Carroll) if 030/040/060/OCS/ECS/fastram detected - F_SetRast_020 v2.4 optimised - F_Draw_020 v3.08 optimised - R_CopySBitmap optimised - SP_TextFit (Sante Nocciolino) - fix R_SetRGB32CM (Sante Nocciolino) - R_GfxLookUp optimised - R_WaitTOF optimised - R_AreaDraw optimised - R_BltBitMapRastPort optimised - R_BltMaskBitMapRastPort optimised - IBF_ObtainBestPenA (Peter Keunecke) graphics.library v40.25 beta 5 - FBlit functions only enabled for 040/060 now (not faster on my A2000/030@40) - F_AddBob_020 and F_RemIBob_020 disabled - F_BltClear_020 optimised - AW_Setxxxx removed because not 100% ok on 68000/68010/OCS/ECS - R_Setxxxx optimised - Four 'jsr -$1B0(a6)' replaced by faster 'bsr.w R_LockLayerRom' - Four 'jsr -$1B6(a6)' replaced by faster 'bsr.w R_UnLockLayerRom' - All 'jsr -$2F4(a6)' replaced by faster 'bsr.w R_GetDisplayInfoData' - One 'jsr -$2E8(a6)' replaced by faster 'bsr.w R_AddDisplayInfoData' - Four 'jsr -$2EE(a6)' replaced by faster 'bsr.w R_SetDisplayInfoData' - Three 'jsr -$2DC(a6)' replaced by faster 'bsr.w R_NextDisplayInfo' - Ten 'jsr -$84(a6)' replaced by faster 'addq.b #1,$127(a6)' - R_NextDisplayInfo optimised - R_Ownblitter optimised - R_DisownBlitter optimised - AW_Setxxxx_020 optimised if 020+ detected - R_EraseRect optimised - R_ScrollRaster_020 optimised if 020+ detected - R_RectFill_020 optimised if 020+ detected - R_ClipBlit optimised - IBF_ObtainBestPenA_020 (Peter Keunecke) if 020+ detected - R_ReadPixel now for 000+ - R_WritePixel now for 000+ graphics.library v40.25 beta 4 - AW_SetAPen (Enrico Altavilla) - AW_SetAPen (Enrico Altavilla) - AW_SetDrMD (Enrico Altavilla) - AW_SetABPenDrMd (Enrico Altavilla) - AW_SetAPen_020 if 020+ detected - AW_SetAPen_020 if 020+ detected - AW_SetDrMD_020 if 020+ detected - AW_SetABPenDrMd_020 if 020+ detected - Five 'jsr -$F0(a6)' replaced by faster 'bsr.w R_Move' - R_NewRegion optimised - R_Move optimised - R_GetDisplayInfoData optimised - R_SetDisplayInfoData optimised - R_AddDisplayInfoData optimised - R_ScrollRaster optimised - R_ScrollRasterBF optimised graphics.library v40.25 beta 3 - 100% in fast asm 68060 code with a full 68000 or 68020 compatibillity - only one library for OCS/ECS/AGA/CD32 instead of three in the Kickstart 3.1 - fix R_EraseRect - fix R_InitArea (Harry Sintonen) - fix R_WritePixelLine8 (SetPatch v44.38) on ECS/OCS with 68000 and 68010 - fix R_WriteChunkyPixel (SetPatch v44.38) on ECS/OCS with 68000 and 68010 - BWCP_WritePixelLine8_020 (Pratt) built-in xpkMASH crunched if 020+ detected - BWCP_WritePixelArray8_020 (Pratt) built-in xpkMASH crunched if 020+ detected - BWCP_WriteChunkyPixels_020 (Pratt) built-in xpkMASH crunched if 020+ detected - FBlit (Stephen Brookes) if fastram (>$00FFFFFF) and 020+ detected : F_Draw_020 v3.08 with AW_Draw (Enrico Altavilla) F_BltPattern_020 v3.13 F_BltBitMap_020 v2.17 F_BltClear_020 v2.2 F_BltTemplate_020 v3.3 F_SetRast_020 v2.4 F_AddBob_020 v0.3 F_RemIBob_020 v0.2 F_Text_020 (Rick Pratt) R_ReadPixel R_WritePixel - R_BltClear optimised - R_WaitBlit optimised - R_VBeamPos_020 if 020+ detected - Five 'jsr R_VBeamPos' replaced by 'jsr -$180(a6)' - All 'jsr -$E4(a6)' replaced by faster 'bsr.w R_WaitBlit' - All 'jsr -$1C8(a6)' replaced by faster 'bsr.w R_OwnBlitter' - All 'jsr -$1CE(a6)' replaced by faster 'bsr.w R_DisownBlitter' - Chipset detection : R_GetColorMap_AGA is called if AGA/CD32 detected - Chipset detection : R_GetColorMap_OCS is called if OCS/ECS detected RTG graphic cards - These graphics cards ZII and ZIII are now detected at pwr on CyberVision 64 (8512/34) -> CyberGraphX CyberVision 64/3D Z2 (8512/67) -> CyberGraphX CyberVision 64/3D Z3 (8512/50) -> CyberGraphX Domino Z2 (2162/01/02) -> Picasso96 Domino Z3 (2167/01/02) -> Picasso96 Merlin Z2 (2117/??) -> Picasso96 Merlin Z3 (2117/3/4) -> Picasso96 Omnibus (2181/00) -> Picasso96 Picasso 2 (2167/11/12/13) -> CyberGraphX Picasso 2+ (2167/11/12/13) -> CyberGraphX Picasso 4 Z2 (2167/21/22/23/24) -> CyberGraphX Picasso 4 Z3 (????/??) -> CyberGraphX Picollo SD64 Z2 (2195/10/11) -> CyberGraphX Picollo SD64 Z3 (????/??) -> CyberGraphX Picollo Z2 (2195/05/06) -> CyberGraphX Picollo Z3 (????/??) -> CyberGraphX Rainbow 2 (2145/32) -> ? Rainbow 3 (2145/33) -> CyberGraphX Retina Z2 (18260/6) -> ? Retina BLT Z3 (18260/16) -> CyberGraphX Spectrum Z2 (2193/01/02) -> CyberGraphX Spectrum Z3 (2193/01/02) -> CyberGraphX Wildfire Inferno (????/??) -> CyberGraphX WinUAE (2011/02) -> Picasso96 - These PCI graphics cards are now detected at pwr on GRex/3dfx V3 2000SD 16 (????/??) -> CyberGraphX GRex/3dfx V3 2000SG 16 (????/??) -> CyberGraphX GRex/3dfx V3 3000SD 16 (????/??) -> CyberGraphX GRex/3dfx V3 3000SG 16 (????/??) -> CyberGraphX GRex/3dfx V3 3500 16 (????/??) -> CyberGraphX GRex/3dfx V4 4500 32 (????/??) -> CyberGraphX GRex/3dfx V5 5500 64 (????/??) -> CyberGraphX GRex/Permedia2 (????/??) -> CyberGraphX GRex/S3 Virge 86C325 (????/??) -> CyberGraphX GRex/S3 VirgeDX 86C375 (????/??) -> CyberGraphX GRex/SiS 6326 (????/??) -> CyberGraphX Mediator/Banshee 16 (121A/3) -> Picasso96 Mediator/3dfx V3 2000SD 16 (121A/5) -> Picasso96 Mediator/3dfx V3 2000SG 16 (121A/5) -> Picasso96 Mediator/3dfx V3 3000SD 16 (121A/5) -> Picasso96 Mediator/3dfx V3 3000SG 16 (121A/5) -> Picasso96 Mediator/3dfx V3 3500 16 (121A/5) -> Picasso96 Mediator/3dfx V4 4500 32 (121A/9) -> Picasso96 Mediator/3dfx V5 5500 64 (121A/9) -> Picasso96 Mediator/Radeon 9200 Mobility 64 (1002/ -> Picasso96 Mediator/Radeon 9200 Mobility 128 -> Picasso96 Mediator/Radeon 9200 128 -> Picasso96 Mediator/Radeon 9250 -> Picasso96 Mediator/Radeon 9200SE -> Picasso96 Mediator/S3 VirgeDX Britek 86C375 2 (5333/8A01) -> Picasso96 Mediator/S3 VirgeDX Britek 86C375 4 (5333/8A01) -> Picasso96 Mediator/S3 Virge Dataexpert 86C325 2 (5333/5631) -> Picasso96 Mediator/S3 Virge Dataexpert 86C325 4 (5333/5631) -> Picasso96 Mediator/S3 Trio32 Protac 86C732 (5333/8810) -> Picasso96 Prometheus/3dfx V3 2000SD 16 (????/??) -> Picasso96 Prometheus/3dfx V3 2000SG 16 (????/??) -> Picasso96 Prometheus/3dfx V3 3000SD 16 (????/??) -> Picasso96 Prometheus/3dfx V3 3000SG 16 (????/??) -> Picasso96 Prometheus/3dfx V3 4500 32 (????/??) -> Picasso96 Prometheus/3dfx V3 5500 64 (????/??) -> Picasso96 Prometheus/Radeon ? -> Picasso96 Blitter OCS/ECS/AGA removing (for 030+/fastram only) Done - R_BltBitMap -> F_BltBitMap_020 (Stephen Brookes) - R_BltClear -> F_BltClear_020 (Stephen Brookes) - R_BltPattern -> F_BltPattern_020 (Stephen Brookes) - R_BltTemplate -> F_BltTemplate_020 (Stephen Brookes) - R_Draw_020 -> F_Draw_020 (Stephen Brookes) - R_SetRast -> F_SetRast_020 (Stephen Brookes) - R_Text -> F_Text_020 (Rick Pratt) To do - About 10 functions who still use the blitter Rpp - v1.0 (Stephan Rupprecht and Morton Ericksen) - Romable (Cosmos) SystemPatch - v3.3 (Sante Nocciolino) - SP_TextFit_020 converted to SP_TextFit (Cosmos) Divu64 - v0.1 (Frank Wille) CpuBlit - v1.0 (Eddy Carroll) - v2.0 (Dave Jones) - Romable (Cosmos) IconBeFast - v1.16 (Peter Keunecke) - IBF_ObtainBestPenA_020 optimised with 16 bytes saved & use pOEP/sOEP (Cosmos) - IBF_ObtainBestPenA_020 converted to IBF_ObtainBestPenA (Cosmos) BlazeWCP - v1.74 (Rick Pratt) - Romable (Cosmos) - 100% PC relatif (Cosmos) - 2782 bytes saved with built-in xpkMASHed (Cosmos) FBlit - v3.79 (Stephen Brookes) - Romable (Cosmos) - 100% PC relatif (Cosmos) - All FBlit functions process in fastram only FText - v1.7 (Rick Pratt) - Romable (Cosmos) AmyWarp - v1.01 (Enrico Altavilla) - AW_Draw mixed with F_Draw_020 v3.08 (Cosmos) xpkMASH - v1.98 (Zdenek Kabelac) SetPatch - v40.17 (Workbench 3.1) - v44.40 (Workbench 3.9) - Disable R_WriteChunkyPixel patch when loading AmigaOS ROM Update - Disable R_WritePixelLine8 patch when loading AmigaOS ROM Update Installation OCS/ECS/AGA - Use ROMSplit v1.0rc15 with an A500-A2000 Kickstart v40.63 to extract the 'graphics.lib_40.24(OCS-ECS)' - 'spatch -oLibs:graphics.library_42.8b10 -pgfx_428b10.pch graphics.lib_40.24(OCS-ECS)' - Rename your SetPatch : 'Rename C:SetPatch C:SetPatch_ori' - SetPatch v44.40 : 'spatch -oC:SetPatch -psp_4440.pch C:SetPatch_ori' - SetPatch v40.17 : 'spatch -oC:SetPatch -psp_4017.pch C:SetPatch_ori' - Put LoadModule v40.11 (on Aminet) into C: - Update your StartUp-Sequence 'LoadModule Libs:graphics.library_42.8b10' before SetPatch - Reboot your computer - To check, run on a cli : 'version C:SetPatch' and 'version graphics.library' This beta is experimental - The OCS/ECS is 100% ok, but some functions use now fastram (if installed) instead of chip, so maybe some games won't like that. I'll certainly add a new option in the early-startup for keeping original routines - The AGA/CD32 is OCS/ECS with only R_GetColorMap updated. More changes were made for the last gfx chipset ? Benchmarks with 1260@80 - v40.24 WPATest/WPL8 : 161 kp & 507 kp - v40.25b9 WPATest/WPL8 : 703 kp & 3006 kp -> 436% & 592% faster - v40.24 WPATest/WPA8 : 164 kp & 512 kp - v40.25b9 WPATest/WPA8 : 1072 kp & 3768 kp -> 653% & 735% faster - v40.24 WPATest/WCP : 150 kp & 520 kp - v40.25b9 WPATest/WCP : 1069 kp & 3772 kp -> 712% & 725% faster To do - For R_WritePixelLine8, R_WritePixelArray8 and R_WriteChunkyPixels Use of Akiko if CD32 detected Use of Roxxler for ECS/OCS/AGA functions if CyberVision 64 detected Use PPC for ECS/OCS/AGA functions if BlizzardPPC or CyberVisionPPC detected - A switch-on-the-fly-without-any-reboot to toggle FBlit/original functions - Much more hands asm optimised original functions - Optimising Brookes, Pratt and Altavilla functions (5% faster is possible) - Tests to know if AW_BltClear_020 is really 300-400% faster than R_BltClear - graphics.library fully PC relatif - graphics.library fully 68060 pOEP/sOEP - Adding SetPatchMrgCop v2.0 for Brillance (What's this patch ?) - Adding HogWaitBlit for 020, 030 and 040 (not faster on 060@80) - Adding FScreen v0.21ntt - Adding CyberGraphX and Picasso96 WIP Summary graphics functions optimisation Status 001. R_AddAnimBob To do 002. R_AddBob Done 003. R_AddDisplayData Partially 004. R_AddDisplayInfoData Partially 005. R_AddFont - 006. R_AddVSprite Done 007. R_AllocDBufInfo Done 008. R_AllocBitMap To do 009. R_AllocRaster Done 010. R_AllocSpriteDataA To do 011. R_AndRectRegion Partially 012. R_AndRegionRegion Done 013. R_Animate To do 014. R_AreaDraw Done 015. R_AreaEllipse To do 016. R_AreaEnd To do 017. R_AreaMove Done 018. R_AskFont To do 019. R_AskSoftStyle To do 020. R_AttachPalExtra To do 021. R_AttempLockLayerRom - 022. R_BestModeIDA To do 023. R_BitMapScale To do 024. Blitter Interrupt 6 Done 025. R_BltBitMap Partially 025. R_BltBitMap_020 Partially 026. R_BltBitMapRastPort Done 027. R_BltClear Partially 027. R_BltClear_020 Partially 028. R_BltMaskBitMapRastPort Done 029. R_BltPattern To do 030. R_BltTemplate To do 031. R_CalcIVG To do 032. R_CBump To do 033. R_ChangeExtSpriteA To do 034. R_ChangeSprite To do 035. R_ChangeVPBitMap To do 036. R_ClearEOL Done 037. R_ClearRectRegion To do 038. R_ClearRegion Done 039. R_ClearScreen Done 040. R_ClipBlit Done 041. R_CloseFont To do 042. R_CloseMonitor Done 043. R_CMove To do 044. R_CoerceMode To do 045. R_CopySBitMap Done 046. R_CWait To do 047. R_DisownBlitter Done 048. R_DisposeRegion To do 049. R_DoCollision To do 050. R_Draw To do 051. R_DrawEllipse To do 052. R_DrawGList To do 053. R_EraseRect Done 054. R_ExtendFont To do 055. R_FindColor To do 056. R_FindDisplayInfo To do 057. R_Flood To do 058. R_FontExtend To do 059. R_FreeBitMap To do 060. R_FreeColorMap To do 061. R_FreeCopList To do 062. R_FreeCprList To do 063. R_FreeDBufInfo Done 064. R_FreeGBuffers To do 065. R_FreeRaster Done 066. R_FreeSprite To do 067. R_FreeSpriteData Done 068. R_FreeVPortCopLists To do 069. R_GetAPen - 070. R_GetBitMapAttr To do 071. R_GetBPen - 072. R_GetColorMap To do 073. R_GetDisplayInfoData Partially 074. R_GetDrMd - 075. R_GetExtSpriteA To do 076. R_GetGBuffers To do 077. R_GetOutlinePen - 078. R_GetRGB32 To do 079. R_GetRGB4 Done 080. R_GetRGB4_020 Done 081. R_GetRPAttrsA To do 082. R_GetSprite To do 083. R_GetVPModeID To do 084. R_GfxAssociate To do 085. R_GfxFree To do 086. R_GfxLookUp Done 087. R_GfxNew To do 088. graphicsPrivate9 To do 089. R_InitArea Done 090. R_InitBitMap Done 091. R_InitGels Done 092. R_InitGMasks To do 093. R_InitMasks To do 094. R_InitRastPort Done 095. R_InitTmpRas To do 096. R_InitView Done 097. R_InitVPort Done 098. R_LoadRGB32 Partially 099. R_LoadRGB32_020 Partially 100. R_LoadRGB4 To do 101. R_LoadView Partially 102. R_LockLayerRom - 103. R_MakeVPort To do 104. R_ModeNotAvailable To do 105. R_Move Done 106. R_MoveSprite To do 107. R_MrgCop Partially 108. R_NewRegion Done 109. R_NextDisplayInfo Done 110. R_ObtainBestPenA Done 111. R_ObtainPen To do 112. R_OpenFont To do 113. R_OpenMonitor To do 114. R_OrRectRegion To do 115. R_OrRegionRegion Done 116. R_OwnBlitter Done 117. R_PolyDraw To do 118. R_QBlit Done 119. R_QBSBlit Done 120. R_ReadPixel Done 121. R_ReadPixelArray8 To do 122. R_ReadPixelLine8 To do 123. R_RectFill Done 124. R_RectFill_020 Done 125. R_ReleasePen To do 126. R_RemFont To do 127. R_RemIBob Done 128. R_RemVSprite Done 129. R_ScalerDiv To do 130. R_ScrollRaster Done 131. R_ScrollRaster_020 Done 132. R_ScrollRasterBF Done 133. R_ScrollVPort Partially 134. R_SetABPenDrMd Done 135. R_SetABPenDrMd_020 Done 136. R_SetAPen Done 137. R_SetAPen_020 Done 138. R_SetBPen Done 139. R_SetBPen_020 Done 140. R_SetChipRev To do 141. R_SetCollision To do 142. R_SetDisplayInfoData Partially 143. R_SetDrMd Done 144. R_SetDrMd_020 Done 145. R_SetFont To do 146. R_SetMaxPen - 147. R_SetOutlinePen - 148. R_SetRast To do 149. R_SetRGB32 Done 150. R_SetRGB32CM To do 151. R_SetRGB4 To do 152. R_SetRGB4CM To do 153. R_SetRPAttrsA To do 154. R_SetSoftStyle To do 155. R_SetWriteMask - 156. R_SortGList To do 157. R_StripFont To do 158. R_SyncSBitMap Done 159. R_Text To do 160. R_TextExtent To do 161. R_TextFit Partially 162. R_TextLength To do 163. R_UCopperListInit To do 164. R_UnLockLayerRom - 165. R_VBeamPos Done 166. R_VBeamPos_020 Done 167. R_VideoControl To do 168. R_WaitBlit Done 169. R_WaitBOVP To do 170. R_WaitTOF Done 171. R_WeighTAMatch To do 172. R_WriteChunkyPixels Partially 173. R_WriteChunkyPixels_020 Partially 174. R_WritePixel Done 175. R_WritePixelArray8 Partially 176. R_WritePixelArray8_020 Partially 177. R_WritePixelLine8 Partially 178. R_WritePixelLine8_020 Partially 179. R_XorRectRegion To do 180. R_XorRegionRegion Done functions reworked : 62/168 = 34% done CyberGraphX v42.7rc6 patched functions (one new library is created : cybergraphics.library) 01. CGX4_AllocBitMap_020 02. CGX4_AllocDBufInfo_020 03. CGX4_AllocRaster_020 04. CGX4_AllocSpriteDataA_020 05. CGX4_AreaEnd_020 06. CGX4_BestModeIDA_020 07. CGX4_BltBitMap_020 08. CGX4_BltClear_020 09. CGX4_BltMaskBitMapRastPort_020 10. CGX4_BitMapScale_020 11. CGX4_BltPattern_020 12. CGX4_BltTemplate_020 13. CGX4_ChangeSprite_020 14. CGX4_ChangeVPBitMap_020 15. CGX4_CoerceMode_020 16. CGX4_Draw_020 17. CGX4_DrawEllipse_020 18. CGX4_DrawGList_020 19. CGX4_FreeBitMap_020 20. CGX4_FreeCprList_020 21. CGX4_FreeDBufInfo_020 22. CGX4_FindDisplayInfo_020 23. CGX4_Flood_020 24. CGX4_FreeSpriteData_020 25. CGX4_GetBitMapAttr_020 26. CGX4_GetDisplayInfoData_020 27. CGX4_GetRGB4_020 28. CGX4_GetRGB32_020 29. CGX4_LoadRGB32_020 30. CGX4_LoadRGB4_020 31. CGX4_LoadView_020 32. CGX4_ModeNotAvailable_020 33. CGX4_MoveSprite_020 34. CGX4_MakeVPort_020 35. CGX4_MrgCop_020 36. CGX4_NextDisplayInfo_020 37. CGX4_ReadPixel_020 38. CGX4_ReadPixelArray8_020 39. CGX4_ReadPixelLine8_020 40. CGX4_RemIBob_020 41. CGX4_ScrollVPort_020 42. CGX4_SetMaxPen_020 43. CGX4_SetRast_020 44. CGX4_SetRGB32_020 45. CGX4_SetRGB32CM_020 46. CGX4_SetRGB4_020 47. CGX4_Text_020 48. CGX4_TextExtent_020 49. CGX4_TextFit_020 50. CGX4_TextLenght_020 51. CGX4_WaitBOVP_020 52. CGX4_WriteChunkyPixels_020 53. CGX4_WritePixel_020 54. CGX4_WritePixelArray8_020 55. CGX4_WritePixelLine8_020 Picasso96 v40.3994 patched functions (two new libraries are created : cybergraphics.library and rtg.library) 01. P96_AddBob_020 02. P96_AllocBitMap_020 03. P96_AllocDBufInfo_020 04. P96_AreaEnd_020 05. P96_AttemptLockLayerRom_020 06. P96_BitMapScale_020 07. P96_BltBitMap_020 08. P96_BltBitMapRastPort_020 09. P96_BltClear_020 10. P96_BltMaskBitMapRastPort_020 11. P96_BltPattern_020 12. P96_BltTemplate_020 13. P96_ChangeVPBitMap_020 14. P96_Draw_020 15. P96_DrawEllipse_020 16. P96_DrawGList_020 17. P96_Flood_020 18. P96_FreeBitMap_020 19. P96_FreeDBufInfo_020 20. P96_GetBitMapAttr_020 21. P96_GetRGB32_020 22. P96_LoadView_020 23. P96_LockLayerRom_020 24. P96_ObtainBestPenA_020 25. P96_ReadPixel_020 26. P96_ReadPixelLine8_020 27. P96_RectFill_020 28. P96_RemIBob_020 29. P96_ScrollVPort_020 30. P96_SetMaxPen_020 31. P96_SetRast_020 32. P96_SetRGB32_020 33. P96_SetWriteMask_020 34. P96_Text_020 35. P96_UnlockLayerRom_020 36. P96_WaitBOVP_020 37. P96_WaitTOF_020 38. P96_WriteChunkyPixels_020 39. P96_WritePixel_020 40. P96_WritePixelArray8_020 41. P96_WritePixelLine8_020 Fast assembler now R_GfxLookUp_v40.24_(102 bytes) R_GfxLookUp_v42.8_(52 bytes) link a5,#-8 move.l a6,-(sp) movem.l a2-a3/a6,-(sp) move.l a0,d0 move.l a0,a3 bsr.w AJL_0_8F64 move.l a3,d0 move.l $15A(a6),a1 jsr AJL_0_8F64 move.l a0,d1 move.l $15A(a6),a0 move.l $1F8(a6),a0 move.l d0,$C(sp) asl.l #2,d0 move.l a0,$10(sp) move.l $1A4(a6),a6 move.l a6,-(sp) add.l d0,a1 move.l $1F8(a6),a0 jsr -$234(a6) move.l $1A4(a6),a6 JL_0_13D64 jsr -$234(a6) move.l (a1),a1 move.l (sp)+,a6 move.l a1,d0 move.l $C(sp),d0 beq.b JL_0_13D72 asl.l #2,d0 cmp.l $18(a1),d1 move.l $10(sp),a0 bne.b JL_0_13D64 add.l d0,a0 JL_0_13D72 move.l (a0),a2 jsr -$23A(a6) bra.b JL_0_13D66 move.l (sp)+,a6 JL_0_13D64 move.l a1,d0 move.l (a2),a2 rts JL_0_13D66 move.l a2,d0 beq.b JL_0_13D72 move.l $18(a2),a0 cmp.l a3,a0 bne.b JL_0_13D64 JL_0_13D72 move.l a6,-(sp) move.l $1F8(a6),a0 move.l $1A4(a6),a6 jsr -$23A(a6) move.l (sp)+,a6 move.l a2,d0 movem.l (sp)+,a2-a3/a6 unlk a5 rts R_WaitBlit_v40.24_(48 bytes) R_WaitBlit_v42.8_(12 bytes) tst.b _custom+DMACONR btst #$06,_custom+DMACONR btst #$06,_custom+DMACONR bne.b R_WaitBlit bne.b JL_0_6B5E rts rts JL_0_6B5E tst.b CIAA_PORTREG_A tst.b CIAA_PORTREG_A btst #$06,_custom+DMACONR bne.b JL_0_6B5E tst.b _custom+DMACONR rts R_NextDisplayInfo_v40.24_(40 bytes) R_NextDisplayInfo_v42.8_(22 bytes) move.l d7,-(sp) move.l $196(a6),a0 move.l d0,d7 bsr.w JL_0_16E86 bra.b JL_0_170C2 moveq #-1,d1 JL_0_170B8 cmp.l d0,d1 move.l d7,d0 beq.b JL_0_167E8 and.w #$FFFF,d0 move.l d0,d1 addq.l #1,d0 addq.l #1,d1 bne.b JL_0_170D4 beq.b R_NextDisplayInfo JL_0_170C2 JL_0_167E8 move.l d7,d0 rts move.l $196(a6),a0 jsr JL_0_16E86(PC) move.l d0,d7 moveq #-1,d0 cmp.l d0,d7 bne.b JL_0_170B8 JL_0_170D4 move.l d7,d0 move.l (sp)+,d7 rts R_OrRegionRegion_v40.24_(72 bytes) R_OrRegionRegion_v42.8_(56 bytes) movem.l d2/a0-a2,-(sp) move.l 8(a0),d0 move.l a0,a2 beq.b JL_0_14E19 move.l a1,a0 movem.l d2-d3/a0-a3,-(sp) lea 8(a2),a1 lea 2(a0),a2 move.l (a1),d2 move.l a1,a0 beq.b JL_0_14D9E JL_0_14DE9 JL_0_14D6E move.l d0,a3 move.l d2,a1 movem.w 8(a3),d0-d3 move.l (a1),d2 add.w -(a2),d0 move.l 8(a1),d0 add.w (a2)+,d2 move.l $C(a1),d1 add.w (a2),d1 add.w 2(a2),d0 add.w (a2),d3 swap d0 movem.w d0-d3,-(sp) add.w (a2),d0 move.l sp,a1 swap d0 bsr.w R_OrRectRegion add.w 2(a2),d1 addq.w #8,sp swap d1 move.l (a3),d0 add.w (a2),d1 bne.b JL_0_14DE9 swap d1 movem.l (sp)+,d2-d3/a0-a3 movem.l d0-d1,-(sp) JL_0_14E19 move.l sp,a1 moveq #1,d0 bsr.w R_OrRectRegion rts addq.l #8,sp tst.l d2 bne.b JL_0_14D6E JL_0_14D9E movem.l (sp)+,d2/a0-a2 moveq #1,d0 rts