English Amiga Board


Go Back   English Amiga Board > Main > Nostalgia & memories

 
 
Thread Tools
Old 09 November 2007, 14:24   #1
gimbal
cheeky scoundrel

gimbal's Avatar
 
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 39
Posts: 4,153
technical question about amigas

When I was playing with my Amiga I was only 7-14 years old, so I didn't know anything about programming or the technical details of an Amiga at that time (I knew the difference between fast and chip ram, that was about it). While reading through all the threads in this forum I often come across the mentioning of the "copper trick" to get more than 16 colors on the screen.

Can someone explain to me how this works? I have the idea that the copper is a piece of hardware, is it like programming it manually to make it do things it wasn't designed to do or something?
gimbal is offline  
Old 09 November 2007, 14:36   #2
pbareges
Registered User
pbareges's Avatar
 
Join Date: Feb 2005
Location: montreal / canada
Age: 44
Posts: 722
Quote:
Originally Posted by gimbal View Post
When I was playing with my Amiga I was only 7-14 years old, so I didn't know anything about programming or the technical details of an Amiga at that time (I knew the difference between fast and chip ram, that was about it). While reading through all the threads in this forum I often come across the mentioning of the "copper trick" to get more than 16 colors on the screen.

Can someone explain to me how this works? I have the idea that the copper is a piece of hardware, is it like programming it manually to make it do things it wasn't designed to do or something?
i think that basically it allows you to change video hardware registers between scanlines (meaning colors palette, screen resolution, color depth...) so that you can display different screens at different resolutions with different color palettes at once...hence the more than 32 COLOURS trick (not 16- half bright mode allows 64 colours also but with real choice among 32 colours)..

from wikipedia :

[edit] Copper

The copper is another sub-component of Agnus; The name is short for "co-processor". The copper is a programmable finite state machine that executes a programmed instruction stream, synchronized with the video hardware.
When it is turned on, the copper has three states; either reading an instruction, executing it, or waiting for a specific video beam position. The copper runs a program called the copper list in parallel with the main CPU. The copper runs in sync with the video beam, and it can be used to perform various operations which require video synchronization. Most commonly it is used to control video output, but it can write to any of the chipset registers and thus can be used to set audio registers or interrupt the CPU.
The copper list has three kinds of instructions, each one being a pair of two bytes, four bytes in total:
  • The MOVE instruction writes a 16-bit value into one of the chipset's hardware registers.
  • The WAIT instruction halts copper execution until a given beam position is reached, thus making possible to synchronize other instructions with respect to screen drawing. It can also wait for a blitter operation to finish.
  • The SKIP instruction will skip the following copper instruction if a given beam position has already been reached. This can be used to create copper list loops.
The length of the copper list program is limited by execution time. The copper restarts executing the copper list at the start of each new video frame. There is no explicit "end" instruction, instead the WAIT instruction is used to wait for a location which is never reached.

[edit] Uses of the copper
  • The copper is most commonly used to set and reset the video hardware registers on each frame. It can also be used to change video hardware mid-frame. This allows the Amiga to change video configuration, including resolution, between scanlines. The Amiga can display different horizontal resolutions and color depths on the same screen. The AmigaOS graphical user interface allows two programs to operate at different resolutions, while both are visible on the screen simultaneously. A paint program might use this feature to allow users to draw directly on a low resolution Hold And Modify screen, while offering a high resolution toolbar at the top or bottom of the screen.
  • The copper can also change color registers once per scanline, creating the "raster bars" effect seen commonly in Amiga games. The copper can go further than this and change the background color often enough to make a blocky graphics display without using any bitmap graphics at all.
  • The copper allows "re-use" of sprites; after a sprite has been drawn at its programmed location, the copper can then immediately move it to a new location and it will be drawn again, even on the same scanline.
  • The copper can also be used to program and operate the blitter. This is useful for doing several blitter operations in sequence, as the copper can wait for the blitter to finish and then immediately reprogram it for the next operation.
  • The copper can be used to produce "sliced HAM", or S-HAM[1], this consists of building a copper list that switches the palette on every scanline, improving the choice of base colours in Hold And Modify mode graphics.
pbareges is offline  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Looking for technical manuals Leandro Jardim Retrogaming General Discussion 5 30 December 2012 15:36
WB technical question... nikvest support.Apps 6 16 April 2008 09:13
HOL / PHP technical question terryhan HOL suggestions and feedback 3 06 July 2007 12:08
Technical question on 3.5" HD and Amiga 1200 Bloodwych support.Hardware 17 16 April 2002 12:57
Technical question about C64 Shatterhand Retrogaming General Discussion 19 13 October 2001 14:06

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 19:29.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, vBulletin Solutions Inc.
Page generated in 0.08343 seconds with 15 queries