sm64pc/include/level_commands.inc

416 lines
6.6 KiB
PHP
Raw Normal View History

2019-08-25 04:46:40 +00:00
.include "model_ids.inc"
.include "seq_ids.inc"
.set OP_AND, 0
.set OP_NAND, 1
.set OP_EQ, 2
.set OP_NEQ, 3
.set OP_LT, 4
.set OP_LEQ, 5
.set OP_GT, 6
.set OP_GEQ, 7
.set OP_SET, 0
.set OP_GET, 1
.set VAR_CURR_SAVE_FILE_NUM, 0
.set VAR_CURR_COURSE_NUM, 1
.set VAR_CURR_ACT_NUM, 2
.set VAR_CURR_LEVEL_NUM, 3
.set VAR_CURR_AREA_INDEX, 4
.macro execute seg, script, scriptEnd, entry
2019-10-05 19:08:05 +00:00
.byte 0x00, 0x04 + 3 * PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword \seg
.word \script
.word \scriptEnd
.word \entry
.endm
.macro exit_and_execute seg, script, scriptEnd, entry
2019-10-05 19:08:05 +00:00
.byte 0x01, 0x04 + 3 * PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword \seg
.word \script
.word \scriptEnd
.word \entry
.endm
.macro exit
.byte 0x02, 0x04
.hword 0
.endm
.macro sleep frames
.byte 0x03, 0x04
.hword \frames
.endm
.macro sleep_before_exit frames
.byte 0x04, 0x04
.hword \frames
.endm
.macro jump target
2019-10-05 19:08:05 +00:00
.byte 0x05, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword 0
.word \target
.endm
.macro jump_link target
2019-10-05 19:08:05 +00:00
.byte 0x06, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword 0
.word \target
.endm
.macro return
.byte 0x07, 0x04
.hword 0
.endm
.macro jump_link_push_arg arg
.byte 0x08, 0x04
.hword \arg
.endm
.macro jump_n_times
.byte 0x09, 0x04
.hword 0
.endm
.macro loop_begin
.byte 0x0A, 0x04
.hword 0
.endm
.macro loop_until op, arg
2019-10-05 19:08:05 +00:00
.byte 0x0B, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.byte \op
.byte 0
.word \arg
.endm
.macro jump_if op, arg, target
2019-10-05 19:08:05 +00:00
.byte 0x0C, 0x08 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.byte \op
.byte 0
2019-10-05 19:08:05 +00:00
.word32 \arg
2019-08-25 04:46:40 +00:00
.word \target
.endm
.macro jump_link_if op, arg, target
2019-10-05 19:08:05 +00:00
.byte 0x0D, 0x08 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.byte \op
.byte 0
2019-10-05 19:08:05 +00:00
.word32 \arg
2019-08-25 04:46:40 +00:00
.word \target
.endm
.macro skip_if op, arg
.byte 0x0E, 0x08
.byte \op
.byte 0
2019-10-05 19:08:05 +00:00
.word32 \arg
2019-08-25 04:46:40 +00:00
.endm
.macro skip
.byte 0x0F, 0x04
.hword 0
.endm
.macro skip_nop
.byte 0x10, 0x04
.hword 0
.endm
.macro call arg, func
2019-10-05 19:08:05 +00:00
.byte 0x11, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword \arg
.word \func
.endm
.macro call_loop arg, func
2019-10-05 19:08:05 +00:00
.byte 0x12, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword \arg
.word \func
.endm
.macro set_reg value
.byte 0x13, 0x04
.hword \value
.endm
.macro push_pool
.byte 0x14, 0x04
.hword 0
.endm
.macro pop_pool
.byte 0x15, 0x04
.hword 0
.endm
.macro fixed_load loadAddr, romStart, romEnd
2019-10-05 19:08:05 +00:00
.byte 0x16, 0x04 + 3 * PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword 0
.word \loadAddr
.word \romStart
.word \romEnd
.endm
.macro load_raw seg, romStart, romEnd
2019-10-05 19:08:05 +00:00
.byte 0x17, 0x04 + 2 * PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword \seg
.word \romStart
.word \romEnd
.endm
.macro load_mio0 seg, romStart, romEnd
2019-10-05 19:08:05 +00:00
.byte 0x18, 0x04 + 2 * PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword \seg
.word \romStart
.word \romEnd
.endm
.macro load_mario_head sethead
.byte 0x19, 0x04
.hword \sethead
.endm
.macro load_mio0_texture seg, romStart, romEnd
2019-10-05 19:08:05 +00:00
.byte 0x1A, 0x04 + 2 * PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword \seg
.word \romStart
.word \romEnd
.endm
.macro init_level
.byte 0x1B, 0x04
.hword 0
.endm
.macro clear_level
.byte 0x1C, 0x04
.hword 0
.endm
.macro alloc_level_pool
.byte 0x1D, 0x04
.hword 0
.endm
.macro free_level_pool
.byte 0x1E, 0x04
.hword 0
.endm
.macro area index, geo
2019-10-05 19:08:05 +00:00
.byte 0x1F, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.byte \index
.byte 0
.word \geo
.endm
.macro end_area
.byte 0x20, 0x04
.hword 0
.endm
.macro load_model_from_dl model, dl, layer
2019-10-05 19:08:05 +00:00
.byte 0x21, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword (\layer << 12) | \model
.word \dl
.endm
.macro load_model_from_geo model, geo
2019-10-05 19:08:05 +00:00
.byte 0x22, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword \model
.word \geo
.endm
.macro cmd23 model, unk4, unk8
2019-10-05 19:08:05 +00:00
.byte 0x23, 0x08 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword \model
.word \unk4
2019-10-05 19:08:05 +00:00
.float \unk8
2019-08-25 04:46:40 +00:00
.endm
.macro object model, posX, posY, posZ, angleX, angleY, angleZ, behParam, beh, acts=0x1F
2019-10-05 19:08:05 +00:00
.byte 0x24, 0x14 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.byte \acts
.byte \model
.hword \posX
.hword \posY
.hword \posZ
.hword \angleX
.hword \angleY
.hword \angleZ
2019-10-05 19:08:05 +00:00
.word32 \behParam
2019-08-25 04:46:40 +00:00
.word \beh
.endm
.macro mario unk3, behArg, beh
2019-10-05 19:08:05 +00:00
.byte 0x25, 0x08 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.byte 0
.byte \unk3
2019-10-05 19:08:05 +00:00
.word32 \behArg
2019-08-25 04:46:40 +00:00
.word \beh
.endm
.macro warp_node id, destLevel, destArea, destNode, unk6
.byte 0x26, 0x08
.byte \id, \destLevel, \destArea, \destNode
.hword \unk6
.endm
.macro painting_warp_node id, destLevel, destArea, destNode, unk6
.byte 0x27, 0x08
.byte \id, \destLevel, \destArea, \destNode
.hword \unk6
.endm
.macro instant_warp index, destArea, displaceX, displaceY, displaceZ
.byte 0x28, 0x0C
.byte \index
.byte \destArea
.hword \displaceX
.hword \displaceY
.hword \displaceZ
.hword 0
.endm
.macro load_area area
.byte 0x29, 0x04
.byte \area
.byte 0
.endm
.macro cmd2A unk2
.byte 0x2A, 0x04
.byte \unk2
.byte 0
.endm
.macro mario_pos area, yaw, posX, posY, posZ
.byte 0x2B, 0x0C
.byte \area
.byte 0
.hword \yaw
.hword \posX
.hword \posY
.hword \posZ
.endm
.macro cmd2C
.byte 0x2C, 0x04
.hword 0
.endm
.macro cmd2D
.byte 0x2D, 0x04
.hword 0
.endm
.macro terrain terrainData
2019-10-05 19:08:05 +00:00
.byte 0x2E, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword 0
.word \terrainData
.endm
.macro rooms surfaceRooms
2019-10-05 19:08:05 +00:00
.byte 0x2F, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword 0
.word \surfaceRooms
.endm
.macro show_dialog unk2, unk3
.byte 0x30, 0x04
.byte \unk2
.byte \unk3
.endm
.macro terrain_type terrainType
.byte 0x31, 0x04
.hword \terrainType
.endm
.macro nop
.byte 0x32, 0x04
.hword 0
.endm
.macro transition unk2, unk3, colorR, colorG, colorB
.byte 0x33, 0x08
.byte \unk2
.byte \unk3
.byte \colorR
.byte \colorG
.byte \colorB
.byte 0
.endm
.macro blackout active
.byte 0x34, 0x04
.byte \active
.byte 0
.endm
.macro gamma enabled
.byte 0x35, 0x04
.byte \enabled
.byte 0
.endm
.macro set_background_music unk2, seq
.byte 0x36, 0x08
.hword \unk2
.hword \seq
.hword 0
.endm
.macro set_menu_music seq
.byte 0x37, 0x04
.hword \seq
.endm
.macro cmd38 unk2
.byte 0x38, 0x04
.hword \unk2
.endm
.macro macro_objects objList
2019-10-05 19:08:05 +00:00
.byte 0x39, 0x04 + PTR_WIDTH
2019-08-25 04:46:40 +00:00
.hword 0
.word \objList
.endm
.macro cmd3A unk2, unk4, unk6, unk8, unk10
.byte 0x3A, 0x0C
.hword \unk2
.hword \unk4
.hword \unk6
.hword \unk8
.hword \unk10
.endm
.macro whirlpool unk2, unk3, posX, posY, posZ, strength
.byte 0x3B, 0x0C
.byte \unk2
.byte \unk3
.hword \posX
.hword \posY
.hword \posZ
.hword \strength
.endm
.macro get_or_set op, var
.byte 0x3C, 0x04
.byte \op
.byte \var
.endm
/* Head Defines */
.set REGULAR_FACE, 0x0002
.set DIZZY_FACE, 0x0003