What a GameMaker game actually is
Undertale ships as data.win — a 61 MB container of chunked, offset-addressed
data plus BC16 bytecode. No source. No symbols. The port is a from-scratch interpreter
for that bytecode and a loader for the chunk format: GEN8, OPTN,
STRG, TXTR, TPAG, SPRT, BGND,
ROOM, OBJT, CODE, FONT, SOND,
AUDO, AGRP.
When the original 2016 game calls draw_self(), or adds a draw event at depth 12,
or spawns a bullet with instance_create, it has to mean exactly what it meant
then. The game is not reimplemented. It is executed.