-
-
Notifications
You must be signed in to change notification settings - Fork 490
poke
minerobber edited this page May 8, 2024
·
25 revisions
This API was extended in version 0.9 and 1.0.
poke(addr, val)
-
poke(addr, val, [bits=8])
added in 0.9 poke4(addr4, val4)
-
poke2(addr2, val2)
added in 1.0 -
poke1(bitaddr, bitval)
added in 1.0
Or using bits
argument:
-
poke(addr4, val4, bits=4)
(equivalent topoke4(addr4, val4)
) -
poke(addr2, val2, bits=2)
(equivalent topoke2(addr2, val2)
) -
poke(bitaddr, bitval, bits=1)
(equivalent topoke1(bitaddr, bitval)
)
-
addr : the address of RAM you desire to write (segmented based on
bits
) -
val : the integer value write to RAM (range varies based on
bits
) - bits : the number of bits to write (1, 2, 4, or 8; default: 8)
This function allows you to write directly to RAM. The requested number of bits is written at the address requested. The address is typically specified in hexadecimal format.
For in-depth detail on how addressing works with various bits
parameters, please see peek.
See also:
- peek - Read from a memory address
- Edit the palette
- Change mouse cursor
- Change TIC-80 border color
- Change number of bits per pixels
- Sky gradient
-- 'Change screen offset in every scanline' demo
-- author: Vadim
shake=0
d=4
function TIC()
if btnp()~=0 then shake=30 end
if shake>0 then
poke(0x3FF9+1,math.random(-d,d))
shake=shake-1
if shake==0 then memset(0x3FF9,0,2) end
end
cls(12)
print("PRESS ANY KEY TO GLITCH!",54,64)
end
function BDR(row)
if shake>0 then
poke(0x3FF9,math.random(-d,d))
end
end
-- demo poke
function TIC()
--Make some video noise
for i=0,(240*136)/2-1 do
poke(0x0000+i,(i*i*time())/3000000000%2+1)
end
--Sound it
m=0
for i=30,80 do
m=m+peek(0x0000+6000+i)
end
f=math.floor((10+((1+m)/20))*400)
poke(0xFF80+0,f&0XFF)
poke(0xFF80+2,(f&0XFF00)>>8)
poke(0xFF80+8,f&0XFF)
poke(0xFF80+10,(f&0XFF00)>>8)
end
-- demo poke
l1=49
w1=18
l2=21
w2=12
function TIC()
--Video noise
for i=0,(240*136)/2-1 do
poke(0x0000+i,(i*i*time())/3000000000%2+1)
end
--Sounds
if btnp(0,3,3)then l1=l1-1 end
if btnp(1,3,3)then l1=l1+1 end
if btnp(2,3,3)then w1=w1-1 end
if btnp(3,3,3)then w1=w1+1 end
l1=l1<136 and l1 or 135
l1=l1>0 and l1 or 0
w1=w1<120 and w1 or 112
w1=w1>2 and w1 or 2
if btnp(8,3,3)then l2=l2-1 end
if btnp(9,3,3)then l2=l2+1 end
if btnp(10,3,3)then w2=w2-1 end
if btnp(11,3,3)then w2=w2+1 end
l2=l2<136 and l2 or 135
l2=l2>0 and l2 or 0
w2=w2<120 and w2 or 112
w2=w2>2 and w2 or 2
--S1
off1=l1*120
m=0
for i=60-w1/2,60+w1/2 do
m=m+peek(0x0000+off1+i)
end
f=(10+((1+m)/w1))*800
f=math.floor(f)
print(l1..'-'..w1..'-'..f,0,0)
poke(0xFF80+0,f&0XFF)
poke(0xFF80+2,(f&0XFF00)>>8)
--Draw line
for i=60-w1/2,60+w1/2 do
poke(0x0000+off1+i,136)
end
--S2
off2=l2*120
m=0
for i=60-w2/2,60+w2/2 do
m=m+peek(0x0000+off2+i)
end
f=(10+((1+m)/w2))*800
f=math.floor(f)
print(l2..'-'..w2..'-'..f,0,10)
poke(0xFF80+8,f&0XFF)
poke(0xFF80+10,(f&0XFF00)>>8)
--Draw line
for i=60-w2/2,60+w2/2 do
poke(0x0000+off2+i,102)
end
end
Other examples of poke usage in code snippets.
TIC-80 tiny computer https://tic80.com | Twitter | Telegram | Terms
Built-in Editors
Console
Platform
RAM & VRAM | Display | Palette | Bits per Pixel (BPP) |
.tic
Format | Supported Languages
Other
Tutorials | Code Snippets | Libraries | External Tools | FFT
API
- BDR (0.90)
- BOOT (1.0)
- MENU
- OVR (deprecated)
- SCN (deprecated)
- TIC
- btn & btnp
- circ & circb
- clip
- cls
- elli & ellib (0.90)
- exit
- fget & fset (0.80)
- font
- key & keyp
- line
- map
- memcpy & memset
- mget & mset
- mouse
- music
- peek, peek4
- peek1, peek2 (1.0)
- pix
- pmem
- poke, poke4
- poke1, poke2 (1.0)
- rect & rectb
- reset
- sfx
- spr
- sync
- ttri (1.0)
- time
- trace
- tri & trib (0.90)
- tstamp (0.80)
- vbank (1.0)