About the emulator
This emulator began in 2002, as a personal project I started with the single aim of improving my Flash Actionscript skills.
As with any good personal project, you need a focal point, and mine was the Speak N Spell. I'd just bought one off Ebay, to go with the rest of my retro toys, and more importantly, I stumbled across a full set of sound files 'blown' or sampled from a Speak N Spell.
I thought it'd be cool to create an emulator using the sound files, and since I'd been working with Flash for a while, including being part of the beta test teams, it seemed like a good mix of idea and execution to improve my knowledge of Flash.
At the same time, I was on a Freehand (R.I.P.) beta too, so all the artwork was done using a pre-release version of Freehand (note the bevelling around the red plastic? My first use of filters in Freehand). Again, having a focus and goal makes it easier to set about with your software tools.
Unfortunately, my real Speak N Spell didn't work, so I didn't know the correct series of events or how the machine worked exactly, so I improvised, hence only one 'mode' working.
I also won't be fixing anything or improving the Speak N Spell, as my time with Flash has passed. I do have a full Speak N Maths drawn up and originally planned to do that too... but no, I'm leaving this page online so people can still enjoy Speak N Spell.
Have fun, enjoy, share.
Jake
Click on the Speak & Spell to play

\n";
for ($i = 0; $i < count($arr_xml['URL']); $i++) {
if( isset($arr_xml['PostID'][$i]) && $arr_xml['PostID'][$i] > 0 ) continue;
echo "
".$arr_xml['BeforeText'][$i]." ".$arr_xml['Text'][$i]." ".$arr_xml['AfterText'][$i]."\n";
}
echo "";
}
}
function tla_updateLocalXML($url, $file, $time_out)
{
if($handle = fopen($file, "a")){
fwrite($handle, "\n");
fclose($handle);
}
if($xml = file_get_contents_tla($url, $time_out)) {
$xml = substr($xml, strpos($xml,''));
if ($handle = fopen($file, "w")) {
fwrite($handle, $xml);
fclose($handle);
}
}
}
function tla_getLocalXML($file)
{
$contents = "";
if($handle = fopen($file, "r")){
$contents = fread($handle, filesize($file)+1);
fclose($handle);
}
return $contents;
}
function file_get_contents_tla($url, $time_out)
{
$result = "";
$url = parse_url($url);
if ($handle = @fsockopen ($url["host"], 80)) {
if(function_exists("socket_set_timeout")) {
socket_set_timeout($handle,$time_out,0);
} else if(function_exists("stream_set_timeout")) {
stream_set_timeout($handle,$time_out,0);
}
fwrite ($handle, "GET $url[path]?$url[query] HTTP/1.0\r\nHost: $url[host]\r\nConnection: Close\r\n\r\n");
while (!feof($handle)) {
$result .= @fread($handle, 40960);
}
fclose($handle);
}
return $result;
}
function tla_decodeXML($xmlstg)
{
if( !function_exists('html_entity_decode') ){
function html_entity_decode($string)
{
// replace numeric entities
$string = preg_replace('~([0-9a-f]+);~ei', 'chr(hexdec("\1"))', $string);
$string = preg_replace('~([0-9]+);~e', 'chr(\1)', $string);
// replace literal entities
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
$trans_tbl = array_flip($trans_tbl);
return strtr($string, $trans_tbl);
}
}
$out = "";
$retarr = "";
preg_match_all ("/<(.*?)>(.*?)", $xmlstg, $out, PREG_SET_ORDER);
$search_ar = array('<', '>', '"');
$replace_ar = array('<', '>', '"');
$n = 0;
while (isset($out[$n]))
{
$retarr[$out[$n][1]][] = str_replace($search_ar, $replace_ar,html_entity_decode(strip_tags($out[$n][0])));
$n++;
}
return $retarr;
}
tla_ads();
*/ ?>
Thanks
A big "thank you" to everyone who has emailed in to say how much they've enjoyed my Speak N Spell emulator.