From 8303d83efab1ee1135cf2396a792479966ed2303 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Tue, 8 Nov 2022 02:08:54 -0500 Subject: drunkwalk does spawning and plotting, too. --- dla.s | 12 +----------- drunkwalk.s | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/dla.s b/dla.s index a18a23b..bae1b39 100644 --- a/dla.s +++ b/dla.s @@ -181,17 +181,7 @@ wl: jsr drawseed next_particle: - ldy RANDOM ; spawn a new particle - lda (spawn_x),y - sta cursor_x - lda (spawn_y),y - sta cursor_y - jsr drunkwalk ; walk it around - beq next_particle ; if it went out of bounds, try again - - ; particle stuck to an existing pixel, draw it - jsr plot - + jsr drunkwalk ; spawn, walk around, plot (all in one) inc particles bne ph_ok inc particles+1 diff --git a/drunkwalk.s b/drunkwalk.s index ca017c0..02ab67d 100644 --- a/drunkwalk.s +++ b/drunkwalk.s @@ -6,12 +6,16 @@ ;;; possible. ; Y and X are backwards: Y holds the X coordinate, and X holds the Y coordinate. ; Has to be, because there's no (zpind),x addressing mode. -oob: - rts drunkwalk: - ldy cursor_x ; 3 - ldx cursor_y ; 3 +oob: + ldy RANDOM ; spawn a new particle + lda (spawn_x),y + sta cursor_x + lda (spawn_y),y + sta cursor_y + tax + ldy cursor_x lda lineaddrs_l,x ; 5 sta pixptr ; 3 @@ -132,4 +136,13 @@ check_lrd: jmp move_pixel stick: + ; pixel stuck next to an existing pixel, draw it and return. + ldx cursor_y + lda lineaddrs_l,x + sta pixptr + lda lineaddrs_h,x + sta pixptr+1 + ldy cursor_x + lda #1 + sta (pixptr),y rts -- cgit v1.2.3