Skip to content

Instantly share code, notes, and snippets.

@charasyn
Last active July 23, 2021 15:25
Show Gist options
  • Select an option

  • Save charasyn/7389905cfcf359095447bd44a8d92483 to your computer and use it in GitHub Desktop.

Select an option

Save charasyn/7389905cfcf359095447bd44a8d92483 to your computer and use it in GitHub Desktop.
// floor_it_tessie.ccs
// v2 with audio changes
import movscr
// Tessie pt 1 tempo 0xecbfb3 is originally 0x13
// 2x = 0x26
// 3x = 0x39 <- Audio engine lags trying to play it faster than this
// 4x = 0x4c
ROM[0xecbfb3] = byte 0x32
// Truncate the first pattern in Tessie song
ROM[0xecc0db] = { byte 0xc9 byte 0x00 }
// Generic routine to move to a given position
define move_to_pos = 0xc3ab59
// Since we'll be in another bank, we need to have a shim
// in order to call back to the "move to place" routine
define move_to_pos_shim = 0xc33f41
ROM[0xc33f3d] = {
mov_jml(tessie_main)
// 41: move_to_pos_shim
mov_jsr(move_to_pos)
mov_rtl
}
// return to 0xc33fd0
tessie_main: {
// From here, you can set the speed (in 8.8 fixed format, ex. 0x180 is 1.5 px/frame?)
// and the "ending radius" (var 0x05, just a normal word)
// Recommended: ending radius should be speed + 1
// so if you have speed=0x0380, radius=0x0004
movasm_set_speed(0x0180)
mov_var(0x05,0x0002)
mov_var(0x06,0x0278)
mov_var(0x07,0x0DD0)
mov_jsl(move_to_pos_shim)
mov_var(0x06,0x02C8)
mov_var(0x07,0x0DC0)
mov_jsl(move_to_pos_shim)
mov_var(0x06,0x02C8)
mov_var(0x07,0x0D88)
mov_jsl(move_to_pos_shim)
ontick_nop
unlock_text_script
mov_wait(0x01)
onposition(0xA039)
movasm_set_speed(0x0100)
mov_var(0x05,0x0002)
mov_var(0x06,0x02D0)
mov_var(0x07,0x0DC8)
mov_jsl(move_to_pos_shim)
movasm_set_speed(0x0180)
mov_var(0x05,0x0003)
mov_var(0x06,0x0290)
mov_var(0x07,0x0E20)
mov_jsl(move_to_pos_shim)
movasm_set_speed(0x0200)
mov_var(0x05,0x0003)
mov_var(0x06,0x0280)
mov_var(0x07,0x0ED0)
mov_jsl(move_to_pos_shim)
mov_var(0x06,0x02D8)
mov_var(0x07,0x0FE8)
mov_jsl(move_to_pos_shim)
mov_var(0x06,0x0340)
mov_var(0x07,0x1000)
mov_jsl(move_to_pos_shim)
mov_var(0x06,0x03B8)
mov_var(0x07,0x1068)
mov_jsl(move_to_pos_shim)
movasm_set_speed(0x0180)
mov_var(0x05,0x0003)
mov_var(0x06,0x03A8)
mov_var(0x07,0x10A8)
mov_jsl(move_to_pos_shim)
movasm_set_speed(0x0100)
mov_var(0x05,0x0002)
mov_var(0x06,0x03A0)
mov_var(0x07,0x10C0)
mov_jsl(move_to_pos_shim)
mov_jml(0xc33fd0)
}
// /* original movement script: */
// script_480: /* C33F0C */
// setxpos(0x0258)
// setypos(0x0DA0)
// setzpos(0xFFC0)
// mov_jsr(unknown_C3AB26)
// mov_reg_imm(0x0004)
// movasm_update_facing
// movasm_update_sprite_graphics_1
// setzvel(0x0020)
// mov_wait(0x80)
// mov_wait(0x80)
// unlock_text_script
// mov_wait(0x80)
// mov_wait(0x80)
// zerovel
// unlock_text_script
// mov_wait(0x01)
// ontick(0xC48B3B)
// // This is where we hijack and do the JML to the expanded routine
// movasm_set_speed(0x004C)
// mov_var(0x05,0x0001)
// mov_var(0x06,0x0278)
// mov_var(0x07,0x0DD0)
// mov_jsr(move_to_pos)
// mov_var(0x06,0x02C8)
// mov_var(0x07,0x0DC0)
// mov_jsr(move_to_pos)
// mov_var(0x06,0x02C8)
// mov_var(0x07,0x0D88)
// mov_jsr(move_to_pos)
// ontick_nop
// unlock_text_script
// mov_wait(0x01)
// onposition(0xA039)
// movasm_set_speed(0x0060)
// mov_var(0x06,0x02D0)
// mov_var(0x07,0x0DC8)
// mov_jsr(move_to_pos)
// mov_var(0x06,0x0290)
// mov_var(0x07,0x0E20)
// mov_jsr(move_to_pos)
// mov_var(0x06,0x0280)
// mov_var(0x07,0x0ED0)
// mov_jsr(move_to_pos)
// mov_var(0x06,0x02D8)
// mov_var(0x07,0x0FE8)
// mov_jsr(move_to_pos)
// mov_var(0x06,0x0340)
// mov_var(0x07,0x1000)
// mov_jsr(move_to_pos)
// mov_var(0x06,0x03B8)
// mov_var(0x07,0x1068)
// mov_jsr(move_to_pos)
// mov_var(0x06,0x03A8)
// mov_var(0x07,0x10A8)
// mov_jsr(move_to_pos)
// mov_var(0x06,0x03A0)
// mov_var(0x07,0x10C0)
// mov_jsr(move_to_pos)
// onposition(0xA03A)
// asmcall(0xC03F1E)
// unlock_text_script
// mov_wait(0x01)
// movasm_getevent(0x0081)
// jne(unknown_C34014)
// ontick(0xC48B3B)
// setxvel(0x0035)
// setyvel(0x0020)
// mov_wait(0xFF)
// unlock_text_script
// mov_wait(0x01)
// movasm_set_speed(0x0010)
// mov_reg_imm(0x0003)
// mov_jsr(unknown_C3AA1E) // No idea what this one does
// setzvel(0xFFC0)
// mov_wait(0x80)
// mov_wait(0x80)
// zerovel
// mov_wait(0x3C)
// unlock_text_script
// zerovel
// halt
// unknown_C34014: /* C34014 */
// ontick(0xC48B3B)
// setxvel(0x0035)
// setyvel(0x0020)
// mov_wait(0xFF)
// mov_wait(0xFF)
// unlock_text_script
// mov_wait(0x01)
// halt
command adr24(a) "[{byte[0] a} {byte[1] a} {byte[2] a}]"
command mov_end "[00]"
command startloop(c) "[01 {byte c}]" // Start a loop with 'c' iterations
command endloop "[02]" // End a loop and go back to start of loop body if still haven't gone through all iterations
command mov_jml(addr) "[03 {adr24(addr)}]" // Analogous to ASM JML, but for movement scripts
command mov_jsl(addr) "[04 {adr24(addr)}]" // Analogous to ASM JSL, but for movement scripts
command mov_rtl "[05]" // Analogous to ASM RTL, but for movement scripts
command mov_wait(frames) "[06 {byte frames}]" // Wait 'frames' frames (think "`pause(frames)")
command task(addr) "[07 {short addr}]" // Register a background task, a movement script that runs alongside this movement script. Must be in the same bank as the current script
command ontick(addr) "[08 {adr24(addr)}]" // Register a "TICK callback", an ASM function that runs every frame for the object
command halt "[09]" // Halt movement script (infinitely loop it, but don't outright end it)
command jeq(addr) "[0A {short addr}]" // Jump to 'addr' if REG is zero (think "BEQ_a(addr)")
command jne(addr) "[0B {short addr}]" // Jump to 'addr' if REG is not zero (think "BNE_a(addr)")
command endtask "[0C]" // End background task (if this movement script is not a task, it just ends the script, I believe)
command mem16_and(addr, val) "[0D {short addr} 00 {short val}]" // *(uint16_t*)mem &= val
command mem16_or(addr, val) "[0D {short addr} 01 {short val}]" // *(uint16_t*)mem |= val
command mem16_add(addr, val) "[0D {short addr} 02 {short val}]" // *(uint16_t*)mem += val
command mem16_xor(addr, val) "[0D {short addr} 03 {short val}]" // *(uint16_t*)mem ^= val
command mov_var(var, value) "[0E {byte var} {short value}]" // Set a specific object VAR to immediate value ('var' must be in range 0..7)
command ontick_nop "[0F]" // Same as "ontick(0xC0943B)", but faster and saves 3 bytes
command multijmp(amount) "[10 {byte amount}]" // Switch on REG and JMP (think control code "[09 XX (YYYYYYYY)*XX]")
command multijsr(amount) "[11 {byte amount}]" // Switch on REG and JSR (think control code "[1F C0 XX (YYYYYYYY)*XX]")
command mov_mem8(addr, val) "[12 {short addr} {byte val}]" // Move 8-bit immediate value to memory
command endlasttask "[13]" // End last registered background task (if no background tasks are running, it just ends the movement script, I believe)
command var_and(var, val) "[14 {byte var} 00 {short val}]" // VAR &= val
command var_or(var, val) "[14 {byte var} 01 {short val}]" // VAR |= val
command var_add(var, val) "[14 {byte var} 02 {short val}]" // VAR += val
command var_xor(var, val) "[14 {byte var} 03 {short val}]" // VAR ^= val
command mov_mem16(addr, val) "[15 {short addr} {short val}]" // Move 16-bit immediate value to memory
command breakeq(addr) "[16 {short addr}]" // JEQ and decrement stack pointer by 3 (clean STARTLOOP stuff)
command breakne(addr) "[17 {short addr}]" // JNE and decrement stack pointer by 3 (clean STARTLOOP stuff)
command mem8_and(addr, val) "[18 {short addr} 00 {byte val}]" // *(uint8_t*)mem &= val
command mem8_or(addr, val) "[18 {short addr} 01 {byte val}]" // *(uint8_t*)mem |= val
command mem8_xor(addr, val) "[18 {short addr} 03 {byte val}]" // *(uint8_t*)mem ^= val
command mem8_add(addr, val) "[18 {short addr} 02 {byte val}]" // *(uint8_t*)mem += val
command mov_jmp(addr) "[19 {short addr}]" // Analogous to ASM JMP, but for movement scripts
command mov_jsr(addr) "[1A {short addr}]" // Analogous to ASM JSR, but for movement scripts
command mov_rts "[1B]" // Analogous to ASM RTS, but for movement scripts
command setsprmap(addr) "[1C {adr24(addr)}]" // Set pointer to spritemap data. This is kinda complicated, I also never used this, so I don't really know much about the "spritemap" format
command mov_reg_imm(val) "[1D {short val}]" // Move 16-bit immediate value to REG
command mov_reg_mem(addr) "[1E {short addr}]" // Move absolute memory address to REG
command mov_var_reg(var) "[1F {byte var}]" // Move REG to object VAR
command mov_reg_var(var) "[20 {byte var}]" // Move object VAR to REG
command wait_var(var) "[21 {byte var}]" // Wait (object VAR) frames
command ondraw(addr) "[22 {short addr}]" // Assign "draw object" callback function. Argument is a short ASM pointer in bank C0
command onposition(addr) "[23 {short addr}]" // Assign "calculate screen position" callback function. Argument is a short ASM pointer in bank C0
command startloop_reg "[24]" // Start a loop with REG iterations
command onmove(addr) "[25 {short addr}]" // Assign "move object" callback function. Argument is a short ASM pointer in bank C0
command setanim_var(var) "[26 {byte var}]" // Set amimation frame to object VAR
command reg_and(val) "[27 00 {short val}]" // REG &= val
command reg_or(val) "[27 01 {short val}]" // REG |= val
command reg_add(val) "[27 02 {short val}]" // REG += val
command reg_xor(val) "[27 03 {short val}]" // REG ^= val
command setxpos(val) "[28 {short val}]" // Set object X position
command setypos(val) "[29 {short val}]" // Set object Y position
command setzpos(val) "[2A {short val}]" // Set object Z position (elevation)
command addxpos(val) "[2B {short val}]" // Add 'val' to object X position (can be negative)
command addypos(val) "[2C {short val}]" // Add 'val' to object Y position (can be negative)
command addzpos(val) "[2D {short val}]" // Add 'val' to object Z position (elevation) (can be negative)
command addxvel(val) "[2E {short val}]" // Add 'val' to object X velocity (can be negative)
command addyvel(val) "[2F {short val}]" // Add 'val' to object Y velocity (can be negative)
command addzvel(val) "[30 {short val}]" // Add 'val' to object Z velocity (elevation) (can be negative)
command zerovel "[39]" // Set object X, Y, Z velocities to zero
command setanim(anim) "[3B {byte anim}]" // Set object animation frame
command incanim "[3C]" // Increment object animation frame
command decanim "[3D]" // Decrement object animation frame
command addanim(val) "[3E {byte val}]" // Add 'val' to object animation frame (can be negative)
command setxvel(val) "[3F {short val}]" // Set object X velocity
command setyvel(val) "[40 {short val}]" // Set object Y velocity
command setzvel(val) "[41 {short val}]" // Set object Z velocity (elevation)
command asmcall(addr) "[42 {adr24(addr)}]" // Call other ASM routine
command priority(val) "[43 {byte val}]" // Set object draw priority ('val' must be in range 0..3)
command wait_reg "[44]" // Wait REG frames
// Following are the commands for every opcode 0x80 and above
command sleep0_setanim(anim) "[80 {byte anim}]"
command sleep1_setanim(anim) "[81 {byte anim}]"
command sleep2_setanim(anim) "[82 {byte anim}]"
command sleep3_setanim(anim) "[83 {byte anim}]"
command sleep4_setanim(anim) "[84 {byte anim}]"
command sleep5_setanim(anim) "[85 {byte anim}]"
command sleep6_setanim(anim) "[86 {byte anim}]"
command sleep7_setanim(anim) "[87 {byte anim}]"
command sleep8_setanim(anim) "[88 {byte anim}]"
command sleep9_setanim(anim) "[89 {byte anim}]"
command sleep10_setanim(anim) "[8A {byte anim}]"
command sleep11_setanim(anim) "[8B {byte anim}]"
command sleep12_setanim(anim) "[8C {byte anim}]"
command sleep13_setanim(anim) "[8D {byte anim}]"
command sleep14_setanim(anim) "[8E {byte anim}]"
command sleep15_setanim(anim) "[8F {byte anim}]"
command sleep0_incanim "[90]"
command sleep1_incanim "[91]"
command sleep2_incanim "[92]"
command sleep3_incanim "[93]"
command sleep4_incanim "[94]"
command sleep5_incanim "[95]"
command sleep6_incanim "[96]"
command sleep7_incanim "[97]"
command sleep8_incanim "[98]"
command sleep9_incanim "[99]"
command sleep10_incanim "[9A]"
command sleep11_incanim "[9B]"
command sleep12_incanim "[9C]"
command sleep13_incanim "[9D]"
command sleep14_incanim "[9E]"
command sleep15_incanim "[9F]"
command sleep0_decanim "[A0]"
command sleep1_decanim "[A1]"
command sleep2_decanim "[A2]"
command sleep3_decanim "[A3]"
command sleep4_decanim "[A4]"
command sleep5_decanim "[A5]"
command sleep6_decanim "[A6]"
command sleep7_decanim "[A7]"
command sleep8_decanim "[A8]"
command sleep9_decanim "[A9]"
command sleep10_decanim "[AA]"
command sleep11_decanim "[AB]"
command sleep12_decanim "[AC]"
command sleep13_decanim "[AD]"
command sleep14_decanim "[AE]"
command sleep15_decanim "[AF]"
command sleep0_addanim(val) "[B0 {byte val}]"
command sleep1_addanim(val) "[B1 {byte val}]"
command sleep2_addanim(val) "[B2 {byte val}]"
command sleep3_addanim(val) "[B3 {byte val}]"
command sleep4_addanim(val) "[B4 {byte val}]"
command sleep5_addanim(val) "[B5 {byte val}]"
command sleep6_addanim(val) "[B6 {byte val}]"
command sleep7_addanim(val) "[B7 {byte val}]"
command sleep8_addanim(val) "[B8 {byte val}]"
command sleep9_addanim(val) "[B9 {byte val}]"
command sleep10_addanim(val) "[BA {byte val}]"
command sleep11_addanim(val) "[BB {byte val}]"
command sleep12_addanim(val) "[BC {byte val}]"
command sleep13_addanim(val) "[BD {byte val}]"
command sleep14_addanim(val) "[BE {byte val}]"
command sleep15_addanim(val) "[BF {byte val}]"
command sleep0_setxvel(val) "[C0 {short val}]"
command sleep1_setxvel(val) "[C1 {short val}]"
command sleep2_setxvel(val) "[C2 {short val}]"
command sleep3_setxvel(val) "[C3 {short val}]"
command sleep4_setxvel(val) "[C4 {short val}]"
command sleep5_setxvel(val) "[C5 {short val}]"
command sleep6_setxvel(val) "[C6 {short val}]"
command sleep7_setxvel(val) "[C7 {short val}]"
command sleep8_setxvel(val) "[C8 {short val}]"
command sleep9_setxvel(val) "[C9 {short val}]"
command sleep10_setxvel(val) "[CA {short val}]"
command sleep11_setxvel(val) "[CB {short val}]"
command sleep12_setxvel(val) "[CC {short val}]"
command sleep13_setxvel(val) "[CD {short val}]"
command sleep14_setxvel(val) "[CE {short val}]"
command sleep15_setxvel(val) "[CF {short val}]"
command sleep0_setyvel(val) "[D0 {short val}]"
command sleep1_setyvel(val) "[D1 {short val}]"
command sleep2_setyvel(val) "[D2 {short val}]"
command sleep3_setyvel(val) "[D3 {short val}]"
command sleep4_setyvel(val) "[D4 {short val}]"
command sleep5_setyvel(val) "[D5 {short val}]"
command sleep6_setyvel(val) "[D6 {short val}]"
command sleep7_setyvel(val) "[D7 {short val}]"
command sleep8_setyvel(val) "[D8 {short val}]"
command sleep9_setyvel(val) "[D9 {short val}]"
command sleep10_setyvel(val) "[DA {short val}]"
command sleep11_setyvel(val) "[DB {short val}]"
command sleep12_setyvel(val) "[DC {short val}]"
command sleep13_setyvel(val) "[DD {short val}]"
command sleep14_setyvel(val) "[DE {short val}]"
command sleep15_setyvel(val) "[DF {short val}]"
command sleep0_setzvel(val) "[E0 {short val}]"
command sleep1_setzvel(val) "[E1 {short val}]"
command sleep2_setzvel(val) "[E2 {short val}]"
command sleep3_setzvel(val) "[E3 {short val}]"
command sleep4_setzvel(val) "[E4 {short val}]"
command sleep5_setzvel(val) "[E5 {short val}]"
command sleep6_setzvel(val) "[E6 {short val}]"
command sleep7_setzvel(val) "[E7 {short val}]"
command sleep8_setzvel(val) "[E8 {short val}]"
command sleep9_setzvel(val) "[E9 {short val}]"
command sleep10_setzvel(val) "[EA {short val}]"
command sleep11_setzvel(val) "[EB {short val}]"
command sleep12_setzvel(val) "[EC {short val}]"
command sleep13_setzvel(val) "[ED {short val}]"
command sleep14_setzvel(val) "[EE {short val}]"
command sleep15_setzvel(val) "[EF {short val}]"
command sleep0_asmcall(addr) "[F0 {adr24(addr)}]"
command sleep1_asmcall(addr) "[F1 {adr24(addr)}]"
command sleep2_asmcall(addr) "[F2 {adr24(addr)}]"
command sleep3_asmcall(addr) "[F3 {adr24(addr)}]"
command sleep4_asmcall(addr) "[F4 {adr24(addr)}]"
command sleep5_asmcall(addr) "[F5 {adr24(addr)}]"
command sleep6_asmcall(addr) "[F6 {adr24(addr)}]"
command sleep7_asmcall(addr) "[F7 {adr24(addr)}]"
command sleep8_asmcall(addr) "[F8 {adr24(addr)}]"
command sleep9_asmcall(addr) "[F9 {adr24(addr)}]"
command sleep10_asmcall(addr) "[FA {adr24(addr)}]"
command sleep11_asmcall(addr) "[FB {adr24(addr)}]"
command sleep12_asmcall(addr) "[FC {adr24(addr)}]"
command sleep13_asmcall(addr) "[FD {adr24(addr)}]"
command sleep14_asmcall(addr) "[FE {adr24(addr)}]"
command sleep15_asmcall(addr) "[FF {adr24(addr)}]"
// Following are asmcall routines that take VARIABLE amounts of parameters
command movasm_select_random_value(amount) "[42 82 9F C0 {byte amount}]"
// Following are asmcall routines that take parameters
command movasm_update_facing "[42 5F A6 C0]"
command movasm_unk_surface_flags "[42 DB C7 C0]"
command movasm_update_sprite_graphics_1 "[42 BF A4 C0]"
command movasm_update_sprite_graphics_2 "[42 A8 A4 C0]"
command movasm_update_sprite_graphics_3 "[42 B2 A4 C0]"
command movasm_disable_collisions "[42 2F A8 C0]"
command movasm_destroy_thisobj "[42 F1 20 C0]"
command movasm_find_angle_toward_position "[42 DB 6A C4]"
command movasm_update_facing_from_angle "[42 0A 6B C4]"
command movasm_set_velocity_in_direction "[42 44 70 C4]"
command movasm_walk_toward_position "[42 DC A8 C0]"
command unlock_text_script "[42 46 6E C4]"
command movasm_wait_for_entity_index_frames "[42 23 00 C4]"
command asmcall_C05E76(arg1, arg2) "[42 76 5E C0 {byte arg1} {adr24(arg2)}]"
command asmcall_C09E71(arg) "[42 71 9E C0 {short arg}]"
command asmcall_C09FAE(arg) "[42 AE 9F C0 {short arg}]"
command asmcall_C09FBB(arg) "[42 BB 9F C0 {short arg}]"
command asmcall_C0A643(arg) "[42 43 A6 C0 {short arg}]"
command asmcall_C0A651(arg) "[42 51 A6 C0 {byte arg}]"
command movasm_set_surface_flags(arg) "[42 79 A6 C0 {byte arg}]"
command movasm_set_speed(speed) "[42 85 A6 C0 {short speed}]"
command asmcall_C0A6A2(arg) "[42 A2 A6 C0 {short arg}]"
command asmcall_C0A6AD(arg) "[42 AD A6 C0 {short arg}]"
command asmcall_C0A841(arg) "[42 41 A8 C0 {short arg}]"
command movasm_getevent(event) "[42 4C A8 C0 {short event}]"
command movasm_setevent(event) "[42 57 A8 C0 {short event}]"
command movasm_copy_party_char_position(char) "[42 64 A8 C0 {byte char}]"
command movasm_copy_party_leader_position "[42 64 A8 C0 FF]"
command movasm_copy_sprite_position(spr) "[42 6F A8 C0 {short spr}]"
command asmcall_C0A87A(arg, arg2) "[42 7A A8 C0 {short arg} {short arg2}]"
command movasm_execute_text_block(ptr) "[42 8D A8 C0 {longbe16(ptr)}]"
command movasm_execute_text_block2(ptr) "[42 A0 A8 C0 {longbe16(ptr)}]"
command asmcall_C0A8B3(arg, arg2) "[42 B3 A8 C0 {short arg} {short arg2}]"
command asmcall_C0A907(arg) "[42 07 A9 C0 {byte arg}]"
command asmcall_C0A912(arg, arg2, arg3) "[42 12 A9 C0 {short arg} {short arg2} {byte arg3}]"
command asmcall_C0A92D(arg) "[42 2D A9 C0 {short arg}]"
command asmcall_C0A938(arg) "[42 38 A9 C0 {short arg}]"
command asmcall_C0A943(arg) "[42 43 A9 C0 {byte arg}]"
command asmcall_C0A94E(arg) "[42 4E A9 C0 {short arg}]"
command asmcall_C0A959(arg) "[42 59 A9 C0 {short arg}]"
command asmcall_C0A964(arg, arg2) "[42 64 A9 C0 {short arg} {short arg2}]"
command asmcall_C0A977(arg, arg2) "[42 77 A9 C0 {short arg} {short arg2}]"
command asmcall_C0A98B(arg, arg2) "[42 8B A9 C0 {short arg} {short arg2}]"
command asmcall_C0A99F(arg, arg2) "[42 9F A9 C0 {short arg} {short arg2}]"
command asmcall_C0A9B3(arg, arg2, arg3) "[42 B3 A9 C0 {short arg} {short arg2} {short arg3}]"
command asmcall_C0A9CF(arg, arg2, arg3) "[42 CF A9 C0 {short arg} {short arg2} {short arg3}]"
command asmcall_C0A9EB(arg, arg2, arg3) "[42 EB A9 C0 {short arg} {short arg2} {short arg3}]"
command asmcall_C0AA07(arg, arg2, arg3) "[42 07 AA C0 {short arg} {short arg2} {short arg3}]"
command asmcall_C0AA23(arg, arg2, arg3) "[42 23 AA C0 {short arg} {short arg2} {short arg3}]"
command asmcall_C0AA3F(arg, arg2, arg3) "[42 3F AA C0 {byte arg} {byte arg2} {byte arg3}]"
command movasm_set_facing_anim(facing, anim) "[42 6E AA C0 {byte facing} {byte anim}]"
command asmcall_C0AAB5(arg, arg2, arg3) "[42 B5 AA C0 {short arg} {byte arg2} {byte arg3}]"
command asmcall_C0AAD5(arg, arg2) "[42 D5 AA C0 {byte arg} {short arg2}]"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment