|
|
(30 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
| This page is a work-in-progress document listing VM opcodes of the [[kyra|Kyrandia]] games. Unless otherwise noted, these opcodes are based on Kyrandia 1. Cyx created the list of Cmd functions, clem and Lordhoto will try to fill in parameters and usage notes. If you have any additions, contact the ScummVM team on IRC. | | This page is a reference of unused opcodes in Kyrandia 1. |
|
| |
|
| Hint: To disable an opcode/command pair in the compiled scripts, overwrite it with '''4C 00''' (add sp,00).
| | ==Unimplemented opcodes== |
| | | {| border="1" width="100%" |
| ===Opcodes===
| | |- |
| | | !|Opcode # |
| There are more complete disassemblers around, will add their info ASAP.
| | !|Name |
| | | !|Place of use |
| <code>
| | |- |
| 44 = push
| | |07 |
| 45 = ? compare [sp], [xx] ?
| | |o1_runNPCScript |
| 49 = ? copy [xx], [sp] ?
| | |not used |
| 4C = add sp,xx ; what would be dec sp,xx? maybe 4B or 4E?
| | |- |
| 4E = execute command (see below)
| | |3E |
| </code>
| | |o1_loadSoundFile |
| | | |not used |
| ===Commands===
| | |- |
| | | |4B |
| There's still a little confusion about the numbering, so don't take anything below for granted.
| | |o1_specificItemInInventory |
| | | |not used |
| <code>
| | |- |
| | | |4D |
| 00? Cmd_Magic_In_Mouse_Item
| | |o1_mobileCharacterInScene |
| 01 Cmd_Character_Says 3 args (unk, unk, stringID) - also see 34
| | |not used |
| 02? Cmd_Pause_Ticks
| | |- |
| 03? Cmd_Draw_Scene_Anim_Shape
| | |4E |
| 04? Cmd_Query_Game_Flag
| | |o1_hideMobileCharacter |
| 05? Cmd_Set_Game_Flag
| | |not used? (many false positives, but since unhide isn't implemented I don't think that exists) |
| 06? Cmd_Reset_Game_Flag
| | |- |
| 07? Cmd_Run_NPC_Script
| | |4F |
| 08? Cmd_Set_Special_Exit_List
| | |o1_unhideMobileCharacter |
| 09? Cmd_Block_In_Walkable_Region
| | |not used |
| 0A? Cmd_Block_Out_Walkable_Region
| | |- |
| 0B Cmd_Walk_Player_To_Point 4 args (unk, x, x, y) - x may be be greater than 0xFF, y must not, so only 1 byte for that
| | |65 |
| 0C? Cmd_Drop_Item_In_Scene
| | |o1_pageFlip |
| 0D Cmd_Draw_Anim_Shape_Into_Scene 4 args (remove item from screen?) (removes note from desk)
| | |not used |
| 0E Cmd_Create_Mouse_Item 1 arg (itemID) - pick up item; ie mousecursor=item id
| | |- |
| 0F? Cmd_Save_Page_To_Disk
| | |69 |
|
| | |o1_addItemToInventory |
| 10? Cmd_Load_Page_From_Disk
| | |not used |
| 11? Cmd_Scene_Anim_On
| | |- |
| 12? Cmd_Scene_Anim_Off
| | |6A |
| 13? Cmd_Elapsed_Seconds
| | |o1_intPrint |
| 14? Cmd_Mouse_Is_Pointer
| | |not used |
| 15? Cmd_Destroy_Mouse_Item
| | |- |
| 16? Cmd_Run_Scene_Anim_Until_Done
| | |84 |
| 17? Cmd_Fade_Special_Palette
| | |o1_setPaletteRange |
| 18? Cmd_Play_AdLib_Sound
| | |not used |
| 19? Cmd_Play_AdLib_Score
| | |- |
| 1A? Cmd_Phase_In_Same_Scene
| | |92 |
| 1B? Cmd_Set_Scene_Phasing_Flag
| | |o1_setPlayingLoop |
| 1C? Cmd_Reset_Scene_Phasing_Flag
| | |2 times used (GRAVE.EMC, CAVEB.EMC - only used on failing copy protection, exit to DOS) |
| 1D? Cmd_Query_Scene_Phasing_Flag
| | |- |
| 1E? Cmd_Scene_To_Direction
| | |97 |
| 1F? Cmd_Set_Birthstone_Gem
| | |o1_resetMaskRegion |
|
| | |not used |
| 20? Cmd_Place_Item_In_Generic_Map_Scene
| | |} |
| 21? Cmd_Set_Brandon_Status_Bit
| |
| 22? Cmd_Pause_Seconds
| |
| 23? Cmd_Get_Characters_Location
| |
| 24? Cmd_Run_NPC_Subscript
| |
| 25? Cmd_Magic_Out_Mouse_Item
| |
| 26? Cmd_Internal_Anim_On
| |
| 27? Cmd_Force_Brandon_To_Normal
| |
| 28? Cmd_Poison_Death_Now
| |
| 29? Cmd_Set_Scale_Mode
| |
| | |
| note: this looks more like 2A, check numbering
| |
| 29 4 ; play WSA file? (or just load it? coords?)
| |
| | |
| 2A? Cmd_Open_WSA_File // I think this should be '29', so there's another problem here
| |
| 2B? Cmd_Close_WSA_File
| |
| 2C? Cmd_Run_WSA_From_Beginning_To_End
| |
| 2D? Cmd_Display_WSA_Frame
| |
| 2E? Cmd_Enter_New_Scene
| |
| 2F? Cmd_Set_Special_Enter_X_And_Y
| |
|
| |
| 30? Cmd_Run_WSA_Frames
| |
| 31? Cmd_Pop_Brandon_Into_Scene
| |
| 32? Cmd_Restore_All_Object_Backgrounds
| |
| 33? Cmd_Set_Custom_Palette_Range
| |
| 34 Cmd_Custom_Print_Talk_String 4 args (color, unk, unk, stringid) - see also 01
| |
| 35 Cmd_Restore_Custom_Print_Background 0 args ; restore text background?
| |
| 36 Cmd_Hide_Mouse 0 args
| |
| 37 Cmd_Show_Mouse 0 args
| |
| 38? Cmd_Get_Character_X
| |
| 39? Cmd_Get_Character_Y
| |
| 3A? Cmd_Change_Characters_Facing
| |
| 3B? Cmd_Copy_WSA_Region
| |
| 3C Cmd_Text_Print // prints last pushed string ID to top left corner? (debug only?)
| |
| 3D? Cmd_Random
| |
| 3E? Cmd_Load_Sound_File
| |
| 3F? Cmd_Display_WSA_Frame_On_HidPage
| |
|
| |
| 40? Cmd_Display_WSA_Sequential_Frames
| |
| 41? Cmd_Draw_Character_Standing
| |
| 42? Cmd_Internal_Anim_Off
| |
| 43? Cmd_Change_Characters_X_And_Y
| |
| 44? Cmd_Clear_Scene_Animator_Beacon
| |
| 45? Cmd_Query_Scene_Animator_Beacon
| |
| 46? Cmd_Refresh_Scene_Animator
| |
| 47? Cmd_Place_Item_In_Off_Scene
| |
| 48 Cmd_Wipe_Down_Mouse_Item // destroys picked up item, sets mouse cursor to normal
| |
| 49? Cmd_Place_Character_In_Other_Scene
| |
| 4A? Cmd_Get_Key
| |
| 4B? Cmd_Specific_Item_In_Inventory
| |
| 4C? Cmd_Pop_Mobile_NPC_Into_Scene
| |
| 4D? Cmd_Mobile_Character_In_Scene
| |
| 4E? Cmd_Hide_Mobile_Character
| |
| 4F? Cmd_Unhide_Mobile_Character
| |
|
| |
| 50? Cmd_Set_Characters_Location
| |
| 51? Cmd_Walk_Character_To_Point
| |
| 52? Cmd_Special_Event_Display_Brynns_Note
| |
| 53? Cmd_Special_Event_Remove_Brynns_Note
| |
| 54? Cmd_Set_Logic_Page
| |
| 55? Cmd_Fat_Print
| |
|
| |
| Cmd_Preserve_All_Object_Backgrounds // 0x57
| |
| Cmd_Update_Scene_Animations // 0x58
| |
| Cmd_Scene_Animation_Active // 0x59
| |
| Cmd_Set_Characters_Movement_Delay // 0x5A
| |
| Cmd_Get_Characters_Facing // 0x5B
| |
| Cmd_Bkgd_Scroll_Scene_And_Masks_Right // 0x5C
| |
| Cmd_Find_Brightest_Fireberry // 0x5D
| |
| Cmd_Set_Fireberry_Glow_Palette // 0x5E
| |
| Cmd_Set_Death_Handler_Flag // 0x5F
| |
|
| |
| 60 Cmd_Drink_Potion_Animation // 0x60
| |
| 61 Cmd_Make_Amulet_Appear // 0x61 // used in altar.emc?
| |
| Cmd_Draw_Item_Shape_Into_Scene // 0x62
| |
| Cmd_Set_Characters_Current_Frame // 0x63
| |
| 64 Cmd_Wait_For_Confirmation_Mouse_Click // 0x64
| |
| Cmd_Page_Flip // 0x65
| |
| Cmd_Set_Scene_File // 0x66
| |
| Cmd_What_Item_In_Marble_Vase // 0x67
| |
| Cmd_Set_Item_In_Marble_Vase // 0x68
| |
| Cmd_Add_Item_To_Inventory // 0x69
| |
| 6A Cmd_Int_Print // 0x6A // prints last pushed value to top left corner? (debug only?)
| |
| 6B Cmd_Shake_Screen // 0x6B
| |
| 6C Cmd_Create_Amulet_Jewel // 0x6C (last param pushed before: 01=yellow, 02=red, 03=pink, 04=blue)
| |
| Cmd_Set_Scene_Anim_Curr_XY // 0x6D
| |
| 6E Cmd_Poison_Brandon_And_Remaps // 0x6E
| |
| 6F Cmd_Fill_Flask_With_Water // 0x6F
| |
|
| |
| Cmd_Get_Characters_Movement_Delay // 0x70
| |
| Cmd_Get_Birthstone_Gem // 0x71
| |
| Cmd_Query_Brandon_Status_Bit // 0x72
| |
| 73 Cmd_Play_Flute_Animation // 0x73
| |
| 74 Cmd_Play_Winter_Scroll_Sequence // 0x74
| |
| Cmd_Get_Idol_Gem // 0x75
| |
| Cmd_Set_Idol_Gem // 0x76
| |
| Cmd_Total_Items_In_Scene // 0x77
| |
| Cmd_Restore_Brandons_Movement_Delay // 0x78
| |
| Cmd_Set_Mouse_Pos // 0x79
| |
| Cmd_Get_Mouse_State // 0x7A
| |
| Cmd_Set_Entrance_Mouse_Cursor_Track // 0x7B
| |
| Cmd_Item_Appears_On_Ground // 0x7C
| |
| Cmd_Set_No_Draw_Shapes_Flag // 0x7D
| |
| Cmd_Fade_Entire_Palette // 0x7E
| |
| Cmd_Item_On_Ground_Here // 0x7F
| |
|
| |
| Cmd_Query_Cauldron_State // 0x80
| |
| Cmd_Set_Cauldron_State // 0x81
| |
| Cmd_Query_Crystal_State // 0x82
| |
| Cmd_Set_Crystal_State // 0x83
| |
| Cmd_Set_Palette_Range // 0x84
| |
| 85 Cmd_Shrink_Brandon_Down // 0x85
| |
| 86 Cmd_Grow_Brandon_Up // 0x86
| |
| Cmd_Set_Brandon_Scale_X_And_Y // 0x87
| |
| Cmd_Reset_Scale_Mode // 0x88
| |
| Cmd_Get_Scale_Depth_Table_Value // 0x89
| |
| Cmd_Set_Scale_Depth_Table_Value // 0x8A
| |
| 8B Cmd_Message // 0x8B - set room name/status text (unk, stringID)
| |
| Cmd_Check_Click_On_NPC // 0x8C
| |
| Cmd_Get_Foyer_Item // 0x8D
| |
| Cmd_Set_Foyer_Item // 0x8E
| |
| Cmd_Dispel_Magic_Animation // 0x8F
| |
|
| |
| Cmd_Set_No_Item_Drop_Region // 0x90
| |
| Cmd_Walk_Malcolm_On // 0x91
| |
| 91 Cmd_Passive_Protection 0 args // 0x92
| |
| Cmd_Set_Playing_Loop // 0x93
| |
| 93 Cmd_Brandon_To_Stone_Sequence 0 args // 0x94
| |
| 94 Cmd_Brandon_Healing_Sequence // 0x95
| |
| Cmd_Protect_Command_Line // 0x96
| |
| Cmd_Pause_Music_Seconds // 0x97
| |
| Cmd_Reset_Mask_Region // 0x98
| |
| Cmd_Set_Palette_Change_Flag // 0x99
| |
| Cmd_Fill_Rect // 0x9A
| |
| Cmd_Dummy // 0x9B
| |
| </code>
| |