From d82dc207aa177cbe658454dea5be80c434fc877d Mon Sep 17 00:00:00 2001 From: MysterD Date: Thu, 3 Feb 2022 00:41:07 -0800 Subject: [PATCH] Adjusted autogen to pull functions directly from src --- autogen/convert_functions.py | 90 ++- autogen/extract_functions.py | 113 ++-- autogen/lua_functions/camera.h | 3 - autogen/lua_functions/characters.h | 6 - autogen/lua_functions/external.h | 1 - autogen/lua_functions/mario.h | 44 -- .../lua_functions/mario_actions_airborne.c | 20 - .../lua_functions/mario_actions_automatic.c | 12 - .../lua_functions/mario_actions_cutscene.c | 11 - autogen/lua_functions/mario_actions_moving.c | 34 -- autogen/lua_functions/mario_actions_object.c | 4 - .../lua_functions/mario_actions_stationary.c | 8 - .../lua_functions/mario_actions_submerged.c | 6 - autogen/lua_functions/mario_step.h | 11 - autogen/lua_functions/network_utils.h | 3 - autogen/lua_functions/surface_collision.h | 9 - autogen/lua_functions/thread6.c | 3 - docs/lua/functions.md | 515 +++++++++++++++++- src/pc/lua/smlua_functions_autogen.c | 389 ++++++++++++- 19 files changed, 1030 insertions(+), 252 deletions(-) delete mode 100644 autogen/lua_functions/camera.h delete mode 100644 autogen/lua_functions/characters.h delete mode 100644 autogen/lua_functions/external.h delete mode 100644 autogen/lua_functions/mario.h delete mode 100644 autogen/lua_functions/mario_actions_airborne.c delete mode 100644 autogen/lua_functions/mario_actions_automatic.c delete mode 100644 autogen/lua_functions/mario_actions_cutscene.c delete mode 100644 autogen/lua_functions/mario_actions_moving.c delete mode 100644 autogen/lua_functions/mario_actions_object.c delete mode 100644 autogen/lua_functions/mario_actions_stationary.c delete mode 100644 autogen/lua_functions/mario_actions_submerged.c delete mode 100644 autogen/lua_functions/mario_step.h delete mode 100644 autogen/lua_functions/network_utils.h delete mode 100644 autogen/lua_functions/surface_collision.h delete mode 100644 autogen/lua_functions/thread6.c diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py index 2e2e8828..5b2bd86e 100644 --- a/autogen/convert_functions.py +++ b/autogen/convert_functions.py @@ -1,5 +1,6 @@ import os import re +from extract_functions import * from common import * rejects = "" @@ -9,6 +10,46 @@ param_override_build = {} out_filename = 'src/pc/lua/smlua_functions_autogen.c' docs_lua_functions = 'docs/lua/functions.md' +in_files = [ + "src/audio/external.h", + "src/engine/surface_collision.h", + "src/game/camera.h", + "src/game/characters.h", + "src/game/mario_actions_airborne.c", + "src/game/mario_actions_automatic.c", + "src/game/mario_actions_cutscene.c", + "src/game/mario_actions_moving.c", + "src/game/mario_actions_object.c", + "src/game/mario_actions_stationary.c", + "src/game/mario_actions_submerged.c", + "src/game/mario_step.h", + "src/game/mario.h", + "src/game/thread6.c", + "src/pc/djui/djui_popup.h", + "src/pc/network/network_utils.h", +] + +override_allowed_functions = { + "src/audio/external.h": [ " play_", "fade" ], + "src/game/camera.h": [ "set_.*camera_.*shake" ], + "src/game/thread6.c": [ "queue_rumble_"], + "src/pc/djui/djui_popup.h" : [ "create" ], +} + +override_disallowed_functions = { + "src/audio/external.h": [ " func_" ], + "src/engine/surface_collision.h": [ " debug_" ], + "src/game/mario_actions_airborne.c": [ "^[us]32 act_.*" ], + "src/game/mario_actions_automatic.c": [ "^[us]32 act_.*" ], + "src/game/mario_actions_cutscene.c": [ "^[us]32 act_.*", " geo_" ], + "src/game/mario_actions_moving.c": [ "^[us]32 act_.*" ], + "src/game/mario_actions_object.c": [ "^[us]32 act_.*" ], + "src/game/mario_actions_stationary.c": [ "^[us]32 act_.*" ], + "src/game/mario_actions_submerged.c": [ "^[us]32 act_.*" ], + "src/game/mario_step.h": [ " stub_mario_step", "transfer_bully_speed"], + "src/game/mario.h": [ " init_mario" ], +} + ########################################################### template = """/* THIS FILE IS AUTOGENERATED */ @@ -221,7 +262,21 @@ def build_binds(processed_files): ############################################################################ -def process_function(line): +def process_function(fname, line): + if fname in override_allowed_functions: + found_match = False + for pattern in override_allowed_functions[fname]: + if re.search(pattern, line) != None: + found_match = True + break + if not found_match: + return None + + if fname in override_disallowed_functions: + for pattern in override_disallowed_functions[fname]: + if re.search(pattern, line) != None: + return None + function = {} line = line.strip() @@ -246,24 +301,37 @@ def process_function(line): param['type'] = normalize_type(param_str) param['identifier'] = 'arg%d' % param_index else: - match = re.search('[a-zA-Z0-9_]+$', param_str) + match = re.search('[a-zA-Z0-9_\[\]]+$', param_str) + if match == None: + return None param['type'] = normalize_type(param_str[0:match.span()[0]]) param['identifier'] = match.group() + + # override Vec3s/f + if param['identifier'] == 'pos': + if param['type'].replace(' ', '') == 'f32*': + param['type'] = 'Vec3f' + if param['type'].replace(' ', '') == 's16*': + param['type'] = 'Vec3s' + function['params'].append(param) param_index += 1 return function -def process_functions(file_str): +def process_functions(fname, file_str): functions = [] for line in file_str.splitlines(): if reject_line(line): global rejects rejects += line + '\n' continue - functions.append(process_function(line)) + fn = process_function(fname, line) + if fn == None: + continue + functions.append(fn) - functions = sorted(functions, key=lambda d: d['identifier']) + functions = sorted(functions, key=lambda d: d['identifier']) return functions def process_file(fname): @@ -271,17 +339,16 @@ def process_file(fname): processed_file['filename'] = fname.replace('\\', '/').split('/')[-1] processed_file['extern'] = fname.endswith('.c') - with open(fname) as file: - processed_file['functions'] = process_functions(file.read()) + extracted_str = extract_functions(fname) + processed_file['functions'] = process_functions(fname, extracted_str) return processed_file def process_files(): processed_files = [] - dir_path = os.path.dirname(os.path.realpath(__file__)) + '/lua_functions/' - files = sorted(os.listdir(dir_path)) + files = sorted(in_files, key=lambda d: d.split('/')[-1]) for f in files: - processed_files.append(process_file(dir_path + f)) + processed_files.append(process_file(f)) return processed_files ############################################################################ @@ -291,8 +358,11 @@ def doc_function_index(processed_files): for processed_file in processed_files: s += '- %s\n' % processed_file['filename'] for function in processed_file['functions']: + if not function['implemented']: + continue s += ' - [%s](#%s)\n' % (function['identifier'], function['identifier']) s += '\n
\n\n' + return s def doc_function(function): diff --git a/autogen/extract_functions.py b/autogen/extract_functions.py index 11d4b547..86158c4e 100644 --- a/autogen/extract_functions.py +++ b/autogen/extract_functions.py @@ -2,67 +2,70 @@ import os import re import sys -with open('./src/audio/external.h') as file: - lines = file.readlines() +def extract_functions(filename): + with open(filename) as file: + lines = file.readlines() -# strip directives and comments -txt = '' -for line in lines: - if line.strip().startswith('#'): - continue - if '//' in line: - line = line.split('//', 1)[0] - txt += line + # strip directives and comments + in_directive = False + txt = '' + for line in lines: + if line.strip().startswith('#') or in_directive: + in_directive = line.strip().endswith('\\') + continue + if '//' in line: + line = line.split('//', 1)[0] + txt += line -while ('/*' in txt): - s1 = txt.split('/*', 1) - s2 = s1[1].split('*/', 1) - txt = s1[0] + s2[-1] + while ('/*' in txt): + s1 = txt.split('/*', 1) + s2 = s1[1].split('*/', 1) + txt = s1[0] + s2[-1] -# normalize newlines -txt = txt.replace('\n', ' ') -txt = txt.replace(';', ';\n') -txt = txt.replace('{', '{\n') -while (' ' in txt): - txt = txt.replace(' ', ' ') + # normalize newlines + txt = txt.replace('\n', ' ') + txt = txt.replace(';', ';\n') + txt = txt.replace('{', '{\n') + while (' ' in txt): + txt = txt.replace(' ', ' ') -# strip macros -txt = re.sub(r'[^a-zA-Z0-9_][A-Z0-9_]+\(.*\)', '', txt) + # strip macros + txt = re.sub(r'[^a-zA-Z0-9_][A-Z0-9_]+\(.*\)', '', txt) -# strip blocks -tmp = txt -txt = '' -inside = 0 -for character in tmp: - if inside == 0: - txt += character + # strip blocks + tmp = txt + txt = '' + inside = 0 + for character in tmp: + if inside == 0: + txt += character - if character == '{': - txt += '\n' - inside += 1 + if character == '{': + txt += '\n' + inside += 1 - if character == '}': - inside -= 1 + if character == '}': + inside -= 1 -# cull obvious non-functions, statics, and externs -tmp = txt -txt = '' -for line in tmp.splitlines(): - line = line.strip() - if '(' not in line: - continue - if ')' not in line: - continue - if '=' in line: - continue - #if '{' not in line: - # continue - if line.startswith('static '): - continue - if line.startswith('extern '): - continue - txt += line + '\n' + # cull obvious non-functions, statics, and externs + tmp = txt + txt = '' + for line in tmp.splitlines(): + line = line.strip() + if '(' not in line: + continue + if ')' not in line: + continue + if '=' in line: + continue + #if '{' not in line: + # continue + if line.startswith('static '): + continue + if line.startswith('extern '): + continue + txt += line + '\n' -# normalize function ending -txt = txt.replace(' {', ';') -print('-'* 80 + '\n' + txt) + # normalize function ending + txt = txt.replace(' {', ';') + return txt diff --git a/autogen/lua_functions/camera.h b/autogen/lua_functions/camera.h deleted file mode 100644 index bc8dfa24..00000000 --- a/autogen/lua_functions/camera.h +++ /dev/null @@ -1,3 +0,0 @@ -void set_camera_shake_from_hit(s16 shake); -void set_environmental_camera_shake(s16 shake); -void set_camera_shake_from_point(s16 shake, f32 posX, f32 posY, f32 posZ); diff --git a/autogen/lua_functions/characters.h b/autogen/lua_functions/characters.h deleted file mode 100644 index fccaae2d..00000000 --- a/autogen/lua_functions/characters.h +++ /dev/null @@ -1,6 +0,0 @@ -struct Character* get_character(struct MarioState* m); -void play_character_sound(struct MarioState* m, enum CharacterSound characterSound); -void play_character_sound_offset(struct MarioState* m, enum CharacterSound characterSound, u32 offset); -void play_character_sound_if_no_flag(struct MarioState* m, enum CharacterSound characterSound, u32 flags); -f32 get_character_anim_offset(struct MarioState* m); -void update_character_anim_offset(struct MarioState* m); diff --git a/autogen/lua_functions/external.h b/autogen/lua_functions/external.h deleted file mode 100644 index 635efa99..00000000 --- a/autogen/lua_functions/external.h +++ /dev/null @@ -1 +0,0 @@ -void play_sound(s32 soundBits, Vec3f pos); diff --git a/autogen/lua_functions/mario.h b/autogen/lua_functions/mario.h deleted file mode 100644 index d46280e5..00000000 --- a/autogen/lua_functions/mario.h +++ /dev/null @@ -1,44 +0,0 @@ -s32 is_anim_at_end(struct MarioState *m); -s32 is_anim_past_end(struct MarioState *m); -s16 set_mario_animation(struct MarioState *m, s32 targetAnimID); -s16 set_mario_anim_with_accel(struct MarioState *m, s32 targetAnimID, s32 accel); -void set_anim_to_frame(struct MarioState *m, s16 animFrame); -s32 is_anim_past_frame(struct MarioState *m, s16 animFrame); -s16 find_mario_anim_flags_and_translation(struct Object *o, s32 yaw, Vec3s translation); -void update_mario_pos_for_anim(struct MarioState *m); -s16 return_mario_anim_y_translation(struct MarioState *m); -void play_sound_if_no_flag(struct MarioState *m, u32 soundBits, u32 flags); -void play_mario_jump_sound(struct MarioState *m); -void adjust_sound_for_speed(struct MarioState *m); -void play_sound_and_spawn_particles(struct MarioState *m, u32 soundBits, u32 waveParticleType); -void play_mario_action_sound(struct MarioState *m, u32 soundBits, u32 waveParticleType); -void play_mario_landing_sound(struct MarioState *m, u32 soundBits); -void play_mario_landing_sound_once(struct MarioState *m, u32 soundBits); -void play_mario_heavy_landing_sound(struct MarioState *m, u32 soundBits); -void play_mario_heavy_landing_sound_once(struct MarioState *m, u32 soundBits); -void play_mario_sound(struct MarioState *m, s32 primarySoundBits, s32 scondarySoundBits); -void mario_set_bubbled(struct MarioState* m); -void mario_set_forward_vel(struct MarioState *m, f32 speed); -s32 mario_get_floor_class(struct MarioState *m); -u32 mario_get_terrain_sound_addend(struct MarioState *m); -struct Surface *resolve_and_return_wall_collisions(Vec3f pos, f32 offset, f32 radius); -f32 vec3f_find_ceil(Vec3f pos, f32 height, struct Surface **ceil); -s32 mario_facing_downhill(struct MarioState *m, s32 turnYaw); -u32 mario_floor_is_slippery(struct MarioState *m); -s32 mario_floor_is_slope(struct MarioState *m); -s32 mario_floor_is_steep(struct MarioState *m); -f32 find_floor_height_relative_polar(struct MarioState *m, s16 angleFromMario, f32 distFromMario); -s16 find_floor_slope(struct MarioState *m, s16 yawOffset); -void update_mario_sound_and_camera(struct MarioState *m); -void set_steep_jump_action(struct MarioState *m); -u32 set_mario_action(struct MarioState *m, u32 action, u32 actionArg); -s32 set_jump_from_landing(struct MarioState *m); -s32 set_jumping_action(struct MarioState *m, u32 action, u32 actionArg); -s32 drop_and_set_mario_action(struct MarioState *m, u32 action, u32 actionArg); -s32 hurt_and_set_mario_action(struct MarioState *m, u32 action, u32 actionArg, s16 hurtCounter); -s32 check_common_action_exits(struct MarioState *m); -s32 check_common_hold_action_exits(struct MarioState *m); -s32 transition_submerged_to_walking(struct MarioState *m); -s32 set_water_plunge_action(struct MarioState *m); -s32 execute_mario_action(UNUSED struct Object *o); -s32 force_idle_state(struct MarioState* m); diff --git a/autogen/lua_functions/mario_actions_airborne.c b/autogen/lua_functions/mario_actions_airborne.c deleted file mode 100644 index 053dda95..00000000 --- a/autogen/lua_functions/mario_actions_airborne.c +++ /dev/null @@ -1,20 +0,0 @@ -void play_flip_sounds(struct MarioState *m, s16 frame1, s16 frame2, s16 frame3); -void play_far_fall_sound(struct MarioState *m); -void play_knockback_sound(struct MarioState *m); -s32 lava_boost_on_wall(struct MarioState *m); -s32 check_fall_damage(struct MarioState *m, u32 hardFallAction); -s32 check_kick_or_dive_in_air(struct MarioState *m); -s32 should_get_stuck_in_ground(struct MarioState *m); -s32 check_fall_damage_or_get_stuck(struct MarioState *m, u32 hardFallAction); -s32 check_horizontal_wind(struct MarioState *m); -void update_air_with_turn(struct MarioState *m); -void update_air_without_turn(struct MarioState *m); -void update_lava_boost_or_twirling(struct MarioState *m); -void update_flying_yaw(struct MarioState *m); -void update_flying_pitch(struct MarioState *m); -void update_flying(struct MarioState *m); -u32 common_air_action_step(struct MarioState *m, u32 landAction, s32 animation, u32 stepArg); -u32 common_air_knockback_step(struct MarioState *m, u32 landAction, u32 hardFallAction, s32 animation, f32 speed); -s32 check_wall_kick(struct MarioState *m); -s32 check_common_airborne_cancels(struct MarioState *m); -s32 mario_execute_airborne_action(struct MarioState *m); diff --git a/autogen/lua_functions/mario_actions_automatic.c b/autogen/lua_functions/mario_actions_automatic.c deleted file mode 100644 index 21fd9997..00000000 --- a/autogen/lua_functions/mario_actions_automatic.c +++ /dev/null @@ -1,12 +0,0 @@ -void add_tree_leaf_particles(struct MarioState *m); -void play_climbing_sounds(struct MarioState *m, s32 b); -s32 set_pole_position(struct MarioState *m, f32 offsetY); -s32 perform_hanging_step(struct MarioState *m, Vec3f nextPos); -s32 update_hang_moving(struct MarioState *m); -void update_hang_stationary(struct MarioState *m); -s32 let_go_of_ledge(struct MarioState *m); -void climb_up_ledge(struct MarioState *m); -void update_ledge_climb_camera(struct MarioState *m); -void update_ledge_climb(struct MarioState *m, s32 animation, u32 endAction); -s32 check_common_automatic_cancels(struct MarioState *m); -s32 mario_execute_automatic_action(struct MarioState *m); diff --git a/autogen/lua_functions/mario_actions_cutscene.c b/autogen/lua_functions/mario_actions_cutscene.c deleted file mode 100644 index a19d1cc8..00000000 --- a/autogen/lua_functions/mario_actions_cutscene.c +++ /dev/null @@ -1,11 +0,0 @@ -void print_displaying_credits_entry(void); -void bhv_end_peach_loop(void); -void bhv_end_toad_loop(void); -void handle_save_menu(struct MarioState *m); -struct Object *spawn_obj_at_mario_rel_yaw(struct MarioState *m, s32 model, BehaviorScript *behavior, s16 relYaw); -void cutscene_take_cap_off(struct MarioState *m); -void cutscene_put_cap_on(struct MarioState *m); -u8 should_start_or_continue_dialog(struct MarioState* m, struct Object* object); -void general_star_dance_handler(struct MarioState *m, s32 isInWater); -void stuck_in_ground_handler(struct MarioState *m, s32 animation, s32 unstuckFrame, s32 target2, s32 target3, s32 endAction); -void generate_yellow_sparkles(s16 x, s16 y, s16 z, f32 radius); diff --git a/autogen/lua_functions/mario_actions_moving.c b/autogen/lua_functions/mario_actions_moving.c deleted file mode 100644 index e49049bb..00000000 --- a/autogen/lua_functions/mario_actions_moving.c +++ /dev/null @@ -1,34 +0,0 @@ -s16 tilt_body_running(struct MarioState *m); -void play_step_sound(struct MarioState *m, s16 frame1, s16 frame2); -void align_with_floor(struct MarioState *m); -s32 begin_walking_action(struct MarioState *m, f32 forwardVel, u32 action, u32 actionArg); -void check_ledge_climb_down(struct MarioState *m); -void slide_bonk(struct MarioState *m, u32 fastAction, u32 slowAction); -s32 set_triple_jump_action(struct MarioState *m, UNUSED u32 action, UNUSED u32 actionArg); -void update_sliding_angle(struct MarioState *m, f32 accel, f32 lossFactor); -s32 update_sliding(struct MarioState *m, f32 stopSpeed); -void apply_slope_accel(struct MarioState *m); -s32 apply_landing_accel(struct MarioState *m, f32 frictionFactor); -void update_shell_speed(struct MarioState *m); -s32 apply_slope_decel(struct MarioState *m, f32 decelCoef); -s32 update_decelerating_speed(struct MarioState *m); -void update_walking_speed(struct MarioState *m); -s32 should_begin_sliding(struct MarioState *m); -s32 analog_stick_held_back(struct MarioState *m); -s32 check_ground_dive_or_punch(struct MarioState *m); -s32 begin_braking_action(struct MarioState *m); -void anim_and_audio_for_walk(struct MarioState *m); -void anim_and_audio_for_hold_walk(struct MarioState *m); -void anim_and_audio_for_heavy_walk(struct MarioState *m); -void push_or_sidle_wall(struct MarioState *m, Vec3f startPos); -void tilt_body_walking(struct MarioState *m, s16 startYaw); -void tilt_body_ground_shell(struct MarioState *m, s16 startYaw); -void tilt_body_butt_slide(struct MarioState *m); -void common_slide_action(struct MarioState *m, u32 endAction, u32 airAction, s32 animation); -s32 common_slide_action_with_jump(struct MarioState *m, u32 stopAction, u32 jumpAction, u32 airAction, s32 animation); -s32 stomach_slide_action(struct MarioState *m, u32 stopAction, u32 airAction, s32 animation); -s32 common_ground_knockback_action(struct MarioState *m, s32 animation, s32 arg2, s32 arg3, s32 arg4); -u32 common_landing_action(struct MarioState *m, s16 animation, u32 airAction); -s32 quicksand_jump_land_action(struct MarioState *m, s32 animation1, s32 animation2, u32 endAction, u32 airAction); -s32 check_common_moving_cancels(struct MarioState *m); -s32 mario_execute_moving_action(struct MarioState *m); diff --git a/autogen/lua_functions/mario_actions_object.c b/autogen/lua_functions/mario_actions_object.c deleted file mode 100644 index 343942aa..00000000 --- a/autogen/lua_functions/mario_actions_object.c +++ /dev/null @@ -1,4 +0,0 @@ -void animated_stationary_ground_step(struct MarioState *m, s32 animation, u32 endAction); -s32 mario_update_punch_sequence(struct MarioState *m); -s32 check_common_object_cancels(struct MarioState *m); -s32 mario_execute_object_action(struct MarioState *m); diff --git a/autogen/lua_functions/mario_actions_stationary.c b/autogen/lua_functions/mario_actions_stationary.c deleted file mode 100644 index 3ccfffbe..00000000 --- a/autogen/lua_functions/mario_actions_stationary.c +++ /dev/null @@ -1,8 +0,0 @@ -s32 check_common_idle_cancels(struct MarioState *m); -s32 check_common_hold_idle_cancels(struct MarioState *m); -void play_anim_sound(struct MarioState *m, u32 actionState, s32 animFrame, u32 sound); -void stopping_step(struct MarioState *m, s32 animID, u32 action); -s32 landing_step(struct MarioState *m, s32 arg1, u32 action); -s32 check_common_landing_cancels(struct MarioState *m, u32 action); -s32 check_common_stationary_cancels(struct MarioState *m); -s32 mario_execute_stationary_action(struct MarioState *m); diff --git a/autogen/lua_functions/mario_actions_submerged.c b/autogen/lua_functions/mario_actions_submerged.c deleted file mode 100644 index 587461a0..00000000 --- a/autogen/lua_functions/mario_actions_submerged.c +++ /dev/null @@ -1,6 +0,0 @@ -void set_swimming_at_surface_particles(struct MarioState *m, u32 particleFlag); -u32 perform_water_step(struct MarioState *m); -u32 perform_water_full_step(struct MarioState *m, Vec3f nextPos); -s32 mario_execute_submerged_action(struct MarioState *m); -void float_surface_gfx(struct MarioState *m); -void apply_water_current(struct MarioState *m, Vec3f step); diff --git a/autogen/lua_functions/mario_step.h b/autogen/lua_functions/mario_step.h deleted file mode 100644 index 2a634f7e..00000000 --- a/autogen/lua_functions/mario_step.h +++ /dev/null @@ -1,11 +0,0 @@ -f32 get_additive_y_vel_for_jumps(void); -void mario_bonk_reflection(struct MarioState *, u32); -u32 mario_update_quicksand(struct MarioState *, f32); -u32 mario_push_off_steep_floor(struct MarioState *, u32, u32); -u32 mario_update_moving_sand(struct MarioState *); -u32 mario_update_windy_ground(struct MarioState *); -void stop_and_set_height_to_floor(struct MarioState *); -s32 stationary_ground_step(struct MarioState *); -s32 perform_ground_step(struct MarioState *); -s32 perform_air_step(struct MarioState *, u32); -void set_vel_from_pitch_and_yaw(struct MarioState* m); diff --git a/autogen/lua_functions/network_utils.h b/autogen/lua_functions/network_utils.h deleted file mode 100644 index da17db1e..00000000 --- a/autogen/lua_functions/network_utils.h +++ /dev/null @@ -1,3 +0,0 @@ -bool network_is_server(void); -u8 network_global_index_from_local(u8 localIndex); -u8 network_local_index_from_global(u8 globalIndex); diff --git a/autogen/lua_functions/surface_collision.h b/autogen/lua_functions/surface_collision.h deleted file mode 100644 index fc1ba472..00000000 --- a/autogen/lua_functions/surface_collision.h +++ /dev/null @@ -1,9 +0,0 @@ -s32 f32_find_wall_collision(f32 *xPtr, f32 *yPtr, f32 *zPtr, f32 offsetY, f32 radius); -s32 find_wall_collisions(struct WallCollisionData *colData); -f32 find_ceil(f32 posX, f32 posY, f32 posZ, struct Surface **pceil); -f32 find_floor_height_and_data(f32 xPos, f32 yPos, f32 zPos, struct FloorGeometry **floorGeo); -f32 find_floor_height(f32 x, f32 y, f32 z); -f32 find_floor(f32 xPos, f32 yPos, f32 zPos, struct Surface **pfloor); -f32 find_water_level(f32 x, f32 z); -f32 find_poison_gas_level(f32 x, f32 z); -void find_surface_on_ray(Vec3f orig, Vec3f dir, struct Surface **hit_surface, Vec3f hit_pos); diff --git a/autogen/lua_functions/thread6.c b/autogen/lua_functions/thread6.c deleted file mode 100644 index 9c8d6f3b..00000000 --- a/autogen/lua_functions/thread6.c +++ /dev/null @@ -1,3 +0,0 @@ -void queue_rumble_data(s16 a0, s16 a1); -void queue_rumble_data_object(struct Object* object, s16 a0, s16 a1); -void queue_rumble_data_mario(struct MarioState* m, s16 a0, s16 a1); diff --git a/docs/lua/functions.md b/docs/lua/functions.md index 8701e127..74287c8e 100644 --- a/docs/lua/functions.md +++ b/docs/lua/functions.md @@ -2,14 +2,16 @@ # Supported Functions - camera.h + - [set_camera_pitch_shake](#set_camera_pitch_shake) + - [set_camera_roll_shake](#set_camera_roll_shake) - [set_camera_shake_from_hit](#set_camera_shake_from_hit) - [set_camera_shake_from_point](#set_camera_shake_from_point) + - [set_camera_yaw_shake](#set_camera_yaw_shake) - [set_environmental_camera_shake](#set_environmental_camera_shake)
- characters.h - - [get_character](#get_character) - [get_character_anim_offset](#get_character_anim_offset) - [play_character_sound](#play_character_sound) - [play_character_sound_if_no_flag](#play_character_sound_if_no_flag) @@ -18,8 +20,27 @@
+- djui_popup.h + +
+ - external.h + - [fade_volume_scale](#fade_volume_scale) + - [fadeout_background_music](#fadeout_background_music) + - [play_course_clear](#play_course_clear) + - [play_dialog_sound](#play_dialog_sound) + - [play_music](#play_music) + - [play_peachs_jingle](#play_peachs_jingle) + - [play_power_star_jingle](#play_power_star_jingle) + - [play_puzzle_jingle](#play_puzzle_jingle) + - [play_race_fanfare](#play_race_fanfare) + - [play_secondary_music](#play_secondary_music) - [play_sound](#play_sound) + - [play_sound_with_freq_scale](#play_sound_with_freq_scale) + - [play_star_fanfare](#play_star_fanfare) + - [play_toads_jingle](#play_toads_jingle) + - [sequence_player_fade_out](#sequence_player_fade_out) + - [sequence_player_unlower](#sequence_player_unlower)
@@ -54,7 +75,6 @@ - [play_mario_sound](#play_mario_sound) - [play_sound_and_spawn_particles](#play_sound_and_spawn_particles) - [play_sound_if_no_flag](#play_sound_if_no_flag) - - [resolve_and_return_wall_collisions](#resolve_and_return_wall_collisions) - [return_mario_anim_y_translation](#return_mario_anim_y_translation) - [set_anim_to_frame](#set_anim_to_frame) - [set_jump_from_landing](#set_jump_from_landing) @@ -67,7 +87,6 @@ - [transition_submerged_to_walking](#transition_submerged_to_walking) - [update_mario_pos_for_anim](#update_mario_pos_for_anim) - [update_mario_sound_and_camera](#update_mario_sound_and_camera) - - [vec3f_find_ceil](#vec3f_find_ceil)
@@ -114,14 +133,18 @@ - mario_actions_cutscene.c - [bhv_end_peach_loop](#bhv_end_peach_loop) - [bhv_end_toad_loop](#bhv_end_toad_loop) + - [common_death_handler](#common_death_handler) - [cutscene_put_cap_on](#cutscene_put_cap_on) - [cutscene_take_cap_off](#cutscene_take_cap_off) - [general_star_dance_handler](#general_star_dance_handler) - [generate_yellow_sparkles](#generate_yellow_sparkles) + - [get_star_collection_dialog](#get_star_collection_dialog) - [handle_save_menu](#handle_save_menu) + - [launch_mario_until_land](#launch_mario_until_land) + - [mario_execute_cutscene_action](#mario_execute_cutscene_action) + - [mario_ready_to_speak](#mario_ready_to_speak) - [print_displaying_credits_entry](#print_displaying_credits_entry) - [should_start_or_continue_dialog](#should_start_or_continue_dialog) - - [spawn_obj_at_mario_rel_yaw](#spawn_obj_at_mario_rel_yaw) - [stuck_in_ground_handler](#stuck_in_ground_handler)
@@ -217,13 +240,8 @@
- surface_collision.h - - [f32_find_wall_collision](#f32_find_wall_collision) - - [find_ceil](#find_ceil) - - [find_floor](#find_floor) - [find_floor_height](#find_floor_height) - - [find_floor_height_and_data](#find_floor_height_and_data) - [find_poison_gas_level](#find_poison_gas_level) - - [find_surface_on_ray](#find_surface_on_ray) - [find_wall_collisions](#find_wall_collisions) - [find_water_level](#find_water_level) @@ -243,6 +261,50 @@
+## [set_camera_pitch_shake](#set_camera_pitch_shake) + +### Lua Example +`set_camera_pitch_shake(mag, decay, inc)` + +### Parameters +| Field | Type | +| ----- | ---- | +| mag | integer | +| decay | integer | +| inc | integer | + +### Returns +- None + +### C Prototype +`void set_camera_pitch_shake(s16 mag, s16 decay, s16 inc);` + +[:arrow_up_small:](#) + +
+ +## [set_camera_roll_shake](#set_camera_roll_shake) + +### Lua Example +`set_camera_roll_shake(mag, decay, inc)` + +### Parameters +| Field | Type | +| ----- | ---- | +| mag | integer | +| decay | integer | +| inc | integer | + +### Returns +- None + +### C Prototype +`void set_camera_roll_shake(s16 mag, s16 decay, s16 inc);` + +[:arrow_up_small:](#) + +
+ ## [set_camera_shake_from_hit](#set_camera_shake_from_hit) ### Lua Example @@ -286,6 +348,28 @@
+## [set_camera_yaw_shake](#set_camera_yaw_shake) + +### Lua Example +`set_camera_yaw_shake(mag, decay, inc)` + +### Parameters +| Field | Type | +| ----- | ---- | +| mag | integer | +| decay | integer | +| inc | integer | + +### Returns +- None + +### C Prototype +`void set_camera_yaw_shake(s16 mag, s16 decay, s16 inc);` + +[:arrow_up_small:](#) + +
+ ## [set_environmental_camera_shake](#set_environmental_camera_shake) ### Lua Example @@ -417,12 +501,218 @@
+--- +# functions from djui_popup.h + +
+ + --- # functions from external.h
+## [fade_volume_scale](#fade_volume_scale) + +### Lua Example +`fade_volume_scale(player, targetScale, fadeTimer)` + +### Parameters +| Field | Type | +| ----- | ---- | +| player | integer | +| targetScale | integer | +| fadeTimer | integer | + +### Returns +- None + +### C Prototype +`void fade_volume_scale(u8 player, u8 targetScale, u16 fadeTimer);` + +[:arrow_up_small:](#) + +
+ +## [fadeout_background_music](#fadeout_background_music) + +### Lua Example +`fadeout_background_music(arg0, fadeOut)` + +### Parameters +| Field | Type | +| ----- | ---- | +| arg0 | integer | +| fadeOut | integer | + +### Returns +- None + +### C Prototype +`void fadeout_background_music(u16 arg0, u16 fadeOut);` + +[:arrow_up_small:](#) + +
+ +## [play_course_clear](#play_course_clear) + +### Lua Example +`play_course_clear()` + +### Parameters +- None + +### Returns +- None + +### C Prototype +`void play_course_clear(void);` + +[:arrow_up_small:](#) + +
+ +## [play_dialog_sound](#play_dialog_sound) + +### Lua Example +`play_dialog_sound(dialogID)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dialogID | integer | + +### Returns +- None + +### C Prototype +`void play_dialog_sound(u8 dialogID);` + +[:arrow_up_small:](#) + +
+ +## [play_music](#play_music) + +### Lua Example +`play_music(player, seqArgs, fadeTimer)` + +### Parameters +| Field | Type | +| ----- | ---- | +| player | integer | +| seqArgs | integer | +| fadeTimer | integer | + +### Returns +- None + +### C Prototype +`void play_music(u8 player, u16 seqArgs, u16 fadeTimer);` + +[:arrow_up_small:](#) + +
+ +## [play_peachs_jingle](#play_peachs_jingle) + +### Lua Example +`play_peachs_jingle()` + +### Parameters +- None + +### Returns +- None + +### C Prototype +`void play_peachs_jingle(void);` + +[:arrow_up_small:](#) + +
+ +## [play_power_star_jingle](#play_power_star_jingle) + +### Lua Example +`play_power_star_jingle(arg0)` + +### Parameters +| Field | Type | +| ----- | ---- | +| arg0 | integer | + +### Returns +- None + +### C Prototype +`void play_power_star_jingle(u8 arg0);` + +[:arrow_up_small:](#) + +
+ +## [play_puzzle_jingle](#play_puzzle_jingle) + +### Lua Example +`play_puzzle_jingle()` + +### Parameters +- None + +### Returns +- None + +### C Prototype +`void play_puzzle_jingle(void);` + +[:arrow_up_small:](#) + +
+ +## [play_race_fanfare](#play_race_fanfare) + +### Lua Example +`play_race_fanfare()` + +### Parameters +- None + +### Returns +- None + +### C Prototype +`void play_race_fanfare(void);` + +[:arrow_up_small:](#) + +
+ +## [play_secondary_music](#play_secondary_music) + +### Lua Example +`play_secondary_music(seqId, bgMusicVolume, volume, fadeTimer)` + +### Parameters +| Field | Type | +| ----- | ---- | +| seqId | integer | +| bgMusicVolume | integer | +| volume | integer | +| fadeTimer | integer | + +### Returns +- None + +### C Prototype +`void play_secondary_music(u8 seqId, u8 bgMusicVolume, u8 volume, u16 fadeTimer);` + +[:arrow_up_small:](#) + +
+ ## [play_sound](#play_sound) ### Lua Example @@ -438,7 +728,107 @@ - None ### C Prototype -`void play_sound(s32 soundBits, Vec3f pos);` +`void play_sound(s32 soundBits, f32 *pos);` + +[:arrow_up_small:](#) + +
+ +## [play_sound_with_freq_scale](#play_sound_with_freq_scale) + +### Lua Example +`play_sound_with_freq_scale(soundBits, pos, freqScale)` + +### Parameters +| Field | Type | +| ----- | ---- | +| soundBits | integer | +| pos | [Vec3f](structs.md#Vec3f) | +| freqScale | number | + +### Returns +- None + +### C Prototype +`void play_sound_with_freq_scale(s32 soundBits, f32* pos, f32 freqScale);` + +[:arrow_up_small:](#) + +
+ +## [play_star_fanfare](#play_star_fanfare) + +### Lua Example +`play_star_fanfare()` + +### Parameters +- None + +### Returns +- None + +### C Prototype +`void play_star_fanfare(void);` + +[:arrow_up_small:](#) + +
+ +## [play_toads_jingle](#play_toads_jingle) + +### Lua Example +`play_toads_jingle()` + +### Parameters +- None + +### Returns +- None + +### C Prototype +`void play_toads_jingle(void);` + +[:arrow_up_small:](#) + +
+ +## [sequence_player_fade_out](#sequence_player_fade_out) + +### Lua Example +`sequence_player_fade_out(player, fadeTimer)` + +### Parameters +| Field | Type | +| ----- | ---- | +| player | integer | +| fadeTimer | integer | + +### Returns +- None + +### C Prototype +`void sequence_player_fade_out(u8 player, u16 fadeTimer);` + +[:arrow_up_small:](#) + +
+ +## [sequence_player_unlower](#sequence_player_unlower) + +### Lua Example +`sequence_player_unlower(player, fadeTimer)` + +### Parameters +| Field | Type | +| ----- | ---- | +| player | integer | +| fadeTimer | integer | + +### Returns +- None + +### C Prototype +`void sequence_player_unlower(u8 player, u16 fadeTimer);` [:arrow_up_small:](#) @@ -2034,6 +2424,28 @@
+## [common_death_handler](#common_death_handler) + +### Lua Example +`local integerValue = common_death_handler(m, animation, frameToDeathWarp)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| animation | integer | +| frameToDeathWarp | integer | + +### Returns +- integer + +### C Prototype +`s32 common_death_handler(struct MarioState *m, s32 animation, s32 frameToDeathWarp);` + +[:arrow_up_small:](#) + +
+ ## [cutscene_put_cap_on](#cutscene_put_cap_on) ### Lua Example @@ -2118,6 +2530,26 @@
+## [get_star_collection_dialog](#get_star_collection_dialog) + +### Lua Example +`local integerValue = get_star_collection_dialog(m)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | + +### Returns +- integer + +### C Prototype +`s32 get_star_collection_dialog(struct MarioState *m);` + +[:arrow_up_small:](#) + +
+ ## [handle_save_menu](#handle_save_menu) ### Lua Example @@ -2138,6 +2570,69 @@
+## [launch_mario_until_land](#launch_mario_until_land) + +### Lua Example +`local integerValue = launch_mario_until_land(m, endAction, animation, forwardVel)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| endAction | integer | +| animation | integer | +| forwardVel | number | + +### Returns +- integer + +### C Prototype +`s32 launch_mario_until_land(struct MarioState *m, s32 endAction, s32 animation, f32 forwardVel);` + +[:arrow_up_small:](#) + +
+ +## [mario_execute_cutscene_action](#mario_execute_cutscene_action) + +### Lua Example +`local integerValue = mario_execute_cutscene_action(m)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | + +### Returns +- integer + +### C Prototype +`s32 mario_execute_cutscene_action(struct MarioState *m);` + +[:arrow_up_small:](#) + +
+ +## [mario_ready_to_speak](#mario_ready_to_speak) + +### Lua Example +`local integerValue = mario_ready_to_speak(m)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | + +### Returns +- integer + +### C Prototype +`s32 mario_ready_to_speak(struct MarioState* m);` + +[:arrow_up_small:](#) + +
+ ## [print_displaying_credits_entry](#print_displaying_credits_entry) ### Lua Example diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c index 9a9b2d9e..9368702e 100644 --- a/src/pc/lua/smlua_functions_autogen.c +++ b/src/pc/lua/smlua_functions_autogen.c @@ -18,6 +18,36 @@ // camera.h // ////////////// +int smlua_func_set_camera_pitch_shake(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 3)) { return 0; } + + s16 mag = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + s16 decay = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + s16 inc = smlua_to_integer(L, 3); + if (!gSmLuaConvertSuccess) { return 0; } + + set_camera_pitch_shake(mag, decay, inc); + + return 1; +} + +int smlua_func_set_camera_roll_shake(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 3)) { return 0; } + + s16 mag = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + s16 decay = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + s16 inc = smlua_to_integer(L, 3); + if (!gSmLuaConvertSuccess) { return 0; } + + set_camera_roll_shake(mag, decay, inc); + + return 1; +} + int smlua_func_set_camera_shake_from_hit(lua_State* L) { if(!smlua_functions_valid_param_count(L, 1)) { return 0; } @@ -46,6 +76,21 @@ int smlua_func_set_camera_shake_from_point(lua_State* L) { return 1; } +int smlua_func_set_camera_yaw_shake(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 3)) { return 0; } + + s16 mag = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + s16 decay = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + s16 inc = smlua_to_integer(L, 3); + if (!gSmLuaConvertSuccess) { return 0; } + + set_camera_yaw_shake(mag, decay, inc); + + return 1; +} + int smlua_func_set_environmental_camera_shake(lua_State* L) { if(!smlua_functions_valid_param_count(L, 1)) { return 0; } @@ -139,10 +184,147 @@ int smlua_func_update_character_anim_offset(lua_State* L) { return 1; } + ////////////////// + // djui_popup.h // +////////////////// + +/* +int smlua_func_djui_popup_create(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 2)) { return 0; } + +// const char* message = (const char*)smlua_to_cobject(L, 1, LOT_???); <--- UNIMPLEMENTED + if (!gSmLuaConvertSuccess) { return 0; } + int lines = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + + UNIMPLEMENTED -->(L, djui_popup_create(message, lines)); + + return 1; +} +*/ + //////////////// // external.h // //////////////// +int smlua_func_fade_volume_scale(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 3)) { return 0; } + + u8 player = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + u8 targetScale = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + u16 fadeTimer = smlua_to_integer(L, 3); + if (!gSmLuaConvertSuccess) { return 0; } + + fade_volume_scale(player, targetScale, fadeTimer); + + return 1; +} + +int smlua_func_fadeout_background_music(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 2)) { return 0; } + + u16 arg0 = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + u16 fadeOut = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + + fadeout_background_music(arg0, fadeOut); + + return 1; +} + +int smlua_func_play_course_clear(UNUSED lua_State* L) { + if(!smlua_functions_valid_param_count(L, 0)) { return 0; } + + + play_course_clear(); + + return 1; +} + +int smlua_func_play_dialog_sound(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 1)) { return 0; } + + u8 dialogID = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + + play_dialog_sound(dialogID); + + return 1; +} + +int smlua_func_play_music(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 3)) { return 0; } + + u8 player = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + u16 seqArgs = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + u16 fadeTimer = smlua_to_integer(L, 3); + if (!gSmLuaConvertSuccess) { return 0; } + + play_music(player, seqArgs, fadeTimer); + + return 1; +} + +int smlua_func_play_peachs_jingle(UNUSED lua_State* L) { + if(!smlua_functions_valid_param_count(L, 0)) { return 0; } + + + play_peachs_jingle(); + + return 1; +} + +int smlua_func_play_power_star_jingle(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 1)) { return 0; } + + u8 arg0 = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + + play_power_star_jingle(arg0); + + return 1; +} + +int smlua_func_play_puzzle_jingle(UNUSED lua_State* L) { + if(!smlua_functions_valid_param_count(L, 0)) { return 0; } + + + play_puzzle_jingle(); + + return 1; +} + +int smlua_func_play_race_fanfare(UNUSED lua_State* L) { + if(!smlua_functions_valid_param_count(L, 0)) { return 0; } + + + play_race_fanfare(); + + return 1; +} + +int smlua_func_play_secondary_music(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 4)) { return 0; } + + u8 seqId = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + u8 bgMusicVolume = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + u8 volume = smlua_to_integer(L, 3); + if (!gSmLuaConvertSuccess) { return 0; } + u16 fadeTimer = smlua_to_integer(L, 4); + if (!gSmLuaConvertSuccess) { return 0; } + + play_secondary_music(seqId, bgMusicVolume, volume, fadeTimer); + + return 1; +} + int smlua_func_play_sound(lua_State* L) { if(!smlua_functions_valid_param_count(L, 2)) { return 0; } @@ -166,6 +348,75 @@ int smlua_func_play_sound(lua_State* L) { return 1; } +int smlua_func_play_sound_with_freq_scale(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 3)) { return 0; } + + s32 soundBits = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + + f32* pos = smlua_get_vec3f_from_buffer(); + pos[0] = smlua_get_number_field(2, "x"); + if (!gSmLuaConvertSuccess) { return 0; } + pos[1] = smlua_get_number_field(2, "y"); + if (!gSmLuaConvertSuccess) { return 0; } + pos[2] = smlua_get_number_field(2, "z"); + if (!gSmLuaConvertSuccess) { return 0; } + f32 freqScale = smlua_to_number(L, 3); + if (!gSmLuaConvertSuccess) { return 0; } + + play_sound_with_freq_scale(soundBits, pos, freqScale); + + smlua_push_number_field(2, "x", pos[0]); + smlua_push_number_field(2, "y", pos[1]); + smlua_push_number_field(2, "z", pos[2]); + + return 1; +} + +int smlua_func_play_star_fanfare(UNUSED lua_State* L) { + if(!smlua_functions_valid_param_count(L, 0)) { return 0; } + + + play_star_fanfare(); + + return 1; +} + +int smlua_func_play_toads_jingle(UNUSED lua_State* L) { + if(!smlua_functions_valid_param_count(L, 0)) { return 0; } + + + play_toads_jingle(); + + return 1; +} + +int smlua_func_sequence_player_fade_out(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 2)) { return 0; } + + u8 player = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + u16 fadeTimer = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + + sequence_player_fade_out(player, fadeTimer); + + return 1; +} + +int smlua_func_sequence_player_unlower(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 2)) { return 0; } + + u8 player = smlua_to_integer(L, 1); + if (!gSmLuaConvertSuccess) { return 0; } + u16 fadeTimer = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + + sequence_player_unlower(player, fadeTimer); + + return 1; +} + ///////////// // mario.h // ///////////// @@ -1222,6 +1473,22 @@ int smlua_func_bhv_end_toad_loop(UNUSED lua_State* L) { return 1; } +int smlua_func_common_death_handler(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 3)) { return 0; } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { return 0; } + s32 animation = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + s32 frameToDeathWarp = smlua_to_integer(L, 3); + if (!gSmLuaConvertSuccess) { return 0; } + + extern s32 common_death_handler(struct MarioState *m, s32 animation, s32 frameToDeathWarp); + lua_pushinteger(L, common_death_handler(m, animation, frameToDeathWarp)); + + return 1; +} + int smlua_func_cutscene_put_cap_on(lua_State* L) { if(!smlua_functions_valid_param_count(L, 1)) { return 0; } @@ -1278,6 +1545,32 @@ int smlua_func_generate_yellow_sparkles(lua_State* L) { return 1; } +/* +int smlua_func_get_credits_str_width(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 1)) { return 0; } + +// char * str = (char *)smlua_to_cobject(L, 1, LOT_???); <--- UNIMPLEMENTED + if (!gSmLuaConvertSuccess) { return 0; } + + extern s32 get_credits_str_width(char *str); + lua_pushinteger(L, get_credits_str_width(str)); + + return 1; +} +*/ + +int smlua_func_get_star_collection_dialog(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 1)) { return 0; } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { return 0; } + + extern s32 get_star_collection_dialog(struct MarioState *m); + lua_pushinteger(L, get_star_collection_dialog(m)); + + return 1; +} + int smlua_func_handle_save_menu(lua_State* L) { if(!smlua_functions_valid_param_count(L, 1)) { return 0; } @@ -1290,6 +1583,48 @@ int smlua_func_handle_save_menu(lua_State* L) { return 1; } +int smlua_func_launch_mario_until_land(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 4)) { return 0; } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { return 0; } + s32 endAction = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { return 0; } + s32 animation = smlua_to_integer(L, 3); + if (!gSmLuaConvertSuccess) { return 0; } + f32 forwardVel = smlua_to_number(L, 4); + if (!gSmLuaConvertSuccess) { return 0; } + + extern s32 launch_mario_until_land(struct MarioState *m, s32 endAction, s32 animation, f32 forwardVel); + lua_pushinteger(L, launch_mario_until_land(m, endAction, animation, forwardVel)); + + return 1; +} + +int smlua_func_mario_execute_cutscene_action(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 1)) { return 0; } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { return 0; } + + extern s32 mario_execute_cutscene_action(struct MarioState *m); + lua_pushinteger(L, mario_execute_cutscene_action(m)); + + return 1; +} + +int smlua_func_mario_ready_to_speak(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 1)) { return 0; } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { return 0; } + + extern s32 mario_ready_to_speak(struct MarioState* m); + lua_pushinteger(L, mario_ready_to_speak(m)); + + return 1; +} + int smlua_func_print_displaying_credits_entry(UNUSED lua_State* L) { if(!smlua_functions_valid_param_count(L, 0)) { return 0; } @@ -1322,12 +1657,12 @@ int smlua_func_spawn_obj_at_mario_rel_yaw(lua_State* L) { if (!gSmLuaConvertSuccess) { return 0; } s32 model = smlua_to_integer(L, 2); if (!gSmLuaConvertSuccess) { return 0; } -// BehaviorScript * behavior = (BehaviorScript *)smlua_to_cobject(L, 3, LOT_???); <--- UNIMPLEMENTED +// const BehaviorScript* behavior = (const BehaviorScript*)smlua_to_cobject(L, 3, LOT_???); <--- UNIMPLEMENTED if (!gSmLuaConvertSuccess) { return 0; } s16 relYaw = smlua_to_integer(L, 4); if (!gSmLuaConvertSuccess) { return 0; } - extern struct Object *spawn_obj_at_mario_rel_yaw(struct MarioState *m, s32 model, BehaviorScript *behavior, s16 relYaw); + extern struct Object *spawn_obj_at_mario_rel_yaw(struct MarioState *m, s32 model, const BehaviorScript *behavior, s16 relYaw); UNIMPLEMENTED -->(L, spawn_obj_at_mario_rel_yaw(m, model, behavior, relYaw)); return 1; @@ -1562,6 +1897,28 @@ int smlua_func_common_landing_action(lua_State* L) { return 1; } +/* +int smlua_func_common_landing_cancels(lua_State* L) { + if(!smlua_functions_valid_param_count(L, 5)) { return 0; } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { return 0; } + struct LandingAction* landingAction = (struct LandingAction*)smlua_to_cobject(L, 2, LOT_LANDINGACTION); + if (!gSmLuaConvertSuccess) { return 0; } +// s32 (*setAPressAction)(structMarioState* arg2 = (s32 (*setAPressAction)(structMarioState*)smlua_to_cobject(L, 3, LVT_???); <--- UNIMPLEMENTED + if (!gSmLuaConvertSuccess) { return 0; } + u32 arg3 = smlua_to_integer(L, 4); + if (!gSmLuaConvertSuccess) { return 0; } +// u32) arg4 = (u32))smlua_to_cobject(L, 5, LOT_???); <--- UNIMPLEMENTED + if (!gSmLuaConvertSuccess) { return 0; } + + extern s32 common_landing_cancels(struct MarioState *m, struct LandingAction *landingAction, s32 (*setAPressAction)(struct MarioState *, u32, u32)); + lua_pushinteger(L, common_landing_cancels(m, landingAction, arg2, arg3, arg4)); + + return 1; +} +*/ + int smlua_func_common_slide_action(lua_State* L) { if(!smlua_functions_valid_param_count(L, 4)) { return 0; } @@ -2533,8 +2890,11 @@ void smlua_bind_functions_autogen(void) { lua_State* L = gLuaState; // camera.h + smlua_bind_function(L, "set_camera_pitch_shake", smlua_func_set_camera_pitch_shake); + smlua_bind_function(L, "set_camera_roll_shake", smlua_func_set_camera_roll_shake); smlua_bind_function(L, "set_camera_shake_from_hit", smlua_func_set_camera_shake_from_hit); smlua_bind_function(L, "set_camera_shake_from_point", smlua_func_set_camera_shake_from_point); + smlua_bind_function(L, "set_camera_yaw_shake", smlua_func_set_camera_yaw_shake); smlua_bind_function(L, "set_environmental_camera_shake", smlua_func_set_environmental_camera_shake); // characters.h @@ -2545,8 +2905,26 @@ void smlua_bind_functions_autogen(void) { smlua_bind_function(L, "play_character_sound_offset", smlua_func_play_character_sound_offset); smlua_bind_function(L, "update_character_anim_offset", smlua_func_update_character_anim_offset); + // djui_popup.h + //smlua_bind_function(L, "djui_popup_create", smlua_func_djui_popup_create); <--- UNIMPLEMENTED + // external.h + smlua_bind_function(L, "fade_volume_scale", smlua_func_fade_volume_scale); + smlua_bind_function(L, "fadeout_background_music", smlua_func_fadeout_background_music); + smlua_bind_function(L, "play_course_clear", smlua_func_play_course_clear); + smlua_bind_function(L, "play_dialog_sound", smlua_func_play_dialog_sound); + smlua_bind_function(L, "play_music", smlua_func_play_music); + smlua_bind_function(L, "play_peachs_jingle", smlua_func_play_peachs_jingle); + smlua_bind_function(L, "play_power_star_jingle", smlua_func_play_power_star_jingle); + smlua_bind_function(L, "play_puzzle_jingle", smlua_func_play_puzzle_jingle); + smlua_bind_function(L, "play_race_fanfare", smlua_func_play_race_fanfare); + smlua_bind_function(L, "play_secondary_music", smlua_func_play_secondary_music); smlua_bind_function(L, "play_sound", smlua_func_play_sound); + smlua_bind_function(L, "play_sound_with_freq_scale", smlua_func_play_sound_with_freq_scale); + smlua_bind_function(L, "play_star_fanfare", smlua_func_play_star_fanfare); + smlua_bind_function(L, "play_toads_jingle", smlua_func_play_toads_jingle); + smlua_bind_function(L, "sequence_player_fade_out", smlua_func_sequence_player_fade_out); + smlua_bind_function(L, "sequence_player_unlower", smlua_func_sequence_player_unlower); // mario.h smlua_bind_function(L, "adjust_sound_for_speed", smlua_func_adjust_sound_for_speed); @@ -2633,11 +3011,17 @@ void smlua_bind_functions_autogen(void) { // mario_actions_cutscene.c smlua_bind_function(L, "bhv_end_peach_loop", smlua_func_bhv_end_peach_loop); smlua_bind_function(L, "bhv_end_toad_loop", smlua_func_bhv_end_toad_loop); + smlua_bind_function(L, "common_death_handler", smlua_func_common_death_handler); smlua_bind_function(L, "cutscene_put_cap_on", smlua_func_cutscene_put_cap_on); smlua_bind_function(L, "cutscene_take_cap_off", smlua_func_cutscene_take_cap_off); smlua_bind_function(L, "general_star_dance_handler", smlua_func_general_star_dance_handler); smlua_bind_function(L, "generate_yellow_sparkles", smlua_func_generate_yellow_sparkles); + //smlua_bind_function(L, "get_credits_str_width", smlua_func_get_credits_str_width); <--- UNIMPLEMENTED + smlua_bind_function(L, "get_star_collection_dialog", smlua_func_get_star_collection_dialog); smlua_bind_function(L, "handle_save_menu", smlua_func_handle_save_menu); + smlua_bind_function(L, "launch_mario_until_land", smlua_func_launch_mario_until_land); + smlua_bind_function(L, "mario_execute_cutscene_action", smlua_func_mario_execute_cutscene_action); + smlua_bind_function(L, "mario_ready_to_speak", smlua_func_mario_ready_to_speak); smlua_bind_function(L, "print_displaying_credits_entry", smlua_func_print_displaying_credits_entry); smlua_bind_function(L, "should_start_or_continue_dialog", smlua_func_should_start_or_continue_dialog); //smlua_bind_function(L, "spawn_obj_at_mario_rel_yaw", smlua_func_spawn_obj_at_mario_rel_yaw); <--- UNIMPLEMENTED @@ -2659,6 +3043,7 @@ void smlua_bind_functions_autogen(void) { smlua_bind_function(L, "check_ledge_climb_down", smlua_func_check_ledge_climb_down); smlua_bind_function(L, "common_ground_knockback_action", smlua_func_common_ground_knockback_action); smlua_bind_function(L, "common_landing_action", smlua_func_common_landing_action); + //smlua_bind_function(L, "common_landing_cancels", smlua_func_common_landing_cancels); <--- UNIMPLEMENTED smlua_bind_function(L, "common_slide_action", smlua_func_common_slide_action); smlua_bind_function(L, "common_slide_action_with_jump", smlua_func_common_slide_action_with_jump); smlua_bind_function(L, "mario_execute_moving_action", smlua_func_mario_execute_moving_action);