Difference between revisions of "Forrest picture"
Alan Sugar (Talk | contribs) |
|||
| (9 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| − | '''Forrest Picture''' is a demonstration on how to use the graphic abilities of the CPC | + | [[Category:Graphic]] |
| + | '''Forrest Picture''' is a picture drawn by [[Mr. Lou]]s girlfriend, and is a demonstration on how to use the graphic abilities of the CPC. | ||
| − | [[ | + | The picture uses [[Video modes|mode 1]] of the CPC. The graphic mode is limited to 4 simultanious colors. After publication the picture became the subject on how to break the 4 colour limit in mode 1 using [[rasters]]. Subsequent [[Tom & Jerry of GPA|T&J]] wrote a small program showing how the picture would look like using rasters generated by the [[Gate Array|gate array]]. |
| − | [[Image:Forrest raster version.png]] | + | ''Original picture'' |
| + | |||
| + | [[Image:Forrest picture.png|320px|Picture drawn by Mr. Lous girlfriend]] | ||
| + | |||
| + | ''Picture using rasters'' | ||
| + | |||
| + | [[Image:Forrest raster version.png|320px|Picture using raster routine by T&J]] | ||
| + | |||
| + | == Sourcecode == | ||
| + | |||
| + | <geshi lang=z80> | ||
| + | ; Example of rasters in a MODE 1 screen | ||
| + | ; T&J/GPA in 2009 | ||
| + | |||
| + | ; Done under WINAPE | ||
| + | ; Not tested on a real CPC, so maybe it needs some timing adjustments | ||
| + | |||
| + | ; Wait for Color Lines ! Rasters inside !! | ||
| + | |||
| + | ORG &9000 | ||
| + | NOLIST | ||
| + | WRITE "RASTERS.BIN" | ||
| + | |||
| + | black equ &54 | ||
| + | grey equ &41 | ||
| + | green_19 equ &51 | ||
| + | red_6 equ &4C | ||
| + | blue_1 equ &44 | ||
| + | blue_11 equ &57 | ||
| + | blue_14 equ &5F | ||
| + | bleu_clair equ &53 | ||
| + | |||
| + | violet equ &58 | ||
| + | |||
| + | JP booter | ||
| + | |||
| + | save38 defw &0 | ||
| + | |||
| + | Booter DI | ||
| + | LD HL,(&38) | ||
| + | LD (save38),HL | ||
| + | LD HL,&C9FB | ||
| + | LD (&38),HL | ||
| + | EI | ||
| + | |||
| + | |||
| + | main DI | ||
| + | LD B,&F5 | ||
| + | sync IN A,(C) | ||
| + | RRA | ||
| + | JR NC,sync | ||
| + | |||
| + | CALL scan_spacekey | ||
| + | CP &7F | ||
| + | JP Z,endit | ||
| + | |||
| + | LD BC,&7F02 ; sky | ||
| + | OUT (C),C | ||
| + | LD A,blue_11 | ||
| + | OUT (C),A | ||
| + | |||
| + | EI | ||
| + | |||
| + | HALT | ||
| + | |||
| + | HALT | ||
| + | |||
| + | LD HL,&FDD0 | ||
| + | wait1 INC HL | ||
| + | LD A,H | ||
| + | AND A | ||
| + | JR NZ,wait1 | ||
| + | |||
| + | LD BC,&7F02 | ||
| + | OUT (C),C | ||
| + | LD A,&5F | ||
| + | OUT (C),A | ||
| + | |||
| + | HALT | ||
| + | HALT | ||
| + | |||
| + | LD HL,&FFC0 | ||
| + | wait2 INC HL | ||
| + | LD A,H | ||
| + | AND A | ||
| + | JR NZ,wait2 | ||
| + | |||
| + | LD BC,&7F02 ; board of the lake | ||
| + | OUT (C),C | ||
| + | LD A,grey | ||
| + | OUT (C),A | ||
| + | |||
| + | LD HL,&FF74 | ||
| + | wait3 INC HL | ||
| + | LD A,H | ||
| + | AND A | ||
| + | JR NZ,wait3 | ||
| + | |||
| + | LD BC,&7F02 | ||
| + | OUT (C),C | ||
| + | |||
| + | LD D,green_19 | ||
| + | LD E,red_6 | ||
| + | |||
| + | DI | ||
| + | |||
| + | LD A,&40 | ||
| + | |||
| + | split1 OUT (C),E ; red mushrooms | ||
| + | PUSH AF | ||
| + | NOP | ||
| + | NOP | ||
| + | NOP | ||
| + | NOP | ||
| + | NOP | ||
| + | OUT (C),D ; green mushroom | ||
| + | |||
| + | NOP | ||
| + | NOP | ||
| + | NOP | ||
| + | |||
| + | LD A,&9 | ||
| + | waitsp1 DEC A | ||
| + | JR NZ,waitsp1 | ||
| + | |||
| + | POP AF | ||
| + | DEC A | ||
| + | JR NZ,split1 | ||
| + | |||
| + | JP main | ||
| + | |||
| + | endit | ||
| + | |||
| + | LD BC,&7F02 ; sky | ||
| + | OUT (C),C | ||
| + | LD A,blue_14 | ||
| + | OUT (C),A | ||
| + | |||
| + | LD HL,(save38) | ||
| + | DI | ||
| + | LD (&38),HL | ||
| + | EI | ||
| + | RET | ||
| + | |||
| + | scan_spacekey | ||
| + | |||
| + | LD BC,&F40E | ||
| + | OUT (C),C | ||
| + | LD BC,&F6C0 | ||
| + | OUT (C),C | ||
| + | LD C,&0 | ||
| + | OUT (C),C | ||
| + | LD BC,&F792 | ||
| + | OUT (C),C | ||
| + | LD BC,&F645 | ||
| + | OUT (C),C | ||
| + | LD B,&F4 | ||
| + | IN A,(C) | ||
| + | LD BC,&F782 | ||
| + | OUT (C),C | ||
| + | LD BC,&F600 | ||
| + | OUT (C),C | ||
| + | RET | ||
| + | </geshi> | ||
| + | |||
| + | == Download == | ||
| + | |||
| + | [[Media:trees.DSK|DSK image with picture and source code]] | ||
| + | |||
| + | == Links == | ||
| + | |||
| + | If rasters provide improvement is up for debate at: | ||
| + | |||
| + | [http://cpcwiki.eu/forum/index.php/topic,396.msg3146.html#msg3146 CPCWIKI forum entry] | ||
Latest revision as of 21:40, 16 December 2010
Forrest Picture is a picture drawn by Mr. Lous girlfriend, and is a demonstration on how to use the graphic abilities of the CPC.
The picture uses mode 1 of the CPC. The graphic mode is limited to 4 simultanious colors. After publication the picture became the subject on how to break the 4 colour limit in mode 1 using rasters. Subsequent T&J wrote a small program showing how the picture would look like using rasters generated by the gate array.
Original picture
Picture using rasters
Sourcecode
<geshi lang=z80>
- Example of rasters in a MODE 1 screen
- T&J/GPA in 2009
- Done under WINAPE
- Not tested on a real CPC, so maybe it needs some timing adjustments
- Wait for Color Lines ! Rasters inside !!
ORG &9000 NOLIST WRITE "RASTERS.BIN"
black equ &54 grey equ &41 green_19 equ &51 red_6 equ &4C blue_1 equ &44 blue_11 equ &57 blue_14 equ &5F bleu_clair equ &53
violet equ &58
JP booter
save38 defw &0
Booter DI LD HL,(&38) LD (save38),HL LD HL,&C9FB LD (&38),HL EI
main DI
LD B,&F5
sync IN A,(C)
RRA
JR NC,sync
CALL scan_spacekey CP &7F JP Z,endit
LD BC,&7F02 ; sky OUT (C),C LD A,blue_11 OUT (C),A
EI
HALT
HALT
LD HL,&FDD0 wait1 INC HL LD A,H AND A JR NZ,wait1
LD BC,&7F02 OUT (C),C LD A,&5F OUT (C),A
HALT HALT
LD HL,&FFC0 wait2 INC HL LD A,H AND A JR NZ,wait2
LD BC,&7F02 ; board of the lake OUT (C),C LD A,grey OUT (C),A
LD HL,&FF74 wait3 INC HL LD A,H AND A JR NZ,wait3
LD BC,&7F02 OUT (C),C
LD D,green_19 LD E,red_6
DI
LD A,&40
split1 OUT (C),E ; red mushrooms PUSH AF NOP NOP NOP NOP NOP OUT (C),D ; green mushroom
NOP NOP NOP
LD A,&9 waitsp1 DEC A JR NZ,waitsp1
POP AF DEC A JR NZ,split1
JP main
endit
LD BC,&7F02 ; sky OUT (C),C LD A,blue_14 OUT (C),A
LD HL,(save38) DI LD (&38),HL EI RET
scan_spacekey
LD BC,&F40E OUT (C),C LD BC,&F6C0 OUT (C),C LD C,&0 OUT (C),C LD BC,&F792 OUT (C),C LD BC,&F645 OUT (C),C LD B,&F4 IN A,(C) LD BC,&F782 OUT (C),C LD BC,&F600 OUT (C),C RET </geshi>
Download
DSK image with picture and source code
Links
If rasters provide improvement is up for debate at: