En bitmap är normalt uppbyggd av ett antal linjer/rader som ligger efter varandra i grafikkortets minne. Pga optimeringar i grafikchipet finns det begränsningar för vilka adresser linjerna kan börja på (alignment). Denna alignment är inte lika rättframt som för en processor som normalt t.ex har sina cache-lines alignade efter 2^X Bytes (X konstant), utan denna förändras med linjelängden.

Eftersom denna alignment till största del beror på hårdvaran - det enda grafikkortsdrivaren kan göra är ju att använda längre linjer än vad som krävs av hårdvaran men som ändå stämmer överens med hårdvarans alignment, så finns det i CGX/P96 ingen begränsning på hur den ska se ut, för annars skulle det inte kunna fungera med ett godtyckligt grafikchip.

Detta innebär då att det pga grafikhårdvaran och till viss del grafikkortsdrivaren finns ett antal längder linjerna i bitmappar kan vara och begärs någonting emellan dessa längder kommer man att få nästa större längd på linjerna även om bara den begärda längden kommer att vara synlig.

I det ovanstående fallet kommer det då efter sista synliga pixeln på varje linje att vara ett mellanrum i grafikkortsminnet tills början på nästa linje.

För att få det att fungera även i sådana fall måste man då se till att hoppa över detta möjliga mellanrum och börja skriva nästa linjes pixlar efter det.

Från LockBitMapTagList() kan man få ut LBMI_BYTESPERROW vilket är den verkliga längden på bitmappens linjer/rader i Bytes och med nåt i stil med LBMI_BASEADDRESS + linjenr * LBMI_BYTESPERROW får man startadressen för varje linje.

Skriver man de linjer av pixlar man tänkt skriva i bitmappen vid dessa startadresser för var linje hoppar man över dessa möjliga mellanrum och får inte korrupt grafik oavsett om längden på bitmappens linjer i grafikminnet överensstämmer med vad man begärt eller ej.

I de flesta fall av grafikkort + grafikkortsdrivrutiner kommer de bitmappar som skapas för skärmar med normala bredder som 320, 640 eller 800 att ha linjer med samma längd som den synliga och efterfrågade längden, men vissa kombinationer som t.ex CV64 + CGX4 ger bland annat 640 pixels linjer i bitmappar med efterfrågad bredd från 320 pixlar till 640 pixlar. Så i det fallet skulle en en bitmap för en 320 pixels skärm ha 640 pixels linjer och då 320 pixlars mellanrum till början av nästa linje efter de synliga pixlarna på varje linje.

Här nedanför finns en tjog med data där man kan kan jämföra LBMI_BYTESPERROW med efterfrågad bredd * LBMI_BYTESPERPIX för en mängd efterfrågade upplösningar på bitmappar plus massa mer. Väldigt stora dumpar av info och tyvärr är endast 1/16 av varje fil är intressant då höjden inte spelar någon roll.

CyberVision64:
CyberVisionPPC: