Brs Emu Versions Save

BrightScript Emulator - Runs on modern browsers and Electron applications.

v0.10.22

8 months ago

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 in roRegion #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() in roString #133
  • Implemented end command to terminate app without crash
  • Improved casting on roBitmap, roRegion and roScreen
  • 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 on roScreen and roBitmap
  • Fixed: ifDraw2d drawing methods on roRegion #120
  • Fixed: return invalid when roCompositor doesn't receive valid regions creating sprites #125
  • Fixed: Edge case of comparing invalid with roInvalid
  • 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 the SharedArrayBuffer 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: https://github.com/lvcabral/brs-emu/compare/v0.9.0-emu...v0.10.22

Web Applications

You can test the this release using:

Desktop Application

v0.9.0-emu

2 years ago

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) in ifDraw2D.DrawObject() and ifDraw2D.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 alongside else (#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 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!

v0.8.1-emu

2 years ago

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 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!

v0.8.0-emu

4 years ago

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 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!

v0.7.2-emu

4 years ago

Release Notes

  • (brs) Library now supports roUrlTransfer and roUrlEvent
  • (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 working GetUpTime() 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:

  1. Download installers for Windows, Linux and macOS from the Assets section below
  2. Linux users can also install the application from the Snap Store at: https://snapcraft.io/brs-emu-app
  3. The source code of the desktop application is at: https://github.com/lvcabral/brs-emu-app
  4. 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!

v0.6.0-emu

4 years ago

Release Notes

  • (app,web) Support for audio playback from roAudioResource and roAudioPlayer
  • (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 updated roMessagePort 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

  1. Download installers for Windows, Linux and macOS from the Assets section below
  2. Linux users can also install the application from the Snap Store at: https://snapcraft.io/brs-emu-app
  3. 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!

v0.5.0-emu

4 years ago

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 on Parser #252 #253 #309
  • (brs) Implemented global function GetInterface() #42
  • (brs) Added support for an optional parameter on Main() #44
  • (brs) Added RunUserInterface() as alternative for Main() #44
  • (brs) Added missing method maxSimulStreams() on roAudioResource 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
    • fix(types): Return true for invalid values on RoAssociativeArray#doesExist (#323)
    • fix(types,interp): Automatically convert between Int and Float (#291)
    • feat(extension): Add brs.runInScope (#326)
    • chore(naming): rename src/mocks/ -> src/extensions/ (#325)

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

  1. Linux users can also install the application from the Snap Store at: https://snapcraft.io/brs-emu-app
  2. 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!

v0.4.0-emu

4 years ago

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.

v0.3.0-emu

4 years ago

This releases adds a few font related features as follows:

  • Updated website and added new demo channels
  • Added parameter rgba to roScreen.DrawObject() (only alpha opacity supported) #27
  • Fixed for loop to correctly handle steps sjbarag#315
  • Fixed issue that roCompositor was not clearing the canvas properly
  • Implemented channel close detection
  • Fixed roSprite animation when frame time was configured on roRegion
  • Implemented double buffer support for roScreen and roRegion
  • Added method DrawText() to roRegion
  • Implemented string Tokenize() method
  • Added boxing to the numeric types
  • Merged roBoolean, roDouble, roFloat and roInt implementation #35
  • Made file type identification case-insensistive
  • Added support for .csv extension on zip package
  • Removed roSGNode as RSG is out of scope for the emulator
  • Added support for .gif and .jpeg image extensions
  • Fixed #32 Changed default font loading code to use relative path
  • Fixed #30 Moved the screen clear code to run before the splash

The website https://lvcabral.com/brs/ is updated with this release and a new game, and you can also get the package below to run the emulator locally.

v0.2.0-emu

4 years ago

This releases adds a few font related features as follows:

  • Support for loading custom fonts from the channel zip package.
  • Included Open Sans as the default device font.
  • Finished roFontRegistry and roFont implementation by adding font metrics.
  • Updated license information.

Included a new dependency to opentype.js package to parse font files.

The website https://lvcabral.com/brs/ is updated with this release, and you can also get the package below to run the emulator locally.