Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Commodore Amiga компьютерлерінде қолданылатын дисплей режимі Hold And Modify, көбінесе HAM деп қысқартылады, – Commodore Amiga компьютерінің дисплей режимі. Бұл пикселдердің түсін беру үшін өте ерекше техниканы пайдаланады, соның арқасында экранда мүмкіндік шегінен асып түсетін көптеген түстерді көрсетуге болады. HAM режимі көбінесе цифрланған фотосуреттер немесе бейне кадрларды, растрлік суреттерді және кейде анимацияны көрсету үшін қолданылды. 1985 жылы Amiga таныстырылған кезде, бұл дерлік фотореалистік дисплей үй компьютері үшін бұрынғысыздай жаңалық болды және Amiga-ның графикалық қабілеттерін көрсету үшін кеңінен пайдаланылды.
Display mode used in Commodore Amiga computers
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.
Ұстаңыз және өзгертіңіз режімі
Amiga чипсеті HSV (түс, қанығу және жарық) түстік кеңістік принципінде жасалды, бұл ерте үй компьютерлері мен дисплей үшін теледидарға сүйенетін ойын консольдары үшін қалыпты жағдай еді. HSV түстік кеңістігі NTSC және PAL түсті теледидарларында қолданылатын YUV түстік кеңістігіне тікелей сәйкес келеді, бұл RGB кодтауымен салыстырғанда қарапайым түрлендіру схемасын қажет етеді. Түсті теледидар, радиожиіліктік немесе композиттік бейне байланысы арқылы берілгенде, үшінші компонентке – жарықтылыққа қарағанда, хрома жолағының ені (екі түс айырмашылығы компоненті ретінде кодталған) әлдеқайда төмен болады. Бұл берілген бейне сапасы үшін қажетті жад пен жолақтылықты едәуір азайтады, өйткені жарықтылық толық ажыратымдылықта сақталады және беріледі, ал хроманың ажыратымдылығы салыстырмалы түрде төмен. Бұл техника бейнелерді сығымдау әдістерімен, мысалы JPEG және MPEG сияқты, сондай-ақ V9958 MSX бейне чипінің YJK кодтауында (алғаш MSX2+ жүйесінде қолданылған) қолданылатын басқа HSV/YUV негізделген бейне режимдерімен ортақ. HAM-нің бастапқы түрінде қолданылған HSV кодтамасының нұсқасы, түс пен әсіресе қанығуға қарағанда жарықтылық ақпаратын жаңартуға басымдық беруге мүмкіндік берді, қажет болған жағдайда үш компоненттің арасында ауысып, кейінгі цифрлық бейне стандарттарында қолданылатын толық ажыратымдылықтағы жарықтылықты жеке жарты немесе ширек ажыратымдылықтағы хромалармен (+) жиі араластырудан өзгеше болды. Бұл RGB-ге қарағанда тиімділік тұрғысынан айтарлықтай артықшылықтар берді. Amiga дизайны ойын консолінен жалпы мақсаттағы үй компьютеріне көшкен кезде, бейне чипсеті HSV-ден қазіргі заманғы RGB түстік моделіне ауыстырылды, бұл HAM режимінің көптеген артықшылықтарын жоққа шығарды. Amiga жобасын басқарған Джей Майнер былай дейді: Hold And Modify-дің соңғы нұсқасы, аппараттық тұрғыдан, бастапқы HSV тұжырымдамасымен бірдей болды, бірақ сол үш сипаттамалық компонентте жұмыс істеудің орнына (негізінен V компонентіне басымдық беру), ол үш RGB түс арнасының біреуін өзгертеді. HAM-ді JPEG-тің DCT сатысы алынғандағы жұмыс істеу және тиімділік тұрғысынан ұқсас, жоғалтулы сығымдау техникасы деп қарастыруға болады; HAM6 режимінде тиімді 4096 түстік (12 биттік) өріс қалыпты жағдайда қажет болатын жадтың жартысына кодталады, ал HAM8 оны одан әрі, шамамен 40%-ға дейін азайтады. Алайда, бұл қарапайым сығымдаудың бір кемшілігі бар: түстің жалпы сапасы көлденең артефакттардың есебінен жоғарылайды, себебі кез келген пикселді кездейсоқ 12 (немесе 18, 24) биттік мәнге орнату мүмкін емес. Ең нашар жағдайда, бір түстен екіншісіне ауысу үшін үш пиксел қажет болуы мүмкін, бұл осы кездегі тиімді ажыратымдылықты "320 пикселден" шамамен "106 пикселге" дейін азайтады және егер 16 палитралық тіркегіш жеткіліксіз болса, жоғары контрасттық элементтің оң жағына қарай скан сызығы бойымен дақтар мен көлеңкелердің таралуына әкеледі. HAM кодталған түстік кеңістіктің "декомпрессиясы" графикалық буфер деректері көрсетіліп жатқанда дисплей аппараттық құралдарымен нақты уақытта жүзеге асырылады. Әрбір кодталған пиксел түстік палитра тіркегіштеріне қалыпты индекс ретінде немесе шығыс DAC-де сақталған мәнді тікелей өзгерту үшін команда ретінде әрекет етеді (белсенді палитра тіркегішінң үштен бір бөлігін жаңарту сияқты) және ол чипсет арқылы өтетін кезде дереу орындалады.
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 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 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 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 with individual half or quarter resolution chromas ( + ) as used by later digital video standards. This offered considerable efficiency benefits over RGB. As 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:
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 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 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 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.
Қолданылуы
1985 жылы Amiga шығарылғанда HAM режимі бәсекелес жүйелерге қарағанда маңызды артықшылық ұсынды. HAM жоғарыда айтылған шектеулермен бірге, барлық 4096 түсті бір уақытта көрсетуге мүмкіндік береді. Сол кездегі үй компьютері үшін мұндай псевдофотореалистік дисплей бұрын-соңды болмаған және цифрланған фотосуреттер мен 3D бейнелерді көрсетуге мүмкіндік берді. Қарама салыстыру үшін, сол кездегі IBM PC стандарты EGA 64 түстік палитрадан 16 түсті экранда көрсетуге рұқсат берді. EGA-ның 1987 жылы шыққан VGA-ның мұрагері, Mode 13h флагмандық ойын режимімен, 262,144 түстік палитрадан 256 түсті экранда көрсетуге мүмкіндік берді. HAM режимі Amiga-ның дүкендердегі демонстрацияларында және саудалық презентацияларында мүмкіндіктерін көрсету үшін жиі қолданылды, себебі бәсекелес аппараттық құралдар мұндай түс тереңдігіне жете алмады. Жоғарыда сипатталған шектеулерге байланысты HAM көбінесе статикалық бейнелерді көрсету үшін қолданылды және әзірлеушілер оны анимация қажетті ойындарда немесе қосымшаларда пайдаланудан аулақ болды. Сілтемелер: The Challenge Of Golf, Overdrive (Infacto), Kang Fu, AMRVoxel, RTG, Zdzislav: Hero Of The Galaxy 3D, OloFight және Genetic Species. Advanced Graphics Architecture енгізілгеннен кейін, стандартты жазықты кескін 256 түстік палитраны пайдалана алады, бұл түстің айтарлықтай жоғары дәлдігін қамтамасыз етеді. Түпнұсқа HAM режимі, шектеулі түс ажыратымдылығымен, AGA машинасының пайдаланушылары үшін бұрынғыдан гөрі аз қызығушылық тудырды, бірақ ол кері үйлесімділік үшін сақталды. Жаңа HAM8 режимі AGA чипсеті үшін түпнұсқа чипсетке қарағанда әлдеқайда аз пайдалы болды, себебі 256 түстік индекстелген режим (сондай-ақ жоғары өнімділікпен жазықты 128 және 64 түстік режимдер) суретшіге HAM-нің кемшіліктеріне ұшырамастан көбірек мүмкіндіктер берді. Жақсы бағдарламаланған "бөлінген" палитра режимі HAM8-ден гөрі тиімдірек болуы мүмкін, әрбір жолға 256 бірегей түспен – егер 256 пикселдік ені бар бейне режимі анықталса, әрбір пиксель үшін ерекше түс тікелей анықталады, ал жоғары ажыратымдылықта тіпті бүкіл экранға арналған бір 256 түстік палитра да, әрбір жол туралы айтпағанда, 32 түспен ғана қол жеткізілетін түс тереңдігін симуляциялаудан әлдеқайда тиімді және дәл болады. HAM-нің бастапқы мақсаты, шектеулі бейне буферінің көлемі мен шектеулі жад еніне қарамастан, түс ажыратымдылығын арттыру болды, бірақ бұл шектеулердің алынуына байланысты маңыздылығын жоғалтты. Қазіргі заманғы компьютерлер ешқандай арнайы амалсыз жоғары ажыратымдылықтағы шынайы түсті дисплейлерді жасауға қабілетті болғандықтан, HAM сияқты дисплей техникасының қажеті жоқ; PC стильіндегі графикалық карталар 800x600 SVGA сияқты режимдерді ұсынатын болғандықтан (16 бит немесе 65536 тікелей таңдалатын түс), Amiga платформасының соңғы күндері осы техниканың одан әрі дамуы оның қазірге дейін сақталуына байланысты қиын болар еді.
When the Amiga was launched in 1985, HAM mode offered 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 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. 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 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 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 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 is unlikely that any further developments of the technique would have been bothered with had it survived to the present day.
Шектеулер
HAM режимі ойын алаңының әрбір көлденең сызығындағы жапсарлас пикселдердің мәнін шектейді. Екі кездейсоқ түсті қатар көрсету үшін, екі аралық пикселдің қажетті түске өтуі қажет болуы мүмкін (егер қызыл, жасыл және көк түстің компоненттерінің барлығы өгертілуі керек болса). Ең жаман жағдайда, бұл көлденең қолданылатын хромалық ажыратымдылықты 320–360 пикселден 106–120 пикселге дейін екі есеге дейін төмендетуі мүмкін. Дегенмен, бұл VHS сияқты заманауи бейне технологияларымен салыстырғанда жақсырақ, оның хромалық ажыратымдылығы шамамен 40 теледидарлық жолға, шамамен 80 пикселге тең. Мұндай кескіндерді композиттік бейне қосылысы арқылы көрсету түстің бұрмалануын азайтатын көлденең тегістеуді қамтамасыз етеді. Бірақ егер RGB мониторы қолданылса, бұрмаланулар контрасты жоғары аймақтарда (күшті көлденең кескін градиенттері) айқын байқалады, онда жағымсыз көп түсті бұрмалану немесе "шекара" пайда болуы мүмкін. "Шекараның" әсерін азайту үшін әртүрлі рендеринг әдістері қолданылды және HAM дисплейлері көбінесе тік жиектер мен контрасттардан аулақ болып, нәзік көлденең түсті градиенттерді қосу үшін жасалды. HAM режимінде толық түсті кескінді көрсету үшін мұқият алдын ала өңдеу қажет. HAM бір уақытта тек бір RGB компонентін ғана өзгерте алатындықтан, сканерлеу сызығы бойындағы жылдам түс өтулері осы өтулер үшін алдын ала орнатылған түс тіркелімдерінің біреуін пайдалану арқылы жақсырақ жүзеге асырылуы мүмкін. Кездейсоқ кескінді көрсету үшін бағдарламашы бастапқы кескінді ең байқалатын өтулер үшін тексеріп, содан кейін осы түстерді тіркелімдердің біріне тағайындауы мүмкін, бұл әдіс бейімделетін палитралар деп аталады. Алайда, бастапқы HAM режимінде тек 16 қол жетімді тіркелім болғандықтан, түстің нақтылығының жоғалуы жиі кездеседі. Сонымен қатар, HAM режимі дисплейдің кездейсоқ анимациясына оңай рұқсат бермейді. Мысалы, егер ойын алаңының кездейсоқ бөлігі экранның басқа орнына жылжырылса, кескінді дұрыс көрсету үшін барлық бастапқы және мақсатты сызықтардағы "Ұстап тұру" және "Өзгерту" мәндерін қайта есептеу қажет болуы мүмкін (бұл анимацияға жақсы сәйкес келмейтін операция). Атап айтқанда, егер анимацияланған нысанның сол жақ шетінде "өзгерту" пикселдері болса немесе нысанның оң жағындағы кескінде "өзгерту" пикселдері болса, онда осы "Ұстап тұру" және "Өзгерту" мәндерін қайта есептеу қажет. Экранда нысанды жылжытуға тырысу (мысалы, блиттерді пайдалану арқылы) сол және оң жақ шекараларында көрінетін шекараларды тудыруы мүмкін, егер графика осыдан аулақ болу үшін арнайы жасалмаса. "Ұстап тұру" және "Өзгерту" мәндерін қайта есептеуден және шекаралардан аулақ болу үшін бағдарламашы әр блиттер нысанының сол жақтағы ең шеткі пикселінің және жылжитын алаңның әрбір сызығының сол жақтағы ең шеткі пикселінің "орнатылған" пиксел екеніне көз жеткізуі керек. Палитра осы сол жақ пикселдердің барлығын қамтитындай етіп жасалуы керек. Сонымен қатар, HAM дисплейін процедуралық генерация арқылы пикселдік мәндерді жасау арқылы анимациялауға болады, бірақ бұл әдетте тек синтетикалық кескіндер үшін пайдалы, мысалы, демонстрацияларда қолданылатын "жаңбырлы" эффекттер. Алайда, "Ұстап тұру" және "Өзгерту" тек ойын алаңы пикселдеріне ғана қатысты екенін ескеріңіз. Скэн желісі бойынша 128 пиксел (DMA режимінде) HAM ойын алаңының үстіне орналастыру үшін әлі де қол жетімді.
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 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 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 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 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 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, 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, 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.
Бастапқы чип-топ HAM режімі (HAM6)
HAM6 режимі, пикселге 6 бит дерек арналғандықтан, Original Chip Set-пен енгізілді және кейінірек Enhanced Chip Set және Advanced Graphics Architecture (AGA) жүйелерінде де сақталды. HAM6 320×200-ден 360×576 дейінгі ажыратымдылықта 4096 түске дейін бір мезгілде көрсетуге мүмкіндік береді. HAM6 кодтамасы пикселге алты бит қолданады: басқару үшін екі бит және деректер үшін төрт бит. Егер екі басқару биті де нөлге орнатылса, қалған төрт бит 16 алдын ала орнатылған түс тізілімінің бірін таңдау үшін пайдаланылады, бұл әдеттегі индекстелген биттік карта сияқты жұмыс істейді. Басқару биттерінің қалған үш мүмкін комбинациясы сканерлеу жолындағы алдыңғы пикселдің (сол жақта) түсін пайдалану керектігін және дерек биттерін қызыл, жасыл немесе көк түстің құраушысын өзгерту үшін қолдану керектігін көрсетеді. Осының салдарынан төрт мүмкіндік бар: пикселге 5 бит дерек қолданғанда да қол жетімді. Тек көк түстің құраушысын SET командасынсыз өзгертуге болатындықтан, әсері көк-сары түстердің көлемін орташа деңгейде арттырумен шектеледі. Бұл режим HAM6 сияқты икемді емес және кеңінен қолданылмайды. Басқару биті Дерек биттері Әсері 0XXXX Орнату: 16 түсті палитрадан түс таңдау үшін 4 битті пайдаланыңыз. Бұл пиксел үшін сол түсті пайдаланыңыз. 1BBBB Көк түсті өзгерту: Алдыңғы пикселдің қызыл және жасыл түстің құраушыларын сақтаңыз. Бұл пикселдің жаңа көк түстің құраушысы ретінде 4 бит дерек пайдаланыңыз. AGA чипсетінде HAM5 енді қолданылмайды.
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 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: is also available where only 5 bits of data per pixel are used. 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. Control bitData bitsEffect0XXXXSet: Use the 4 bits of data to index a color from the 16 color palette. Use that color for this pixel.1BBBBModify Blue: Hold the red and green color components of the previous pixel. Use the 4 bits of data as the new blue color component of this pixel. On the AGA chipset, HAM5 no longer exists.
HAM4
Сонымен қатар, HAM режимін 4 биттік жазықтықта пайдалануға болады. Практикалық қолданысы шектеулі, бірақ бұл техника демонстрацияларда қолданылды. AGA чипсетінде HAM7 енді қолжетімді емес. Немесе SHAM режимі, сондай-ақ динамикалық HAM деп те аталады. SHAM, көрсету барысында палитраны өзгерту үшін таңдалған сканерлеу сызықтарындағы кейбір немесе барлық түс тізілімдерін өзгертеді. Бұл әрбір сканерлеу сызығының өзіне тән 16 негізгі түстің жиынтығына ие болуы мүмкін дегенді білдіреді. Бұл шектеулі палитра тудыратын кейбір шектеулерді жояды, осылайша палитраны сурет емес, әрбір желіге қарай таңдауға болады. Бұл тәсілдің жалғыз кемшілігі – Copperlist тізілімдерін өзгерту үшін чип жадының қосымша сағат циклдарын пайдалану, сурет тек биттік карта емес, сондай-ақ SHAM режимін орнатудың күрделілігі. Бұл техника тек HAM-мен ғана шектелмейді, машинаның дәстүрлі графикалық режимдерімен де кеңінен қолданылды. Динамикалық HiRes жоғары ажыратымдылық режимдерінде бір желіге 16 түс шығару үшін палитраны өзгертудің ұқсас әдісін қолданады, ал HAM төменгі ажыратымдылықпен шектеледі, бірақ 16 индекстелген түсті де, олардың өзгеруін де мүмкін етеді. SHAM идеясы HAM8 AGA чипсетімен енгізілген кезде қолданудан шығарылды, себебі тілімделмеген HAM8 суреті тілімделген HAM6 суретінен әлдеқайда жоғары түс ажыратымдылығына ие. Дегенмен, OCS немесе ECS чипсеттері бар Amiga компьютерлерінде SHAM әлі де ең жақсы HAM режимі болып табылады.
It's also possible to use HAM mode with 4 bitplanes. Practical use is limited, but this technique was used in demos. On the AGA chipset, HAM7 no longer exists. or SHAM mode, also known as dynamic HAM. SHAM changes some or all color registers on selected scan lines to change 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 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 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.
Advanced Graphics Architecture HAM режимі (HAM8)
1992 жылы Advanced Graphics Architecture (AGA) шығарылымымен бастапқы HAM режимі "HAM6" деп аталды, ал жаңа "HAM8" режимі енгізілді (номерленген жұрнақ тиісті HAM режимі қолданатын бит жазықтығын білдіреді). AGA-мен әр түс компоненті үшін 4 биттің орнына Amiga-да әр түс компоненті үшін 8 битке дейін болды, нәтижесінде 16 777 216 ықтимал түс болды (24 биттік түс кеңістігі). HAM8, HAM6 сияқты, әр пикселге екі "бақылау" битті пайдаланады, бірақ төрт емес, алты биттік деректерді қолданады. Орнату операциясы 16 емес, 64 түстің палитрасынан таңдайды. Modify операциясы қызыл, жасыл немесе көк түс компонентінің ең маңызды алты битін өзгертеді. Түстің ең кіші екі биті осы операциямен өзгертілмейді және соңғы орнату операциясымен орнатылған күйінде қалады.
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 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 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. Control bitsData bitsEffect00XXXXXXSet: Use the 6 bits of data to index a color from the 64 color palette. Use that color for this pixel.01BBBBBBModify Blue: Hold the red and green color components of the previous pixel. Use the 6 bits of data as the new blue color component of this pixel.10RRRRRRModify Red: Hold the green and blue color components of the previous pixel. Use the 6 bits of data as the new red color component of this pixel.11GGGGGGModify Green: Hold the red and blue color components of the previous pixel. Use the 6 bits of data as the new green color component of this pixel. 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, 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, 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 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' the display (see above) in order to circumvent some of these restrictions.
Control bits Data bits Effect
00XXXXXX Set: 64 түстің палитрасынан түс индекстеу үшін 6 бит деректерді пайдаланыңыз. Бұл пиксел үшін сол түсті пайдаланыңыз.
01BBBBBB Modify Blue: Алдыңғы пикселдің қызыл және жасыл түс компоненттерін сақтаңыз. Осы пикселдің жаңа көк түс компоненті ретінде 6 бит деректерді пайдаланыңыз.
10RRRRRR Modify Red: Алдыңғы пикселдің жасыл және көк түс компоненттерін сақтаңыз. 6 бит деректерді осы пикселдің жаңа қызыл түс компоненті ретінде пайдаланыңыз.
11GGGGGG Modify Green: Алдыңғы пикселдің қызыл және көк түс компоненттерін сақтаңыз. 6 бит деректерді пикселдің жаңа жасыл компоненті ретінде пайдаланыңыз.
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 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 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. Control bitsData bitsEffect00XXXXXXSet: Use the 6 bits of data to index a color from the 64 color palette. Use that color for this pixel.01BBBBBBModify Blue: Hold the red and green color components of the previous pixel. Use the 6 bits of data as the new blue color component of this pixel.10RRRRRRModify Red: Hold the green and blue color components of the previous pixel. Use the 6 bits of data as the new red color component of this pixel.11GGGGGGModify Green: Hold the red and blue color components of the previous pixel. Use the 6 bits of data as the new green color component of this pixel. 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, 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, 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 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' the display (see above) in order to circumvent some of these restrictions.
HAM6-мен салыстырғанда, HAM8 экранда көбірек түс көрсете алады. HAM8 қолданатын экран түстерінің ең көп саны 262,144 түс (18 бит RGB түс кеңістігі) деп кеңінен хабарланды. Шын мәнінде, экрандағы бірегей түстердің ең көп саны 262,144-тен артық болуы мүмкін, бұл 64 түстің палитрасындағы әр түс компонентінің ең кіші екі битіне байланысты. Теориялық тұрғыдан алғанда, барлық 16,7 миллион түсті жеткілікті үлкен экранмен және тиісті базалық палитрамен көрсетуге болады, бірақ іс жүзінде толық дәлдікке қол жеткізудің шектеулері екі ең кіші биттерге мән берілмейді. Жалпы алғанда, HAM8 түс тереңдігі жоғары түсті дисплейге шамамен тең. HAM8 вертикальді дисплейдің ажыратымдылығы HAM6 сияқты. Көлденең ажыратымдылығы 320 (360 overscan-мен) бұрынғыдай, 640-қа (720 overscan-пен) екі есеге дейін немесе тіпті 1280 пикселге (1440 overscan-пен) төрт есеге дейін болуы мүмкін. AGA чипсеті дәстүрлі жазық дисплей режимдеріне тіпті жоғары ажыратымдылықтарды енгізді. HAM8 кескініндегі пикселдердің жалпы саны PAL режимдерін пайдаланып 829,440 (1440 × 576) аспауы керек, бірақ үшінші тараптың дисплейлік жабдығын (Indivision AGA flicker fixer) пайдаланып, 1,310,720 (1280 × 1024) аспауы мүмкін. Бастапқы HAM режимі сияқты, HAM8 экраны кез келген кездейсоқ орнында кез келген түсті көрсетуге қабілетсіз, өйткені әрбір пиксел шектеулі палитраға немесе алдыңғы пикселдің екі түс компонентіне сүйенеді. Бастапқы HAM режиміндегідей, дизайнерлер осы шектеулердің кейбіреулерін айналып өту үшін дисплейді "бөлуге" (жоғарыда қараңыз) таңдауы мүмкін.
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 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 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. Control bitsData bitsEffect00XXXXXXSet: Use the 6 bits of data to index a color from the 64 color palette. Use that color for this pixel.01BBBBBBModify Blue: Hold the red and green color components of the previous pixel. Use the 6 bits of data as the new blue color component of this pixel.10RRRRRRModify Red: Hold the green and blue color components of the previous pixel. Use the 6 bits of data as the new red color component of this pixel.11GGGGGGModify Green: Hold the red and blue color components of the previous pixel. Use the 6 bits of data as the new green color component of this pixel. 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, 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, 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 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' the display (see above) in order to circumvent some of these restrictions.
HAM эмуляциясы
HAM Amiga-ға және оның ерекше чипсеттеріне тән. HAM форматында кодталған бұрынғы суреттерді тікелей көрсету үшін, бастапқы дисплейлік аппаратты қажет етпейтін бағдарламалық HAM эмуляторлары жасалды. AmigaOS-тің 4.0 нұсқасына дейінгілері Amiga чипсеті болғанда HAM режимін пайдалана алады. 4.0 және одан жоғары AmigaOS нұсқалары, мүлдем басқа аппараттық құрылғылар үшін жасалғандықтан, қазіргі заманғы графикалық аппараттық құрылғыларда пайдалану үшін HAM эмуляциясын ұсынады. Басқа аппараттық құрылғыда жұмыс істейтін арнайы Amiga эмуляторлары дисплейлік аппараттық құрылғыны эмуляциялау арқылы HAM режимін көрсетуге қабілетті. Дегенмен, ешбір басқа компьютерлік архитектура HAM техникасын қолданбағандықтан, HAM суретін басқа архитектурада қарау үшін сурет файлын бағдарламалық түрде түсіндіру қажет. Дәл бағдарламалық кодтау дисплейлер арасындағы түс айырмашылықтарын ескермей, бірдей нәтиже береді. Бірақ, мақсат тек SHAM суретін Amiga емес платформада көрсету болса, қажетті түс мәндерін Copperlist арқылы бағдарламаланған палитра жазбаларына сүйене отырып алдын ала есептеуге болады, тіпті палитра сканерлеу жолының ортасында өзгерсе де. HAM немесе SHAM суретін жоғалтусыз 32-биттік палитраға түрлендіруге әрқашан болады.
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 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, 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.
Үшінші тараптың HAM-ті іске асыруы
Black Belt компаниясы шығарған HAM E деп аталатын құрылғы, Original чипсеті бар Amiga компьютерінен HAM8 түстер тереңдігімен төмен көлденең ажыратымдылықта суреттерді шығара алды. Amiga жоғары ажыратымдылықтағы суреттерді (640 пиксел ені, 720 пиксел биіктігі overscan-мен) шығару үшін конфигурацияланды. Бұл үшін пикселге 70 нс жылдамдықпен төрт биттік жазылымдар қолданылуы керек болды. Суреттің алғашқы бірнеше жолы HAM E құрылғысын конфигурациялауға қажетті ақпаратты кодтады. Содан кейін әрбір пиксел жұбы HAM E құрылғысы үшін ақпаратпен кодталды, ол ақпаратты 140 нс пикселге айналдырды (сегіз биттік жазылымдардың түстер тереңдігімен 320 пиксел ені немесе overscan-мен 360 пиксел ені бар сурет жасалды). Осылайша, HAM E сапасы төмен ажыратымдылықтағы HAM8 суретімен салыстыруға болады. HAM E әдісі төрт биттік жазылымдарды қолданатын жоғары ажыратымдылықтағы сурет, алты биттік жазылымдарды қолданатын төмен ажыратымдылықтағы суретке қарағанда үш есе көп жад ені және үш есе көп дерек беретінін пайдаланды. HAM техникасы ZX Spectrum үшін ULAplus / HAM256 / HAM8x1 режимдеріндегі HAM256 және HAM8x1 режимдерінде де іске асырылды, ол 64 түстік палитраны өзгерту арқылы экранда 256 түс көрсету мүмкіндігін ұсынады. Amiga HAM8-ге өте ұқсас HAM, ZX Spectrum компьютерлері үшін түпкілікті бейне схемасының (ULA) FPGA кеңейтуі түрінде ұсынылған жазылымдық HGFX жүйесінің бір бөлігі болып табылады. 2021 жылы eLeMeNt ZX компьютерінде іске асырылған HGFX/Q ретінде LnxSpectrum эмуляторында ұсынылып, сынақтан өтті.
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 Chipset. The Amiga would be set up to produce high resolution images (640 pixels wide, 720 with overscan). This required 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 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 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.