update examples to use the new const eval syntax
This commit is contained in:
+12
-13
@@ -10,23 +10,22 @@
|
||||
|
||||
(def GENERATION_MS 200)
|
||||
|
||||
; Real pixel size
|
||||
(sc-init 400 400)
|
||||
; Upscaling factor (bug pixels)
|
||||
(sc-opt SCREEN_UPSCALE 10)
|
||||
|
||||
; Number of big pixels
|
||||
; Number of 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
|
||||
(def UPSCALE 10)
|
||||
|
||||
; --- end of config ---
|
||||
|
||||
; Real pixel size
|
||||
(sc-init (=mul UPSCALE W) (=mul UPSCALE H))
|
||||
; Upscaling factor (bug pixels)
|
||||
(sc-opt SCREEN_UPSCALE UPSCALE)
|
||||
|
||||
(def XMAX (=sub W 1))
|
||||
(def YMAX (=sub H 1))
|
||||
(def NCELLS (=mul W H))
|
||||
|
||||
(sc-opt SCREEN_AUTO_BLIT 0)
|
||||
|
||||
(sc-erase 0) ; all black
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
(
|
||||
(sc-init 800 600)
|
||||
(sc-opt SCREEN_AUTOBLIT 0)
|
||||
; High resolution mandelbrot
|
||||
|
||||
(def W 800)
|
||||
(def H 600)
|
||||
(def MAXITER 50)
|
||||
|
||||
(def MAXITER 50) ; Increase for more detail but slower render
|
||||
|
||||
(sc-init W H)
|
||||
(sc-opt SCREEN_AUTOBLIT 0)
|
||||
|
||||
(sym gradient r9)
|
||||
(sym asciigr r10)
|
||||
|
||||
|
||||
(mkbf gradient (
|
||||
0x421e0f 0x19071a 0x09012f 0x040449 0x000764 0x0c2c8a 0x1852b1 0x397dd1
|
||||
0x421e0f 0x19071a 0x09012f 0x040449 0x000764 0x0c2c8a 0x1852b1 0x397dd1
|
||||
0x86b5e5 0xd3ecf8 0xf1e9bf 0xf8c95f 0xffaa00 0xcc8000 0x995700 0x6a3403))
|
||||
|
||||
|
||||
(sym x r7)
|
||||
(sym y r8)
|
||||
(:row)
|
||||
@@ -34,38 +37,38 @@
|
||||
(sc-blit) ; Render after every row
|
||||
(cmp y H)
|
||||
(j.ne :row)
|
||||
|
||||
|
||||
;(sc-blit)
|
||||
|
||||
|
||||
(:slp)
|
||||
(sc-poll)
|
||||
(mslp 10)
|
||||
(j :slp)
|
||||
|
||||
|
||||
(proc pixel xi yi
|
||||
(sym x0 r7)
|
||||
(sym x0 r7)
|
||||
(sym y0 r8)
|
||||
(itf x0 xi)
|
||||
(itf y0 yi)
|
||||
|
||||
|
||||
; Scale to the interesting range x -2.5..1 and y -1..1
|
||||
(itf r0 W)
|
||||
(itf r1 H)
|
||||
|
||||
|
||||
(fdiv x0 r0)
|
||||
(fmul x0 3.5)
|
||||
(fsub x0 2.5)
|
||||
|
||||
|
||||
(fdiv y0 r1)
|
||||
(fmul y0 2.4)
|
||||
(fsub y0 1.2)
|
||||
|
||||
(fsub y0 1.2)
|
||||
|
||||
(sym x r5)
|
||||
(sym y r6)
|
||||
(ld x 0.0)
|
||||
(ld y 0.0)
|
||||
(sym iter r4)
|
||||
|
||||
|
||||
(:iter)
|
||||
(cmp iter MAXITER)
|
||||
(j.eq :end)
|
||||
@@ -74,18 +77,18 @@
|
||||
(fadd r2 r1)
|
||||
(fcmp r2 4.0)
|
||||
(j.gt :end)
|
||||
|
||||
|
||||
(fsub r2 r0 r1)
|
||||
(fadd r2 x0)
|
||||
|
||||
|
||||
(fmul r0 x y)
|
||||
(fmul r0 2.0)
|
||||
(fmul r0 2.0)
|
||||
(fadd r0 y0)
|
||||
(ld y r0)
|
||||
(ld y r0)
|
||||
(ld x r2)
|
||||
(inc iter)
|
||||
(j :iter)
|
||||
|
||||
|
||||
(:end)
|
||||
(ret iter)
|
||||
)
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
(
|
||||
(sc-init 1024 768)
|
||||
(sc-opt SCREEN_AUTOBLIT 0)
|
||||
(def W 1024)
|
||||
(def H 768)
|
||||
(sym MAXITER g0)
|
||||
(ld MAXITER 50)
|
||||
(def DEF_MAXITER 50)
|
||||
|
||||
; ---
|
||||
|
||||
(sc-init W H)
|
||||
(sc-opt SCREEN_AUTOBLIT 0)
|
||||
(sym maxiter g0)
|
||||
|
||||
(ld maxiter DEF_MAXITER)
|
||||
|
||||
(lds @cout "Interactive Mandelbrot\n")
|
||||
(lds @cout "----------------------\n")
|
||||
@@ -18,7 +23,7 @@
|
||||
|
||||
; index into the skip/size table
|
||||
(sym mb_skip_index r11)
|
||||
|
||||
|
||||
; Interactive movement speed
|
||||
(def ZOOM_STEP 0.1)
|
||||
(def PAN_STEP 0.3)
|
||||
@@ -66,10 +71,10 @@
|
||||
(sym did_change r15)
|
||||
(sym is_first_render r6)
|
||||
(ld is_first_render 1)
|
||||
|
||||
|
||||
(sym GRADIENT g1)
|
||||
(mkbf GRADIENT (
|
||||
0x421e0f 0x19071a 0x09012f 0x040449 0x000764 0x0c2c8a 0x1852b1 0x397dd1
|
||||
0x421e0f 0x19071a 0x09012f 0x040449 0x000764 0x0c2c8a 0x1852b1 0x397dd1
|
||||
0x86b5e5 0xd3ecf8 0xf1e9bf 0xf8c95f 0xffaa00 0xcc8000 0x995700 0x6a3403))
|
||||
|
||||
; render row
|
||||
@@ -86,7 +91,7 @@
|
||||
(ld x col)
|
||||
(:col)
|
||||
(call pixel x y px py scale)
|
||||
(sub r0 MAXITER 1)
|
||||
(sub r0 maxiter 1)
|
||||
(rcmp res0 1 r0
|
||||
(eq?
|
||||
(mod r0 res0 16)
|
||||
@@ -106,7 +111,7 @@
|
||||
(sc-poll)
|
||||
; did_change -- did the user interact during this frame?
|
||||
(ld did_change 0)
|
||||
|
||||
|
||||
(sym pstep r2)
|
||||
(sym zstep r3)
|
||||
(ld pstep PAN_STEP)
|
||||
@@ -117,10 +122,10 @@
|
||||
(fmul zstep 5.0)
|
||||
))
|
||||
(fadd zstep 1.0)
|
||||
|
||||
|
||||
; scaled movement speed
|
||||
(fdiv pstep mb_s)
|
||||
|
||||
|
||||
(tst is_first_render (z?
|
||||
; A <
|
||||
(sc-key _ KEY_A (nz?
|
||||
@@ -154,7 +159,7 @@
|
||||
(sc-key r0 KEY_Q (nz?
|
||||
(fmul mb_s zstep)
|
||||
(ld did_change 1)
|
||||
(lds @cout "Zoom in\n")
|
||||
(lds @cout "Zoom in\n")
|
||||
))
|
||||
|
||||
; E -
|
||||
@@ -166,16 +171,16 @@
|
||||
|
||||
; R iter+
|
||||
(sc-key r0 KEY_R (nz?
|
||||
(add MAXITER 50)
|
||||
(lds @cout "ITER=") (call printnum MAXITER) (ld @cout '\n')
|
||||
(add maxiter 50)
|
||||
(lds @cout "ITER=") (call printnum maxiter) (ld @cout '\n')
|
||||
(mslp 200) ; Avoid unexpected rapid change
|
||||
))
|
||||
|
||||
; F iter-
|
||||
(sc-key r0 KEY_F (nz?
|
||||
(cmp MAXITER 50)
|
||||
(sub.gt MAXITER 50)
|
||||
(lds @cout "ITER=") (call printnum MAXITER) (ld @cout '\n')
|
||||
(cmp maxiter 50)
|
||||
(sub.gt maxiter 50)
|
||||
(lds @cout "ITER=") (call printnum maxiter) (ld @cout '\n')
|
||||
(mslp 200) ; Avoid unexpected rapid change
|
||||
))
|
||||
|
||||
@@ -209,7 +214,7 @@
|
||||
(unsym mb_col_skip)
|
||||
(unsym mb_row_skip)
|
||||
|
||||
(cmp mb_row H
|
||||
(cmp mb_row H
|
||||
(lt?
|
||||
; if mb_row < H
|
||||
(add mb_row ROW_SKIP)
|
||||
@@ -220,7 +225,7 @@
|
||||
(add mb_skip_index 1)
|
||||
(ld is_first_render 0)
|
||||
|
||||
(cmp mb_skip_index MB_SKIP_TABLE_SIZE (ge?
|
||||
(cmp mb_skip_index MB_SKIP_TABLE_SIZE (ge?
|
||||
; if skip index is out of bounds, go back to repeating area
|
||||
(ld mb_skip_index MB_SKIP_REPEAT_INDEX)
|
||||
))
|
||||
@@ -229,7 +234,7 @@
|
||||
(j :loop)
|
||||
|
||||
(proc pixel xi yi off_x off_y scale
|
||||
(sym x0 r7)
|
||||
(sym x0 r7)
|
||||
(sym y0 r8)
|
||||
(itf x0 xi)
|
||||
(itf y0 yi)
|
||||
@@ -258,7 +263,7 @@
|
||||
(sym iter r4)
|
||||
|
||||
(:iter)
|
||||
(cmp iter MAXITER)
|
||||
(cmp iter maxiter)
|
||||
(j.eq :end)
|
||||
(fmul r0 x x)
|
||||
(fmul r1 y y)
|
||||
@@ -280,7 +285,7 @@
|
||||
(:end)
|
||||
(ret iter)
|
||||
)
|
||||
|
||||
|
||||
(proc printnum num
|
||||
(mkbf r15)
|
||||
(ld r1 num)
|
||||
|
||||
@@ -1,18 +1,22 @@
|
||||
(
|
||||
(sc-init 1024 768)
|
||||
(sc-opt SCREEN_AUTOBLIT 0)
|
||||
(sc-opt SCREEN_UPSCALE 8)
|
||||
(def W 128)
|
||||
(def H 96)
|
||||
(def PX_W 1024)
|
||||
(def PX_H 768)
|
||||
(def UPSCALE 8)
|
||||
(def MAXITER 50)
|
||||
|
||||
|
||||
(sc-init PX_W PX_H)
|
||||
(sc-opt SCREEN_AUTOBLIT 0)
|
||||
(sc-opt SCREEN_UPSCALE UPSCALE)
|
||||
(def W (=div PX_W UPSCALE))
|
||||
(def H (=div PX_H UPSCALE))
|
||||
|
||||
(sym gradient r9)
|
||||
(sym asciigr r10)
|
||||
|
||||
|
||||
(mkbf gradient (
|
||||
0x421e0f 0x19071a 0x09012f 0x040449 0x000764 0x0c2c8a 0x1852b1 0x397dd1
|
||||
0x421e0f 0x19071a 0x09012f 0x040449 0x000764 0x0c2c8a 0x1852b1 0x397dd1
|
||||
0x86b5e5 0xd3ecf8 0xf1e9bf 0xf8c95f 0xffaa00 0xcc8000 0x995700 0x6a3403))
|
||||
|
||||
|
||||
(sym x r7)
|
||||
(sym y r8)
|
||||
(:row)
|
||||
@@ -35,38 +39,38 @@
|
||||
(sc-blit) ; Render after every row
|
||||
(cmp y H)
|
||||
(j.ne :row)
|
||||
|
||||
|
||||
;(sc-blit)
|
||||
|
||||
|
||||
(:slp)
|
||||
(sc-poll)
|
||||
(mslp 10)
|
||||
(j :slp)
|
||||
|
||||
|
||||
(proc pixel xi yi
|
||||
(sym x0 r7)
|
||||
(sym x0 r7)
|
||||
(sym y0 r8)
|
||||
(itf x0 xi)
|
||||
(itf y0 yi)
|
||||
|
||||
|
||||
; Scale to the interesting range x -2.5..1 and y -1..1
|
||||
(itf r0 W)
|
||||
(itf r1 H)
|
||||
|
||||
|
||||
(fdiv x0 r0)
|
||||
(fmul x0 3.5)
|
||||
(fsub x0 2.5)
|
||||
|
||||
|
||||
(fdiv y0 r1)
|
||||
(fmul y0 2.4)
|
||||
(fsub y0 1.2)
|
||||
|
||||
(fsub y0 1.2)
|
||||
|
||||
(sym x r5)
|
||||
(sym y r6)
|
||||
(ld x 0.0)
|
||||
(ld y 0.0)
|
||||
(sym iter r4)
|
||||
|
||||
|
||||
(:iter)
|
||||
(cmp iter MAXITER)
|
||||
(j.eq :end)
|
||||
@@ -75,18 +79,18 @@
|
||||
(fadd r2 r1)
|
||||
(fcmp r2 4.0)
|
||||
(j.gt :end)
|
||||
|
||||
|
||||
(fsub r2 r0 r1)
|
||||
(fadd r2 x0)
|
||||
|
||||
|
||||
(fmul r0 x y)
|
||||
(fmul r0 2.0)
|
||||
(fmul r0 2.0)
|
||||
(fadd r0 y0)
|
||||
(ld y r0)
|
||||
(ld y r0)
|
||||
(ld x r2)
|
||||
(inc iter)
|
||||
(j :iter)
|
||||
|
||||
|
||||
(:end)
|
||||
(ret iter)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user