[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

  * Do not rely on the order of Copper list instructions.  The Release 2
    MrgCop() function builds different Copper lists to that of 1.3, by
    including new registers in the list (e.g., MOVE xxxx,DIWHIGH).  This
    changes the positions of  the  other  instructions.  We  know  of one
    game that 'assumes' the BPLxPTRs  would be at a certain offset in the
    Copper list, and that is now broken on machines running 2.0 with the
    new Denise chip.

  * Graphics and layers functions which use the blitter generally return
    after starting the final blit.  If you are mixing graphics rendering
    calls and processor access of the same memory, you must WaitBlit()
    before touching (or deallocating) the source or destination memory
    with the processor.  For example, the Text() function is faster in
    Release 2, causing some programs to trash partial lines of text.

  * ColorMap structure is bigger.  Programs must use GetColorMap() to
    create one.

  * Blitter rtns decide ascend/descend on 1st plane only.

  * Changing the display mode of an existing screen or viewport while
    open is still not a supported operation.

  * GfxBase DisplayFlags and row/cols may not match Workbench screen.

  * Do not hardcode modulo values - use BitMap->BytesPerRow.

  * If the graphics Autodocs say that you need a TmpRas of a certain size
    for some functions, then you must make that the minimum size.  In
    some cases, before 2.0, you may have gotten away with using a smaller
    TmpRas with some functions (for example Flood()).  To be more robust,
    graphics now checks the TmpRas size and will fail the function call
    if the TmpRas is too small.

  * ECS chips under 2.0 generate displays differently. The display window
    registers now control DMA.

  * LoadRGB4() used to poke colors into the active copperlist with no
    protection against deallocation of that copperlist while it was being
    poked.  Under 2.0, semaphore protection of the copperlist was added
    to LoadRGB4() which makes it totally incorrect and extremely
    dangerous to call LoadRGB4() during an interrupt.  The general
    symptom of this problem is that a system deadlock can be caused by
    dragging one screen up and down while another is cycling.  Color
    cycling should be performed from within a task, not an interrupt.  In
    general, the only functions which may be safely called from within an
    interrupt are the small list of Exec functions documented in the
    "Exec Interrupts" chapter.


[Back to Amiga Developer Docs]