Hold-And-Modify , usually abbreviated as HAM , is a display mode of the Commodore Amiga computer. It uses a highly unusual technique to express the color of pixels, allowing many more colors to appear on screen than would otherwise be possible. HAM mode was commonly used to display digitized photographs or video frames, bitmap art and occasionally animation. At the time of the Amiga's launch in 1985, this near-photorealistic display was unprecedented for a home computer and it was widely used to demonstrate the Amiga's graphical capability. However, HAM has significant technical limitations which prevent it from being used as a general purpose display mode.
118-475: The original Amiga chipset uses a planar display with a 12-bit RGB color space that produces 4096 possible colors. The bitmap of the playfield was held in a section of main memory known as chip RAM , which was shared between the display system and the main CPU . The display system usually used an indexed color system with a color palette . The hardware contained 32 registers that could be set to any of
236-413: A 16-bit repeating pattern to the line. The line mode can also be used to draw rotated bobs: each line of bob data is used as line pattern while the line mode draws the tilted bob line by line. The blitter's filling mode is used to fill per-line horizontal spans. On each span, it reads each pixel in turn from right to left. Whenever it reads a set pixel, it toggles filling mode on or off. When filling mode
354-468: A better representation of data. Another use is for backward compatibility and graceful degradation : in color television, encoding color via a luminance - chrominance transform domain (such as YUV ) means that black-and-white sets display the luminance, while ignoring the color information. Another example is chroma subsampling : the use of color spaces such as YIQ , used in NTSC , allow one to reduce
472-421: A "dual-playfield" mode. Denise also handles mouse and digital joystick input. Paula is primarily the audio chip, with four independent hardware-mixed 8-bit PCM sound channels, each of which supports 65 volume levels (no sound to maximum volume) and waveform output rates from roughly 20 samples per second to almost 29,000 samples per second. Paula also handles interrupts and various I/O functions including
590-457: A HAM8 image cannot exceed 829,440 (1440×576) using PAL modes but can exceed 1,310,720 (1280×1024) using third-party display hardware (Indivision AGA flicker-fixer ). Like the original HAM mode, a HAM8 screen cannot display any arbitrary color at any arbitrary position, since every pixel relies on either a limited palette or relies on up to two color components of the previous pixel. As with the original HAM mode, designers may also choose to 'slice'
708-403: A certain amount of information, and there is a lower bound to the size of a file that can still carry all the information. Basic information theory says that there is an absolute limit in reducing the size of this data. When data is compressed, its entropy increases, and it cannot increase indefinitely. For example, a compressed ZIP file is smaller than its original, but repeatedly compressing
826-536: A dedicated text mode. Finally, Denise next to the CIAs is responsible for handling mouse/joystick X/Y inputs. The notion that Denise fetches bit plane and sprite data is a simplification. It is Agnus who is maintaining horizontal and vertical screen position counters and initiating the DRAM read operations. Denise has a number of bit plane registers which hold 16 bits of data each, enough to draw 16 pixels. When Agnus issues
944-481: A distinct color for each pixel if a 256-pixel-wide video mode was defined, and in higher resolutions even a single 256-color palette for the entire screen, let alone each line, allowed much more effective and accurate simulation of higher color depths using dithering than could be achieved with only 32. The original purpose of HAM, which was to allow more color resolution despite limited video buffer size and limited memory bandwidth, had become largely irrelevant thanks to
1062-610: A given perceived fidelity of display, by storing and transmitting the luminance at full resolution, but chrominance at a relatively lower resolution - a technique shared with image compression techniques like JPEG and MPEG , as well as in other HSV/YUV based video modes such as the YJK encoding of the V9958 MSX-Video chip (first used in the MSX2+ ). The variant of HSV encoding used in the original form of HAM allowed for prioritising
1180-507: A lossy format and a lossless correction which when combined reproduce the original signal; the correction can be stripped, leaving a smaller, lossily compressed, file. Such formats include MPEG-4 SLS (Scalable to Lossless), WavPack , OptimFROG DualStream , and DTS-HD Master Audio in lossless (XLL) mode ). Researchers have performed lossy compression on text by either using a thesaurus to substitute short words for long ones, or generative text techniques, although these sometimes fall into
1298-545: A lot of fine detail during a very loud passage. Developing lossy compression techniques as closely matched to human perception as possible is a complex task. Sometimes the ideal is a file that provides exactly the same perception as the original, with as much digital information as possible removed; other times, perceptible loss of quality is considered a valid tradeoff. The terms "irreversible" and "reversible" are preferred over "lossy" and "lossless" respectively for some applications, such as medical image compression, to circumvent
SECTION 10
#17327907423651416-552: 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
1534-458: A selective loss of the least significant data, rather than losing data across the board. Further, a transform coding may provide a better domain for manipulating or otherwise editing the data – for example, equalization of audio is most naturally expressed in the frequency domain (boost the bass, for instance) rather than in the raw time domain. From this point of view, perceptual encoding is not essentially about discarding data, but rather about
1652-528: A significant advantage over competing systems. HAM allows display of all 4096 colors simultaneously, though with the aforementioned limitations. This pseudo-photorealistic display was unprecedented for a home computer of the time and allowed display of digitized photographs and rendered 3D images. In comparison, the then IBM-PC standard EGA allowed 16 on-screen colors from a palette of 64. EGA's successor VGA released in 1987 with its flagship games mode, Mode 13h , allowed 256 on-screen colors from 262,144. HAM mode
1770-433: A single frame to increase the total sprites per frame. Sprite position registers may also be changed during a scanline, increasing the total number of sprites on a single scanline. However, the sprite data , or shape, is only fetched a single time per scanline and can't change. The first Amiga game to utilize the sprite re-position registers during a scanline was Hybris released in 1988. The Denise chip does not support
1888-582: A user acquires a lossily compressed file, (for example, to reduce download time) the retrieved file can be quite different from the original at the bit level while being indistinguishable to the human ear or eye for most practical purposes. Many compression methods focus on the idiosyncrasies of human physiology , taking into account, for instance, that the human eye can see only certain wavelengths of light. The psychoacoustic model describes how sound can be highly compressed without degrading perceived quality. Flaws caused by lossy compression that are noticeable to
2006-493: A video mode with higher horizontal scan rate . Alternately, Paula may signal the CPU to load a new sample into any of the four audio output buffers by generating an interrupt when a new sample is needed. This allows for output rates that exceed 57 kHz per channel and increases the number of possible voices (simultaneous sounds) through software mixing. The Amiga contains an analog low-pass filter ( reconstruction filter ) which
2124-531: A way that reduces the size of a computer file needed to store it, or the bandwidth needed to transmit it, with no loss of the full information contained in the original file. A picture, for example, is converted to a digital file by considering it to be an array of dots and specifying the color and brightness of each dot. If the picture contains an area of the same color, it can be compressed without loss by saying "200 red dots" instead of "red dot, red dot, ...(197 more times)..., red dot." The original data contains
2242-643: A write to register 1, all registers are then transferred into separate shift registers from which pixels are generated (at the same time new values are loaded from DRAM). Denise is not aware of any memory addresses either. The Paula chip, designed by Glenn Keller, from MOS Technology , is the interrupt controller , but also includes logic for audio playback, floppy disk drive control, serial port input/output and mouse/joystick buttons two and three signals. The logic remained functionally identical across all Amiga models from Commodore. Paula has four DMA -driven 8-bit PCM sound channels. Two sound channels are mixed into
2360-469: Is Direct Memory Access (DMA), where Agnus is the DMA Controller (DMAC). Agnus has a complex and priority-based memory access policy that attempts to best coordinate requests for memory access among competing resources. For example, bitplane data fetches are prioritized over blitter transfers as the immediate display of frame buffer data is considered more important than the processing of memory by
2478-617: Is a main goal of transform coding, it also allows other goals: one may represent data more accurately for the original amount of space – for example, in principle, if one starts with an analog or high-resolution digital master , an MP3 file of a given size should provide a better representation than a raw uncompressed audio in WAV or AIFF file of the same size. This is because uncompressed audio can only reduce file size by lowering bit rate or depth, whereas compressing audio can reduce size while maintaining bit rate and depth. This compression becomes
SECTION 20
#17327907423652596-433: Is a type of data compression used for digital images , digital audio signals , and digital video . The transformation is typically used to enable better (more targeted) quantization . Knowledge of the application is used to choose information to discard, thereby lowering its bandwidth . The remaining information can then be compressed via a variety of methods. When the output is decoded, the result may not be identical to
2714-493: Is achieved by playing the high byte of a 16-bit sample at maximum volume, and the low byte at minimum volume (both ranges overlap, so the low byte needs to be shifted right two bits). The bit shift operation requires a small amount of CPU or blitter overhead, whereas conventional 8-bit playback is almost entirely DMA driven. This technique was incorporated into the retargetable audio subsystem AHI , allowing compatible applications to use this mode transparently. The floppy controller
2832-532: Is also available where only 5 bits of data per pixel are used. The sixth bit is always zero, so only the blue color component can be modified. Because only the blue component can be modified without a SET command, the effect is limited to moderate increase of the number of yellow-blue color shades displayed. This mode is not as flexible as HAM6 and not widely used. On the AGA chipset, HAM5 no longer exists. It's also possible to use HAM mode with 4 bitplanes. Practical use
2950-419: Is arbitrary, thus if 32 colors are not needed, 2, 4, 8 or 16 can be used instead. The number of bitplanes (and resolution) can be changed on the fly, usually by the Copper. This allows for very economical use of RAM, and balancing of CPU processing speed vs graphical sophistication when executing from Chip RAM (as modes beyond 4bpp in lores, or 2bpp in hires, use extra DMA channels that can slow or temporarily halt
3068-530: Is based directly on the NTSC colorburst clock, these sizes very nearly fill the width of a standard television with only a thin "underscan" border between the graphics and the screen border when compared to many other contemporary home computers, for an appearance closer to a games console but with finer detail. On top of this, Denise supports reasonably extensive overscan; technically modes with enough data for up to 400 or 800 pixels (+25%) may be specified, although this
3186-571: Is because these types of data are intended for human interpretation where the mind can easily "fill in the blanks" or see past very minor errors or inconsistencies – ideally lossy compression is transparent (imperceptible), which can be verified via an ABX test . Data files using lossy compression are smaller in size and thus cost less to store and to transmit over the Internet, a crucial consideration for streaming video services such as Netflix and streaming audio services such as Spotify . When
3304-591: Is equivalent to two low resolution (140 ns) pixels or four high resolution (70 ns) pixels. Like Denise, these timings were designed for display on household TVs , and can be synchronized to an external clock source. The blitter is a sub-component of Agnus. "Blit" is shorthand for "block image transfer" or bit blit . The blitter is a highly parallel memory transfer and logic operation unit. It has three modes of operation: copying blocks of memory, filling blocks (e.g. polygon filling) and line drawing. The blitter allows rapid copying of video memory, meaning that
3422-575: Is external to Paula. The filter is a 12 dB/oct Butterworth low-pass filter at approximately 3.3 kHz. The filter can only be applied globally to all four channels. In models after the Amiga ;1000 (excluding the very first revision of the Amiga 500), the brightness of the power LED is used to indicate the status of the filter. The filter is active when the LED is at normal brightness, and deactivated when dimmed (on early Amiga 500 models
3540-409: Is limited, but this technique was used in demos. It is possible to set up HAM mode with 7 bitplanes on OCS/ECS, but that will use only 4 bitplanes. This technique was demonstrated in the “HAM Eager” demo. On the AGA chipset, HAM7 no longer exists. The Original Amiga Chipset included a support chip known as the " Copper " that handles interrupts and other timing and housekeeping duties independently of
3658-658: Is most commonly used to do direct copies (D = A), or apply a pixel mask around blitted objects (D = (C AND B) OR A). The copy can also barrel shift each line by 0 to 15 pixels. This allows the blitter to draw at pixel offsets that are not exactly multiples of 16. These functions allow the Amiga to move GUI windows around the screen rapidly as each is represented in graphical memory space as a rectangular block of memory which may be shifted to any required screen memory location at will. The blitter's line mode draws single-pixel thick lines using Bresenham's line algorithm . It can also apply
Hold-And-Modify - Misplaced Pages Continue
3776-453: Is no explicit "end" instruction; instead, the WAIT instruction is used to wait for a location which is never reached. Under normal circumstances, the Amiga generates its own video timings, but Agnus also supports synchronising the system to an external signal so as to achieve genlocking with external video hardware. There is also a 1-bit output on this connector that indicates whether the Amiga
3894-569: Is noticed by the end-user. Even when noticeable by the user, further data reduction may be desirable (e.g., for real-time communication or to reduce transmission times or storage needs). The most widely used lossy compression algorithm is the discrete cosine transform (DCT), first published by Nasir Ahmed , T. Natarajan and K. R. Rao in 1974. Lossy compression is most commonly used to compress multimedia data ( audio , video , and images ), especially in applications such as streaming media and internet telephony . By contrast, lossless compression
4012-478: Is often the case in practice, to produce a representation with lower resolution or lower fidelity than a given one, one needs to start with the original source signal and encode, or start with a compressed representation and then decompress and re-encode it ( transcoding ), though the latter tends to cause digital generation loss . Another approach is to encode the original signal at several different bitrates, and then either choose which to use (as when streaming over
4130-402: Is on, it sets every pixel until filling mode is turned off or the line ends. Together, these modes allow the blitter to draw individual flat-shaded polygons. Later Amigas tended to use a combination of a faster CPU and blitter for many operations. 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
4248-440: Is only actually useful for scrolling and special effects that involve partial display of large graphics, as a separate hardware limit is met at 368 (or 736) pixels, which is the maximum that will fit between the end of one blanking period and the start of the next - although it is unlikely that even this many pixels will be visible on any display other than a dedicated monitor that allows adjustment of horizontal scan width, as much of
4366-402: Is outputting background color or not, permitting easy overlaying of Amiga video onto external video. This made the Amiga particularly attractive as a character generator for titling videos and broadcast work, as it avoided the use and expense of A/B roll and chroma key units that would be required without the genlock support. The support of overscan, interlacing and genlocking capabilities, and
4484-438: Is rudimentary, using programmed input/output only and lacking a FIFO buffer. However, virtually any bit rate can be selected, including all standard rates, MIDI rate, as well as extremely high custom rates. Lossy compression In information technology , lossy compression or irreversible compression is the class of data compression methods that uses inexact approximations and partial data discarding to represent
4602-495: Is the central chip in the design. It controls all access to chip RAM from both the central 68000 processor and the other custom chips, using a complicated priority system. Agnus includes sub-components known as the blitter (fast transfer of data in memory without the intervention of the processor) and the Copper (video-synchronized co-processor). The original Agnus can address 512 KB of chip RAM. Later revisions, dubbed 'Fat Agnus', added 512 KB pseudo-fast RAM, which for ECS
4720-424: Is typically required for text and data files, such as bank records and text articles. It can be advantageous to make a master lossless file which can then be used to produce additional copies from. This allows one to avoid basing new compressed copies off of a lossy source file, which would yield additional artifacts and further unnecessary information loss . It is possible to compress many types of digital data in
4838-420: Is unlikely that any further developments of the technique would have been bothered with had it survived to the present day. HAM mode places restrictions on the value of adjacent pixels on each horizontal line of the playfield. In order to render two arbitrary colors adjacently, it may take up to two intermediary pixels to change to the intended color (if the red, green and blue components must all be modified). In
Hold-And-Modify - Misplaced Pages Continue
4956-449: Is unusually flexible. It can read and write raw bit sequences directly from and to the disk via DMA or programmed I/O at 500 ( double density ) or 250 kbit/s ( single density or GCR). MFM or GCR were the two most commonly used formats though in theory any run-length limited code could be used. It also provides a number of convenient features, such as sync-on-word (in MFM coding, $ 4489
5074-433: Is used to control video output, but it can write to most of the chipset registers and thus can be used to initiate blits, 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 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
5192-549: Is used, artifacts becomes particularly noticeable in areas of sharp contrast (strong horizontal image gradients ), where an undesirable multi-hued artifact or "fringe" may appear. Various rendering techniques were used to minimize the impact of "fringing" and HAM displays were often designed to incorporate subtle horizontal color gradients, avoiding vertical edges and contrasts. Displaying a full color image in HAM mode requires some careful preprocessing. Because HAM can only modify one of
5310-420: Is usually used as the sync word ). MFM encoding/decoding is usually done with the blitter — one pass for decode, three passes for encode. Normally the entire track is read or written in one shot, rather than sector-by-sector; this made it possible to get rid of most of the inter-sector gaps that most floppy disk formats need to safely prevent the "bleeding" of a written sector into the previously-existing header of
5428-729: The "rainbow" effects used in demos . Note, however, that Hold-and-Modify only applies to playfield pixels. 128 pixels of sprite data (in DMA mode) per scanline are still available for placement on top of the HAM playfield. HAM6 mode, named for the 6 bits of data per pixel, was introduced with the Original Chip Set and was retained in the later Enhanced Chip Set and Advanced Graphics Architecture (AGA) . HAM6 allows up to 4096 colors to be displayed simultaneously at resolutions from 320×200 to 360×576. HAM6 encoding uses six bits per pixel: two bits for control and four bits for data. If
5546-529: The DCT stage; in HAM6 mode, an effective 4096-color (12-bit) playfield is encoded in half the memory that would normally be required - and HAM8 reduces this still further, to roughly 40%. There is a however a payoff for this simplistic compression: a greater overall color fidelity is achieved at the expense of horizontal artifacts, caused by the inability to set any single pixel to an arbitrary 12- (or 18, 24) bit value. At
5664-469: The YUV colorspace used by NTSC and PAL color TVs, requiring simpler conversion electronics compared to RGB encoding . Color television, when transmitted over an RF or composite video link, uses a much reduced chroma bandwidth (encoded as two color-difference components, rather than hue + saturation) compared to the third component, luma . This substantially reduces the memory and bandwidth needed for
5782-649: The chrominance channel). While unwanted information is destroyed, the quality of the remaining portion is unchanged. Some other transforms are possible to some extent, such as joining images with the same encoding (composing side by side, as on a grid) or pasting images such as logos onto existing images (both via Jpegjoin ), or scaling. Some changes can be made to the compression without re-encoding: The freeware Windows-only IrfanView has some lossless JPEG operations in its JPG_TRANSFORM plugin . Metadata, such as ID3 tags , Vorbis comments , or Exif information, can usually be modified or removed without modifying
5900-604: The floppy disk drive , the serial port , and analog joysticks . There are many similarities – both in overall functionality and in the division of functionality into the three component chips – between the OCS chipset and the much earlier and simpler chipset of the Atari 8-bit computers , consisting of the ANTIC , GTIA and POKEY chips; both chipsets were conceptually designed by Jay Miner , which explains
6018-513: The 4096 possible colors, and the image could access up to 32 values using 5 bits per pixel. The sixth available bit could be used by a display mode known as Extra Half-Brite which reduced the luminosity of that pixel by half, providing an easy way to produce shadowing effects. The Amiga chipset was designed using a HSV ( hue , saturation and luminance ) color space, as was common for early home computers and games consoles which relied on television sets for display. HSV maps more directly to
SECTION 50
#17327907423656136-707: The Amiga HAM8 is a part of the HGFX , a planar -based system, provided in the form of the FPGA extension of the original video circuity ( ULA ), for ZX Spectrum computers. Proposed and tested with the LnxSpectrum emulator as the HGFX/Q, realized in the eLeMeNt ZX computer, in 2021. Original Chip Set The Original Chip Set ( OCS ) is a chipset used in the earliest Commodore Amiga computers and defined
6254-415: The Amiga design migrated from a games console to a more general purpose home computer, the video chipset was itself changed from HSV to the modern RGB color model , seemingly negating much of the benefit of HAM mode. Amiga project lead Jay Miner relates: Hold and Modify came from a trip to see flight simulators in action and I had a kind of idea about a primitive type of virtual reality . NTSC on
6372-411: The Amiga its edge in terms of the color palette. The final form of Hold-And-Modify was, hardware-wise, functionally the same as the original HSV concept, but instead of operating on those three descriptive components (mostly prioritising the V component), it modifies one of the three RGB color channels. HAM can be considered a lossy compression technique, similar in operation and efficiency to JPEG minus
6490-508: The Amiga's graphics and sound capabilities. It was succeeded by the slightly improved Enhanced Chip Set (ECS) and the greatly improved Advanced Graphics Architecture (AGA). The original chipset appeared in Amiga models built between 1985 and 1990: the Amiga 1000 , Amiga 2000 , Amiga CDTV , and Amiga 500 . The chipset which gave the Amiga its unique graphics features consists of three main "custom" chips: Agnus , Denise , and Paula . Both
6608-553: The CPU and the video system. Using the Copper, it is possible to modify chipset registers or interrupt the CPU at any display coordinate synchronously to the video output. This allows programmers to use either Copper-specific code assembled into a Copperlist or CPU code for video effects with very low overhead. Using this technique, programmers developed the Sliced HAM or SHAM mode, also known as dynamic HAM . SHAM changes some or all color registers on selected scan lines to change
6726-444: The CPU can be freed for other tasks. The blitter was primarily used for drawing and redrawing graphics images on the screen, called "bobs", short for "blitter objects". The blitter's block copying mode takes zero to three data sources in memory, called A, B and C, performs a programmable Boolean function on the data sources and writes the result to a destination area, D. Any of these four areas can overlap. The blitter runs either from
6844-410: The CPU does not generally get locked out of memory access and does not appear to slow down. However, non-time-critical custom chip access, such as blitter transfers, can use up any spare odd or even cycles and, if the "BLITHOG" (blitter hog) flag is set, Agnus can lock out the even cycles from the CPU in deference to the blitter . Agnus's timings are measured in "color clocks" of 280 ns . This
6962-405: The CPU in addition to the usual non-conflicting channels). There can also be a sixth bitplane, which can be used in three special graphics modes: There are two horizontal graphics resolutions, "lowres" with 140 ns pixels and "hires" with 70 ns pixels, with a default of 320 or 640 horizontal pixels wide without using overscan. As the pixel output is regulated by the main system clock, which
7080-618: The Crystallion , Links: The Challenge Of Golf , Overdrive (Infacto) , Kang Fu , AMRVoxel , RTG , Zdzislav: Hero Of The Galaxy 3D , OloFight and Genetic Species . With the introduction of the Advanced Graphics Architecture, a conventional planar image could have a palette of 256 colors, offering significantly higher color fidelity. The original HAM mode, with its limited color resolution, became far less attractive to users of an AGA machine, though it
7198-506: The DMA slots dedicated to playfield video ends up stealing some (from 1 to 7 of the total 8) the sprite engine. [1] . Vertical resolution, without overscan, is 200 pixels for a 60 Hz NTSC Amiga or 256 for a 50 Hz PAL Amiga. This can be doubled using an interlaced display, and, as with horizontal resolution, increased using overscan, to a maximum of 241 (or 483) for NTSC, and 283 (or 567) for PAL (interlaced modes gaining one extra line as
SECTION 60
#17327907423657316-464: The LED went completely off). Models released before Amiga 1200 also have a static "tone knob" type low-pass filter that is enabled regardless of the optional "LED filter". This filter is a 6 dB/oct low-pass filter with cutoff frequency at 4.5 or 5 kHz. A software technique was later developed which can play back 14-bit audio by combining two channels set at different volumes. This results in two 14-bit channels instead of four 8-bit channels. This
7434-483: The RGB components at a time, rapid color transitions along a scan line may be best achieved by using one of the preset color registers for these transitions. To render an arbitrary image, a programmer may choose to first examine the original image for the most noticeable of these transitions and then assign those colors to one of the registers, a technique known as adaptive palettes . However, with only 16 available registers in
7552-452: The SHAM mode. This technique is not limited to HAM, and was widely used with the machine's more conventional graphics modes as well. Dynamic HiRes uses a similar palette changing technique to produce 16 colors per line in the high resolution modes, whereas HAM is limited to low resolution but allows both 16 indexed colors as well as modifications of them. The SHAM idea was deprecated when HAM8
7670-443: The bitplanes used by the respective HAM mode). With AGA, instead of 4 bits per color component, the Amiga now had up to 8 bits per color component, resulting in 16,777,216 possible colors (24-bit color space). HAM8 operates in the same way as HAM6, using two "control" bits per pixel, but with six bits of data per pixel instead of four. The set operation selects from a palette of 64 colors instead of 16. The modify operation modifies
7788-459: The blitter. Agnus also attempts to order accesses in such a way so as to overlap CPU bus cycles with DMA cycles. As the original 68000 processor in Amigas tended only to access memory on every second available memory cycle, Agnus operates a system where "odd" memory access cycles are allocated first and as needed to time-critical custom chip DMA while any remaining cycles are available to the CPU, thus
7906-440: The case of audio data, a popular form of transform coding is perceptual coding , which transforms the raw data to a domain that more accurately reflects the information content. For example, rather than expressing a sound file as the amplitude levels over time, one may express it as the frequency spectrum over time, which corresponds more accurately to human audio perception. While data reduction (compression, be it lossy or lossless)
8024-439: The chip meant you could hold the hue and change the luminance by only altering four bits. When we changed to RGB I said that wasn't needed any more as it wasn't useful and I asked the chip layout guy to take it off. He came back and said that this would either leave a big hole in the middle of the chip or take a three-month redesign and we couldn't do that. I didn't think anyone would use it. I was wrong again as that has really given
8142-512: The content. These techniques are used to reduce data size for storing, handling, and transmitting content. Higher degrees of approximation create coarser images as more details are removed. This is opposed to lossless data compression (reversible data compression) which does not degrade the data. The amount of data reduction possible using lossy compression is much higher than using lossless techniques. Well-designed lossy compression technology often reduces file sizes significantly before degradation
8260-460: The discussion of Agnus, memory access is prioritized and one DMA slot per scan line is available for each of the four sound channels. On a regular NTSC or PAL display, DMA audio playback is limited to a maximum output rate of 28,867 values per channel (PAL: 28837) per second totaling 57674 (PAL: 57734) values per second on each stereo output. This rate can be increased with the ECS and AGA chipsets by using
8378-624: The display (see above) in order to circumvent some of these restrictions. HAM is unique to the Amiga and its distinct chipsets. To allow direct rendering of legacy images encoded in HAM format software-based HAM emulators have been developed which do not require the original display hardware. Pre-4.0 versions of AmigaOS can use HAM mode in the presence of the native Amiga chipset. AmigaOS 4.0 and up, designed for radically different hardware, provides HAM emulation for use on modern chunky graphics hardware. Dedicated Amiga emulators running on non-native hardware are able to display HAM mode by emulation of
8496-417: The display hardware, as the graphics buffer data is being displayed. Each encoded pixel acts as either a normal index to the color palette registers, or as a command to directly alter the value held in the output DAC (somewhat like updating just one-third of the active palette register), and is immediately acted on as such as it passes through the chipset. When the Amiga was launched in 1985, HAM mode offered
8614-407: The display hardware. However, since no other computer architecture used the HAM technique, viewing a HAM image on any other architecture requires programmatic interpretation of the image file. Faithful software-based decoding will produce identical results, setting aside variations in color fidelity between display setups. However, if the goal is merely to display a SHAM image on a non-Amiga platform,
8732-410: The extreme, it can take three pixels to change from one color to another, reducing the effective resolution at that point from a "320-pixel" to approximately "106-pixel" mode, and causing smears and shadows to spread along a scanline to the right of a high contrast feature if the 16 available palette registers prove insufficient. "Decompression" of the HAM encoded color space is achieved in realtime by
8850-543: The fact that a high resolution image with four bitplanes delivers a third more memory bandwidth, and therefore a third more data, than a low resolution image with six bitplanes. The HAM technique was also implemented on the HAM256 and HAM8x1 modes of ULAplus / HAM256 / HAM8x1 for the ZX Spectrum , where it provides the ability to display 256 colors on screen, by modifying a base 64 color palette. The HAM very similar to
8968-430: The fact that the display timing was very close to broadcast standards (NTSC or PAL), made the Amiga the first ideal computer for video purposes, and indeed, it was used in many studios for digitizing video data (sometimes called frame-grabbing), subtitling and interactive video news. Denise is programmed to fetch planar video data from one to five bitplanes and translate that into a color lookup . The number of bitplanes
9086-444: The file size as if it had been compressed to a greater degree, but without more loss than this, is sometimes also possible. The primary programs for lossless editing of JPEGs are jpegtran , and the derived exiftran (which also preserves Exif information), and Jpegcrop (which provides a Windows interface). These allow the image to be cropped , rotated, flipped , and flopped , or even converted to grayscale (by dropping
9204-563: The file will cause it to progressively lose quality. This is in contrast with lossless data compression , where data will not be lost via the use of such a procedure. Information-theoretical foundations for lossy data compression are provided by rate-distortion theory . Much like the use of probability in optimal coding theory , rate-distortion theory heavily draws on Bayesian estimation and decision theory in order to model perceptual distortion and even aesthetic judgment. There are two basic lossy compression schemes: In some systems
9322-414: The hardware allows one channel in a channel pair to modulate the other channel's period or amplitude. It is rarely used on the Amiga due to both frequency and volume being controllable in better ways, but could be used to achieve different kinds of tremolo and vibrato , and even rudimentary FM synthesis effects. Audio may be output using two methods. Most often, DMA-driven audio is used. As explained in
9440-420: The human eye or ear are known as compression artifacts . The compression ratio (that is, the size of the compressed file compared to that of the uncompressed file) of lossy video codecs is nearly always far superior to that of the audio and still-image equivalents. An important caveat about lossy compression (formally transcoding), is that editing lossily compressed files causes digital generation loss from
9558-436: The image will, by design, disappear seamlessly behind the screen bezel (or, on LCDs, be cropped off at the edge of the panel). Because of the highly regular structure of the Amiga's timing in relation to scanlines and allocation of DMA resources to various uses besides normal "playfield" graphics, increased horizontal resolution is also a tradeoff between number of pixels and how many hardware sprites are available, as increasing
9676-446: The individual bits per pixel into separate areas of memory, called bitplanes . In normal operation, Denise allows between one and five bitplanes, giving two to 32 unique colors. These colors are selected from a palette of 4096 colors (four bits per RGB component). A 6th bitplane is available for two special video modes: Halfbrite mode and Hold-And-Modify (HAM) mode. Denise also supports eight sprites , single pixel scrolling, and
9794-470: The internet – as in RealNetworks ' " SureStream " – or offering varying downloads, as at Apple's iTunes Store ), or broadcast several, where the best that is successfully received is used, as in various implementations of hierarchical modulation . Similar techniques are used in mipmaps , pyramid representations , and more sophisticated scale space methods. Some audio formats feature a combination of
9912-400: The left audio output, and the other two are mixed into the right output, producing stereo audio output. The only supported hardware sample format is signed linear 8-bit two's complement . Each sound channel has an independent frequency and a 6-bit volume control (64 levels). Internally, the audio hardware is implemented by four state machines, each having eight different states. Additionally
10030-510: The left-most edge of the animated object contains any 'modify' pixels, or if the image immediately to the right of the object contains any 'modify' pixels, then those Hold-and-Modify values must be recomputed. An attempt to move an object around the screen (such as with the use of the blitter ) will create noticeable fringing at the left and right borders of that image, unless the graphics are specially designed to avoid this. In order to avoid recomputing Hold-and-Modify values and circumvent fringing,
10148-449: The less-than-ideal file system of the earlier Amiga models reduced this again to approximately 830 KB of actual payload data. In addition to the native 880 KB 3.5-inch disk format, the controller can handle many foreign formats, such as: The Amiga 3000 introduced a special, dual-speed floppy drive that also allowed use of high density disks with double capacity without any change to Paula's floppy controller. The serial port
10266-405: The lifting of those limits. As more modern computers are inherently capable of high resolution truecolor displays without any special tricks, there is no longer any need for display techniques like HAM; as PC-style graphics cards offering modes such as 800x600 SVGA in hi-color (16 bpp , or 65536 directly-selectable colors) were already available for the Amiga in the dying days of the platform, it
10384-552: The maximum is determined by how many lines are taken from the available total by blanking and sync, and the total scanlines in non-interlaced modes are half the original, broadcast-spec odd-numbered interlaced counts, rounded down). Starting with ECS, Denise was upgraded to support "Productivity" mode which allowed for 640x400 non-interlaced albeit with only 4 colors. Denise can composite up to eight 16-pixel-wide sprites per scan line (in automatic mode) on top, underneath, or between playfields, and detect collisions between sprites and
10502-417: The maximum number of unique on-screen colors can be greater than 262,144, depending on the two least significant bits of each color component in the 64 color palette. In theory, all 16.7 million colors could be displayed with a large enough screen and an appropriate base palette, but in practice the limitations in achieving full precision mean that the two least significant bits are typically ignored. In general,
10620-515: The negative implications of "loss". The type and amount of loss can affect the utility of the images. Artifacts or undesirable effects of compression may be clearly discernible yet the result still useful for the intended purpose. Or lossy compressed images may be ' visually lossless ', or in the case of medical images, so-called diagnostically acceptable irreversible compression (DAIC) may have been applied. Some forms of lossy compression can be thought of as an application of transform coding , which
10738-430: The next sector due to speed variations of the drive. If all sectors and their headers are always written in one go, such bleeding is only an issue at the end of the track (which still must not bleed back into its beginning), so that only one gap per track is needed. This way, for the native Amiga disk format, the raw storage capacity of 3.5 inch DD disks was increased from the typical 720 KB to 880 KB, although
10856-496: The original HAM mode, some loss in color fidelity is common. Additionally, HAM mode does not easily permit arbitrary animation of the display. For example, if an arbitrary portion of the playfield is to be moved to another on-screen position, the Hold-and-Modify values may have to be recomputed on all source and target lines in order to display the image correctly (an operation not well-suited to animation). Specifically, if
10974-565: The original chipset and the enhanced chipset were manufactured using NMOS logic technology by Commodore 's chip manufacturing subsidiary, MOS Technology . According to Jay Miner , the OCS chipset was fabricated in 5 μm manufacturing process while AGA Lisa was implemented in 1.5 μm process. All three custom chips were originally packaged in 48-pin DIPs ; later versions of Agnus, known as Fat Agnus, were packaged in an 84-pin PLCC . Agnus
11092-523: The original input, but is expected to be close enough for the purpose of the application. The most common form of lossy compression is a transform coding method, the discrete cosine transform (DCT), which was first published by Nasir Ahmed , T. Natarajan and K. R. Rao in 1974. DCT is the most widely used form of lossy compression, for popular image compression formats (such as JPEG ), video coding standards (such as MPEG and H.264/AVC ) and audio compression formats (such as MP3 and AAC ). In
11210-403: The original, format conversion may be needed in the future to achieve compatibility with software or devices ( format shifting ), or to avoid paying patent royalties for decoding or distribution of compressed files. By modifying the compressed data directly without decoding and re-encoding, some editing of lossily compressed files without degradation of quality is possible. Editing which reduces
11328-471: The palette during display. This meant that every scan line can have its own set of 16 base colors. This removes some constraints caused by the limited palette, which can then be chosen per-line instead of per-image. The only downsides to this approach are that the Copperlist uses extra clock cycles of chip RAM for the register changes, that the image is not bitmap-only, and the added complexity of setting up
11446-434: The perceived HAM8 color depth is roughly equivalent to a high color display. The vertical display resolutions for HAM8 are the same as for HAM6. The horizontal resolution can be 320 (360 with overscan) as before, doubled to 640 (720 with overscan) or even quadrupled to 1280 pixels (1440 with overscan). The AGA chipset also introduced even higher resolutions for the traditional planar display modes. The total number of pixels in
11564-521: The playfields or between sprites. These sprites have three visible colors and one transparent color. Optionally, adjacent pairs of sprites can be "attached" to make a single 15-color sprite. The Sprite DMA reads data to form a sprite channel as controlled by its registers, enabling the vertical reuse of sprites. There has to be one empty scanline in between two successive list entries to allow for updating sprite data. Using Copper or CPU register manipulations, each sprite channel can be reused multiple times in
11682-427: The programmer would have to ensure the left-most pixel of every blitter object and the left-most pixel of every line of a scrolling playfield is a "set" pixel. The palette would have to be designed so that it incorporates every such left-most pixel. Alternatively, a HAM display can be animated by generating pixel values through procedural generation , though this is generally useful for synthetic images only, for example,
11800-467: The re-encoding. This can be avoided by only producing lossy files from (lossless) originals and only editing (copies of) original files, such as images in raw image format instead of JPEG . If data which has been compressed lossily is decoded and compressed losslessly, the size of the result can be comparable with the size of the data before lossy compression, but the data already lost cannot be recovered. When deciding to use lossy conversion without keeping
11918-407: The related category of lossy data conversion . A general kind of lossy compression is to lower the resolution of an image, as in image scaling , particularly decimation . One may also remove less "lower information" parts of an image, such as by seam carving . Many media transforms, such as Gaussian blur , are, like lossy compression, irreversible: the original signal cannot be reconstructed from
12036-561: The required color values may be pre-calculated based on the palette entries that are programmed via the Copperlist, regardless of whether the palette is modified in the middle of a scanline. It is always possible to up-convert a HAM or SHAM image losslessly to a 32-bit palette. A device produced by Black Belt known as HAM-E was able to produce images with HAM8 color depth at low horizontal resolution from an Amiga with an Original Chip Set. The Amiga would be set up to produce high resolution images (640 pixels wide, 720 with overscan). This required
12154-514: The resolution on the components to accord with human perception – humans have highest resolution for black-and-white (luma), lower resolution for mid-spectrum colors like yellow and green, and lowest for red and blues – thus NTSC displays approximately 350 pixels of luma per scanline , 150 pixels of yellow vs. green, and 50 pixels of blue vs. red, which are proportional to human sensitivity to each component. Lossy compression formats suffer from generation loss : repeatedly compressing and decompressing
12272-422: The same file will not reduce the size to nothing. Most compression algorithms can recognize when further compression would be pointless and would in fact increase the size of the data. In many cases, files or data streams contain more information than is needed. For example, a picture may have more detail than the eye can distinguish when reproduced at the largest size intended; likewise, an audio file does not need
12390-466: The similarity. The Agnus chip is in overall control of the entire chipset's operation. All operations are synchronised to the position of the video beam. This includes access to the built-in RAM , known as chip RAM because the chipset has access to it. Both the central 68000 processor and other members of the chipset have to arbitrate for access to chip RAM via Agnus . In computing architecture terms, this
12508-408: The six most significant bits of either the red, green or blue color component - the two least significant bits of the color cannot be altered by this operation and remain as set by the most recent set operation. Compared to HAM6, HAM8 can display many more on-screen colors. The maximum number of on-screen colors using HAM8 was widely reported to be 262,144 colors (18-bit RGB color space). In fact,
12626-483: The start of the block to the end, known as "ascending" mode, or in reverse, "descending" mode. Blocks are "rectangular"; they have a "width" in multiples of 16 bits, a height measured in "lines", and a "stride" distance to move from the end of one line to the next. This allows the blitter to operate on any video resolution up to 1,024×1,024 pixels. The copy automatically performs a per-pixel logical operation. These operations are described generically using minterms . This
12744-474: The transformed signal. However, in general these will have the same size as the original, and are not a form of compression. Lowering resolution has practical uses, as the NASA New Horizons craft transmitted thumbnails of its encounter with Pluto-Charon before it sent the higher resolution images. Another solution for slow connections is the usage of Image interlacing which progressively defines
12862-478: The two control bits are both set to zero, the four remaining bits are used to index one of the 16 preset color registers, operating in the fashion of a normal indexed bitmap. The other three possible control bit patterns indicate that the color of the previous pixel (to the left) on the scanline should be used and the data bits should instead be used to modify the value of the red, green or blue component. Consequently, there are four possibilities: A similar mode, HAM5,
12980-430: The two techniques are combined, with transform codecs being used to compress the error signals generated by the predictive stage. The advantage of lossy methods over lossless methods is that in some cases a lossy method can produce a much smaller compressed file than any lossless method, while still meeting the requirements of the application. Lossy methods are most often used for compressing sound, images or videos. This
13098-821: The underlying data. One may wish to downsample or otherwise decrease the resolution of the represented source signal and the quantity of data used for its compressed representation without re-encoding, as in bitrate peeling , but this functionality is not supported in all designs, as not all codecs encode data in a form that allows less important detail to simply be dropped. Some well-known designs that have this capability include JPEG 2000 for still images and H.264/MPEG-4 AVC based Scalable Video Coding for video. Such schemes have also been standardized for older designs as well, such as JPEG images with progressive encoding, and MPEG-2 and MPEG-4 Part 2 video, although those prior schemes had limited success in terms of adoption into real-world common usage. Without this capacity, which
13216-490: The update of luminance information over hue and particularly saturation, switching between the three components as needed, compared to the more regular interleaving of full-resolution luma ( Y {\displaystyle Y} ) with individual half- or quarter-resolution chromas ( U {\displaystyle U} + V {\displaystyle V} ) as used by later digital video standards. This offered considerable efficiency benefits over RGB. As
13334-509: The use of four bitplanes at 70 ns per pixel. The first few lines of the image encoded information to configure the HAM-E unit. Then each pair of pixels was encoded with information for the HAM-E unit, which converted the information into one 140 ns pixel (generating an image 320 pixels wide, or 360 with overscan, at a color depth of eight bitplanes). The quality of HAM-E was thus comparable to a low-resolution HAM8 image. The HAM-E technique exploited
13452-434: The worst case this reduces the horizontal usable chroma resolution in half, from 320~360 pixels to 106~120. Even so, it compares favorably to contemporary video technologies like VHS that has a chroma resolution of around 40 television lines , roughly equivalent to 80 pixels. Displaying such images over a composite video connection provides some horizontal smoothing that minimizes color artifacts. But if an RGB monitor
13570-459: Was changed to 1 MB (sometimes called 'Fatter Agnus') and subsequently to 2 MB chip RAM. Denise is the main video processor. Without using overscan , the Amiga's graphics display is 320 or 640 pixels wide by 200 ( NTSC ) or 256 ( PAL ) pixels tall. Denise also supports interlacing , which doubles the vertical resolution, at the cost of intrusive flickering on typical monitors of that era. Planar bitmap graphics are used, which splits
13688-465: Was frequently used to demonstrate the Amiga's ability in store displays and trade presentations, since competing hardware could not match the color depth. Due to the limitations described above HAM was mainly used for display of static images and developers largely avoided its use with games or applications requiring animation. HAM mode was only used for gameplay in twelve games, starting with Pioneer Plague in 1988. Other HAM titles include Knights of
13806-491: Was introduced with the AGA chipset, since even an unsliced HAM8 image has far more color resolution than a sliced HAM6 image. However, SHAM remains the best available HAM mode on those Amigas with the OCS or ECS chipsets. With the release of the Advanced Graphics Architecture (AGA) in 1992, the original HAM mode was renamed "HAM6", and a new "HAM8" mode was introduced (the numbered suffix represents
13924-499: Was still included for backward compatibility. The new HAM8 mode was far less useful to the AGA chipset than the HAM mode was to the original chipset, since the more straightforward indexed 256-color (as well as higher performance, planar 128- and 64-color) modes greatly increased the options to the artist without suffering from the drawbacks of HAM. A well-programmed "sliced"-palette mode could prove to be more useful than HAM8, with up to 256 unique colors per line - enough to directly define
#364635