There was some minor controversy over the game, after it was discovered that it still requires Flash in order to play the game (to produce the sounds and music for the game rather than using HTML5 audio), but there are some potentially valid reasons for that.
First of all, the HTML5 audio spec is still in its infancy and support for it across browsers is still pretty spotty. Using HTML5 audio for the in-games sounds and music quite possibly would have produced inconsistent experiences for users. Secondly, Angry Birds is a premium application for Android and iOS (and Windows Phone in another 6 weeks). If the free Web-based application was built entirely without any proprietary technologies, a lot of people might flock toward that on their mobile devices instead of ponying up the cash for the premium native app. With the Flash content in the game, most mobile devices won’t be able to play it properly, acting as a low-tech method of keeping the premium native apps value up.
The video is done either through HTML5 canvas or by a fallback of creating BMP binary picture format data URI strings and appending the result to regular HTML img tags.
Save states are implemented through the window.localStorage object, and are serialized/deserialized through JSON. SRAM saving is also implemented through the window.localStorage object, and are serialized/deserialized through JSON. In order for save states to work properly on most browsers, you need set the maximum size limit for DOM storage higher, to meet the needs of the emulator’s save data size.