TIC-80 tiny computer 微型计算机说明文档 API部分
仅做搬运和翻译(机翻+人工润色)
来源:https://tic80.com/learn
API 函数
BDR
BDR(行)
允许您在绘制每条全屏扫描线之间执行代码,例如,操作调色板。
BOOT 引导
BOOT
启动功能。
MENU 菜单
MENU(索引)
游戏菜单处理程序。
SCN
SCN(行)
允许您在每条扫描线的图形之间执行代码,例如,操作选项板。
TIC
TIC()
主要功能。它以60帧/秒(每秒60次)的速度调用。
btn
btn(id) -> pressed
此功能允许您读取TIC上某个按钮的状态。
如果具有所提供id的键当前处于按下状态,则该函数返回true。
只要按下键,它就会保持不变。
如果您想测试某个键是否刚刚按下,请使用“btnp()”。
btnp
btnp(id hold=-1 period=-1) -> pressed
此功能允许您读取TIC某个按钮的状态。
只有在自上一帧以来一直按下该键时,它才会返回true。
您还可以使用可选的按住和周期参数,以检查按钮是否被按住。
在按住指定的时间过去后,如果按键仍然按下,则每次经过时间段,btnp都将返回true。
例如,要在2秒钟后重新检查按钮“0”的状态,并继续每隔十分之一秒检查其状态,请使用btnp(0,120,6)。
由于时间以节拍表示,TIC以每秒60帧的速度运行,因此我们使用值120等待2秒,并使用6个节拍(即60/10)作为重新检查的间隔。
circ
circb(x y半径 颜色)
使用所需的半径和颜色绘制圆心为x、y的圆的周长。
使用Bresenham算法。
circb
circb(x y 半径 颜色)
使用所需的半径和颜色绘制圆心为x、y的圆的周长。
它使用Bresenham算法。
clip
clip(x y 宽 高) clip()
此函数将绘图限制在由x、y、w、h定义的剪切区域或“视窗”中。
在此区域之外绘制的东西将不可见。
在没有参数的情况下调用clip()会将绘图区域重置为整个屏幕。
cls 清屏
cls(color=0)
清除屏幕。
当调用此函数时,使用作为参数传递的颜色清除所有屏幕。
如果未传递任何参数,则使用第一种颜色(0)。
elli
ellib(x y a b 颜色)
此函数绘制一个具有所需半径a、b和中心位于x、y的颜色的椭圆边界。
使用Bresenham算法。
exit
exit()
中断程序执行,并在TIC功能结束时返回控制台。
fget
fget(sprite_id flag) -> bool
如果已设置精灵的指定标志,则返回true。有关详细信息,请参见“fset()”。
font
font(text x y chromakey char_width char_height fixed=false scale=1 alt=false) -> width
使用前台精灵中定义的字体打印字符串。
要简单地打印到屏幕上,请检查“print()”。
要打印到控制台,请检查“trace()”。
fset
fset(sprite_id flag bool)
每个精灵图有八个标志,可用于存储信息或发出不同条件的信号。
例如,标志0可以用于指示子画面是不可见的,标志6可以指示标志应该被绘制缩放等等。
请参见算法“fget()”。
key
key(code=-1) -> pressed
如果按下由keycode表示的键,该函数将返回true。
keyp
keyp(code=-1 hold=-1 period=-1) -> pressed
如果按下了给定的键,但在前一帧中没有按下,则此函数返回true。
有关可选保持和周期参数的解释,请参阅“btnp()”。
line
line(x0 y0 x1 y1 颜色)
以指定的颜色绘制从点(x0,y0)到点(x1,y1)的直线。
map
map(x=0 y=0 w=30 h=17 sx=0 sy=0 colorkey=-1 scale=1 remap=nil)
地图由8x8像素的单元组成,每个单元都可以使用地图编辑器填充一个精灵。
该地图最多可以有240个单元格宽,136个单元格深。
此功能将地图的所需区域绘制到指定的屏幕位置。
例如,map(5,5,12,10,0,0)将绘制地图的12x10部分,从地图坐标(5,5)开始到屏幕位置(0,0)。
map函数的最后一个参数是一个强大的回调函数,用于在调用map时更改映射单元(精灵)的绘制方式。
它可以用于在游戏运行时旋转、翻转和替换精灵。
与保存对地图的更改的mset不同,此特殊功能可用于创建动画平铺或完全替换它们。
一些例子包括更改精灵以打开门口,隐藏用于在游戏中生成对象甚至发射对象本身的精灵。
tilemap在RAM中按顺序排列-当调用map()时,将1写入0x08000将导致tile(sprite)#1出现在左上角。
要设置紧挨着它的瓦片,我们需要写入0x08000+240,即0x080F0。
memcpy
memcpy(dest source size目标源大小)
此功能允许您将TIC的96K RAM的连续块从一个地址复制到另一个地址。
指定的地址为十六进制格式,值为十进制。
memset
memset(dest value size目标值大小)
此功能允许您将TIC RAM的任何部分的连续块设置为相同的值。
地址以十六进制格式指定,值以十进制表示。
mget
mget(x y) -> tile_id
获取给定x和y贴图坐标处的精灵id。
mouse
mouse() -> x y left middle right scrollx scrolly
此函数返回鼠标坐标和每个鼠标按钮状态的布尔值,true表示按下了按钮。
mset
mset(x y tile_id)
此功能将更改指定地图坐标处的平铺。
默认情况下,所做的更改仅在当前游戏运行时保留。
要对映射进行永久更改,请参见“sync()”。
相关:map()
mget()sync()
。
music
music(track=-1 frame=-1 row=-1 loop=true sustain=false tempo=-1 speed=-1)
music(音轨=-1帧=-1行=-1循环=真 持续=假 节奏=-1速度=-1)
此功能开始播放在音乐编辑器中创建的曲目。
不带任何理由调用来停止音乐。
peek
peek(addr bits=8) -> value
此功能允许从TIC读取内存。
访问使用集成工具创建的资源很有用,比如精灵、地图、声音、墨盒数据?
从来没有梦想过听起来像精灵?
地址为十六进制格式,但值为十进制。
要写入内存地址,请使用“poke()”。
bits
允许为1,2,4,8。
peek1
peek1(addr)->值
此功能使您能够从TIC的RAM中读取单个位值。
地址通常以十六进制格式指定。
peek2
peek2(addr)->值
此功能使您能够从TIC的RAM读取两位值。
地址通常以十六进制格式指定。
peek4
peek4(addr)->值
此功能使您能够从TIC的RAM中读取值。
地址通常以十六进制格式指定。
有关半字节寻址与字节寻址比较的详细信息,请参阅“poke4()”。
pix
pix(x y color) pix(x y) -> color
此函数可以读取或写入像素颜色值。
使用颜色参数调用时,指定坐标处的像素将设置为该颜色。
调用不带颜色参数的函数会返回指定位置像素的颜色。
pmem
pmem(index value) pmem(index) -> value
此功能允许您将数据保存和检索到盒带持久内存中256个单独的32位插槽中的一个插槽中。
这对于保存高分、等级提升或成就非常有用。
数据存储为无符号32位整数(从0到4294967295)。
提示:
-pmem依赖于cartridge hash(md5),所以如果你想保留数据,就不要更改lua脚本。
-将“saveid:”与标头元数据中的个性化字符串一起使用,可以覆盖默认的MD5计算。
这允许用户在不丢失其保存的数据的情况下更新购物车。
poke
poke(addr value bits=8)
此功能允许您将单个字节写入TIC RAM中的任何地址。
地址应以十六进制格式指定,值以十进制表示。
bits
允许为1,2,4,8。
poke1
poke1(addr值)
此功能允许您将单个位值直接写入RAM。
地址通常以十六进制格式指定。
pok2
poke2(addr值)
此功能允许您将两位值直接写入RAM。
地址通常以十六进制格式指定。
poke4
poke4(addr值)
此功能允许您直接写入RAM。
地址通常以十六进制格式指定。
对于peek4和poke4,RAM在4比特段(半字节)中寻址。
因此,要访问字节地址0x4000处的RAM
您需要同时访问0x8000和0x8001半字节地址。
print(text x=0 y=0 color=15 fixed=false scale=1 smallfont=false) -> width
这将简单地使用配置中定义的字体将文本打印到屏幕上。
当设置为true时,固定宽度选项确保每个字符都将打印在相同大小的“框”中,因此字符“i”将占据与字符“w”相同的宽度。
当固定宽度为false时,每个字符之间将有一个空格。
提示:
-要使用自定义光栅化字体,请选中“font()”。
-要打印到控制台,请检查“trace()”。
rect
rect(x y w h颜色)
此函数在指定位置绘制所需大小和颜色的填充矩形。
如果您只需要绘制矩形的边框或轮廓(即未填充),请参见“矩形()”。
rectb
rectb(x y w h颜色)
此函数在请求的位置绘制一个一像素厚的矩形边框。
如果需要用颜色填充矩形,请参阅“rect()”。
reset
reset()
重置卡带文件。要返回控制台,请参阅“exit()”。
sfx
sfx(id note=-1 duration=-1 channel=0 volume=15 speed=0)
此功能将播放在sfx编辑器中创建的带有“id”的声音。
调用id设置为-1的函数将停止播放该频道。
音符可以作为0到95之间的整数(表示8个八度音阶,每个八度音阶有12个音符)提供,也可以作为给出音符名称和八度音阶的字符串提供。
例如,音符值“14”将在第二个八度音阶中演奏音符“D”。
相同的音符可以由字符串“D-2”指定。
音符名称由两个字符组成,音符本身(大写)后跟“-”表示自然音符,后跟“#”表示锐音符。
没有指示平面值的选项。
因此,可用的音符名称为:C-、C#、D-、D#、E-、F-、F#、G-、G#、A-、A#、B-。
“八度音阶”是使用0到8范围内的一个数字指定的。
“持续时间”指定播放声音的节拍数,因为TIC-80以每秒60帧的速度运行,值30表示半秒。
值-1将连续播放声音。
“channel”参数指示要使用四个通道中的哪一个。允许的值为0到3。
“音量”可以在0到15之间。
可以指定范围为-4到3的“速度”,表示每一步要播放多少个“节拍+1”,因此速度==0表示每一步骤播放1个节拍。
spr
spr(id x y colorkey=-1 scale=1 flip=0 rotate=0 w=1 h=1)
在x和y坐标处绘制精灵编号索引。
您可以在调色板中指定一个将用作透明颜色的颜色键,也可以为不透明精灵使用值-1。
精灵可以按所需的因子放大。例如,比例因子为2意味着将8x8像素的子画面绘制到屏幕的16x16区域。
您可以将精灵翻转到以下位置:
-0=无翻转
-1=水平翻转
-2=垂直翻转
-3=垂直和水平翻转
旋转精灵时,它将按顺时针方向旋转90步:
-0=无旋转
-1=90转
-2=180转
-3=270转
通过指定“w”和“h”参数(默认为1),可以绘制一个合成精灵(由精灵表中的精灵矩形区域组成)。
sync
sync(mask=0 bank=0 tocart=false)
TIC-80的专业版包含8个内存组。
要在这些库之间切换,sync可用于将内容从内存库加载到运行时,或将内容从活动运行时保存到库。
该函数每帧只能调用一次。如果您已经操作了运行时内存(例如,使用mset),您可以通过调用sync(0,0,false)重置活动状态。
这会将整个运行时内存重置为库0的内容。请注意,sync不用于从库加载代码;这是自动完成的。
time
time() -> ticks
此函数返回自卡带文件开始执行以来经过的毫秒数。
用于跟踪时间、设置项目动画和触发事件。
trace
trace(message color=15)
这是一个服务函数,可用于调试代码。
它以指定的(可选)颜色将消息参数打印到控制台。
提示:
-字符串的Lua连接符是…(两点)。
-使用console cls命令从跟踪中清除输出。
tri
tri(x1 y1 x2 y2 x3 y3 color)
此函数使用提供的顶点绘制一个充满颜色的三角形。
trib
trib(x1 y1 x2 y2 x3 y3 color)
此函数使用提供的顶点绘制带颜色的三角形边界。
tstamp
tstamp() -> timestamp
tstamp()->时间戳
此函数返回自1970年1月1日以来经过的秒数。
有助于创建持久的游戏,这些游戏会随着游戏之间的时间推移而演变。
ttri
ttri(x1 y1 x2 y2 x3 y3 u1 v1 u2 v2 u3 v3 texsrc=0 chromakey=-1 z1=0 z2=0 z3=0)
它渲染一个三角形填充纹理从图像ram,地图ram或vbank。
用于三维图形。
特别是,如果三角形中的顶点具有不同的三维深度,则可能会看到一些失真。
这些可以被认为是图像ram(精灵表)、地图ram或其他vbank中的窗口。
请注意,在这种情况下,精灵表或贴图被视为单个大图像,U和V直接寻址其像素,而不是通过精灵ID。
例如,子画面#2的左上角将位于u=16,v=0处。
vbank
vbank(bank) -> prev vbank() -> prev
VRAM包含2x16K存储芯片,使用vbank(0)或vbank(1)在它们之间切换。