Script Format: Difference between revisions

From Terranigma Wiki
Jump to navigation Jump to search
mNo edit summary
Updated entries
 
Line 126: Line 126:
|11
|11
| TriggerObjectOnAreaAbsolute
| TriggerObjectOnAreaAbsolute
| 9
| 8
| First parameter is object index, which is multiplied by 40 and added to 1000 to get the object handle, for which the trigger is checked.
| First parameter is object index, which is multiplied by 40 and added to 1000 to get the object handle, for which the trigger is checked.
Remaining parameters are same as command 0C.
Remaining parameters are same as command 0C.
Line 133: Line 133:
|12
|12
| TriggerObjectOnAreaRelative
| TriggerObjectOnAreaRelative
| 9
| 8
| Broken command.
| Broken command.


Line 146: Line 146:


|-
|-
|14
| 14
| PlayerPort
| PlayerPort
| 9
| 9
Line 152: Line 152:


|-
|-
|15
| 15
| PlayerPortByEnemy
| PlayerPortByEnemy
| 1
| 1
Line 158: Line 158:


|-
|-
|16
| 16
| SetBonepinWarp( u16, u8, u16, u16 )
| SetBonepinWarp( u16, u8, u16, u16 )
| 8
| 8
Line 164: Line 164:


|-
|-
|17
| 17
| SeagullTransport( u8 to, u16 src_x, u16 src_y )
| SeagullTransport( u8 to, u16 src_x, u16 src_y )
| 6
| 6
Line 186: Line 186:
| 4
| 4
| choices_ptr refers to a table with jump addresses. The text for the choices needs to be created beforehand by a normal text command.
| choices_ptr refers to a table with jump addresses. The text for the choices needs to be created beforehand by a normal text command.
The choices_ptr can also not be directly after this command but after the whole script.


Known layouts are:
Known layouts are:
Line 216: Line 217:


|-
|-
|1B
| 1B
| PrintRelative( u16 Address )
| PrintRelative( u16 Address )
| 3
| 3
Line 222: Line 223:


|-
|-
|1C
| 1C
| PrintAbsolute( u24 Address )
| PrintAbsolute( u24 Address )
| 4
| 4
Line 228: Line 229:


|-
|-
|1D
| 1D
| u16
| u16
| 3
| 3
Line 234: Line 235:


|-
|-
|1E
| 1E
| u8, u16
| u8, u16
| 4
| 4
Line 240: Line 241:


|-
|-
|1F
| 1F
| MessageWait
| MessageWait
| 1
| 1
Line 246: Line 247:


|-
|-
|20
| 20
| MessageAuto
| MessageAuto
| 1
| 1
Line 252: Line 253:


|-
|-
|21
| 21
| TriggerSet( u16 addr )
| TriggerSet( u16 addr )
| 3
| 3
Line 258: Line 259:


|-
|-
|22
| 22
| SwitchRange( u8 first, u8 last, ... )
| SwitchRange( u8 first, u8 last, ... )
| 3 + 2*(last+1-first)
| 3 + 2*(last+1-first)
Line 264: Line 265:


|-
|-
|23
| 23
| TriggerNearPlayer( u16 addr )
| TriggerNearPlayer( u16 addr )
| 3
| 3
Line 270: Line 271:


|-
|-
|24
| 24
| TriggerNearPlayer( u8, u16 addr )
| TriggerNearPlayer( u8, u16 addr )
| 4
| 4
Line 276: Line 277:


|-
|-
|25
| 25
| Rand
| Random
| 1
| 1
|
| Calls the randomiser function and returns a value


|-
|-
|26
| 26
| RandomMoveInArea( u8 left, u8 top, u8 right, u8 bottom )
| RandomMoveInArea( u8 left, u8 top, u8 right, u8 bottom )
| 5
| 5
Line 288: Line 289:


|-
|-
|27
| 27
| RandomMoveInArea( u8 animation, u8 ???, u8 left, u8 top, u8 right, u8 bottom )
| RandomMoveInArea( u8 animation, u8 ???, u8 left, u8 top, u8 right, u8 bottom )
| 7
| 7
Line 294: Line 295:


|-
|-
|28
| 28
|
|
| 2
| 2
Line 300: Line 301:


|-
|-
|29
| 29
| PadButtonsEnable( u16 buttons )
| PadButtonsEnable( u16 buttons )
| 3
| 3
Line 306: Line 307:


|-
|-
|2A
| 2A
| PadButtonsDisable( u16 buttons )
| PadButtonsDisable( u16 buttons )
| 3
| 3
Line 312: Line 313:


|-
|-
|2B
| 2B
| PadCheckAllButtonsPressed2
| PadCheckAllButtonsPressed2
| 5
| 5
Line 318: Line 319:


|-
|-
|2C
| 2C
| PadCheckNoButtonPressed2
| PadCheckNoButtonPressed2
| 5
| 5
Line 324: Line 325:


|-
|-
|2D
| 2D
| PadCheckButtonPressed
| PadCheckButtonPressed
| 8
| 8
Line 330: Line 331:


|-
|-
|2E
| 2E
| PadCheckAnyButtonPressed
| PadCheckAnyButtonPressed
| 5
| 5
Line 336: Line 337:


|-
|-
|2F
| 2F
| PadCheckNoButtonPressed
| PadCheckNoButtonPressed
| 5
| 5
Line 342: Line 343:


|-
|-
|30
| 30
| MusicPlay
| MusicPlay
| 2
| 2
Line 348: Line 349:


|-
|-
|31
| 31
| MusicPlayFadeOver
| MusicPlayFadeOver
| 2
| 2
Line 354: Line 355:


|-
|-
|32
| 32
| MusicPlay2
| MusicPlay2
| 2
| 2
Line 361: Line 362:


|-
|-
|33
| 33
| WaitMusicLoaded
| WaitMusicLoaded
| 1
| 1
Line 367: Line 368:


|-
|-
|34
| 34
| APUWriteByte_F5( u8 Byte )
| APUWriteByte_F5( u8 Byte )
| 2
| 2
Line 373: Line 374:


