level 7
org &4000xor a:call &bc0e; --- Text ---ld hl,atextmore:ld a,(hl)inc lor ajr z,textoutld b,1cp 11jr nz,normaltextld b,adec anormaltext:call 47962dec bjr nz,normaltextjr moreatext:db 10db " A Bouncing Pixel!",11,13db "Optimus/Dirty Minds",11,13db " 256b shit",0textout:; ---- Generating Videoram Y addresses ----ld hl,49152ld ix,&4200:ld iy,&4300ld b,25char25:ld de,2048ld c,d;c=8line8:ld a,h:ld (ix),a:inc ixld a,l:ld (iy),a:inc iyadd hl,dex:dec cy:jr nz,line8ld de,65536-16384+80add hl,dedec bjr nz,char25; ---- Main ----main:;&3c = inc a;&3d = dec a; --- Direction ---ld hl,ymovld a,(y)or ajr nz,noy0ld (hl),&3cjr noy198noy0:cp 198jr nz,noy198ld (hl),&3dnoy198:ld hl,xmovld a,(x)or ajr nz,nox0ld (hl),&3cjr nox159nox0:cp 159jr nz,nox159ld (hl),&3dnox159:; --- Calculate address ---ld h,&42ld a,(y)ymov:inc a:ld (y),ald l,ald d,(hl):inc h:ld e,(hl):ex de,hlld a,(x)xmov:inc a:ld (x),ald b,0:srl a:ld c,aadd hl,bcld a,(x)and 1;ld a,%10000000ld a,%00100000jr z,norightsrl anoright:ld b,a; ---- Double Pixel ----ld c,(hl)ld (hl),bld a,(y)and 7cp 7jr nz,syn2048ld de,65536-14336+80jr no2048syn2048:ld de,2048no2048:push hl:add hl,de:push hlld d,(hl):ld (hl),b; --- Vsync ---ld b,&f5vsync0:in a,(c)rrajr nc,vsync0haltpop hl:ld (hl),d:pop hl:ld (hl),cld bc,&7f00out (c),cld a,&54out (c),ainc cout (c),cinc aout (c),ajp main
2008年05月01日 13点05分