Releases: lvcabral/brs-engine
v1.1.9 - GamePad support and FPS Limitation
What's Changed
- Updated package name on README.md badges by @lvcabral in #200
- Fixed #201 - Prevent Exception when SharedArrayBuffer is not supported by @lvcabral in #202
- Implementing features to remove limitations by @lvcabral in #205
- Implemented GamePad support by @lvcabral in #204
- Added support for the GamePad API
- Added a new feature
simulation_engine
to theroDeviceInfo.hasFeature()
method, allowing apps to adapt when underbrs-engine
- Added new option to define
maxFps
ondeviceData
and limit framerate inside the worker - Reduced web app default framerate to prevent issues on iOS
- Added icon dimentions to css
- Fixed CLI to not show
start
event - Fixed high framerate performance issue
- Fixed loading encrypted package
- Added new debug command
pause
to allow interrupt the interpreter when app loses focus
Full Changelog: v1.0.0...v1.1.9
v1.0.0 - Simulation Engine Release
After 4 years of Alpha and Beta stages, the project is stable and performant enough to finally be released as version 1.0 and with that, we decided to give it a new name:
brs-engine - BrightScript Simulation Engine
The term simulation engine was chosen instead of the former emulator to better represent the nature and purpose of the project, as there is no intention to fully emulate a Roku device (OS and Hardware), but rather simulate the behavior, as a development tool and as an engine/framework to run BrightScript apps in different platforms.
In this release the new CLI was introduced, still with some limitations (e.g. no OffScreenCanvas
support), but allowing basic BrightScript code to be executed, either via REPL or files. It also performs the encryption of a .zip
file into a .bpk
package to protect the source code.
Release Changes
- Renamed package to
brs-engine
- Renamed libraries to
brs.api.js
andbrs.worker.js
- Reorganized
src
folder by library, subfolders:api
,cli
andworker
- Added new CLI with REPL (
bin/brs.cli.js
) (#181) - Added support for Conditional Compilation (#93)
- Added support for
webp
file format inroBitmap
(#166) - Added support for interfaces
ifGetArray
andifSetArray
(#170) - Added support for
.bpk
encrypted package file (#188) - Added support optional chaining operators:
?.
,?(
,?[
, and.@
(#176) - Moved
models
list to API library and updatedserialNumber
format - Added new API event
registry
- Added check for
break
debug command during theroMessagePort
loop - Added code to pause sound when Micro Debugger is triggered (does not affect wav)
- Added option to stop on Micro Debugger when a crash happens (#198)
- Added partial try/catch implementation (#195)
- Improved error handling and added warning for RSG usage
- Added stub
roAppMemoryMonitor
androDeviceInfo.enableLowGeneralMemory
(#196) - Added new method
getAllPurchases
and changeddoOrder
to returnfalse
(#178) - Added
formatLocation
method in the Interpreter to help show location in warning messages - Added Bundle Stats Analyzer and replaced dependencies to reduce package size
- Updated default firmware to 11.0 and added new models to the list
- Updated images and layout of sample Web application
- Updated
roDateTime.GetTimeZoneOffset()
to considerroDeviceInfo.GetTimeZone()
(#94) - Finished implementation of
ifEnum
on all array/list objects (#171) - Fixed multiple cascading calls for dot-chained methods (#55)
- Fixed
roRegion
offset not being properly applied whensetWrap
wastrue
(#194) - Fixed
Val()
function not compliant with Roku (#162) - Fixed duplication of exception handling messages (#126)
- Fixed code smells and bugs based on Sonar Cloud recommendations (#169)
- Replaced
luxon
byday.js
onroDateTime
androTimespan
(#193) - Replaced module
jszip
by the lighterfflate
- Removing
ua-parser-js
dependency for the API - Bumped version of several dependencies
- Removed Node 14.x from the build (#182)
Full Changelog: v0.10.22...v1.0.0
v0.10.22 - New API and Boosted Performance
Release Notes
This release was a result of months of refactoring work and performance improvements.
- Implemented new API to simplify usage of the
brs-emu
package, see new documentation @lvcabral - Implemented the Roku MicroDebugger (including
stop
statement, back trace and debug commands) #127 - Added support for Firefox and Safari browsers
- Added option to execute a channel without audio
- Added support for both Windows and MacOS keyboard names
- Multiple performance improvements on handling Canvas 2D, big thanks for @markwpearce #139
- Implemented
roInput
#57 - Implemented
roAppInfo
#104 - Implemented support for
ScaleMode
inroRegion
#62 - Implemented missing methods to
roRegion
#120 - Implemented missing methods to
roUrlTransfer
as mocks to avoid channel crash. #104 - Implemented missing
roDeviceInfo
methods #134 - Implemented missing
roChannelStore
methods #137 - Implemented a mock of
RunGarbageCollector()
#119 - Implemented numeric type auto cast in function parameters and return value #122
- Implemented support for external input parameters #123
- Implemented support for format parameter on
toStr()
#132 - Implemented method
format()
inroString
#133 - Implemented
end
command to terminate app without crash - Improved casting on
roBitmap
,roRegion
androScreen
- Improved Function call performance #141
- Changed to show icon when no splash exist in zip file
- Changed to only enable keyboard control when channel is running
- Changed to make sure audio do not play if
stop()
is called during load - Fixed:
drawRotatedObject
onroScreen
androBitmap
- Fixed:
ifDraw2d
drawing methods onroRegion
#120 - Fixed: return
invalid
whenroCompositor
doesn't receive valid regions creating sprites #125 - Fixed: Edge case of comparing
invalid
withroInvalid
- Fixed: Prevent crash with invalid collection with
for each
#118 - Fixed: Added missing audio files to the npm package
- Added option to show and overlay with display performance indicators #129
- Implemented use of
Atomics
with theSharedArrayBuffer
and other small improvements. - Adding a python script to allow testing on newer browsers with COOP and COEP enabled.
- Upgraded to TypeScript 4, Webpack 5 and several other dependencies
- [sonar] Code smell and complexity fixes #153
- Merged brs v0.45.0 below cherry picked commits:
- feat(stdlib): Add lookupCI for assocarray (#639) resolves #629
- fix(interp): allow functions to be typed as objects (#659)
Full Changelog: v0.9.0-emu...v0.10.22
Web Applications
You can test the this release using:
Desktop Application
- The source code of the desktop application is at: https://github.com/lvcabral/brs-emu-app
- Download installers for Windows, Linux and macOS from the brs-emu-app release page
- You can use it integrated with VSCode BrightScript Language Extension using the implementation of Roku Remote Access Services
v0.9.0 - Improvements on ECP and BrightScript support
Release Notes
This release brings the integration of improvements and fixes from the brs
interpreter up to their v0.43. Also several improvements
- (app) Implemented ECP-2 WebSocket API to support official Roku mobile apps (iOS and Android)
- (app) Implemented support for keyboard characters sent via ECP
- (app) Added support for new control keys: Backspace, Enter, PlayOnly and Stop
- (app) Restore the app window, if minimized, when a channel is loaded remotely via the Installer
- (app) Added
Ctrl+R
shortcut to reload most recent channel - (app) Added current locale on the Status bar
- (app) Made path length on the status bar proportional to the app window's width
- (app) Fixed status bar Resolution label that was showing "width" twice
- (app,web) Now emulator loads all files from the zip package even ones with custom extension.
- (app,web) Made Key8 to behave as the Info (*) control key, for keyboards that lacks the numeric keypad
- (app,web) Upgraded several dependencies to patch security vulnerabilities.
- (brs) Implemented support for Dot (.) and Attribute (@) operators for XML objects
- (brs) Implemented several missing methods to
roDeviceInfo
- (brs) Added check for valid parameters on
roRegion
constructor - (brs) Ignore Label statements when parsing the code
- (brs) Fixed
roRegion.SetWrap(true)
inifDraw2D.DrawObject()
andifDraw2D.DrawScaledObject()
- (brs) Fixed
roString.Tokenize()
that was sometimes returning an empty string at the end of the list - (brs) Fixed
roAppManager.updateLastKeyPressTime()
definition typo and implemented actual time reset - (brs) Fixed issues with
roTimespan
- (brs) Fixed
roRegion.offset()
to accept float parameters - (doc) Updated list of emulator limitations
- Merged brs v0.43.0 below some key commits:
- fix(lexer): Add support for explicit integer literals (#637)
- feat(stdlib): add isEmpty method to roString (#636)
- fix(parse,interp): Support unary + operator for numbers (#615)
- fix(lex): Allow JS object properties as identifiers (#614)
- feat(stdlib): Implement RoLongInteger and cast int to LongInt, float to Double (#600)
- fix(stdlib): Correct sorting issues with mixed arrays (#592)
- feat(parse,interp): Implement dim statement (#531)
- fix(rsg): Adds optional arg to RoString constructor (#533)
- fix(parse): Restore nested block parsing (#514)
- fix(parse): Allow multiple statements in single-line
if
branches - feat(stdlib): Added case sensitive support to roAssociativeArray (#509)
- fix(parser): make if statements with 'not' work (#443)
- bug(parse): Capture
EndIf
token when used alongsideelse
(#393) - bug(interp): Allow Float parameters passed into function signatures expecting Double (#394)
- fix(interp): Allow invalid returns for signatures that return object (brs#395)
You can test the web app from this release at https://lvcabral.com/brs/
Desktop Application
- Download installers for Windows, Linux and macOS from the Assets section below
- Linux users can also install the application from the Snap Store at: https://snapcraft.io/brs-emu-app
- New Linux Arm build (compat. with Raspberry Pi) available for the first time, download file
brsEmuApp-0.9.1-linux-armv7l.AppImage
below - The source code of the desktop application is at: https://github.com/lvcabral/brs-emu-app
- Now is possible to use it integrated with VSCode BrightScript Language Extension using the implementation of Roku Remote Access Services
Download Games to Test
Below you can find a list of games tested with the emulator, that are publicly available with source code. Just download the zip
files and have fun!
- Prince of Persia for Roku port by Marcelo Lv Cabral - Download zip file
- Lode Runner for Roku remake by Marcelo Lv Cabral - Download zip file
- Retaliate game by Romans I XVI - Download zip file
v0.8.1 - Fixes and Security Patches
Release Notes
This release brings bug fixes, support for new Chrome security policies and the desktop application has upgraded dependencies including Electron's bump to v9.
- (brs)Added new message "getVersion" to allow request library version to the WebWorker
- (brs) Revert "fix(interp): Automatically box as object function parameters (sjbarag#365)"
- (brs) Fixed support for Retaliate game that was not working properly on v0.8
- (web) Shows dynamically the library version using new message "getVersion"
- (web) Added support to Chrome 92+ that will force self.crossOriginIsolated
- (app) Upgraded several dependencies to patch security vulnerabilities.
You can test the web app from this release at https://lvcabral.com/brs/
Desktop Application
- Download installers for Windows, Linux and macOS from the Assets section below
- Linux users can also install the application from the Snap Store at: https://snapcraft.io/brs-emu-app (not updated to v8.x yet)
- The source code of the desktop application is at: https://github.com/lvcabral/brs-emu-app
- Now is possible to use it integrated with VSCode BrightScript Language Extension using the implementation of Roku Remote Access Services
Download Games to Test
Below you can find a list of games tested with the emulator, that are publicly available with source code. Just download the zip
files and have fun!
- Prince of Persia for Roku port by Marcelo Lv Cabral - Download zip file
- Lode Runner for Roku remake by Marcelo Lv Cabral - Download zip file
- Retaliate game by Romans I XVI - Download zip file
v0.8 - Localization Support
Release Notes
This release brings full support for channel localization. The desktop application has a new menu with the locales with the same options available on Roku devices.
- (brs)Added support to localize texts using TS or XLIFF files #67
- (brs)Implemented support for localization of images #66
- (brs)Added missing method setAdPrefs() for Roku_Ads.brs #68
- (brs)Removed BRS original manifest handler
- (app) Added option on Device menu to change localization
- (app) Refactored app code into several front-end modules
- Merged BRS v0.18.2
- fix(stdlib): Implement RoAssociativeArray.items() correctly (#371)
- fix(interp): Automatically box
as object
function parameters (#35) - fix(stdlib): Allow formatJson to serialize boxed types (#364)
- feat(stdlib): Implement getString() and toStr() on RoString (#362)
- feat(stdlib): Implement GetInterface (#352)
- fix(interp): Automatically box return values for 'as object' return types (#360)
- feat(parse): Allow
.
before indexed property access (#357) - chore(cruft): Remove unused AutoBox.ts
You can test the web app from this release at https://lvcabral.com/brs/
Desktop Application
- Download installers for Windows, Linux and macOS from the Assets section below
- Linux users can also install the application from the Snap Store at: https://snapcraft.io/brs-emu-app
- The source code of the desktop application is at: https://github.com/lvcabral/brs-emu-app
- Now is possible to use it integrated with VSCode BrightScript Language Extension
Download Games to Test
Below you can find a list of games tested with the emulator, that are publicly available with source code. Just download the zip
files and have fun!
- Prince of Persia for Roku port by Marcelo Lv Cabral - Download zip file
- Lode Runner for Roku remake by Marcelo Lv Cabral - Download zip file
- Retaliate game by Romans I XVI - Download zip file
v0.7 - First Beta Release
Release Notes
- (brs) Library now supports
roUrlTransfer
androUrlEvent
- (brs) Added support to bmp images, and better file type detection
- (brs) Emulator File System is now case insensitive (like Roku)
- (brs) Finished
roXMLElement
implementation with XML creation methods - (brs) Mocked
roAppManager
component with workingGetUpTime()
method - (brs) Support to global functions: RebootSystem(), UpTime(), Tr()
- (brs) Fixed scope of the
m
object inside global functions (v0.7.2) - (brs) Fixed support for fonts with spaces and numbers on the family name (v0.7.2)
- (brs) Fixed issues related to
if..then..else
on a single line (v0.7.2) - (app,web) Added support to play downloaded audio files
- (app,web) Added support to show downloaded images
- (app,web) Updated default sound effects with the original Roku audio resources
- (app) Web Installer (port 80 or custom) to allow remote installation and screenshot
- (app) ECP server (port 8060) with SSDP detection implemented
- (app) Remote Console (port 8085) is available for remote monitoring
- (app) Status bar now changes color if errors or warnings are raised
- (app) New clickable status bar icons for errors, ECP and web installer
- (web) Shows animated gif to indicate a channel is being downloaded
- (doc) Updated list of emulator limitations
- (doc,app) Added desktop app build documentation
You can test the web app from this release at https://lvcabral.com/brs/
Desktop Application
- v0.7.0 - Initial Release
- v0.7.1 - Added: Always on Top option on View menu and support to
roku-deploy
v2.6.0+ - v0.7.2 - Fixed command line option to change installer port that was requiring restart to work, updated emulator library with fixes.
Notes:
- Download installers for Windows, Linux and macOS from the Assets section below
- Linux users can also install the application from the Snap Store at: https://snapcraft.io/brs-emu-app
- The source code of the desktop application is at: https://github.com/lvcabral/brs-emu-app
- Now is possible to use it integrated with VSCode BrightScript Language Extension
Download Games to Test
Below you can find a list of games tested with the emulator, that are publicly available with source code. Just download the zip
files and have fun!
- Prince of Persia for Roku port by Marcelo Lv Cabral - Download zip file
- Lode Runner for Roku remake by Marcelo Lv Cabral - Download zip file
- Retaliate game by Romans I XVI - Download zip file
v0.6 - Audio Playback and new Display Modes
Release Notes
- (app,web) Support for audio playback from
roAudioResource
androAudioPlayer
- (app,web) Support for SD and FHD display modes
- (app) Added TV over-scan emulation options: disabled, only guide lines, enabled
- (app) Added Open Recent sub-menu
- (app) Added Close Channel menu option
- (app) Added macOS standard app menu
- (brs) Implemented
roAudioPlayerEvent
and updatedroMessagePort
to support it - (doc) Updated list of emulator limitations
You can test the web app from this release online at https://lvcabral.com/brs/
Desktop Application
- Download installers for Windows, Linux and macOS from the Assets section below
- Linux users can also install the application from the Snap Store at: https://snapcraft.io/brs-emu-app
- The source code of the desktop application is at: https://github.com/lvcabral/brs-emu-app
Download Games to Test
Below you can find a list of games tested with the emulator, that are publicly available with source code. Just download the zip
files and have fun!
- Prince of Persia for Roku port by Marcelo Lv Cabral - Download zip file
- Lode Runner for Roku remake by Marcelo Lv Cabral - Download zip file
- Retaliate game by Romans I XVI - Download zip file
v0.5 - Desktop Applications and Library Fixes
Release Notes
This version brings the first release of the desktop application and several fixes and improvements:
- (app) Desktop app for Windows, Linux and macOS
- (brs) Fixed issues with inline
if
statements onParser
#252 #253 #309 - (brs) Implemented global function
GetInterface()
#42 - (brs) Added support for an optional parameter on
Main()
#44 - (brs) Added
RunUserInterface()
as alternative forMain()
#44 - (brs) Added missing method
maxSimulStreams()
onroAudioResource
component #26 - (web) Reduced the app html to be simple, adding links to documentation on the repository
- (web) Detect and inform user about unsupported browser #40
- (doc) Reorganized repository folders and documentation for v0.5.0 #43
- Merged BRS v0.15.0
You can test the web app of release online at https://lvcabral.com/brs/
Desktop Apps
- v0.5.0 - Initial Release
- v0.5.1 - Fixes on menu (macOS), full screen mode (macOS) and installation artifacts (all)
- v0.5.2 - Status bar icons, Linux x64 (amd64) binaries and new debian (.deb) package.
Notes
- Linux users can also install the application from the Snap Store at: https://snapcraft.io/brs-emu-app
- The source code of the desktop application is at: https://github.com/lvcabral/brs-emu-app
Dowload Games to Test
Below a list of tested games that are publicly available with source code, download the zip
files and have fun!
- Prince of Persia for Roku port by Marcelo Lv Cabral - Download zip file
- Lode Runner for Roku remake by Marcelo Lv Cabral - Download zip file
- Retaliate game by Romans I XVI - Download zip file
v0.4 - Support for rgba on Draw Object methods
This release has the following changes:
- Implemented method IsEmpty() for both roArray and roAssociativeArray #316
- Fixed #320 Making sure DoesExist() returns true even when value of the existing item is invalid
- Implemented mock components roChannelStore and roChannelStoreEvent #39
- Implemented mock of Roku_Ads() object #25
- Implemented support for rgba on DrawObject* methods #27
- Added option to configure device font,
- Added new font family "Roboto"
- Added new font family "Asap" that is similar to Roku default
- Implemented missing methods for RoUniversalControlEvent #37
- Changed DrawText to get string from value property of BrsString
- fix(parse): Include surrounding whitespace in Block nodes(#257)
- Finished Collision detection implementation (rectangle and circle)
- Updated roRegion to handle offset properly based on SetWrap() flag
- Implemented roScreen methods SetPort(), GetPng() and GetByteArray()
- Fixed
for loop
issue that should not process loop when step is on the wrong direction of the start-end parameters #310 (#311)
The website https://lvcabral.com/brs/ is updated with this release with new games, and you can also get the package below to run the emulator locally.