|-
|-
|35
| 35
| APUWriteByte_F6( u8 Byte )
| APUWriteByte_F6( u8 Byte )
| 2
| 2
Line 379: Line 380:


|-
|-
|36
| 36
| SoundEffectPlayOnce
| SoundEffectPlayOnce
| 2
| 2
Line 385: Line 386:


|-
|-
|37
| 37
| SoundEffectPlay
| SoundEffectPlay
| 2
| 2
Line 391: Line 392:


|-
|-
|38
| 38
| SoundEffect?
| SoundEffect?
| 3
| 3
Line 397: Line 398:


|-
|-
|39
| 39
| SpriteGotoPositionX
| SpriteGotoPositionX
| 4
| 4
Line 403: Line 404:


|-
|-
|3A
| 3A
| SpriteGotoPositionY
| SpriteGotoPositionY
| 4
| 4
Line 409: Line 410:


|-
|-
|3B
| 3B
| ObjectSetSolid
| ObjectSetSolid
| 1
| 1
Line 415: Line 416:


|-
|-
|3C
| 3C
| ObjectSetHollow
| ObjectSetHollow
| 1
| 1
Line 421: Line 422:


|-
|-
|3D
| 3D
| BlockSetSolid( u8 rel_or_abs, u8 x, u8 y )
| BlockSetSolid( u8 rel_or_abs, u8 x, u8 y )
| 4
| 4
Line 507: Line 508:
|4B
|4B
| MapFlagUpdate(u8 id, u16 amount )
| MapFlagUpdate(u8 id, u16 amount )
| 4
| 2 or 4
|  
|  


