Difference between revisions of "Forrest picture"
Alan Sugar (Talk | contribs) |
Alan Sugar (Talk | contribs) |
||
Line 1: | Line 1: | ||
− | '''Forrest Picture''' is a demonstration on how to use the graphic abilities of the CPC | + | '''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 [[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|Tom & Jerry of GPA]] wrote a small program showing how the picture would look like using rasters generated by the [[gate array]]. |
− | [[Image:Forrest raster version.png|320px]] | + | ''Original picture'' |
+ | |||
+ | [[Image:Forrest original.gif|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 == |
Revision as of 02:31, 12 October 2009
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 Tom & Jerry of GPA 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>