jayfoxrox / futurama-tools Goto Github PK
View Code? Open in Web Editor NEWTools to analyze files of the video-game "Futurama" (2003)
Tools to analyze files of the video-game "Futurama" (2003)
I would love to contribute to this project are you still working on it
This is an old document that I still had (From 23rd July 2019). It contains some ideas for the FUL assembly language which is easy to parse. A core idea is to have a trivial assembler (not a compiler) which can handle all situations, while also still providing some higher level convenience.
I'm not sure how much of this was implemented in the disassembler or if I ran into any issues with this code-style.
If anyone were to work on the disassembler or assembler, I'd expect them to consider some of these ideas.
# Proposal for a new Futurama script language
# - Keyword takes X arguments
# - A scope ("{" and "}") after each argument list allows to run code *before* the keyword
# - An empty scope is also valid (";", or "}" when "{" was expected)
# - Labels start with ":", so they are seen
# - Pseudo-Operations start with "+" (this might be a bad idea..)
# - Meta-data is prefixed with "." (this might be a bad idea.. = difference to "+"?)
.type void;
.type int;
.type float;
.type bool;
# 8: {'name': 'FuPoint3', 'members': [{'name': 'x', 'offset': 0, 'type': 5}, {'name': 'y', 'offset': 4, 'type': 5}, {'name': 'z', 'offset': 8, 'type': 5}]}
.type FuPoint3 {
.variable float x;
.variable float y;
.variable float z;
.function Default;
.function Dupli$0;
.function Dupli$1;
.function Dupli$2;
}
# Adds the address to the function
.export FuPoint3.Default, 10, 20 {
.variable FuPoint3 center;
ReturnIfTrue;
Return;
}
# Global functions
.function unknown@19;
.function operator(bool);
.function unknown@21;
# Class definition
.type Door {
.variable int @@AID@@;
.function Door; # Constructor
}
+While {
# PUSH &class 16 # g_kSpawn
# PUSH string "SewerBSpawn1"
# PUSH string "trg_SpawnB1"
# CALL_18 label label_128216 stack_size 8 # Respawn.Add
# POP local xyz
SetLocal xyz { Call :Respawn:Add, 8 { This* g_kSpawn; String "SewerBSpawn1"; String "trg_SpawnB1" } }
# PUSH integer 100
# POP local xyz
SetLocal xyz { Integer 100 }
#FIXME: This would need a support file, as it's hardcoding game functions
#
# PUSH integer 1
# CALL 0 20 # operator(bool)
True;
Call operator(bool)$0, 8 { Integer 1 }; # Alternative
# Call 0 20
Invoke 0:20
Invoke 20
#Call 1 20
Invoke 1:20
}
:Head
JumpIfTrue :Exit;
JumpIfFalse :Cleanup;
:Cleanup
Jump :Head;
:Exit
I'm really amazed you and the community were able to figure out how to open the egg room... but i'm just wondering exactly what your process was when looking through the scripts? What data were you looking at to make the decision that you needed to do A -> B -> C -> D?
I'd love to try and replicate this for my own learning.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.