Difference between revisions of "FF7/Field/Script/Opcodes/79 MINUS2!"

From Final Fantasy Inside
< FF7‎ | Field‎ | Script‎ | Opcodes
Jump to navigation Jump to search
my_wiki>Halkun
 
my_wiki>Halkun
Line 14: Line 14:
 
* '''const Bit[4]''' ''D'': Destination bank
 
* '''const Bit[4]''' ''D'': Destination bank
 
* '''const Bit[4]''' ''S'': Source bank
 
* '''const Bit[4]''' ''S'': Source bank
* '''const UByte''' ''Dest'': The destination variable, to which the operand is added.
+
* '''const UByte''' ''Dest'': The destination variable, to which the operand is subtracted.
* '''const UByte''' ''Oper'': The operand, added to the destination.
+
* '''const SWord''' ''Oper'': The operand to be subtracted from the destination.
  
 
==== Description ====
 
==== Description ====
Adds two numbers together and stores the result back into "Dest". The result of the addition is capped at 255.
+
Subtracts "Oper" from "Dest" and stores the result back into "Dest". The result of the subtraction is capped at -32768. Oddly enough the result is not capped at the positive end, 32767, so subtracting a large negative number from a large positive number will still produce wrap-around.
If the Source Bank is 0 then the “Oper” is added to the destination value.
+
If the Source Bank is 0 then the “Oper” is subtracted from the destination value.
If the Source Bank is an 8 bit bank, then the “Oper” is the address in that bank where the operand is.
+
If the Source Bank is an 16 bit bank, then the “Oper” is the address in that bank where the operand is.

Revision as of 01:40, 3 September 2006

  • Opcode: 0x79
  • Short name: MINUS2!
  • Long name: Saturated Subtraction (16-bit)

Memory layout

0x79 D/S Dest Oper

Arguments

  • const Bit[4] D: Destination bank
  • const Bit[4] S: Source bank
  • const UByte Dest: The destination variable, to which the operand is subtracted.
  • const SWord Oper: The operand to be subtracted from the destination.

Description

Subtracts "Oper" from "Dest" and stores the result back into "Dest". The result of the subtraction is capped at -32768. Oddly enough the result is not capped at the positive end, 32767, so subtracting a large negative number from a large positive number will still produce wrap-around. If the Source Bank is 0 then the “Oper” is subtracted from the destination value. If the Source Bank is an 16 bit bank, then the “Oper” is the address in that bank where the operand is.