life is now better
This commit is contained in:
+71
-4
@@ -1,14 +1,33 @@
|
||||
(
|
||||
; simple GOL with screen and a buffer
|
||||
; simple GOL with screen and a buffer + DRAWING!!!
|
||||
|
||||
; Middle-click to payse or resume
|
||||
; (hold the button until paused - there is a sleep between generations and checking buttons)
|
||||
;
|
||||
; When paused, draw with left (white) and right (black) mouse buttons
|
||||
;
|
||||
; Resume by clicking middle again.
|
||||
|
||||
(def GENERATION_MS 200)
|
||||
|
||||
; Real pixel size
|
||||
(sc-init 400 400)
|
||||
; Upscaling factor (bug pixels)
|
||||
(sc-opt SCREEN_UPSCALE 10)
|
||||
(sc-opt SCREEN_AUTO_BLIT 0)
|
||||
|
||||
; Number of big pixels
|
||||
(def W 40)
|
||||
(def H 40)
|
||||
|
||||
; !!! If you change size, also update the following constants.
|
||||
; Compile-time math is not implemented yet.
|
||||
|
||||
(def XMAX 39) ; W-1
|
||||
(def YMAX 39) ; H-1
|
||||
(def NCELLS 1600) ; W*H
|
||||
|
||||
; --- end of config ---
|
||||
(sc-opt SCREEN_AUTO_BLIT 0)
|
||||
|
||||
(sc-erase 0) ; all black
|
||||
(sym ng g15)
|
||||
@@ -27,13 +46,61 @@
|
||||
(bfwr @ng 95 1)
|
||||
(bfwr @ng 96 1)
|
||||
(bfwr @ng 97 1)
|
||||
|
||||
|
||||
(def LBTN 0)
|
||||
(def RBTN 1)
|
||||
(def MBTN 2)
|
||||
|
||||
(:loop)
|
||||
(sc-poll)
|
||||
; TODO interactivity?
|
||||
|
||||
; Drawing
|
||||
(sc-mbtn _ MBTN
|
||||
(nz?
|
||||
(:release)
|
||||
(sc-poll)
|
||||
(mslp 10)
|
||||
(sc-mbtn _ MBTN (nz? (j :release)))
|
||||
|
||||
(:mousing)
|
||||
(sc-poll)
|
||||
(mslp 10)
|
||||
|
||||
(ld r3 -1)
|
||||
|
||||
(sc-mbtn _ LBTN)
|
||||
(ld.nz r3 1)
|
||||
(sc-mbtn _ RBTN)
|
||||
(ld.nz r3 0)
|
||||
|
||||
(tst r3 (nneg?
|
||||
(sc-mouse r0 r1)
|
||||
|
||||
(tst r3)
|
||||
(sc-wr.nz r0 r1 #ffffff)
|
||||
(sc-wr.z r0 r1 #000000)
|
||||
|
||||
(sc-blit)
|
||||
(mul r1 W)
|
||||
(add r0 r1)
|
||||
(ld8 r3:8 r3)
|
||||
(bfwr @ng r0 r3)
|
||||
))
|
||||
|
||||
(sc-mbtn _ MBTN
|
||||
(z? (j :mousing)))
|
||||
|
||||
(:release2)
|
||||
(sc-poll)
|
||||
(mslp 10)
|
||||
(sc-mbtn _ MBTN (nz? (j :release2)))
|
||||
)
|
||||
)
|
||||
|
||||
(call Display)
|
||||
(sc-blit)
|
||||
(mslp 200)
|
||||
(mslp GENERATION_MS)
|
||||
(j :loop)
|
||||
|
||||
(proc CountNeighbors x y
|
||||
|
||||
Reference in New Issue
Block a user