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