<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.amstrad-cpc.net/index.php?action=history&amp;feed=atom&amp;title=CPCWiki_-_THE_Amstrad_CPC_encyclopedia%21%3ASearching</id>
	<title>CPCWiki - THE Amstrad CPC encyclopedia!:Searching - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.amstrad-cpc.net/index.php?action=history&amp;feed=atom&amp;title=CPCWiki_-_THE_Amstrad_CPC_encyclopedia%21%3ASearching"/>
	<link rel="alternate" type="text/html" href="https://wiki.amstrad-cpc.net/index.php?title=CPCWiki_-_THE_Amstrad_CPC_encyclopedia!:Searching&amp;action=history"/>
	<updated>2026-09-04T18:57:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.amstrad-cpc.net/index.php?title=CPCWiki_-_THE_Amstrad_CPC_encyclopedia!:Searching&amp;diff=35382&amp;oldid=prev</id>
		<title>CPCLER at 13:02, 10 March 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.amstrad-cpc.net/index.php?title=CPCWiki_-_THE_Amstrad_CPC_encyclopedia!:Searching&amp;diff=35382&amp;oldid=prev"/>
		<updated>2007-03-10T13:02:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
;; This example shows a CPC+ hardware sprite.&lt;br /&gt;
;;&lt;br /&gt;
;; This example is designed for CPC+ only and will&lt;br /&gt;
;; not work on CPC or KC Compact.&lt;br /&gt;
;;&lt;br /&gt;
;;&lt;br /&gt;
;; This example will compile with the MAXAM assembler&lt;br /&gt;
;; or the built-in assembler of WinAPE32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; NOTE - For this example to work, the code must not&lt;br /&gt;
;; be in the range &amp;amp;4000-&amp;amp;7fff inclusive. The ASIC registers&lt;br /&gt;
;; are paged into this range, and the code would not be&lt;br /&gt;
;; visible to the CPU if it was also in this range.&lt;br /&gt;
org &amp;amp;8000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;;--------------------------------------------------&lt;br /&gt;
;; STEP 1 - Unlock CPC+ additional features&lt;br /&gt;
;; unlock asic to gain access to asic registers&lt;br /&gt;
&lt;br /&gt;
di&lt;br /&gt;
ld b,&amp;amp;bc&lt;br /&gt;
ld hl,sequence&lt;br /&gt;
ld e,17&lt;br /&gt;
.seq &lt;br /&gt;
ld a,(hl)&lt;br /&gt;
out (c),a&lt;br /&gt;
inc hl&lt;br /&gt;
dec e&lt;br /&gt;
jr nz,seq&lt;br /&gt;
ei&lt;br /&gt;
&lt;br /&gt;
;;--------------------------------------------------&lt;br /&gt;
;; STEP 2 - Setup sprite pixel data&lt;br /&gt;
;;&lt;br /&gt;
;; The ASIC has internal &amp;quot;RAM&amp;quot; used to store the sprite pixel&lt;br /&gt;
;; data. If you want to change the pixel data for a sprite&lt;br /&gt;
;; then you need to copy new data into the internal &amp;quot;RAM&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
;; page-in asic registers to &amp;amp;4000-&amp;amp;7fff&lt;br /&gt;
ld bc,&amp;amp;7fb8&lt;br /&gt;
out (c),c&lt;br /&gt;
&lt;br /&gt;
;; stored sprite pixel data&lt;br /&gt;
ld hl,sprite_pixel_data&lt;br /&gt;
&lt;br /&gt;
;; address of sprite 0 pixel data&lt;br /&gt;
;; sprite 0 pixel data is in the range &amp;amp;4000-&amp;amp;4100&lt;br /&gt;
ld de,&amp;amp;4000&lt;br /&gt;
&lt;br /&gt;
;; length of pixel data for a single sprite (16x16 = 256)&lt;br /&gt;
ld bc,&amp;amp;100&lt;br /&gt;
ldir&lt;br /&gt;
&lt;br /&gt;
;; page-out asic registers&lt;br /&gt;
ld bc,&amp;amp;7fa0&lt;br /&gt;
out (c),c&lt;br /&gt;
&lt;br /&gt;
;;--------------------------------------------------&lt;br /&gt;
;; STEP 3 - Setup sprite palette&lt;br /&gt;
;;&lt;br /&gt;
;; The sprites use a single 15 entry sprite palette.&lt;br /&gt;
;; pen 0 is ALWAYS transparent.&lt;br /&gt;
;;&lt;br /&gt;
;; The sprite palette is different to the screen palette.&lt;br /&gt;
&lt;br /&gt;
;; page-in asic registers to &amp;amp;4000-&amp;amp;7fff&lt;br /&gt;
ld bc,&amp;amp;7fb8&lt;br /&gt;
out (c),c&lt;br /&gt;
&lt;br /&gt;
;; copy colours into ASIC sprite palette registers&lt;br /&gt;
ld hl,sprite_colours&lt;br /&gt;
ld de,&amp;amp;6422&lt;br /&gt;
ld bc,15*2&lt;br /&gt;
ldir&lt;br /&gt;
&lt;br /&gt;
;; page-out asic registers&lt;br /&gt;
ld bc,&amp;amp;7fa0&lt;br /&gt;
out (c),c&lt;br /&gt;
&lt;br /&gt;
;;--------------------------------------------------&lt;br /&gt;
;; STEP 4 - Setup sprite properties&lt;br /&gt;
;;&lt;br /&gt;
;; Each sprite has properties which define the x,y coordinates &lt;br /&gt;
;; and x,y magnification.&lt;br /&gt;
&lt;br /&gt;
;; page-in asic registers to &amp;amp;4000-&amp;amp;7fff&lt;br /&gt;
ld bc,&amp;amp;7fb8&lt;br /&gt;
out (c),c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; set x coordinate for sprite 0&lt;br /&gt;
ld hl,100&lt;br /&gt;
ld (&amp;amp;6000),hl&lt;br /&gt;
&lt;br /&gt;
;; set y coordinate for sprite 0&lt;br /&gt;
ld hl,100&lt;br /&gt;
ld (&amp;amp;6002),hl&lt;br /&gt;
&lt;br /&gt;
;; set sprite x and y magnification&lt;br /&gt;
;; x magnification = 1&lt;br /&gt;
;; y magnification = 1&lt;br /&gt;
ld a,%0101&lt;br /&gt;
ld (&amp;amp;6004),a&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; page-out asic registers&lt;br /&gt;
ld bc,&amp;amp;7fa0&lt;br /&gt;
out (c),c&lt;br /&gt;
&lt;br /&gt;
;;--------------------------------------------------&lt;br /&gt;
ret&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;;--------------------------------------------------&lt;br /&gt;
;; - there is two bytes per colour.&lt;br /&gt;
;; - these are stored in a form that can be written direct &lt;br /&gt;
;; to the CPC+ colour palette registers (i.e. xGRB)&lt;br /&gt;
;; - pen 0 is always transparent and doesn&amp;#039;t have a entry&lt;br /&gt;
;; in the CPC+ palette&lt;br /&gt;
&lt;br /&gt;
.sprite_colours&lt;br /&gt;
defw &amp;amp;0111			;; colour for sprite pen 1&lt;br /&gt;
defw &amp;amp;0222			;; colour for sprite pen 2&lt;br /&gt;
defw &amp;amp;0333			;; colour for sprite pen 3&lt;br /&gt;
defw &amp;amp;0444			;; colour for sprite pen 4&lt;br /&gt;
defw &amp;amp;0555			;; colour for sprite pen 5&lt;br /&gt;
defw &amp;amp;0666			;; colour for sprite pen 6&lt;br /&gt;
defw &amp;amp;0777			;; colour for sprite pen 7&lt;br /&gt;
defw &amp;amp;0888			;; colour for sprite pen 8&lt;br /&gt;
defw &amp;amp;0999			;; colour for sprite pen 9&lt;br /&gt;
defw &amp;amp;0aaa			;; colour for sprite pen 10&lt;br /&gt;
defw &amp;amp;0bbb			;; colour for sprite pen 11&lt;br /&gt;
defw &amp;amp;0ccc			;; colour for sprite pen 12&lt;br /&gt;
defw &amp;amp;0ddd			;; colour for sprite pen 13&lt;br /&gt;
defw &amp;amp;0eee			;; colour for sprite pen 14&lt;br /&gt;
defw &amp;amp;0fff			;; colour for sprite pen 15&lt;br /&gt;
&lt;br /&gt;
;;---------------------------------------------&lt;br /&gt;
;; - there is one pixel per byte (bits 3..0 of each byte define the palette index for this pixel)&lt;br /&gt;
;; - these bytes are stored in a form that can be written direct to the ASIC&lt;br /&gt;
;; sprite pixel data&lt;br /&gt;
.sprite_pixel_data&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 0&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 1&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 2&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 3&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 4&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 5&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 6&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 7&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 8&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 9&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 10&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 11&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 12&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 13&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 14&lt;br /&gt;
defb &amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00,&amp;amp;00		;; line 15&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;;----------------------------------------------------------&lt;br /&gt;
;; this is the sequence to unlock the ASIC extra features&lt;br /&gt;
.sequence&lt;br /&gt;
defb &amp;amp;ff,&amp;amp;00,&amp;amp;ff,&amp;amp;77,&amp;amp;b3,&amp;amp;51,&amp;amp;a8,&amp;amp;d4,&amp;amp;62,&amp;amp;39,&amp;amp;9c,&amp;amp;46,&amp;amp;2b,&amp;amp;15,&amp;amp;8a,&amp;amp;cd,&amp;amp;ee&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>CPCLER</name></author>
	</entry>
</feed>