plusr_scripts
plusr_scripts
after all actions there is an "action" starting with 0xFD00, followed by a 0xFFFF
(the game might not read past here)
===============================================================
Type: Normal
Size: 4 bytes
===============================================================
===============================================================
Type: Normal
Size: 4 bytes
Arg1 (byte) = flag
Arg2 (ushort) = mode
flags:
0: 0x100000 - ??
1: 0x1000000 - ??
2: 0x4000000 - ??
modes:
0: AND NOT - unsets the flag?
_: OR - sets the flag?
===============================================================
===============================================================
Type: Normal
Size: 4 bytes
Args - unused
- If the current action hit count is less than the current action max hit count,
renewal the collision (effectively
enabling multi-hits)
===============================================================
===============================================================
Type: Normal
Size: 4 bytes
Blend:
0: Normal
1: Additive?
Execution:
if (Blend AND 0x8000) == 0:
transparency = Alpha
blending = Blend
trans2 = Alpha
transmode2 = Blend
return
===============================================================
Scale (SCALE) - ID 7
Type: Normal
Size: 4 bytes
Execution:
if mode == 1:
scale = value
if mode == 0:
scaleY = value
if mode == 3:
scale = scale + value
if mode == 2:
scaleY = scaleY + value
if mode == 5:
scale = scale + (rng AND value)
if mode == 4:
scaleY = scaleY + (rng AND value)
if mode == 7:
scale = (scale * (value / 100.0)) -> (converted from double to int)
if mode == 6:
scaleY = (scaleY * (value / 100.0)) -> (converted from double to int)
return
===============================================================
Rotate (ROT) - ID 8
Type: Normal
Size: 4 bytes
Execution:
if mode == 0:
angle = value
if mode == 1:
if value == 0:
angle = ((value AND 0xFF) << 8)
- wraps the value if it overflows a byte then shift 8 bits to the left
(???)
else:
angle = (rng AND value)
if mode == 2:
angle = angle + value
if mode == 3:
angle = localid * 256 (????????)
if mode == 4:
angle = angle + (rng AND value)
if mode == 5:
angle = angle + (rng MOD value)
return
===============================================================
===============================================================
Type: Normal
Size: 4 bytes
Args - unused
===============================================================
Type: Normal
Size: 4 bytes
Args - unused
===============================================================
Type: Normal
Size: 4 bytes
Args - unused
===============================================================
===============================================================
Type: 3-Bytes
Size: 4 bytes
Execution:
if HitParam != 0: (if there are hit parameters provided by the action)
gno = GuardNo
gprob = GuardProb
return
===============================================================
Type: 3-Bytes
Size: 4 bytes
Execution:
if HitParam != 0: (if there are hit parameters provided by the action)
dno = DamageNo
dprob = DamageProb
return
===============================================================
0x20 = unused
0x21 = ENEMYDAMAGE - size 4
0x22 = DOWN_GRAV - size 4
0x23 = DOWN_X - size 4
0x24 = DOWN_Y - size 4
0x25 = unused
0x26 = DELETE_ITTAI - size 4
0x27 = SkipInstructions - size 4
0x28 = FADE - size 4
0x29 = unused
0x2A = unused
0x2B = unused
0x2C = unused
0x2D = SET_PRIORITY - size 4
0x2E = unused
0x2F = SET_DAMAGE - size 4
===============================================================
Arg1 - unused
Arg2 (ushort) = level
===============================================================
===============================================================
Type: Normal
Size: 4 bytes
===============================================================
===============================================================
Type: Normal
Size: 4 bytes
Player:
_: p1
1: p2
- Use the palette from the specified section from the specified player current
loaded palette (only lasts while in
the action, only works with embedded palette sprites?) <- thanks to sALT
===============================================================
===============================================================
Type: Normal
Size: 4 bytes
Arg1 - unused
Arg2 (ushort) = operation
Execution:
if operation != 0:
- sets the crouching state
return
- removes the crouching state
return
===============================================================
8 (00000000000000000000000010000000): Damage
(when not set, damage will be dealt, otherwise damage will be ignored)