Line 519: Line 520:
|4D
|4D
| TownGrowthUpdate( u8 id, u16 amount )
| TownGrowthUpdate( u8 id, u16 amount )
| 4
| 2 or 4
| (id & C0) specifies the update mode:
| (id & C0) specifies the update mode:
{| class="wikitable" style="font-family:Lucida Console;"
{| class="wikitable" style="font-family:Lucida Console;"
Line 554: Line 555:


|-
|-
|51
| 51
|   
|   
|
|
Line 560: Line 561:


|-
|-
|52
| 52
|  
|  
|
|
Line 566: Line 567:


|-
|-
|53
| 53
|  
|  
|
|
Line 590: Line 591:


|-
|-
|57
| 57
| ItemCheckOwned( u8 id, u16 addr )
| ItemCheckOwned( u8 id, u16 addr )
| 4
| 4
Line 596: Line 597:


|-
|-
|58
| 58
| ItemCheckEquipped( u8 id, u16 addr )
| ItemCheckEquipped( u8 id, u16 addr )
| 4
| 2 or 4
| Jump to addr if Ark has the item equipped.
| Jump to addr if Ark has the item equipped.


|-
|-
|59
| 59
| ObjectCheckOffScreen()
| ObjectCheckOffScreen()
| 1
| 2
|
|


Line 614: Line 615:


|-
|-
|5B
| 5B
| DecompressToMemory( u24 src, u16 dest )
| DecompressToMemory( u24 src, u16 dest )
| 6
| 6
Line 620: Line 621:


|-
|-
|5C
| 5C
| MoneyAdd( u24 amount )
| MoneyAdd( u24 amount )
| 4
| 4
Line 626: Line 627:


|-
|-
|5D
| 5D
| MoneyTake( u24 amount, u16 addr )
| MoneyTake( u24 amount, u16 addr )
| 6
| 6
Line 632: Line 633:


|-
|-
|5E
| 5E
| MoneyCheck( u24 amount, u8 mode, u16 addr )
| MoneyCheck( u24 amount, u8 mode, u16 addr )
| 7
| 7
Line 654: Line 655:


|-
|-
|5F
| 5F
| SwitchOnDirection( u16 DownJump, u16 UpJump, u16 LeftJump, u16 RightJump )
| SwitchOnDirection( u16 DownJump, u16 UpJump, u16 LeftJump, u16 RightJump )
| 9
| 9
Line 660: Line 661:


|-
|-
|60
| 60
| ItemAddPlayMusic( u8 ItemID, u16 Delay, u8 MusicID )
| ItemAddPlayMusic( u8 ItemID, u16 Delay, u8 MusicID )
| 5
| 5
Line 666: Line 667:


|-
|-
|61
| 61
| CheckDirectionEx( u8 direction, u8 a, u8 b, u8 c, u16 jump )
| CheckDirectionEx( u8 direction, u8 a, u8 b, u8 c, u16 jump )
| 7
| 7
Line 688: Line 689:


|-
|-
|62
| 62
| SetInvulnerable( u8 frames )
| SetInvulnerable( u8 frames )
| 2
| 2
Line 694: Line 695:


|-
|-
|63
| 63
|
|  
| 3
| 3
|
|


|-
|-
|64
| 64
|
|  
|
| 3
|
|


|-
|-
|65
| 65
| HandlerRegisterOnDamage( u16 HandlerAddress, u24 ReturnAddress )
| HandlerRegisterOnDamage( u16 HandlerAddress, u24 ReturnAddress )
| 6
| 6
Line 712: Line 713:


|-
|-
|66
| 66
| ReturnFromDamageHandler
| ReturnFromDamageHandler
| 1
| 1
Line 718: Line 719:


|-
|-
|67
| 67
| LightFormSet
| LightFormSet
| 1
| 2
| Valid values 0-8
| Valid values 0-8


|-
|-
|68
| 68
|
| RenderSpriteLoop
|
| 2
|
|  


|-
|-
|69
| 69
|
| RenderSprite
| 1
| 1
|
|


|-
|-
|6A
| 6A
| u8, u8
| u8, u8
| 3
| 3
Line 742: Line 743:


|-
|-
|6B
| 6B
| PrintRelative2
| PrintRelative2
| 3
| 3
Line 748: Line 749:


|-
|-
|6C
| 6C
| PrintAbsolute2
| PrintAbsolute2
| 4
| 4
Line 754: Line 755:


|-
|-
|6D
| 6D
|
| UploadTileData
|
| 1
|
|  


|-
|-
|6E
| 6E
| SceneUpdate
| SceneUpdate
| 1
| 1
Line 766: Line 767:


|-
|-
|6F
| 6F
|  
| ScreenShake
| 1
| 1
|
|


|-
|-
|70
| 70
| Follow( u16 ptrObject, u16 ptrAnimations )
| Follow( u16 ptrObject, u16 ptrAnimations )
| 5
| 5
Line 778: Line 779:


|-
|-
|71
| 71
| Check???( u16, u16, u16 jump )
| Check???( u16, u16, u16 jump )
| 7
| 7
Line 784: Line 785:


|-
|-
|72
| 72
| u16, u8
| u16, u8
| 4
| 4
Line 790: Line 791:


|-
|-
|73
| 73
|
|
| 5
| 5
Line 796: Line 797:


|-
|-
|74
| 74
| SetMagicHandler( u8 magic_id, u16 handler )
| SetMagicHandler( u8 magic_id, u16 handler )
| 4
| 4
Line 804: Line 805:


|-
|-
|75
| 75
| SetConditionalTalkHandler( u16 flag, u16 handler )
| SetConditionalTalkHandler( u16 flag, u16 handler )
| 5
| 5
Line 812: Line 813:


|-
|-
|76
| 76
| SystemRegisterWrite
| SystemRegisterWrite
| 3
| 3
Line 818: Line 819:


|-
|-
|77
| 77
|
|
|
|
Line 824: Line 825:


|-
|-
|78
| 78
| BackgroundUpdateFade
| BackgroundUpdateFade
| 2
| 2
Line 830: Line 831:


|-
|-
|79
| 79
|
|
|
|
Line 836: Line 837:
   
   
|-
|-
|7A
| 7A
|
|
|
|
Line 842: Line 843:


|-
|-
|7B
| 7B
|
|
|
|
Line 848: Line 849:


|-
|-
|7C
| 7C
|
|
|
|
Line 854: Line 855:


|-
|-
|7D
| 7D
|
|
|
|
Line 860: Line 861:


|-
|-
|7E
| 7E
|
|
|
|
Line 866: Line 867:


|-
|-
|7F
| 7F
|
|
|
|
Line 872: Line 873:


|-
|-
|80
| 80
| AnimationSetSpriteFlagsAndResetElevationLevel( u8 SpriteFlags )
| AnimationSetSpriteFlagsAndResetElevationLevel( u8 SpriteFlags )
| 2
| 2
Line 878: Line 879:


|-
|-
|81
| 81
| AnimationSetB( u8 SpriteFlags )
| AnimationSetB( u8 SpriteFlags )
| 2
| 2
Line 884: Line 885:


|-
|-
|82
| 82
| AnimationSetC( u8 SpriteFlags, u8 )
| AnimationSetC( u8 SpriteFlags, u8 )
| 3
| 3
Line 890: Line 891:


|-
|-
|83
| 83
| SpriteSetFlagsAndElevationLevel( u8 SpriteFlags, u8 EleveationLevel )
| SpriteSetFlagsAndElevationLevel( u8 SpriteFlags, u8 EleveationLevel )
| 3
| 3
Line 896: Line 897:


|-
|-
|84
| 84
|
|
| 4
| 4
Line 902: Line 903:


|-
|-
|85
| 85
| AnimationSetD
| AnimationSetD
| 3
| 3
Line 908: Line 909:


|-
|-
|86
| 86
| AnimationSetE( u8, u8 )
| AnimationSetE( u8, u8 )
| 3
| 3
Line 914: Line 915:


|-
|-
|87
| 87
| ObjectMove( u8, u8, u8 )
| ObjectMove( u8, u8, u8 )
| 4
| 4
Line 920: Line 921:


|-
|-
|88
| 88
|
|
| 4
| 4
Line 926: Line 927:


|-
|-
|89
| 89
|
|
| 5
| 5
Line 932: Line 933:


|-
|-
|8A
| 8A
|
|
| 2
| 2
Line 938: Line 939:


|-
|-
|8B
| 8B
|
|
| 3
| 3
Line 944: Line 945:


|-
|-
|8C
| 8C
|
|
| 2
| 2
Line 950: Line 951:


|-
|-
|8D
| 8D
|
|
| 3
| 3
Line 956: Line 957:


|-
|-
|8E
| 8E
| AnimationWait
| AnimationWait
| 1
| 1
Line 962: Line 963:


|-
|-
|8F
| 8F
| AnimationWait2
| AnimationWait2
| 1
| 1
Line 968: Line 969:


|-
|-
|90
| 90
| 1
| 1
|
|
Line 974: Line 975:


|-
|-
|91
| 91
| 1
| 1
|
|
Line 980: Line 981:


|-
|-
|92
| 92
| 1
| 1
|
|
Line 986: Line 987:


|-
|-
|93
| 93
| 1
| 1
|
| PALCopy
|
|


|-
|-
|94
| 94
| 1
| 1
|
|
Line 998: Line 999:


|-
|-
|95
| 95
| u16, u8, u16, u16, u16, u8
| u16, u8, u16, u16, u16, u8
| 9
| 9
Line 1,004: Line 1,005:


|-
|-
|96
| 96
| u16, u16, u16, u16, u16
| u16, u16, u16, u16, u16
| 11
| 11
Line 1,010: Line 1,011:


|-
|-
|97
| 97
| u16, u8, u16, ?
| u16, u8, u16, ?
| 6
| 6
Line 1,016: Line 1,017:


|-
|-
|98
| 98
| u16, u8, ?
| u16, u8, ?
| 11
| 11
Line 1,022: Line 1,023:


|-
|-
|99
| 99
| ObjectCloneInsertAtBeginSF
| ObjectCloneInsertAtBeginSF
| 6
| 6
Line 1,028: Line 1,029:


|-
|-
|9A
| 9A
| ObjectCloneInsertBeforeSP
| ObjectCloneInsertBeforeSP
| 4
| 4
Line 1,034: Line 1,035:


|-
|-
|9B
| 9B
| ObjectCloneInsertBeforeSFP
| ObjectCloneInsertBeforeSFP
| 6
| 6
Line 1,040: Line 1,041:


|-
|-
|9C
| 9C
| ObjectCloneInsertBeforeSRP
| ObjectCloneInsertBeforeSRP
| 8
| 8
Line 1,046: Line 1,047:


|-
|-
|9D
| 9D
| ObjectCloneInsertBeforeSRFP
| ObjectCloneInsertBeforeSRFP
| 10
| 11
| Insert before current object, set script pointer, relative placement, flags and parent (implied)
| Insert before current object, set script pointer, relative placement, flags and parent (implied)


|-
|-
|9E
| 9E
| ObjectCloneInsertBeforeSAP
| ObjectCloneInsertBeforeSAP
| 8
| 8
Line 1,058: Line 1,059:


|-
|-
|9F
| 9F
| ObjectCloneInsertBeforeSAFP
| ObjectCloneInsertBeforeSAFP
| 10
| 9
| Insert before current object, set script pointer, absolute placement, flags and parent (implied)
| Insert before current object, set script pointer, absolute placement, flags and parent (implied)


|-
|-
|A0
| A0
| ObjectCloneInsertAtEndSFP
| ObjectCloneInsertAtEndSFP
| 6
| 6
Line 1,070: Line 1,071:


|-
|-
|A1
| A1
| ObjectCloneInsertAfterSP
| ObjectCloneInsertAfterSP
| 4
| 4
Line 1,076: Line 1,077:


|-
|-
|A2
| A2
| ObjectCloneInsertAfterSFP
| ObjectCloneInsertAfterSFP
| 6
| 6
Line 1,082: Line 1,083:


|-
|-
|A3
| A3
| ObjectCloneInsertAfterSRP
| ObjectCloneInsertAfterSRP
| 8
| 8
Line 1,088: Line 1,089:


|-
|-
|A4
| A4
| ObjectCloneInsertAfterSRFP
| ObjectCloneInsertAfterSRFP
| 10
| 10
Line 1,096: Line 1,097:


|-
|-
|A5
| A5
| ObjectCloneInsertAfterSAP
| ObjectCloneInsertAfterSAP
| 8
| 8
Line 1,102: Line 1,103:


|-
|-
|A6
| A6
| ObjectCloneInsertAfterSAFP
| ObjectCloneInsertAfterSAFP
| 10
| 10
Line 1,108: Line 1,109:


|-
|-
|A7
| A7
| ObjectDelete
| ObjectDelete
| 1
| 1
Line 1,114: Line 1,115:


|-
|-
|A8
| A8
|  
|  
| 1
| 1
Line 1,120: Line 1,121:


|-
|-
|A9
| A9
|
|
|
|
Line 1,126: Line 1,127:


|-
|-
|AA
| AA
|
|
| 4
| 4
Line 1,132: Line 1,133:


|-
|-
|AB
| AB
|
|
|
| 6
|
|


|-
|-
|AC
| AC
|
|
|
| 5
|
|


|-
|-
|AD
| AD
|
|
|
|
Line 1,150: Line 1,151:


|-
|-
|AE
| AE
|
|
|
| 1
|
|


|-
|-
|AF
| AF
|
|
| 2
| 2
Line 1,162: Line 1,163:


|-
|-
|B0
| B0
|
|
| 2 or 5
| 2 or 5
Line 1,168: Line 1,169:


|-
|-
|B1
| B1
| ObjectMoveHorizontal
| ObjectMoveHorizontal
| 3
| 3
Line 1,174: Line 1,175:


|-
|-
|B2
| B2
| ObjectMoveVertical
| ObjectMoveVertical
| 3
| 3
Line 1,180: Line 1,181:


|-
|-
|B3
| B3
| ObjectMove
| ObjectMove
| 5
| 5
Line 1,186: Line 1,187:


|-
|-
|B4
| B4
| SpriteSetUpsideDown
| SpriteSetUpsideDown
| 1
| 1
Line 1,192: Line 1,193:


|-
|-
|B5
| B5
| SpriteSetDownsideUp
| SpriteSetDownsideUp
| 1
| 1
Line 1,198: Line 1,199:


|-
|-
|B6
| B6
| SpriteSetFacingRight  
| SpriteSetFacingRight  
| 1
| 1
Line 1,204: Line 1,205:


|-
|-
|B7
| B7
| SpriteSetFacingLeft
| SpriteSetFacingLeft
| 1
| 1
Line 1,210: Line 1,211:


|-
|-
|B8
| B8
| SpriteFlipVertical
| SpriteFlipVertical
| 1
| 1
Line 1,216: Line 1,217:


|-
|-
|B9
| B9
| SpriteFlipHorizontal
| SpriteFlipHorizontal
| 1
| 1
Line 1,222: Line 1,223:


|-
|-
|BA
| BA
| SpriteSetPriority
| SpriteSetPriority
| 2
| 2
Line 1,228: Line 1,229:


|-
|-
|BB
| BB
| SpriteSetPalette
| SpriteSetPalette
| 2
| 2
Line 1,234: Line 1,235:


|-
|-
|BC
| BC
| MarkOrigin
| MarkOrigin
| 1
| 1
Line 1,240: Line 1,241:


|-
|-
|BD
| BD
| MarkOriginAsync
| MarkOriginAsync
| 1
| 1
Line 1,246: Line 1,247:


|-
|-
|BE
| BE
| JumpAndSetOriginWithDelay
| JumpAndSetOriginWithDelay
| 6
| 6
Line 1,252: Line 1,253:


|-
|-
|BF
| BF
| JumpAndSetOriginAsync
| JumpAndSetOriginAsync
| 4
| 4
Line 1,258: Line 1,259:


|-
|-
|C0
| C0
| SetOriginAndEraseDelay
| SetOriginAndEraseDelay
| 4
| 4
Line 1,264: Line 1,265:


|-
|-
|C1
| C1
| Delay
| Delay
| 3
| 3
Line 1,270: Line 1,271:


|-
|-
|C2
| C2
| JumpIfMapCollisionAbove
| JumpIfMapCollisionAbove
| 3
| 1
|
|


|-
|-
|C3
| C3
| JumpIfMapCollisionBelow
| JumpIfMapCollisionBelow
| 3
| 1
|
|


|-
|-
|C4
| C4
| JumpIfMapCollisionLeft
| JumpIfMapCollisionLeft
| 3
| 1
|
|


|-
|-
|C5
| C5
| JumpIfMapCollisionRight
| JumpIfMapCollisionRight
| 3
| 1
|
|


|-
|-
|C6
| C6
| GetCurrentBlockCollision
| GetCurrentBlockCollision
| 1
| 1
Line 1,300: Line 1,301:


|-
|-
|C7
| C7
| CheckMapCollisionAbove
| CheckMapCollisionAbove
| 3 or 9
| 3 or 9
Line 1,306: Line 1,307:


|-
|-
|C8
| C8
| CheckMapCollisionBelow
| CheckMapCollisionBelow
| 3 or 9
| 3 or 9
Line 1,312: Line 1,313:


|-
|-
|C9
| C9
| CheckMapCollisionLeft
| CheckMapCollisionLeft
| 3 or 9
| 3 or 9
Line 1,318: Line 1,319:


|-
|-
|CA
| CA
| CheckMapCollisionRight
| CheckMapCollisionRight
| 3 or 9
| 3 or 9
Line 1,324: Line 1,325:


|-
|-
|CB
| CB
|
|
| 5
| 5
Line 1,330: Line 1,331:


|-
|-
|CC
| CC
|
|
| 6
| 6
Line 1,336: Line 1,337:


|-
|-
|CD
| CD
|
|
|
| 1
|
|


|-
|-
|CE
| CE
|
|
|
| 7 or 10
|
|


|-
|-
|CF
| CF
|
|
|
| 1
|
|


|-
|-
|D0
| D0
|
| 17
|
|
|
|


|-
|-
|D1
| D1
|
| 1
|
|
|
|


|-
|-
|D2
| D2
| TriggerOnSight( u8 SideRange, u8 FrontRange, u8 Direction, u16 JumpAddress )
| TriggerOnSight( u8 SideRange, u8 FrontRange, u8 Direction, u16 JumpAddress )
| 6
| 6
Line 1,372: Line 1,373:


|-
|-
|D3
| D3
| RangeCheckHorizontal
| RangeCheckHorizontal
| 9
| 9
Line 1,378: Line 1,379:


|-
|-
|D4
| D4
| RangeCheckVertical
| RangeCheckVertical
| 9
| 9
Line 1,384: Line 1,385:


|-
|-
|D5
| D5
|
|
|
| 3
|
|


|-
|-
|D6
| D6
| ProximityTrigger
| ProximityTrigger
| 4
| 4
Line 1,396: Line 1,397:


|-
|-
|D7
| D7
| DetermineNearestAxis
| DetermineNearestAxis
| 5
| 5
Line 1,402: Line 1,403:


|-
|-
|D8
| D8
|
|
| 4
| 4
Line 1,408: Line 1,409:


|-
|-
|D9
| D9
| LoadFightingStats
| LoadFightingStats
| 2
| 2
Line 1,416: Line 1,417:


|-
|-
|DA
| DA
| HandlerRegisterOnWall( u16 HandlerAddress )
| HandlerRegisterOnWall( u16 HandlerAddress )
| 3
| 3
Line 1,422: Line 1,423:


|-
|-
|DB
| DB
|
|
|
|
Line 1,428: Line 1,429:


|-
|-
|DC
| DC
| ScreenScroll( u16 Type, u8 ScrollX, u8 ScrollY, u8 Speed )
| ScreenScroll( u16 Type, u8 ScrollX, u8 ScrollY, u8 Speed )
| 6
| 6
Line 1,434: Line 1,435:


|-
|-
|DD
| DD
|
| ScreenSpawnEntity( u8 Type, u8 PosMode, u16 DestX, u16 DestY, u16 StartX, u16 StartY, u8 AnimationIndex )
| 8
| 8
|
|


|-
|-
|DE
| DE
| ScreenReturnScroll( u8 Speed )
| ScreenReturnScroll( u8 Speed )
| 2
| 2
Line 1,446: Line 1,447:


|-
|-
|DF
| DF
| WaitOn097C_0810
| WaitOn097C_0810
| 4
| 4
Line 1,452: Line 1,453:


|-
|-
|E0
| E0
|
|
|
|
Line 1,458: Line 1,459:


|-
|-
|E1
| E1
|
|
|
|
Line 1,464: Line 1,465:


|-
|-
|E2
| E2
|
|
|
|
Line 1,470: Line 1,471:


|-
|-
|E3
| E3
|
|
|
|
Line 1,476: Line 1,477:


|-
|-
|E4
| E4
|
| SpriteAnimationAdvance
| 1
| 1
|
|


|-
|-
|E5
| E5
|
|
|
|
Line 1,488: Line 1,489:


|-
|-
|E6
| E6
| ObjectCloneDepInsertAfterSP
| ObjectCloneDepInsertAfterSP
| 4
| 4
Line 1,494: Line 1,495:


|-
|-
|E7
| E7
| ObjectCloneDepInsertAfterSFP
| ObjectCloneDepInsertAfterSFP
| 6
| 6
Line 1,500: Line 1,501:


|-
|-
|E8
| E8
| ObjectCloneDepInsertAfterSRFP
| ObjectCloneDepInsertAfterSRFP
| 10
| 10
Line 1,506: Line 1,507:


|-
|-
|E9
| E9
| ObjectCloneDepInsertAfterSAFP
| ObjectCloneDepInsertAfterSAFP
| 10
| 10
Line 1,512: Line 1,513:


|-
|-
|EA
| EA
| ObjectCloneDepInsertBeforeSP
| ObjectCloneDepInsertBeforeSP
| 4
| 5
| Like 9A, but additionally makes new object depend on the old one.
| Like 9A, but additionally makes new object depend on the old one.


|-
|-
|EB
| EB
| DeleteAllDependingObjects
| DeleteAllDependingObjects
| 1
| 1
Line 1,524: Line 1,525:


|-
|-
|EC
| EC
|
| PaletteCrossfade
|
| 9
|
|  


|-
|-
|ED
| ED
| ObjectMoveRelative( u16 AnimationID, s16 X, s16 Y)
| ObjectMoveRelative( u16 AnimationID, s16 X, s16 Y)
| 6
| 6
Line 1,536: Line 1,537:


|-
|-
|EE
| EE
| ObjectMoveWaitRelative( u8 )
| ObjectMoveWaitRelative( u8 )
| 2
| 2
Line 1,542: Line 1,543:


|-
|-
|EF
| EF
|
|
|
|

Latest revision as of 16:37, 13 September 2026

Scripts are parsed bytewise.

A note about event flags

Event flags are calculated from an u16 value like this:

u16 EventFlag;

Flag  = (EventFlag & 0xFFF) >> 3;
Value = 1 << (EventFlag & 7);
IsSet = EventFlag & 0x8000

Commands

Opcode Function Length Comments
00 Call 4 This command has no stack for return addresses. Nested calls simply overwrite any previous return address, so return is only possible to the most recent call site.

If a simple jump is desired, use command 06 for an async jump, or ASM BRA or JMP for an instantaneous jump.

01 ReturnFrom00 1 If not inside 00-Call, this command is ignored.
02 LoopSetup( u16 Count ) 3
03 LoopDoAsync() 1
04 LoopDo() 1
05 WaitOnEventFlag( u16 Flag ) 3
06 JumpAndSetOrigin 4
07 EventFlagModify 3
08 EventFlagCheckJump 5
09 EventFlagCheckMultiple 3+2*x
0A CheckMapID 5
0B CheckDeathwarpMapID 5
0C TriggerOnAreaAbsolute 8
0D TriggerOnAreaRelative 8
0E TriggerOnAreaAbsolutePixel 12
0F TriggerOnBlockAbsolute 6
10 TriggerOnBlockRelative 6
11 TriggerObjectOnAreaAbsolute 8 First parameter is object index, which is multiplied by 40 and added to 1000 to get the object handle, for which the trigger is checked.

Remaining parameters are same as command 0C.

12 TriggerObjectOnAreaRelative 8 Broken command.

Supposed to be 0D-counterpart of 11: it should compare the position of the object that is given as first parameter to the position of the object that executes the command, but it uses for both purposes only the object that is given as parameter, which makes it useless.

13 SpriteSetPosition 4
14 PlayerPort 9
15 PlayerPortByEnemy 1 Used by Guardner to port Ark out of towers. Uses byte #15 of the extended sprite definition, see Enemy Induced Warps.
16 SetBonepinWarp( u16, u8, u16, u16 ) 8 The bonepin warp location is stored in memory at address 7E0608 (8 bytes, right after the deathwarp location)
17 SeagullTransport( u8 to, u16 src_x, u16 src_y ) 6 Includes automatic port to map 5, flight scene and port to the destination map, see Seagull Transport.
18 RideShip( u8 route, u8 direction, u16 src_x, u16 src_y ) 7 Includes automatic port to map 2, ship scene and port to destination map, see Automatic Ship Routes
19 RespawnBonePinLocationSet( u16 MapID, u8 Direction, u16 X, u16 Y, u16 MapID, u8 Direction, u16 X, u16 Y ) 15 Sets the Death- and Bonepin warp location (7E0600 and 7E0608 respectively).
1A DialogSwitchChoice( u8 layout, u16 choices_ptr ) 4 choices_ptr refers to a table with jump addresses. The text for the choices needs to be created beforehand by a normal text command.

The choices_ptr can also not be directly after this command but after the whole script.

Known layouts are:

Layout Choices
00 2
01
02
03
04
08 3
09 4
0A 2
0B
1B PrintRelative( u16 Address ) 3
1C PrintAbsolute( u24 Address ) 4
1D u16 3
1E u8, u16 4 calls 0x1D
1F MessageWait 1 This waits for a button input for the message to continue/close
20 MessageAuto 1 This automatically continues/closes the message
21 TriggerSet( u16 addr ) 3 Trigger is executed when Ark talks to an object. When addr is 0 it is deleted
22 SwitchRange( u8 first, u8 last, ... ) 3 + 2*(last+1-first) Choice is determined by object data byte $26. One 2-byte jump address for each possible choice is directly included in the command.
23 TriggerNearPlayer( u16 addr ) 3 Turns NPC towards player and jumps to addr.
24 TriggerNearPlayer( u8, u16 addr ) 4 Turns NPC towards player and jumps to addr.
25 Random 1 Calls the randomiser function and returns a value
26 RandomMoveInArea( u8 left, u8 top, u8 right, u8 bottom ) 5
27 RandomMoveInArea( u8 animation, u8 ???, u8 left, u8 top, u8 right, u8 bottom ) 7 not used by the game
28 2 Set 0x7F2018 to value
29 PadButtonsEnable( u16 buttons ) 3
2A PadButtonsDisable( u16 buttons ) 3
2B PadCheckAllButtonsPressed2 5
2C PadCheckNoButtonPressed2 5
2D PadCheckButtonPressed 8
2E PadCheckAnyButtonPressed 5
2F PadCheckNoButtonPressed 5
30 MusicPlay 2
31 MusicPlayFadeOver 2
32 MusicPlay2 2 This saves the last track played via this command.

When calling it with the value set to 0xFF it plays the last played track again.

33 WaitMusicLoaded 1
34 APUWriteByte_F5( u8 Byte ) 2 Writes one byte to 0x2140 (APUI00) followed by a write with 0xF5
35 APUWriteByte_F6( u8 Byte ) 2 Writes one byte to 0x2140 (APUI00) followed by a write with 0xF6
36 SoundEffectPlayOnce 2
37 SoundEffectPlay 2
38 SoundEffect? 3
39 SpriteGotoPositionX 4 This command expects to be followed by "0x8E, 0x3B, asm(BRA -11)" because once it reaches the position it is hardcoded to jump 6 bytes ahead.
3A SpriteGotoPositionY 4 This command expects to be followed by "0x8E, 0x3B, asm(BRA -11)" because once it reaches the position it is hardcoded to jump 6 bytes ahead.
3B ObjectSetSolid 1
3C ObjectSetHollow 1
3D BlockSetSolid( u8 rel_or_abs, u8 x, u8 y ) 4 if rel_or_abs is 00, the coordinate is relative to the current object, for 01 it is absolute.
3E BlockSetHollow( u8 rel_or_abs, u8 x, u8 y ) 4 if rel_or_abs is 00, the coordinate is relative to the current object, for 01 it is absolute.
3F BlockSetCollision( u8 value, u8 x, u8 y ) 4 if (value & 80) is clear, the coordinate is relative to the current object, else it is absolute.
40 DungeonBlockSetHollow( u8 rel_or_abs, u8 x, u8 y ) 4 if rel_or_abs is 00, the coordinate is relative to the current object, for 01 it is absolute.
41 BlockCheck( u16 block, u16 addr ) 5 Compares 9 least significant bits of block with the block actually under object. If they match, jump to addr.
42 BlockCheckRelative( u8 dx, u8 dy, u16 block, u16 addr ) 7 Compares 9 least significant bits of block with the block relative to object. If they match, jump to addr.
43 BlockSetAbsolute( u8 x, u8 y, u16 block ) 5
44 BlockSetRelative( u8 dx, u8 dy, u16 block ) 5
45 BlockSet 1 Changes the block under object. block = object[7F201A]
46 MapCopyRect( u16 SizeX (Blocks), u16 SizeY (Pixels), u16 SrcX(Blocks), u16 SrcY(Blocks), u16 DstX(Blocks), u16 DstY(Blocks), u8 Unknown ) 8
47 ObjectDeleteIfEventFlags 1+2*x
48 ObjectDeleteIfEventFlag( u16 flag ) 3
49 ObjectDeleteIfMapID( u16 map ) 3
4A MapFlagCheck( u8 id, u16 minimum, u16 addr ) 6
4B MapFlagUpdate(u8 id, u16 amount ) 2 or 4
4C TownGrowthCheck( u8 id, u16 minimum, u16 addr ) 6 Jump to addr if growth rate id is at least the specified minimum.
4D TownGrowthUpdate( u8 id, u16 amount ) 2 or 4 (id & C0) specifies the update mode:
mode description
00 overwrite
40 subtract
80 add
4E u16, u16 5
4F u16, u16 5
50 u16, u8 4
51
52
53
54 ItemAdd( u8 item, u16 addr ) 4 Jump to addr if the item can't be carried because the slot or inventory is full.
55 ItemDel( u8 item ) 2
56 ItemCheckEmptySlot( u8 id, u16 addr ) 4 Jump to addr if the item can't be carried because the slot or inventory is full.
57 ItemCheckOwned( u8 id, u16 addr ) 4 Jump to addr if Ark has the item in his inventory.
58 ItemCheckEquipped( u8 id, u16 addr ) 2 or 4 Jump to addr if Ark has the item equipped.
59 ObjectCheckOffScreen() 2
5A PaletteLoad( u8 src_bank, u16 src_addr, u8 dest_color_index, u8 count ) 6
5B DecompressToMemory( u24 src, u16 dest ) 6
5C MoneyAdd( u24 amount ) 4 amount is BCD
5D MoneyTake( u24 amount, u16 addr ) 6 amount is BCD. Jump to addr if Ark has not enough money.
5E MoneyCheck( u24 amount, u8 mode, u16 addr ) 7 amount is BCD. The result of the comparison is interpreted according to mode:
mode & C0 action
00 jump if money == amount
40 jump if money < amount
80 jump if money > amount
C0 jump if money != amount
5F SwitchOnDirection( u16 DownJump, u16 UpJump, u16 LeftJump, u16 RightJump ) 9
60 ItemAddPlayMusic( u8 ItemID, u16 Delay, u8 MusicID ) 5
61 CheckDirectionEx( u8 direction, u8 a, u8 b, u8 c, u16 jump ) 7 Jump if current directon matches. Diagonal movement is acknowledged if it's primarily in the specified direction. direction can be 0-3:
direction
00 down
01 up
02 left
03 right

The values a, b and c correspond to skew directions and are used with object[7F2014] ???

62 SetInvulnerable( u8 frames ) 2
63 3
64 3
65 HandlerRegisterOnDamage( u16 HandlerAddress, u24 ReturnAddress ) 6
66 ReturnFromDamageHandler 1
67 LightFormSet 2 Valid values 0-8
68 RenderSpriteLoop 2
69 RenderSprite 1
6A u8, u8 3
6B PrintRelative2 3
6C PrintAbsolute2 4
6D UploadTileData 1
6E SceneUpdate 1
6F ScreenShake 1
70 Follow( u16 ptrObject, u16 ptrAnimations ) 5 Animations is a table of 3x4 animation id's, that specify what animation to use for every possible (diagonal) movement.
71 Check???( u16, u16, u16 jump ) 7 Jumps if the check is successful
72 u16, u8 4
73 5 Wait for unknown condition and then jump
74 SetMagicHandler( u8 magic_id, u16 handler ) 4 Registers a handler that is executed when the specific magic is used. If handler & 0x8000 is set, it refers to a script address, else it is a flag that will be set.
object[7F2024] = magic_id
object[7F2022] = handler
75 SetConditionalTalkHandler( u16 flag, u16 handler ) 5 custom handler must be >= 0x8000, values below are predefined handlers, but only 0000 is currently used and prints a line of dots.
object[7F2028] = flag
object[7F2026] = handler
76 SystemRegisterWrite 3
77
78 BackgroundUpdateFade 2
79 Broken command, stubbed in non Japan version
7A Broken command, stubbed in non Japan version
7B Broken command, stubbed in non Japan version
7C Broken command, stubbed in non Japan version
7D Broken command, stubbed in non Japan version
7E Broken command, stubbed in non Japan version
7F Broken command, stubbed in non Japan version
80 AnimationSetSpriteFlagsAndResetElevationLevel( u8 SpriteFlags ) 2
81 AnimationSetB( u8 SpriteFlags ) 2
82 AnimationSetC( u8 SpriteFlags, u8 ) 3
83 SpriteSetFlagsAndElevationLevel( u8 SpriteFlags, u8 EleveationLevel ) 3
84 4
85 AnimationSetD 3 calls 80
86 AnimationSetE( u8, u8 ) 3 calls 81
87 ObjectMove( u8, u8, u8 ) 4 calls 82
88 4 calls 83
89 5 calls 84
8A 2
8B 3 calls 8A
8C 2
8D 3 calls 8C
8E AnimationWait 1
8F AnimationWait2 1
90 1 wait for loop
91 1
92 1 wait for loop
93 1 PALCopy
94 1 wait for loop
95 u16, u8, u16, u16, u16, u8 9
96 u16, u16, u16, u16, u16 11
97 u16, u8, u16, ? 6
98 u16, u8, ? 11 Object related
99 ObjectCloneInsertAtBeginSF 6 Insert at begin of list, set script pointer and flags
9A ObjectCloneInsertBeforeSP 4 Insert before current object, set script pointer and parent (implied)
9B ObjectCloneInsertBeforeSFP 6 Insert before current object, set script pointer, flags and parent (implied)
9C ObjectCloneInsertBeforeSRP 8 Insert before current object, set script pointer, relative placement and parent (implied)
9D ObjectCloneInsertBeforeSRFP 11 Insert before current object, set script pointer, relative placement, flags and parent (implied)
9E ObjectCloneInsertBeforeSAP 8 Insert before current object, set script pointer, absolute placement and parent (implied)
9F ObjectCloneInsertBeforeSAFP 9 Insert before current object, set script pointer, absolute placement, flags and parent (implied)
A0 ObjectCloneInsertAtEndSFP 6 Insert at end of list, set script pointer, flags and parent (implied)
A1 ObjectCloneInsertAfterSP 4 Insert after current object, set script pointer and parent (implied)
A2 ObjectCloneInsertAfterSFP 6 Insert after current object, set script pointer, flags and parent (implied)
A3 ObjectCloneInsertAfterSRP 8 Insert after current object, set script pointer, relative placement and parent (implied)
A4 ObjectCloneInsertAfterSRFP 10 Insert after current object, set script pointer, relative placement, flags and parent (implied)

Same handler as 0xE8

A5 ObjectCloneInsertAfterSAP 8 Insert after current object, set script pointer, absolute placement and parent (implied)
A6 ObjectCloneInsertAfterSAFP 10 Insert after current object, set script pointer, absolute placement, flags and parent (implied)
A7 ObjectDelete 1
A8 1
A9
AA 4
AB 6
AC 5
AD
AE 1
AF 2
B0 2 or 5
B1 ObjectMoveHorizontal 3
B2 ObjectMoveVertical 3
B3 ObjectMove 5
B4 SpriteSetUpsideDown 1
B5 SpriteSetDownsideUp 1
B6 SpriteSetFacingRight 1
B7 SpriteSetFacingLeft 1
B8 SpriteFlipVertical 1
B9 SpriteFlipHorizontal 1
BA SpriteSetPriority 2 Allowed values: 0..3 << 4
BB SpriteSetPalette 2 Allowed values: 0..7 << 1
BC MarkOrigin 1
BD MarkOriginAsync 1
BE JumpAndSetOriginWithDelay 6
BF JumpAndSetOriginAsync 4
C0 SetOriginAndEraseDelay 4
C1 Delay 3
C2 JumpIfMapCollisionAbove 1
C3 JumpIfMapCollisionBelow 1
C4 JumpIfMapCollisionLeft 1
C5 JumpIfMapCollisionRight 1
C6 GetCurrentBlockCollision 1 ??
C7 CheckMapCollisionAbove 3 or 9
C8 CheckMapCollisionBelow 3 or 9
C9 CheckMapCollisionLeft 3 or 9
CA CheckMapCollisionRight 3 or 9
CB 5 Change other object script ??
CC 6
CD 1
CE 7 or 10
CF 1
D0 17
D1 1
D2 TriggerOnSight( u8 SideRange, u8 FrontRange, u8 Direction, u16 JumpAddress ) 6
D3 RangeCheckHorizontal 9
D4 RangeCheckVertical 9
D5 3
D6 ProximityTrigger 4
D7 DetermineNearestAxis 5
D8 4
D9 LoadFightingStats 2 Load pointer to index in enemy table

80: Don't load max HP

DA HandlerRegisterOnWall( u16 HandlerAddress ) 3 Set Wall Hit Handler
DB
DC ScreenScroll( u16 Type, u8 ScrollX, u8 ScrollY, u8 Speed ) 6
DD ScreenSpawnEntity( u8 Type, u8 PosMode, u16 DestX, u16 DestY, u16 StartX, u16 StartY, u8 AnimationIndex ) 8
DE ScreenReturnScroll( u8 Speed ) 2
DF WaitOn097C_0810 4 Wait For ([097C] & 0810) == 0, Then Jump
E0
E1
E2
E3
E4 SpriteAnimationAdvance 1
E5
E6 ObjectCloneDepInsertAfterSP 4 Like A1, but additionally makes new object depend on the old one, which mainly matters for mass deletion with command EB.
E7 ObjectCloneDepInsertAfterSFP 6 Like A2, but additionally makes new object depend on the old one.
E8 ObjectCloneDepInsertAfterSRFP 10 Like A4, but additionally makes new object depend on the old one.
E9 ObjectCloneDepInsertAfterSAFP 10 Like A6, but additionally makes new object depend on the old one.
EA ObjectCloneDepInsertBeforeSP 5 Like 9A, but additionally makes new object depend on the old one.
EB DeleteAllDependingObjects 1 Delete all depending objects, but only if 'this' has no parent
EC PaletteCrossfade 9
ED ObjectMoveRelative( u16 AnimationID, s16 X, s16 Y) 6
EE ObjectMoveWaitRelative( u8 ) 2
EF