# ttrom **Repository Path**: lightsever/ttrom ## Basic Information - **Project Name**: ttrom - **Description**: ttrom 制定一个rom规范,可用来兼容自己的像素小游戏,运行在任何环境。 1.standalone的dotnet 运行程序 2.unity 3.html5 - **Primary Language**: C# - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-04-02 - **Last Updated**: 2023-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TTROM ttrom是一个虚拟的Rom定义 这个虚拟的Rom 使用JS编写游戏逻辑,使用内建的基本模块完成游戏逻辑 基于这个虚拟rom开发的游戏,就可以跑在任意的容器内。 专门追求一种画面上复古的感觉,所以使用调色板图片和较低的分辨率。 # 虚拟机能 ## 分辨率 屏幕分辨率,可变,但以16x16作为一块,最小尺寸是 9x9块,最大尺寸 是25*25块 最低分辨率 144*144,比GBA还大一丢丢 最高分辨率 400*400,其实多大都可以,就丢了像素感了。这个可以逐渐放开 ## CPU与内存 单线程内允许你随便折腾,不限制,js里尼随便用 ## 图形 ### 1.logo logo 是一张jpg图片,在初始化阶段使用。 一次性将所有资源(除BGM)加载到内存,淡出Logo,进入游戏画面 放在rom包内 ### 2.调色板 强制使用调色板技术,提供图片带调色板打包工具。 图片需分路径保存,一个路径的图片采用同一个调色板,支持多个调色板。单调色板发色数最大32. 所有调色板发色数总和为65536,你最多可以拥有2040个调色板。 图片绘制采用5bit色板+3bit透明度 将提供一个总体的8bit调色板,可以打开Lut映射,把整个游戏的颜色限制在这256个内(由shader实现,可选) ### 3.图片资源 rom内只保留打包好的图集与调色板。 只允许使用图集,固定图集尺寸 2048*2048*8bit 单通道图片,一个游戏暂时给最大4个图集。 一般一个就够用。 图集与调色板打包图集使提供了标准化的接口,可以使用,也可自行管理。 图集用json+png保存。 调色板用json+png保存 ### 4.TiledMap 绘图接口只有两种, 支持超大tiledmap(2048*2048) 可以自定义tiledmap层数以及分层卷轴。 ### 5.活动块 支持最大64x64尺寸的活动块,再大你就用多个块拼合吧。 支持缩放,旋转。 ### 6.文字 不提供专门的文字支持,rom内自己用精灵解决 ### 5.特效 可以约定扩展一些内置效果,不给shader扩展。(不支持的效果直接就没有效果,不会报错) a.屏幕空间反射 (需要绘制反射区) b.bloom(曝光过度感) c.motionblur(红眼拖尾啥的) ### 8.图层 三种图层,自己可以定义tiledmap图层和活动精灵层的顺序。一个层的精灵数量限制4096(暂定) a. tiledmap 图层,可以是透明或者不透明 b.活动精灵图层 c.特效层(不可管理,只可全局配置开关,如打开反射,打开bloom) ## 音乐音效 音乐音效均会以ogg/mp3的形式保存(也可以双份,这也就是safari浏览器不支持ogg) 音效会全部读入内存,音乐运行时解码 ## 输入 不支持输入法 支持摇杆输入(可由系统提供标准化的虚拟摇杆,或者真实摇杆) 或者触屏输入(rom自己可用触屏接口自己模拟摇杆) ## 逻辑 只提供基本的绘图、输入、音效接口,别的不管。 逻辑使用JS开发。可以用TS->JS ## 打包与开发 提供打包工具,开发可以用任意开发工具,也可以用TTEngine集成开发环境