Open mikeweilgart opened 4 years ago
Agreed that'd be a good feature! I believe the list is:
{ "NOOP", "No Operation", "Take no action." },
{ "SETR", "Set Register", "Store the source value into the destination register." },
{ "0MEM", "Zero Memory", "Set the destination memory slot's value to '0'." },
{ "MSET", "Memory Set", "Store the source value into the destination memory slot." },
{ "ADDR", "Add Register", "Sum the values from the source & target registers, and "
"store them in the destination register." },
{ "ADDM", "Add Memory", "Sum the values from the source & target memory slots , and "
"store them in the destination memory slot." },
{ "LOAD", "Load", "Store the value from the target memory slot into the destination register." },
{ "SAVE", "Save", "Store the value from the source register into the target memory slot." },
{ "JUMP", "Jump", "Go to the destination slot and continue executing instructions from there." },
{ "BREQ", "Branch if Registers Equal",
"If the source & target registers' values are equal, go to the destination slot & continue execution." },
{ "MULT", "Multiply", "Multiply the values from the source & target registers, and store them in the destination register.", },
{ "LDAC", "Load Accumulator", "Store the value from the target memory slot into the accumulator." },
{ "ADAC", "Add Accumulator", "Sum the source value with the accumulator, and store it back into the accumulator." },
{ "SVAC", "Save Accumulator", "Save the accumulator's value into the destination memory slot." },
{ "BAKP", "Backup", "Save the accumulator's value into the backup register." },
{ "RSTR", "Restore", "Store the value from the backup register into the accumulator." },
{ "BMEM", "Branch if Memory Equal",
"If the contents of the source & target memory slots are equal, go to the destination slot & continue execution." },
{ "DIVI", "Divide", "Divide the source by the target; store the quotient in the destination slot, and the remainder in the next slot. If the target is 0, instead store 0 in the destination slot and the source in the remainder." },
{ "GRTR", "Greater Than", "If the source is greater than the target, store 1 in the destination. Otherwise, store 0." },
Hopefully that helps!
Is there any way to add custom [arbitrary] opcodes?
Sorry, no. That'd be really cool, but it'd require a significant amount of work that I never had the bandwidth for.
Aw. I've played through every level now and was thinking of using it to interpret AQA machine code as a challenge.
The "How To" document for making custom puzzles should list the opcodes that can be set into initial memory (and into goal memory).
All that the documentation says currently is: