Jump to content

Bytecode: Difference between revisions

Replace obsolete bokasm tool with BokMagic
More control 0xd4cb documentation
 
Line 640: Line 640:
  set-zone = [[#opcode_60|control 0xd4cb]], zone_id, unknown_1, kw_m, [ kw_w ], [ kw_s ], [ kw_b ], callback, [[#opcode_00|end]] ;
  set-zone = [[#opcode_60|control 0xd4cb]], zone_id, unknown_1, kw_m, [ kw_w ], [ kw_s ], [ kw_b ], callback, [[#opcode_00|end]] ;
   
   
  kw_m = [[#opcode_50|keyword 0x63]], unknown_2 ;
  kw_m = [[#opcode_50|keyword 0x63]], value ;
  kw_w = [[#opcode_50|keyword 0x77]], { value } ; // Likely paramaters passed to the callback?
  kw_w = [[#opcode_50|keyword 0x77]], { value } ; // Likely paramaters passed to the callback?
  kw_s = [[#opcode_50|keyword 0x73]], { value } ; // unknown
  kw_s = [[#opcode_50|keyword 0x73]], { value } ; // unknown
Line 647: Line 647:
  callback = [[#opcode_50|keyword 0x65]], [[#opcode_80|block]] ;
  callback = [[#opcode_50|keyword 0x65]], [[#opcode_80|block]] ;


zone_id refers to the zone id defined in the [[Map file#Zone data|map file]]. One of unknown_1 or unknown_2 should be an "actor ID", to set which type of actors can trigger the callback. The callback block will always receive some parameters (unknown which).
zone_id refers to the zone id defined in the [[Map file#Zone data|map file]]. unknown_1 should be an "actor type", to set which type of actors can trigger the callback.
 
The kw_m value determines when the callback gets invoked. kw_m=0xdd2 will only invoke the callback on the frame when the actor enters the zone. This is the most common case.
 
kw_m=0x1516 will invoke the callback when the actor enters the zone, every frame the actor remains in the zone, and when the actor leaves the zone (these cases can be distinguished in the callback by examining <code>param 0x3</code>, which will be 0xdd2 for enter, 0xa5bf for remain, and 0xd5cc for exit).
 
''TODO'': The callback will receive many parameters, these need to be documented. There may also be other kw_m values.


Example:
Example: