Changed a lot of crap, too much to explain

This commit is contained in:
Pedro de Oliveira 2014-08-20 04:54:27 +01:00
parent adecbfae86
commit e5a5eec99d
1 changed files with 125 additions and 34 deletions

View File

@ -11,44 +11,22 @@ clr_screen EQU $0daf ; ROM routine to clear the screen
; Star Structure ; Star Structure
; X - 1 Byte $00 - $ff ; X - 1 Byte $00 - $ff
; Y - 1 Byte $00 - $c0 ; Y - 1 Byte $00 - $c0
; ---------- ; Speed - 1 Byte $1 - $3
; Z - 1 Byte
STAR_SIZE EQU $4
MAX_STARS EQU 10 MAX_STARS EQU 10
INCLUDE "starrnd.asm"
start start
xor a xor a
ld (tv_flag), a ld (tv_flag), a
push bc push bc
call clear_screen call clear_screen
call initStars
main_start main_start
ld hl, StarRnd ld hl, STARS
ld c, MAX_STARS ld c, MAX_STARS
main main
ld a, (hl) ; HL points to X
dec a
ld d, a ; Save X-1 to D
inc hl
ld a, (hl) ; HL now points to Y
ld e, a ; Save Y to E
push hl
push bc
call get_screen_address
; Video RAM address for those X,Y is now in HL and the bit needed
; to be set in that address value is in A
ld d, $0 ; 0 - Clear pixel
call write_pixel ; Uses those values and writes the pixel
pop bc
pop hl
dec hl ; Get back to X
ld a, (hl) ; HL points to X ld a, (hl) ; HL points to X
ld d, a ; Save X to D ld d, a ; Save X to D
inc hl inc hl
@ -66,26 +44,113 @@ main
pop bc pop bc
pop hl pop hl
inc hl ; Next star
inc hl ; Next star inc hl ; Next star
dec c ; Decrement counter dec c ; Decrement counter
jr nz, main ; Repeat if not zero jr nz, main ; Repeat if not zero
push hl ;push hl
push bc ;push bc
call increment_x ; Increment X position in each star ;call increment_x ; Increment X position in each star
pop bc ;pop bc
pop hl ;pop hl
jr main_start ; Do it all over again jr main_start ; Do it all over again
pop bc pop bc
ret ret
PROC
initStars
push bc
ld d, MAX_STARS
ld hl, STARS
initStars_loop
push hl
call getRandomX
pop hl
ld (hl), a
inc hl
push hl
call getRandomY
pop hl
ld (hl), a
inc hl
push hl
call getRandomSpeed
pop hl
ld (hl), a
inc hl
dec d
jr nz, initStars_loop
pop bc
ret
ENDP
PROC
getRandomX
ld hl, (xrandpos)
ld a, (hl)
cp $0
jr z, getRandomX_reset
inc hl
ld (xrandpos), hl
ret
getRandomX_reset
ld hl, xranddata
ld (xrandpos), hl
jr getRandomX
ENDP
PROC
getRandomY
push hl
ld hl, (yrandpos)
ld a, (hl)
cp $0
jr z, getRandomY_reset
inc hl
ld (yrandpos), hl
pop hl
ret
getRandomY_reset
ld hl, yranddata
ld (yrandpos), hl
jr getRandomY
ENDP
PROC
getRandomSpeed
push hl
ld hl, (speedrandpos)
ld a, (hl)
cp $0
jr z, getRandomSpeed_reset
inc hl
ld (speedrandpos), hl
pop hl
ret
getRandomSpeed_reset
ld hl, speedranddata
ld (speedrandpos), hl
jr getRandomSpeed
ENDP
PROC PROC
; Increment X ; Increment X
increment_x increment_x
push bc push bc
ld hl, StarRnd ld hl, STARS
ld c, MAX_STARS ld c, MAX_STARS
increment_x_loop increment_x_loop
ld a, (hl) ld a, (hl)
@ -101,7 +166,26 @@ increment_x_update
pop bc pop bc
ret ret
increment_x_zero increment_x_zero
ld a, $0 inc hl ; Set to Y position
push hl
call getRandomY
pop hl
ld (hl), a ; Set Y = getRandomY
inc hl ; Set to speed position
push hl
call getRandomSpeed
pop hl
ld (hl), a ; Set Speed = getRandomSpeed
dec hl
dec hl ; Get back to X position
ld a, $0 ; X = 0
jr increment_x_update jr increment_x_update
ENDP ENDP
@ -128,7 +212,7 @@ write_pixel_do_it
jr z, write_pixel_set jr z, write_pixel_set
write_pixel_unset write_pixel_unset
ld a, (hl) ld a, (hl)
and c xor c
ld (hl), a ld (hl), a
jr write_pixel_end jr write_pixel_end
write_pixel_set write_pixel_set
@ -179,4 +263,11 @@ PROC
INCLUDE "clear.asm" INCLUDE "clear.asm"
ENDP ENDP
STARS
REPT MAX_STARS
DB $0,$0,$0
ENDM
INCLUDE "randomvalues.asm"
END start END start