<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi Danny,</p>
<p>I expect you're familiar with Ruffle ( <a class="moz-txt-link-freetext" href="https://ruffle.rs">https://ruffle.rs</a> ), which
many people use to emulate Flash work. Was the Flash work you were
dealing with too advanced for Ruffle?</p>
<p>I suppose ActionScript, being quite JavaScripty, was a kind of
natural for your approach. Of course, Lingo isn't. </p>
<p>If I understand you correctly, DisplayObjectContainer,
DisplayObject, BitmapData etc would be the classes from which
Flash media members are constructed. For the most part? But
Actionscript involves all sorts of things other than media
members. </p>
<p>Could you flesh out your ideas a bit more and tell me why you
think this would work with Lingo and Director?</p>
<p>ja</p>
<div class="moz-cite-prefix">On 2026-01-25 10:05 a.m., Danny Kodicek
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAP4YdJJ1z-wLbbDZ3adt3WutcR=i3Onw=5y=+rZF-pPesUN1Vg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">I haven't looked at translating Director across,
but for what it's worth I have made a pretty reliable engine for
porting AS3 across to TypeScript using the PixiJS framework. The
basic principle was to make an interstitial layer of classes
that mimic the AS3 library (DisplayObjectContainer,
DisplayObject, BitmapData etc) but translate all the concepts
across to Pixi. Then we simply transpiled our AS3 code into
TypeScript, calling these classes. So as far as our original
code is concerned, it still "thinks" it's running in Flash. I'd
probably handle a project like this in much the same way</div>
<br>
<div class="gmail_quote gmail_quote_container">
<div dir="ltr" class="gmail_attr">On Sun, 25 Jan 2026 at 17:24,
Erik Loyer <<a href="mailto:erikcloyer@gmail.com"
moz-do-not-send="true" class="moz-txt-link-freetext">erikcloyer@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>Hi all,
<div><br>
</div>
<div>Great to see this thread. I\u2019ve been taking a similar
approach in trying to update my Shockwave site Lair of the
Marrow Monkey from back in the day. Google\u2019s AI IDE
Antigravity has been my tool of choice lately, it\u2019s forked
from the same editor VS Code is based on so familiar to
me. I have access to the original .dir files for the
project, and so manually extracted the script files using
an <a href="https://infinitemac.org" target="_blank"
moz-do-not-send="true">Infinite Mac</a> emulator and
created a CSV of the cast that identifies the type and
content of each element. Then, I kicked off the process
with a prompt that tried to explain the project and a
little bit about Director. It\u2019s taken a fair amount of
iteration, but I\u2019ve had good results in recreating a piece
in the \u201csingle frame script-based\u201d style. I\u2019ve enclosed
the prompt below in case it\u2019s helpful for anyone \u2014 would
be great if we could create something standardized that
explained Director to the LLM and that could be reused for
multiple projects. My prompt includes a lot of specifics
about this particular piece, but hopefully still useful.
Happy to provide more details if helpful.
<div><br>
</div>
<div>-Erik</div>
<div><br>
</div>
<div>\u2014\u2014</div>
<div><br>
</div>
<div>Prompt:</div>
<div><br>
</div>
<div>In this project, I am updating a 1998 Shockwave-based
website called "The Lair of the Marrow Monkey" to modern
web standards. The website contained various pages with
Shockwave player embeds, and I want to focus on porting
those embeds before rebuilding the website itself. I've
created a folder called "archive" which will contain
artifacts from the old project, which was created in
Macromedia Director 6. I'd like to start with an embed
called "02". The "02" folder in "archive" contains a CSV
which describes the contents of the "Cast," which was
the name for a media and script library in Director.
Each row corresponds to a single "cast member," and
columns indicate related content and metadata, unique to
each cast member type. For text and script cast members,
the content can be found in the "02files" folder, in
files with the same name. The "Data" file contains data
powering the piece, while all of the other text files
are scripts written in the Lingo programming language.
Director files contained a "Score" where media and
scripts would be placed. "Init Script" is the first
script to be executed in the score, so let's focus on
porting it first, with display and layout handled in
HTML and CSS as a baseline, and Javascript used for
dynamic elements. I've created a "ports" folder, and a
"02" folder inside of that, that is where we'll assemble
the ported version.</div>
<div><br>
</div>
<div>[This resulted in a detailed implementation plan
which I was prompted to approve, and things proceeded
from there...]</div>
<div><br
id="m_-499027875281710300lineBreakAtBeginningOfMessage">
<div><br>
<blockquote type="cite">
<div>On Jan 25, 2026, at 7:51\u202fAM, Robert Gordon <<a
href="mailto:rob@article19.com" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">rob@article19.com</a>>
wrote:</div>
<br>
<div>
<div>I don\u2019t have many Director projects of any
value lying around that I hadn\u2019t already
manually ported to Flash, then HTML5 (with
CanvasJS) then HTML5 again (with PIXIJS) then
again to a more native-in-the-browser
implementation with lots of css.
<div><br>
</div>
<div>For fun, I did ask ChatGTP the following:</div>
<div><br>
</div>
<div><font size="3">Translate the following
macromedia director lingo code into
javascript: </font></div>
<div><font size="3">on exitFrame </font></div>
<div><font size="3"><span
style="white-space:pre-wrap"> </span>go to
frame 7 </font></div>
<div><font size="3">end</font><br
id="m_-499027875281710300lineBreakAtBeginningOfMessage">
<div><span
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px"><br>
</span></div>
<div><span
style="text-align:start;text-indent:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal">I
was surprised and impressed at the
response. It understands Director\u2019s use of
a playback head and how to implement
animation in JS. I wonder how many
Directror/Lingo concepts it has a handle
on. If you have access to all of the
original media & source code, then
perhaps give up on decompiling the dir/dcr
and focus on the code porting through ai
with a different media management mindset
(not sure how many of us were using
sprite-sheets and texture-atlases back in
the ole Director days\u2026).</span></div>
<div><span
style="text-align:start;text-indent:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal"><br>
</span></div>
<div><span
style="text-align:start;text-indent:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal">Good
luck!</span></div>
<div>
<span
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px"><br>
r o b</span><br
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px">
<br
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px">
<b
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px">Robert
Gordon</b><br
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px">
<span
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px">The
Article 19 Group Inc.</span><br
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px">
<span
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px">514.938.8512</span><br
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px">
<span
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px"><a
href="mailto:rob@article19.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">rob@article19.com</a></span><br
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px">
<span
style="font-family:Helvetica;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;font-size:11px"><a
href="http://www.article19.com"
target="_blank" moz-do-not-send="true">www.article19.com</a></span>
</div>
<div><br>
<blockquote type="cite">
<div>On Jan 25, 2026, at 10:31\u202fAM, Paul
Catanese <<a
href="mailto:catanese.paul@gmail.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">catanese.paul@gmail.com</a>>
wrote:</div>
<br>
<div>
<div dir="ltr">Dear Jim-
<div>Just wanted to pipe up that I'm
fascinated and very interested in
this direction; it would be great if
it could bear fruit. I don't have
time to focus on this deeplyy, but I
am cheering you on, and wanted you
to know it, and wanted to share some
thoughts. The idea that an old
director project could be translated
to html5 seems like a great dream.
Would love to see it.</div>
<div>
<div>I was not aware of the
projectorrays project - this
certainly could be of interest.</div>
<div><br>
</div>
</div>
<div>I was also fascinated about
Danny's comment about .dir's
being.zip's - I didn't know that,
but I had effectively shifted away
from Director by around 2006.</div>
<div>Googling a bit, I did come across
this post that speaks to the
internal structure as an RIFX
container. </div>
<div><a
href="https://nosamu.medium.com/a-tour-of-the-adobe-director-file-format-e375d1e063c0"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://nosamu.medium.com/a-tour-of-the-adobe-director-file-format-e375d1e063c0</a></div>
<div>This direction is a bit
lower-level than I'd want to get
mixed up in, but could be useful in
thinking about what needs to be
extracted.</div>
<div>There's a few references at the
bottom of the document that may also
be of interest, including the
projectorrays project.</div>
<div><br>
</div>
<div>Please forgive some preaching to
the choir, but wanted to jot down
some general thoughts:</div>
<div>* Recalling that some projects
used 1-frame loops w/parent-child
scripts, some used "timeline only",
and majority used a hybrid approach
e.g. approaches where instances
carried behavioral scripts - I would
suspect that these different
authored-project architectures might
require differing translation
approaches for HTML5. </div>
<div>
<div>
<div>* Large multi .dir projects
would likely derive back down to
one of those cases. </div>
</div>
<div>* Functionalities provided by
3rd party xtras seem like another
area of particular wrinkles to be
unwound, as would some internal
xtras like quicktime.</div>
</div>
<div>* webgl should certainly be
robust enough to handle shockwave 3d
scenegraph & related
functionalities </div>
<div><br>
</div>
<div>
<div><b>emulation?</b></div>
<div>In the net.art context, I had
spoken with the Rhizome folks
years ago, and their approach to
preserving (flash) works was the
emulation as a service model.
They also did some interesting
preservation techniques for
director CD-Rom's in which old
hardware would run projects
natively, and then results
streamed to clients - but the
costs were personally way out of
reach. I'm not even clear if they
are still involved in anything
like that. The approach you're
talking about is a refreshing new
angle for director works. That
said, I did start to wonder what
it would mean to have a software
emulator, perhaps even a
browser-based emulator that could
run director projects, rather than
converting them. </div>
</div>
<div><br>
</div>
<div><b>Bigger picture still</b></div>
<div>Jon Ippollito & Richard
Rinehart's book: Re-Collection
offers another thought - that new
media art projects might be better
considered as notation based (e.g.
like music or theatrical
productions) - so that recreating
media artworks with new tools is
part of their nature. I was at the
WRO art center in Poland a few weeks
ago, and they had recreated pieces
like Camille Utterback's "text
rain", as well as an early Paul
Sharits piece, and a rutt-etra style
video rasterization demo, among
others, that fit into this framework
- <a
href="https://wrocenter.pl/pl/mi/"
target="_blank"
moz-do-not-send="true">check them
out here</a>. The guy who did the
heavy lifting: Pawel Janicki might
be interested in your project. </div>
<div><br>
</div>
<div>-paul</div>
<div><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On
Sat, Jan 24, 2026 at 7:46\u202fPM Jim
Andrews <<a
href="mailto:jim@vispo.com"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">jim@vispo.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p>Hi Danny,</p>
<p>I expect you already know about
ProjectorRays: <a
href="https://github.com/ProjectorRays/ProjectorRays" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/ProjectorRays/ProjectorRays</a>
. It isn't fantastic but it's
something.</p>
<p>This friend of mine I mentioned
says "I never used copilot. I am
in the IntelliJ ecosystem -
WebStorm. They have in there
"junie" coding agent, which as
far as i know built on top of
Claude model."</p>
<p>People are raving about Claude
Code. Anyway, my friend seems to
think that this sort of AI could
well convert something like .dir
files to HTML5. I'm not sure he
appreciates the difficulty of
the problem--though he is a pro
programmer. Maybe he does. </p>
<p>Anyway, I suspect that if we
could get some specs and whatnot
on Director, that would help in
the process.</p>
<p>All of us spent eons creating
work with Director. Anyone else
interested or have info to share
on this question??</p>
<p>ja</p>
<div>On 2026-01-24 3:27 p.m.,
Danny Kodicek wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Adobe /
Macromedia always insisted
there was no way to decompile
.dcrs (although that always
sounded unlikely to me). But
IIRC .dirs were like .docs -
just zip files with a
different name. Theoretically
I think you should be able to
rename them to .zip and open
them up. That might only be
true for later editions of
Director, though - and it
might not be true at all!
Maybe I'm just making it up...</div>
<br>
<div class="gmail_quote">
<div dir="ltr"
class="gmail_attr">On Sat,
24 Jan 2026 at 21:50, Jim
Andrews <<a
href="mailto:jim@vispo.com" target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">jim@vispo.com</a>> wrote:<br>
</div>
<blockquote
class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello
dear Hopper folks,<br>
<br>
I have a question and issue
to raise with you about
conversion of <br>
Director stuff to HTML5 (or
other formats).<br>
<br>
I am a newbie at using AI in
my programming
practice--just started the <br>
day before yesterday with
Copilot in VSCode. So far so
good.<br>
<br>
But a friend of mine is
intent upon using more
powerful AI tools to <br>
convert the Arteroids (<a
href="https://arteroids.vispo.com/" rel="noreferrer" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://arteroids.vispo.com</a>) source
code .dir <br>
into html5.<br>
<br>
Not surprisingly, the thing
he's having problems with is
the dir format. <br>
There is a published format
for SWF, and there's a
decompiler for <br>
Director, but I guess AIs
are going to have big
problems trying to <br>
'translate' dir or dcr
files.<br>
<br>
Has anyone approached Adobe
about making some (at least)
documentation <br>
about Director public so we
can try to salvage and
convert the IMMENSE <br>
work many of us did in
creating Director work?<br>
<br>
And what is out there now,
if anything at all?<br>
<br>
ja<br>
<a href="https://vispo.com/"
rel="noreferrer"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://vispo.com</a><br>
<br>
<br>
_______________________________________________<br>
Hopperxx mailing list<br>
<a
href="mailto:Hopperxx@vispo.com" target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">Hopperxx@vispo.com</a><br>
<a
href="http://vispo.com/mailman/listinfo/hopperxx_vispo.com"
rel="noreferrer"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">http://vispo.com/mailman/listinfo/hopperxx_vispo.com</a><br>
</blockquote>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
Hopperxx mailing list
<a href="mailto:Hopperxx@vispo.com" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">Hopperxx@vispo.com</a>
<a href="http://vispo.com/mailman/listinfo/hopperxx_vispo.com"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">http://vispo.com/mailman/listinfo/hopperxx_vispo.com</a>
</pre>
</blockquote>
</div>
_______________________________________________<br>
Hopperxx mailing list<br>
<a href="mailto:Hopperxx@vispo.com"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">Hopperxx@vispo.com</a><br>
<a
href="http://vispo.com/mailman/listinfo/hopperxx_vispo.com"
rel="noreferrer" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">http://vispo.com/mailman/listinfo/hopperxx_vispo.com</a><br>
</blockquote>
</div>
_______________________________________________<br>
Hopperxx mailing list<br>
<a href="mailto:Hopperxx@vispo.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">Hopperxx@vispo.com</a><br>
<a
href="http://vispo.com/mailman/listinfo/hopperxx_vispo.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">http://vispo.com/mailman/listinfo/hopperxx_vispo.com</a><br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
Hopperxx mailing list<br>
<a href="mailto:Hopperxx@vispo.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">Hopperxx@vispo.com</a><br>
<a
href="http://vispo.com/mailman/listinfo/hopperxx_vispo.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">http://vispo.com/mailman/listinfo/hopperxx_vispo.com</a><br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
_______________________________________________<br>
Hopperxx mailing list<br>
<a href="mailto:Hopperxx@vispo.com" target="_blank"
moz-do-not-send="true" class="moz-txt-link-freetext">Hopperxx@vispo.com</a><br>
<a href="http://vispo.com/mailman/listinfo/hopperxx_vispo.com"
rel="noreferrer" target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">http://vispo.com/mailman/listinfo/hopperxx_vispo.com</a><br>
</blockquote>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre wrap="" class="moz-quote-pre">_______________________________________________
Hopperxx mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Hopperxx@vispo.com">Hopperxx@vispo.com</a>
<a class="moz-txt-link-freetext" href="http://vispo.com/mailman/listinfo/hopperxx_vispo.com">http://vispo.com/mailman/listinfo/hopperxx_vispo.com</a>
</pre>
</blockquote>
</body>
</html>