home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!cbmvax!peter
- From: peter@cbmvax.commodore.com (Peter Cherna)
- Newsgroups: comp.sys.amiga.programmer
- Subject: Re: New hardware reference guide?
- Message-ID: <37106@cbmvax.commodore.com>
- Date: 17 Nov 92 16:58:58 GMT
- References: <36847@cbmvax.commodore.com> <BxM1ED.J61@visix.com> <37025@cbmvax.commodore.com> <1992Nov16.194518.14603@lmpsbbs.comm.mot.com>
- Reply-To: peter@cbmvax.commodore.com (Peter Cherna)
- Organization: Commodore-Amiga, Inc. West Chester, PA.
- Lines: 52
- Keywords: n
-
- In article <1992Nov16.194518.14603@lmpsbbs.comm.mot.com> rittle@supra.comm.mot.com (Loren James Rittle) writes:
- >Can anyone explain in what way certain games (see ``The Problem''
- >below) are breaking under AGA?
- >
- >From Chris' comment, I have a sneaking suspicion that it has to do with
- >games assuming that they know what the BytesPerRow will be for a given
- >screen size.
- >
- >What changed ECS -> AGA and OS 2.0 -> OS 3.0 to cause this problem?
-
- The higher fetch modes require higher alignment restrictions on bitplanes.
- Under ECS, BytesPerRow must be a multiple of 16 bits (2 bytes). Under AGA,
- this number must be a multiple of a higher number (eg. 32 or 64 bits).
- There was no way to patch InitBitMap() or AllocRaster(), since they're used
- by different programs in all kinds of different ways that effectively
- preclude this. The new AllocBitMap() call hides all ugly details.
-
- Intuition uses AllocBitMap(), even for old callers. If you open an
- Intuition screen which is (say) 330 pixels wide, if you do your own
- rendering and assume BytesPerRow to be 336 (next highest multiple
- of 16), you're going to get this diagonal streaking. If you actually
- read BytesPerRow, you'd find 352 or 384 or somesuch (MAY CHANGE
- AGAIN IN THE FUTURE -- that's why you now want to use AllocBitMap()).
-
- When the system can, it drops the bandwidth to accomodate insufficiently
- aligned bitplanes. When it can't, skewed output is the result.
-
- Also, 3.0 supports "interleaved bitmaps", which blit a bit faster and
- look a lot better. In this case, BytesPerRow * 8 doesn't even come
- close to being the bitmap width. That's another assumption that can't
- continue to be valid. BytesPerRow is defined as: the number of bytes I
- have to add to the current address in order to get to the same pixel
- of the next line. For interleaved bitmaps, this number will be larger
- than you'd expect otherwise.
-
- We do a fair amount of compatibility work (basically, an AGA system
- looks very much like an ECS system when first booted, until SetPatch
- calls a special graphics.library entry point that says "go wild".)
- This allows boot-disks of old games to continue to work. AGA games
- would call this "go wild" function themselves. Also, BootMenu allows
- you to override this, which allows ECS-only games to run off say the
- hard disk.
-
- >Loren J. Rittle (rittle@comm.mot.com)
-
- Peter
- --
- Peter Cherna, User Interface Development Group, Commodore-Amiga, Inc.
- {uunet|rutgers}!cbmvax!peter peter@cbmvax.commodore.com
- My opinions do not necessarily represent the opinions of my employer.
- "I believe it's bad luck to be superstitious."
-
-